├── .cargo-ok ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── create_command.ts ├── package-lock.json ├── package.json ├── src ├── commands │ ├── 8ball.ts │ ├── index.ts │ └── owo.ts ├── index.ts ├── lib │ ├── endpoints.ts │ ├── handle_command.ts │ ├── handle_request.ts │ ├── index.ts │ ├── signatures.ts │ └── transform_request.ts ├── sentry.ts ├── services.ts └── types.ts ├── tsconfig.json ├── webpack.config.js └── wrangler.toml /.cargo-ok: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/A5rocks/slash-worker/ca35f2a9d0e6748977b254ecb647963cca52a824/.cargo-ok -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | transpiled 4 | worker 5 | .vscode -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "semi": true, 4 | "trailingComma": "all", 5 | "tabWidth": 4, 6 | "printWidth": 80 7 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## /worker 2 | 3 | Put your slash commands on Cloudflare's Worker service. 4 | 5 | #### Usage 6 | 7 | 1. `git clone https://github.com/A5rocks/slash-worker.git` 8 | 2. `cd slash-worker` 9 | 3. Edit `wrangler.toml`, putting in your account id. 10 | 4. Edit `public_keys.ts`, putting in the public key Discord provides in the 11 | application portal. 12 | 5. (optional) Edit `sentry.ts` with your values. 13 | 6. `npm i` 14 | 7. (you might not need to do this) `wrangler login` or `wrangler config` 15 | 8. `wrangler publish` 16 | 9. Put the URL `wrangler` told you as the `Interactions Endpoint URL` in the 17 | application portal. 18 | 19 | Then, you can run any command 20 | ([see "Registering a command"](#Registering-a-command)) and it will work! 21 | 22 | #### Registering a command 23 | 24 | You can either use a library for a 1-use script or use a binary, your choice: 25 | 26 | - Library: try out 27 | [`slash-commands`](https://www.npmjs.com/package/slash-commands). Check 28 | `create_command.js` in this directory for an example. 29 | - Binary: none yet, try searching GitHub! had 30 | one in the works, not sure of its status. 31 | 32 | Or... You can read the documentation and manually construct a request in 33 | Insomnia or Postman... This is not recommended, though. 34 | 35 | #### Handling a command 36 | 37 | 1. Write a function that takes an `InteractionRequest` and returns a 38 | `Promise`. (or uses the endpoints to do equivalent) 39 | 2. Edit `commands/index.ts` to import the function and add it to `handlers`. 40 | 41 | And then it should work! Make sure you have the slash command experiment 42 | enabled, so you can actually run your command. 43 | -------------------------------------------------------------------------------- /create_command.ts: -------------------------------------------------------------------------------- 1 | import { DiscordInteractions } from 'slash-commands'; 2 | 3 | const interaction = new DiscordInteractions({ 4 | applicationId: "your id here", 5 | authToken: "your token here", 6 | publicKey: "-----", 7 | }); 8 | 9 | 10 | const command = { 11 | name: 'obama', 12 | description: 'obama', 13 | type: 2 14 | }; 15 | 16 | 17 | interaction.createApplicationCommand(command, 'guild id, remove if you want.') 18 | .then(console.log) 19 | .catch(console.error) 20 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "slash-worker", 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 | "@cloudflare/workers-types": { 34 | "version": "2.0.0", 35 | "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-2.0.0.tgz", 36 | "integrity": "sha512-SFUPQzR5aV2TBLP4Re+xNX5KfAGArcRGA44OLulBDnfblEf3J+6kFvdJAQwFhFpqru3wImwT1cX0wahk6EeWTw==", 37 | "dev": true 38 | }, 39 | "@types/json-schema": { 40 | "version": "7.0.6", 41 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", 42 | "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", 43 | "dev": true 44 | }, 45 | "@types/node": { 46 | "version": "14.14.12", 47 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.12.tgz", 48 | "integrity": "sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==", 49 | "dev": true 50 | }, 51 | "@types/parse-json": { 52 | "version": "4.0.0", 53 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 54 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", 55 | "dev": true 56 | }, 57 | "@webassemblyjs/ast": { 58 | "version": "1.9.0", 59 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", 60 | "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", 61 | "dev": true, 62 | "requires": { 63 | "@webassemblyjs/helper-module-context": "1.9.0", 64 | "@webassemblyjs/helper-wasm-bytecode": "1.9.0", 65 | "@webassemblyjs/wast-parser": "1.9.0" 66 | } 67 | }, 68 | "@webassemblyjs/floating-point-hex-parser": { 69 | "version": "1.9.0", 70 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", 71 | "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", 72 | "dev": true 73 | }, 74 | "@webassemblyjs/helper-api-error": { 75 | "version": "1.9.0", 76 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", 77 | "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", 78 | "dev": true 79 | }, 80 | "@webassemblyjs/helper-buffer": { 81 | "version": "1.9.0", 82 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", 83 | "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", 84 | "dev": true 85 | }, 86 | "@webassemblyjs/helper-code-frame": { 87 | "version": "1.9.0", 88 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", 89 | "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", 90 | "dev": true, 91 | "requires": { 92 | "@webassemblyjs/wast-printer": "1.9.0" 93 | } 94 | }, 95 | "@webassemblyjs/helper-fsm": { 96 | "version": "1.9.0", 97 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", 98 | "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", 99 | "dev": true 100 | }, 101 | "@webassemblyjs/helper-module-context": { 102 | "version": "1.9.0", 103 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", 104 | "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", 105 | "dev": true, 106 | "requires": { 107 | "@webassemblyjs/ast": "1.9.0" 108 | } 109 | }, 110 | "@webassemblyjs/helper-wasm-bytecode": { 111 | "version": "1.9.0", 112 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", 113 | "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", 114 | "dev": true 115 | }, 116 | "@webassemblyjs/helper-wasm-section": { 117 | "version": "1.9.0", 118 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", 119 | "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", 120 | "dev": true, 121 | "requires": { 122 | "@webassemblyjs/ast": "1.9.0", 123 | "@webassemblyjs/helper-buffer": "1.9.0", 124 | "@webassemblyjs/helper-wasm-bytecode": "1.9.0", 125 | "@webassemblyjs/wasm-gen": "1.9.0" 126 | } 127 | }, 128 | "@webassemblyjs/ieee754": { 129 | "version": "1.9.0", 130 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", 131 | "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", 132 | "dev": true, 133 | "requires": { 134 | "@xtuc/ieee754": "^1.2.0" 135 | } 136 | }, 137 | "@webassemblyjs/leb128": { 138 | "version": "1.9.0", 139 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", 140 | "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", 141 | "dev": true, 142 | "requires": { 143 | "@xtuc/long": "4.2.2" 144 | } 145 | }, 146 | "@webassemblyjs/utf8": { 147 | "version": "1.9.0", 148 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", 149 | "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", 150 | "dev": true 151 | }, 152 | "@webassemblyjs/wasm-edit": { 153 | "version": "1.9.0", 154 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", 155 | "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", 156 | "dev": true, 157 | "requires": { 158 | "@webassemblyjs/ast": "1.9.0", 159 | "@webassemblyjs/helper-buffer": "1.9.0", 160 | "@webassemblyjs/helper-wasm-bytecode": "1.9.0", 161 | "@webassemblyjs/helper-wasm-section": "1.9.0", 162 | "@webassemblyjs/wasm-gen": "1.9.0", 163 | "@webassemblyjs/wasm-opt": "1.9.0", 164 | "@webassemblyjs/wasm-parser": "1.9.0", 165 | "@webassemblyjs/wast-printer": "1.9.0" 166 | } 167 | }, 168 | "@webassemblyjs/wasm-gen": { 169 | "version": "1.9.0", 170 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", 171 | "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", 172 | "dev": true, 173 | "requires": { 174 | "@webassemblyjs/ast": "1.9.0", 175 | "@webassemblyjs/helper-wasm-bytecode": "1.9.0", 176 | "@webassemblyjs/ieee754": "1.9.0", 177 | "@webassemblyjs/leb128": "1.9.0", 178 | "@webassemblyjs/utf8": "1.9.0" 179 | } 180 | }, 181 | "@webassemblyjs/wasm-opt": { 182 | "version": "1.9.0", 183 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", 184 | "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", 185 | "dev": true, 186 | "requires": { 187 | "@webassemblyjs/ast": "1.9.0", 188 | "@webassemblyjs/helper-buffer": "1.9.0", 189 | "@webassemblyjs/wasm-gen": "1.9.0", 190 | "@webassemblyjs/wasm-parser": "1.9.0" 191 | } 192 | }, 193 | "@webassemblyjs/wasm-parser": { 194 | "version": "1.9.0", 195 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", 196 | "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", 197 | "dev": true, 198 | "requires": { 199 | "@webassemblyjs/ast": "1.9.0", 200 | "@webassemblyjs/helper-api-error": "1.9.0", 201 | "@webassemblyjs/helper-wasm-bytecode": "1.9.0", 202 | "@webassemblyjs/ieee754": "1.9.0", 203 | "@webassemblyjs/leb128": "1.9.0", 204 | "@webassemblyjs/utf8": "1.9.0" 205 | } 206 | }, 207 | "@webassemblyjs/wast-parser": { 208 | "version": "1.9.0", 209 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", 210 | "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", 211 | "dev": true, 212 | "requires": { 213 | "@webassemblyjs/ast": "1.9.0", 214 | "@webassemblyjs/floating-point-hex-parser": "1.9.0", 215 | "@webassemblyjs/helper-api-error": "1.9.0", 216 | "@webassemblyjs/helper-code-frame": "1.9.0", 217 | "@webassemblyjs/helper-fsm": "1.9.0", 218 | "@xtuc/long": "4.2.2" 219 | } 220 | }, 221 | "@webassemblyjs/wast-printer": { 222 | "version": "1.9.0", 223 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", 224 | "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", 225 | "dev": true, 226 | "requires": { 227 | "@webassemblyjs/ast": "1.9.0", 228 | "@webassemblyjs/wast-parser": "1.9.0", 229 | "@xtuc/long": "4.2.2" 230 | } 231 | }, 232 | "@xtuc/ieee754": { 233 | "version": "1.2.0", 234 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 235 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 236 | "dev": true 237 | }, 238 | "@xtuc/long": { 239 | "version": "4.2.2", 240 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 241 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 242 | "dev": true 243 | }, 244 | "acorn": { 245 | "version": "6.4.2", 246 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", 247 | "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", 248 | "dev": true 249 | }, 250 | "ajv": { 251 | "version": "6.12.2", 252 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", 253 | "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", 254 | "dev": true, 255 | "requires": { 256 | "fast-deep-equal": "^3.1.1", 257 | "fast-json-stable-stringify": "^2.0.0", 258 | "json-schema-traverse": "^0.4.1", 259 | "uri-js": "^4.2.2" 260 | } 261 | }, 262 | "ajv-errors": { 263 | "version": "1.0.1", 264 | "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", 265 | "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", 266 | "dev": true 267 | }, 268 | "ajv-keywords": { 269 | "version": "3.4.1", 270 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", 271 | "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", 272 | "dev": true 273 | }, 274 | "ansi-colors": { 275 | "version": "3.2.4", 276 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", 277 | "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", 278 | "dev": true 279 | }, 280 | "ansi-styles": { 281 | "version": "3.2.1", 282 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 283 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 284 | "dev": true, 285 | "requires": { 286 | "color-convert": "^1.9.0" 287 | } 288 | }, 289 | "anymatch": { 290 | "version": "3.1.1", 291 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 292 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 293 | "dev": true, 294 | "requires": { 295 | "normalize-path": "^3.0.0", 296 | "picomatch": "^2.0.4" 297 | } 298 | }, 299 | "aproba": { 300 | "version": "1.2.0", 301 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 302 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", 303 | "dev": true 304 | }, 305 | "arr-diff": { 306 | "version": "4.0.0", 307 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 308 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 309 | "dev": true 310 | }, 311 | "arr-flatten": { 312 | "version": "1.1.0", 313 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 314 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 315 | "dev": true 316 | }, 317 | "arr-union": { 318 | "version": "3.1.0", 319 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 320 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 321 | "dev": true 322 | }, 323 | "array-union": { 324 | "version": "1.0.2", 325 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 326 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 327 | "dev": true, 328 | "requires": { 329 | "array-uniq": "^1.0.1" 330 | } 331 | }, 332 | "array-uniq": { 333 | "version": "1.0.3", 334 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 335 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 336 | "dev": true 337 | }, 338 | "array-unique": { 339 | "version": "0.3.2", 340 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 341 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 342 | "dev": true 343 | }, 344 | "asn1.js": { 345 | "version": "5.4.1", 346 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 347 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 348 | "dev": true, 349 | "requires": { 350 | "bn.js": "^4.0.0", 351 | "inherits": "^2.0.1", 352 | "minimalistic-assert": "^1.0.0", 353 | "safer-buffer": "^2.1.0" 354 | }, 355 | "dependencies": { 356 | "bn.js": { 357 | "version": "4.11.9", 358 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 359 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 360 | "dev": true 361 | } 362 | } 363 | }, 364 | "assert": { 365 | "version": "1.5.0", 366 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 367 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 368 | "dev": true, 369 | "requires": { 370 | "object-assign": "^4.1.1", 371 | "util": "0.10.3" 372 | }, 373 | "dependencies": { 374 | "inherits": { 375 | "version": "2.0.1", 376 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 377 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 378 | "dev": true 379 | }, 380 | "util": { 381 | "version": "0.10.3", 382 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 383 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 384 | "dev": true, 385 | "requires": { 386 | "inherits": "2.0.1" 387 | } 388 | } 389 | } 390 | }, 391 | "assign-symbols": { 392 | "version": "1.0.0", 393 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 394 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 395 | "dev": true 396 | }, 397 | "async-each": { 398 | "version": "1.0.3", 399 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", 400 | "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", 401 | "dev": true, 402 | "optional": true 403 | }, 404 | "at-least-node": { 405 | "version": "1.0.0", 406 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 407 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", 408 | "dev": true 409 | }, 410 | "atob": { 411 | "version": "2.1.2", 412 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 413 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 414 | "dev": true 415 | }, 416 | "balanced-match": { 417 | "version": "1.0.0", 418 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 419 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 420 | "dev": true 421 | }, 422 | "base": { 423 | "version": "0.11.2", 424 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 425 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 426 | "dev": true, 427 | "requires": { 428 | "cache-base": "^1.0.1", 429 | "class-utils": "^0.3.5", 430 | "component-emitter": "^1.2.1", 431 | "define-property": "^1.0.0", 432 | "isobject": "^3.0.1", 433 | "mixin-deep": "^1.2.0", 434 | "pascalcase": "^0.1.1" 435 | }, 436 | "dependencies": { 437 | "define-property": { 438 | "version": "1.0.0", 439 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 440 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 441 | "dev": true, 442 | "requires": { 443 | "is-descriptor": "^1.0.0" 444 | } 445 | }, 446 | "is-accessor-descriptor": { 447 | "version": "1.0.0", 448 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 449 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 450 | "dev": true, 451 | "requires": { 452 | "kind-of": "^6.0.0" 453 | } 454 | }, 455 | "is-data-descriptor": { 456 | "version": "1.0.0", 457 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 458 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 459 | "dev": true, 460 | "requires": { 461 | "kind-of": "^6.0.0" 462 | } 463 | }, 464 | "is-descriptor": { 465 | "version": "1.0.2", 466 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 467 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 468 | "dev": true, 469 | "requires": { 470 | "is-accessor-descriptor": "^1.0.0", 471 | "is-data-descriptor": "^1.0.0", 472 | "kind-of": "^6.0.2" 473 | } 474 | } 475 | } 476 | }, 477 | "base64-js": { 478 | "version": "1.5.1", 479 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 480 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 481 | "dev": true 482 | }, 483 | "big.js": { 484 | "version": "5.2.2", 485 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 486 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 487 | "dev": true 488 | }, 489 | "binary-extensions": { 490 | "version": "2.0.0", 491 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", 492 | "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", 493 | "dev": true 494 | }, 495 | "bindings": { 496 | "version": "1.5.0", 497 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 498 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 499 | "dev": true, 500 | "optional": true, 501 | "requires": { 502 | "file-uri-to-path": "1.0.0" 503 | } 504 | }, 505 | "bluebird": { 506 | "version": "3.7.2", 507 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 508 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 509 | "dev": true 510 | }, 511 | "bn.js": { 512 | "version": "5.1.3", 513 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", 514 | "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", 515 | "dev": true 516 | }, 517 | "brace-expansion": { 518 | "version": "1.1.11", 519 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 520 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 521 | "dev": true, 522 | "requires": { 523 | "balanced-match": "^1.0.0", 524 | "concat-map": "0.0.1" 525 | } 526 | }, 527 | "braces": { 528 | "version": "3.0.2", 529 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 530 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 531 | "dev": true, 532 | "requires": { 533 | "fill-range": "^7.0.1" 534 | } 535 | }, 536 | "brorand": { 537 | "version": "1.1.0", 538 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 539 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 540 | "dev": true 541 | }, 542 | "browserify-aes": { 543 | "version": "1.2.0", 544 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 545 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 546 | "dev": true, 547 | "requires": { 548 | "buffer-xor": "^1.0.3", 549 | "cipher-base": "^1.0.0", 550 | "create-hash": "^1.1.0", 551 | "evp_bytestokey": "^1.0.3", 552 | "inherits": "^2.0.1", 553 | "safe-buffer": "^5.0.1" 554 | } 555 | }, 556 | "browserify-cipher": { 557 | "version": "1.0.1", 558 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 559 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 560 | "dev": true, 561 | "requires": { 562 | "browserify-aes": "^1.0.4", 563 | "browserify-des": "^1.0.0", 564 | "evp_bytestokey": "^1.0.0" 565 | } 566 | }, 567 | "browserify-des": { 568 | "version": "1.0.2", 569 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 570 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 571 | "dev": true, 572 | "requires": { 573 | "cipher-base": "^1.0.1", 574 | "des.js": "^1.0.0", 575 | "inherits": "^2.0.1", 576 | "safe-buffer": "^5.1.2" 577 | } 578 | }, 579 | "browserify-rsa": { 580 | "version": "4.1.0", 581 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 582 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 583 | "dev": true, 584 | "requires": { 585 | "bn.js": "^5.0.0", 586 | "randombytes": "^2.0.1" 587 | } 588 | }, 589 | "browserify-sign": { 590 | "version": "4.2.1", 591 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 592 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 593 | "dev": true, 594 | "requires": { 595 | "bn.js": "^5.1.1", 596 | "browserify-rsa": "^4.0.1", 597 | "create-hash": "^1.2.0", 598 | "create-hmac": "^1.1.7", 599 | "elliptic": "^6.5.3", 600 | "inherits": "^2.0.4", 601 | "parse-asn1": "^5.1.5", 602 | "readable-stream": "^3.6.0", 603 | "safe-buffer": "^5.2.0" 604 | }, 605 | "dependencies": { 606 | "readable-stream": { 607 | "version": "3.6.0", 608 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 609 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 610 | "dev": true, 611 | "requires": { 612 | "inherits": "^2.0.3", 613 | "string_decoder": "^1.1.1", 614 | "util-deprecate": "^1.0.1" 615 | } 616 | }, 617 | "safe-buffer": { 618 | "version": "5.2.1", 619 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 620 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 621 | "dev": true 622 | } 623 | } 624 | }, 625 | "browserify-zlib": { 626 | "version": "0.2.0", 627 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 628 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 629 | "dev": true, 630 | "requires": { 631 | "pako": "~1.0.5" 632 | } 633 | }, 634 | "buffer": { 635 | "version": "4.9.2", 636 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 637 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 638 | "dev": true, 639 | "requires": { 640 | "base64-js": "^1.0.2", 641 | "ieee754": "^1.1.4", 642 | "isarray": "^1.0.0" 643 | } 644 | }, 645 | "buffer-from": { 646 | "version": "1.1.1", 647 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 648 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 649 | "dev": true 650 | }, 651 | "buffer-xor": { 652 | "version": "1.0.3", 653 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 654 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 655 | "dev": true 656 | }, 657 | "builtin-status-codes": { 658 | "version": "3.0.0", 659 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 660 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 661 | "dev": true 662 | }, 663 | "cacache": { 664 | "version": "12.0.4", 665 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", 666 | "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", 667 | "dev": true, 668 | "requires": { 669 | "bluebird": "^3.5.5", 670 | "chownr": "^1.1.1", 671 | "figgy-pudding": "^3.5.1", 672 | "glob": "^7.1.4", 673 | "graceful-fs": "^4.1.15", 674 | "infer-owner": "^1.0.3", 675 | "lru-cache": "^5.1.1", 676 | "mississippi": "^3.0.0", 677 | "mkdirp": "^0.5.1", 678 | "move-concurrently": "^1.0.1", 679 | "promise-inflight": "^1.0.1", 680 | "rimraf": "^2.6.3", 681 | "ssri": "^6.0.1", 682 | "unique-filename": "^1.1.1", 683 | "y18n": "^4.0.0" 684 | } 685 | }, 686 | "cache-base": { 687 | "version": "1.0.1", 688 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 689 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 690 | "dev": true, 691 | "requires": { 692 | "collection-visit": "^1.0.0", 693 | "component-emitter": "^1.2.1", 694 | "get-value": "^2.0.6", 695 | "has-value": "^1.0.0", 696 | "isobject": "^3.0.1", 697 | "set-value": "^2.0.0", 698 | "to-object-path": "^0.3.0", 699 | "union-value": "^1.0.0", 700 | "unset-value": "^1.0.0" 701 | } 702 | }, 703 | "callsites": { 704 | "version": "3.1.0", 705 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 706 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 707 | "dev": true 708 | }, 709 | "centra": { 710 | "version": "2.4.2", 711 | "resolved": "https://registry.npmjs.org/centra/-/centra-2.4.2.tgz", 712 | "integrity": "sha512-f1RaP0V1HqVNEXfLfjNBthB2yy3KnSGnPCnOPCFLUk9e/Z4rNJ8nBaJNnghflnp88mi1IT8mfmW+HlMS1/H+bg==", 713 | "dev": true 714 | }, 715 | "chalk": { 716 | "version": "2.4.2", 717 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 718 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 719 | "dev": true, 720 | "requires": { 721 | "ansi-styles": "^3.2.1", 722 | "escape-string-regexp": "^1.0.5", 723 | "supports-color": "^5.3.0" 724 | }, 725 | "dependencies": { 726 | "supports-color": { 727 | "version": "5.5.0", 728 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 729 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 730 | "dev": true, 731 | "requires": { 732 | "has-flag": "^3.0.0" 733 | } 734 | } 735 | } 736 | }, 737 | "chokidar": { 738 | "version": "3.4.3", 739 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", 740 | "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", 741 | "dev": true, 742 | "optional": true, 743 | "requires": { 744 | "anymatch": "~3.1.1", 745 | "braces": "~3.0.2", 746 | "fsevents": "~2.1.2", 747 | "glob-parent": "~5.1.0", 748 | "is-binary-path": "~2.1.0", 749 | "is-glob": "~4.0.1", 750 | "normalize-path": "~3.0.0", 751 | "readdirp": "~3.5.0" 752 | } 753 | }, 754 | "chownr": { 755 | "version": "1.1.4", 756 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 757 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 758 | "dev": true 759 | }, 760 | "chrome-trace-event": { 761 | "version": "1.0.2", 762 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", 763 | "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", 764 | "dev": true, 765 | "requires": { 766 | "tslib": "^1.9.0" 767 | } 768 | }, 769 | "cipher-base": { 770 | "version": "1.0.4", 771 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 772 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 773 | "dev": true, 774 | "requires": { 775 | "inherits": "^2.0.1", 776 | "safe-buffer": "^5.0.1" 777 | } 778 | }, 779 | "class-utils": { 780 | "version": "0.3.6", 781 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 782 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 783 | "dev": true, 784 | "requires": { 785 | "arr-union": "^3.1.0", 786 | "define-property": "^0.2.5", 787 | "isobject": "^3.0.0", 788 | "static-extend": "^0.1.1" 789 | }, 790 | "dependencies": { 791 | "define-property": { 792 | "version": "0.2.5", 793 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 794 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 795 | "dev": true, 796 | "requires": { 797 | "is-descriptor": "^0.1.0" 798 | } 799 | } 800 | } 801 | }, 802 | "collection-visit": { 803 | "version": "1.0.0", 804 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 805 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 806 | "dev": true, 807 | "requires": { 808 | "map-visit": "^1.0.0", 809 | "object-visit": "^1.0.0" 810 | } 811 | }, 812 | "color-convert": { 813 | "version": "1.9.3", 814 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 815 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 816 | "dev": true, 817 | "requires": { 818 | "color-name": "1.1.3" 819 | } 820 | }, 821 | "color-name": { 822 | "version": "1.1.3", 823 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 824 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 825 | "dev": true 826 | }, 827 | "commander": { 828 | "version": "2.20.3", 829 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 830 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 831 | "dev": true 832 | }, 833 | "commondir": { 834 | "version": "1.0.1", 835 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 836 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 837 | "dev": true 838 | }, 839 | "component-emitter": { 840 | "version": "1.3.0", 841 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 842 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 843 | "dev": true 844 | }, 845 | "concat-map": { 846 | "version": "0.0.1", 847 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 848 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 849 | "dev": true 850 | }, 851 | "concat-stream": { 852 | "version": "1.6.2", 853 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 854 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 855 | "dev": true, 856 | "requires": { 857 | "buffer-from": "^1.0.0", 858 | "inherits": "^2.0.3", 859 | "readable-stream": "^2.2.2", 860 | "typedarray": "^0.0.6" 861 | } 862 | }, 863 | "console-browserify": { 864 | "version": "1.2.0", 865 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 866 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", 867 | "dev": true 868 | }, 869 | "constants-browserify": { 870 | "version": "1.0.0", 871 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 872 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 873 | "dev": true 874 | }, 875 | "copy-concurrently": { 876 | "version": "1.0.5", 877 | "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", 878 | "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", 879 | "dev": true, 880 | "requires": { 881 | "aproba": "^1.1.1", 882 | "fs-write-stream-atomic": "^1.0.8", 883 | "iferr": "^0.1.5", 884 | "mkdirp": "^0.5.1", 885 | "rimraf": "^2.5.4", 886 | "run-queue": "^1.0.0" 887 | } 888 | }, 889 | "copy-descriptor": { 890 | "version": "0.1.1", 891 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 892 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 893 | "dev": true 894 | }, 895 | "copy-webpack-plugin": { 896 | "version": "5.1.2", 897 | "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz", 898 | "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==", 899 | "dev": true, 900 | "requires": { 901 | "cacache": "^12.0.3", 902 | "find-cache-dir": "^2.1.0", 903 | "glob-parent": "^3.1.0", 904 | "globby": "^7.1.1", 905 | "is-glob": "^4.0.1", 906 | "loader-utils": "^1.2.3", 907 | "minimatch": "^3.0.4", 908 | "normalize-path": "^3.0.0", 909 | "p-limit": "^2.2.1", 910 | "schema-utils": "^1.0.0", 911 | "serialize-javascript": "^4.0.0", 912 | "webpack-log": "^2.0.0" 913 | }, 914 | "dependencies": { 915 | "glob-parent": { 916 | "version": "3.1.0", 917 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 918 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 919 | "dev": true, 920 | "requires": { 921 | "is-glob": "^3.1.0", 922 | "path-dirname": "^1.0.0" 923 | }, 924 | "dependencies": { 925 | "is-glob": { 926 | "version": "3.1.0", 927 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 928 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 929 | "dev": true, 930 | "requires": { 931 | "is-extglob": "^2.1.0" 932 | } 933 | } 934 | } 935 | } 936 | } 937 | }, 938 | "core-util-is": { 939 | "version": "1.0.2", 940 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 941 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 942 | "dev": true 943 | }, 944 | "cosmiconfig": { 945 | "version": "6.0.0", 946 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", 947 | "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", 948 | "dev": true, 949 | "requires": { 950 | "@types/parse-json": "^4.0.0", 951 | "import-fresh": "^3.1.0", 952 | "parse-json": "^5.0.0", 953 | "path-type": "^4.0.0", 954 | "yaml": "^1.7.2" 955 | } 956 | }, 957 | "create-ecdh": { 958 | "version": "4.0.4", 959 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 960 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 961 | "dev": true, 962 | "requires": { 963 | "bn.js": "^4.1.0", 964 | "elliptic": "^6.5.3" 965 | }, 966 | "dependencies": { 967 | "bn.js": { 968 | "version": "4.11.9", 969 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 970 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 971 | "dev": true 972 | } 973 | } 974 | }, 975 | "create-hash": { 976 | "version": "1.2.0", 977 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 978 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 979 | "dev": true, 980 | "requires": { 981 | "cipher-base": "^1.0.1", 982 | "inherits": "^2.0.1", 983 | "md5.js": "^1.3.4", 984 | "ripemd160": "^2.0.1", 985 | "sha.js": "^2.4.0" 986 | } 987 | }, 988 | "create-hmac": { 989 | "version": "1.1.7", 990 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 991 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 992 | "dev": true, 993 | "requires": { 994 | "cipher-base": "^1.0.3", 995 | "create-hash": "^1.1.0", 996 | "inherits": "^2.0.1", 997 | "ripemd160": "^2.0.0", 998 | "safe-buffer": "^5.0.1", 999 | "sha.js": "^2.4.8" 1000 | } 1001 | }, 1002 | "crypto-browserify": { 1003 | "version": "3.12.0", 1004 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 1005 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 1006 | "dev": true, 1007 | "requires": { 1008 | "browserify-cipher": "^1.0.0", 1009 | "browserify-sign": "^4.0.0", 1010 | "create-ecdh": "^4.0.0", 1011 | "create-hash": "^1.1.0", 1012 | "create-hmac": "^1.1.0", 1013 | "diffie-hellman": "^5.0.0", 1014 | "inherits": "^2.0.1", 1015 | "pbkdf2": "^3.0.3", 1016 | "public-encrypt": "^4.0.0", 1017 | "randombytes": "^2.0.0", 1018 | "randomfill": "^1.0.3" 1019 | } 1020 | }, 1021 | "cyclist": { 1022 | "version": "1.0.1", 1023 | "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", 1024 | "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", 1025 | "dev": true 1026 | }, 1027 | "debug": { 1028 | "version": "2.6.9", 1029 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1030 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1031 | "dev": true, 1032 | "requires": { 1033 | "ms": "2.0.0" 1034 | } 1035 | }, 1036 | "decode-uri-component": { 1037 | "version": "0.2.0", 1038 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 1039 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 1040 | "dev": true 1041 | }, 1042 | "deepmerge": { 1043 | "version": "4.2.2", 1044 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", 1045 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", 1046 | "dev": true 1047 | }, 1048 | "define-property": { 1049 | "version": "2.0.2", 1050 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 1051 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 1052 | "dev": true, 1053 | "requires": { 1054 | "is-descriptor": "^1.0.2", 1055 | "isobject": "^3.0.1" 1056 | }, 1057 | "dependencies": { 1058 | "is-accessor-descriptor": { 1059 | "version": "1.0.0", 1060 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1061 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1062 | "dev": true, 1063 | "requires": { 1064 | "kind-of": "^6.0.0" 1065 | } 1066 | }, 1067 | "is-data-descriptor": { 1068 | "version": "1.0.0", 1069 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1070 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1071 | "dev": true, 1072 | "requires": { 1073 | "kind-of": "^6.0.0" 1074 | } 1075 | }, 1076 | "is-descriptor": { 1077 | "version": "1.0.2", 1078 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1079 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1080 | "dev": true, 1081 | "requires": { 1082 | "is-accessor-descriptor": "^1.0.0", 1083 | "is-data-descriptor": "^1.0.0", 1084 | "kind-of": "^6.0.2" 1085 | } 1086 | } 1087 | } 1088 | }, 1089 | "des.js": { 1090 | "version": "1.0.1", 1091 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 1092 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 1093 | "dev": true, 1094 | "requires": { 1095 | "inherits": "^2.0.1", 1096 | "minimalistic-assert": "^1.0.0" 1097 | } 1098 | }, 1099 | "diffie-hellman": { 1100 | "version": "5.0.3", 1101 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1102 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1103 | "dev": true, 1104 | "requires": { 1105 | "bn.js": "^4.1.0", 1106 | "miller-rabin": "^4.0.0", 1107 | "randombytes": "^2.0.0" 1108 | }, 1109 | "dependencies": { 1110 | "bn.js": { 1111 | "version": "4.11.9", 1112 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1113 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 1114 | "dev": true 1115 | } 1116 | } 1117 | }, 1118 | "dir-glob": { 1119 | "version": "2.2.2", 1120 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", 1121 | "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", 1122 | "dev": true, 1123 | "requires": { 1124 | "path-type": "^3.0.0" 1125 | }, 1126 | "dependencies": { 1127 | "path-type": { 1128 | "version": "3.0.0", 1129 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 1130 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 1131 | "dev": true, 1132 | "requires": { 1133 | "pify": "^3.0.0" 1134 | } 1135 | }, 1136 | "pify": { 1137 | "version": "3.0.0", 1138 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1139 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1140 | "dev": true 1141 | } 1142 | } 1143 | }, 1144 | "domain-browser": { 1145 | "version": "1.2.0", 1146 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1147 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1148 | "dev": true 1149 | }, 1150 | "duplexify": { 1151 | "version": "3.7.1", 1152 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", 1153 | "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", 1154 | "dev": true, 1155 | "requires": { 1156 | "end-of-stream": "^1.0.0", 1157 | "inherits": "^2.0.1", 1158 | "readable-stream": "^2.0.0", 1159 | "stream-shift": "^1.0.0" 1160 | } 1161 | }, 1162 | "elliptic": { 1163 | "version": "6.5.3", 1164 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", 1165 | "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", 1166 | "dev": true, 1167 | "requires": { 1168 | "bn.js": "^4.4.0", 1169 | "brorand": "^1.0.1", 1170 | "hash.js": "^1.0.0", 1171 | "hmac-drbg": "^1.0.0", 1172 | "inherits": "^2.0.1", 1173 | "minimalistic-assert": "^1.0.0", 1174 | "minimalistic-crypto-utils": "^1.0.0" 1175 | }, 1176 | "dependencies": { 1177 | "bn.js": { 1178 | "version": "4.11.9", 1179 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1180 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 1181 | "dev": true 1182 | } 1183 | } 1184 | }, 1185 | "emojis-list": { 1186 | "version": "3.0.0", 1187 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 1188 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 1189 | "dev": true 1190 | }, 1191 | "end-of-stream": { 1192 | "version": "1.4.4", 1193 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1194 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1195 | "dev": true, 1196 | "requires": { 1197 | "once": "^1.4.0" 1198 | } 1199 | }, 1200 | "enhanced-resolve": { 1201 | "version": "4.1.1", 1202 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", 1203 | "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", 1204 | "dev": true, 1205 | "requires": { 1206 | "graceful-fs": "^4.1.2", 1207 | "memory-fs": "^0.5.0", 1208 | "tapable": "^1.0.0" 1209 | } 1210 | }, 1211 | "errno": { 1212 | "version": "0.1.7", 1213 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", 1214 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", 1215 | "dev": true, 1216 | "requires": { 1217 | "prr": "~1.0.1" 1218 | } 1219 | }, 1220 | "error-ex": { 1221 | "version": "1.3.2", 1222 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1223 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1224 | "dev": true, 1225 | "requires": { 1226 | "is-arrayish": "^0.2.1" 1227 | } 1228 | }, 1229 | "escape-string-regexp": { 1230 | "version": "1.0.5", 1231 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1232 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1233 | "dev": true 1234 | }, 1235 | "eslint-scope": { 1236 | "version": "4.0.3", 1237 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", 1238 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", 1239 | "dev": true, 1240 | "requires": { 1241 | "esrecurse": "^4.1.0", 1242 | "estraverse": "^4.1.1" 1243 | } 1244 | }, 1245 | "esrecurse": { 1246 | "version": "4.3.0", 1247 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1248 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1249 | "dev": true, 1250 | "requires": { 1251 | "estraverse": "^5.2.0" 1252 | }, 1253 | "dependencies": { 1254 | "estraverse": { 1255 | "version": "5.2.0", 1256 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1257 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1258 | "dev": true 1259 | } 1260 | } 1261 | }, 1262 | "estraverse": { 1263 | "version": "4.3.0", 1264 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1265 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1266 | "dev": true 1267 | }, 1268 | "events": { 1269 | "version": "3.2.0", 1270 | "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", 1271 | "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", 1272 | "dev": true 1273 | }, 1274 | "evp_bytestokey": { 1275 | "version": "1.0.3", 1276 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1277 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1278 | "dev": true, 1279 | "requires": { 1280 | "md5.js": "^1.3.4", 1281 | "safe-buffer": "^5.1.1" 1282 | } 1283 | }, 1284 | "expand-brackets": { 1285 | "version": "2.1.4", 1286 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 1287 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 1288 | "dev": true, 1289 | "requires": { 1290 | "debug": "^2.3.3", 1291 | "define-property": "^0.2.5", 1292 | "extend-shallow": "^2.0.1", 1293 | "posix-character-classes": "^0.1.0", 1294 | "regex-not": "^1.0.0", 1295 | "snapdragon": "^0.8.1", 1296 | "to-regex": "^3.0.1" 1297 | }, 1298 | "dependencies": { 1299 | "define-property": { 1300 | "version": "0.2.5", 1301 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1302 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1303 | "dev": true, 1304 | "requires": { 1305 | "is-descriptor": "^0.1.0" 1306 | } 1307 | }, 1308 | "extend-shallow": { 1309 | "version": "2.0.1", 1310 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1311 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1312 | "dev": true, 1313 | "requires": { 1314 | "is-extendable": "^0.1.0" 1315 | } 1316 | } 1317 | } 1318 | }, 1319 | "extend-shallow": { 1320 | "version": "3.0.2", 1321 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 1322 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1323 | "dev": true, 1324 | "requires": { 1325 | "assign-symbols": "^1.0.0", 1326 | "is-extendable": "^1.0.1" 1327 | }, 1328 | "dependencies": { 1329 | "is-extendable": { 1330 | "version": "1.0.1", 1331 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1332 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1333 | "dev": true, 1334 | "requires": { 1335 | "is-plain-object": "^2.0.4" 1336 | } 1337 | } 1338 | } 1339 | }, 1340 | "extglob": { 1341 | "version": "2.0.4", 1342 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 1343 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 1344 | "dev": true, 1345 | "requires": { 1346 | "array-unique": "^0.3.2", 1347 | "define-property": "^1.0.0", 1348 | "expand-brackets": "^2.1.4", 1349 | "extend-shallow": "^2.0.1", 1350 | "fragment-cache": "^0.2.1", 1351 | "regex-not": "^1.0.0", 1352 | "snapdragon": "^0.8.1", 1353 | "to-regex": "^3.0.1" 1354 | }, 1355 | "dependencies": { 1356 | "define-property": { 1357 | "version": "1.0.0", 1358 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1359 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1360 | "dev": true, 1361 | "requires": { 1362 | "is-descriptor": "^1.0.0" 1363 | } 1364 | }, 1365 | "extend-shallow": { 1366 | "version": "2.0.1", 1367 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1368 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1369 | "dev": true, 1370 | "requires": { 1371 | "is-extendable": "^0.1.0" 1372 | } 1373 | }, 1374 | "is-accessor-descriptor": { 1375 | "version": "1.0.0", 1376 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1377 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1378 | "dev": true, 1379 | "requires": { 1380 | "kind-of": "^6.0.0" 1381 | } 1382 | }, 1383 | "is-data-descriptor": { 1384 | "version": "1.0.0", 1385 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1386 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1387 | "dev": true, 1388 | "requires": { 1389 | "kind-of": "^6.0.0" 1390 | } 1391 | }, 1392 | "is-descriptor": { 1393 | "version": "1.0.2", 1394 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1395 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1396 | "dev": true, 1397 | "requires": { 1398 | "is-accessor-descriptor": "^1.0.0", 1399 | "is-data-descriptor": "^1.0.0", 1400 | "kind-of": "^6.0.2" 1401 | } 1402 | } 1403 | } 1404 | }, 1405 | "fast-deep-equal": { 1406 | "version": "3.1.1", 1407 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 1408 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 1409 | "dev": true 1410 | }, 1411 | "fast-json-stable-stringify": { 1412 | "version": "2.1.0", 1413 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1414 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1415 | "dev": true 1416 | }, 1417 | "figgy-pudding": { 1418 | "version": "3.5.2", 1419 | "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", 1420 | "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", 1421 | "dev": true 1422 | }, 1423 | "file-uri-to-path": { 1424 | "version": "1.0.0", 1425 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 1426 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", 1427 | "dev": true, 1428 | "optional": true 1429 | }, 1430 | "fill-range": { 1431 | "version": "7.0.1", 1432 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1433 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1434 | "dev": true, 1435 | "requires": { 1436 | "to-regex-range": "^5.0.1" 1437 | } 1438 | }, 1439 | "find-cache-dir": { 1440 | "version": "2.1.0", 1441 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", 1442 | "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", 1443 | "dev": true, 1444 | "requires": { 1445 | "commondir": "^1.0.1", 1446 | "make-dir": "^2.0.0", 1447 | "pkg-dir": "^3.0.0" 1448 | } 1449 | }, 1450 | "find-up": { 1451 | "version": "3.0.0", 1452 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1453 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1454 | "dev": true, 1455 | "requires": { 1456 | "locate-path": "^3.0.0" 1457 | } 1458 | }, 1459 | "flush-write-stream": { 1460 | "version": "1.1.1", 1461 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", 1462 | "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", 1463 | "dev": true, 1464 | "requires": { 1465 | "inherits": "^2.0.3", 1466 | "readable-stream": "^2.3.6" 1467 | } 1468 | }, 1469 | "for-in": { 1470 | "version": "1.0.2", 1471 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1472 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1473 | "dev": true 1474 | }, 1475 | "fork-ts-checker-webpack-plugin": { 1476 | "version": "6.0.6", 1477 | "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.0.6.tgz", 1478 | "integrity": "sha512-ZxtF9vwhXvoPv3rriV4NgouQy/TTUA5rh/iw60ztRxgGUVfxe4gv/LQlDkCzttiCqYlHTbUm3G6tdfdb4OBH+Q==", 1479 | "dev": true, 1480 | "requires": { 1481 | "@babel/code-frame": "^7.8.3", 1482 | "@types/json-schema": "^7.0.5", 1483 | "chalk": "^4.1.0", 1484 | "chokidar": "^3.4.2", 1485 | "cosmiconfig": "^6.0.0", 1486 | "deepmerge": "^4.2.2", 1487 | "fs-extra": "^9.0.0", 1488 | "memfs": "^3.1.2", 1489 | "minimatch": "^3.0.4", 1490 | "schema-utils": "2.7.0", 1491 | "semver": "^7.3.2", 1492 | "tapable": "^1.0.0" 1493 | }, 1494 | "dependencies": { 1495 | "ansi-styles": { 1496 | "version": "4.3.0", 1497 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1498 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1499 | "dev": true, 1500 | "requires": { 1501 | "color-convert": "^2.0.1" 1502 | } 1503 | }, 1504 | "chalk": { 1505 | "version": "4.1.0", 1506 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 1507 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 1508 | "dev": true, 1509 | "requires": { 1510 | "ansi-styles": "^4.1.0", 1511 | "supports-color": "^7.1.0" 1512 | } 1513 | }, 1514 | "chokidar": { 1515 | "version": "3.4.3", 1516 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", 1517 | "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", 1518 | "dev": true, 1519 | "requires": { 1520 | "anymatch": "~3.1.1", 1521 | "braces": "~3.0.2", 1522 | "fsevents": "~2.1.2", 1523 | "glob-parent": "~5.1.0", 1524 | "is-binary-path": "~2.1.0", 1525 | "is-glob": "~4.0.1", 1526 | "normalize-path": "~3.0.0", 1527 | "readdirp": "~3.5.0" 1528 | } 1529 | }, 1530 | "color-convert": { 1531 | "version": "2.0.1", 1532 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1533 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1534 | "dev": true, 1535 | "requires": { 1536 | "color-name": "~1.1.4" 1537 | } 1538 | }, 1539 | "color-name": { 1540 | "version": "1.1.4", 1541 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1542 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1543 | "dev": true 1544 | }, 1545 | "lru-cache": { 1546 | "version": "6.0.0", 1547 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1548 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1549 | "dev": true, 1550 | "requires": { 1551 | "yallist": "^4.0.0" 1552 | } 1553 | }, 1554 | "readdirp": { 1555 | "version": "3.5.0", 1556 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 1557 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 1558 | "dev": true, 1559 | "requires": { 1560 | "picomatch": "^2.2.1" 1561 | } 1562 | }, 1563 | "schema-utils": { 1564 | "version": "2.7.0", 1565 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", 1566 | "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", 1567 | "dev": true, 1568 | "requires": { 1569 | "@types/json-schema": "^7.0.4", 1570 | "ajv": "^6.12.2", 1571 | "ajv-keywords": "^3.4.1" 1572 | } 1573 | }, 1574 | "semver": { 1575 | "version": "7.3.4", 1576 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 1577 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 1578 | "dev": true, 1579 | "requires": { 1580 | "lru-cache": "^6.0.0" 1581 | } 1582 | }, 1583 | "yallist": { 1584 | "version": "4.0.0", 1585 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1586 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1587 | "dev": true 1588 | } 1589 | } 1590 | }, 1591 | "fragment-cache": { 1592 | "version": "0.2.1", 1593 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1594 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1595 | "dev": true, 1596 | "requires": { 1597 | "map-cache": "^0.2.2" 1598 | } 1599 | }, 1600 | "from2": { 1601 | "version": "2.3.0", 1602 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 1603 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", 1604 | "dev": true, 1605 | "requires": { 1606 | "inherits": "^2.0.1", 1607 | "readable-stream": "^2.0.0" 1608 | } 1609 | }, 1610 | "fs-extra": { 1611 | "version": "9.0.1", 1612 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", 1613 | "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", 1614 | "dev": true, 1615 | "requires": { 1616 | "at-least-node": "^1.0.0", 1617 | "graceful-fs": "^4.2.0", 1618 | "jsonfile": "^6.0.1", 1619 | "universalify": "^1.0.0" 1620 | } 1621 | }, 1622 | "fs-monkey": { 1623 | "version": "1.0.1", 1624 | "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.1.tgz", 1625 | "integrity": "sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA==", 1626 | "dev": true 1627 | }, 1628 | "fs-write-stream-atomic": { 1629 | "version": "1.0.10", 1630 | "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", 1631 | "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", 1632 | "dev": true, 1633 | "requires": { 1634 | "graceful-fs": "^4.1.2", 1635 | "iferr": "^0.1.5", 1636 | "imurmurhash": "^0.1.4", 1637 | "readable-stream": "1 || 2" 1638 | } 1639 | }, 1640 | "fs.realpath": { 1641 | "version": "1.0.0", 1642 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1643 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1644 | "dev": true 1645 | }, 1646 | "fsevents": { 1647 | "version": "2.1.3", 1648 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", 1649 | "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", 1650 | "dev": true, 1651 | "optional": true 1652 | }, 1653 | "get-value": { 1654 | "version": "2.0.6", 1655 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 1656 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 1657 | "dev": true 1658 | }, 1659 | "glob": { 1660 | "version": "7.1.6", 1661 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1662 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1663 | "dev": true, 1664 | "requires": { 1665 | "fs.realpath": "^1.0.0", 1666 | "inflight": "^1.0.4", 1667 | "inherits": "2", 1668 | "minimatch": "^3.0.4", 1669 | "once": "^1.3.0", 1670 | "path-is-absolute": "^1.0.0" 1671 | } 1672 | }, 1673 | "glob-parent": { 1674 | "version": "5.1.1", 1675 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 1676 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 1677 | "dev": true, 1678 | "requires": { 1679 | "is-glob": "^4.0.1" 1680 | } 1681 | }, 1682 | "globby": { 1683 | "version": "7.1.1", 1684 | "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", 1685 | "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", 1686 | "dev": true, 1687 | "requires": { 1688 | "array-union": "^1.0.1", 1689 | "dir-glob": "^2.0.0", 1690 | "glob": "^7.1.2", 1691 | "ignore": "^3.3.5", 1692 | "pify": "^3.0.0", 1693 | "slash": "^1.0.0" 1694 | }, 1695 | "dependencies": { 1696 | "pify": { 1697 | "version": "3.0.0", 1698 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1699 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 1700 | "dev": true 1701 | } 1702 | } 1703 | }, 1704 | "graceful-fs": { 1705 | "version": "4.2.4", 1706 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1707 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", 1708 | "dev": true 1709 | }, 1710 | "has-flag": { 1711 | "version": "3.0.0", 1712 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1713 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1714 | "dev": true 1715 | }, 1716 | "has-value": { 1717 | "version": "1.0.0", 1718 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1719 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1720 | "dev": true, 1721 | "requires": { 1722 | "get-value": "^2.0.6", 1723 | "has-values": "^1.0.0", 1724 | "isobject": "^3.0.0" 1725 | } 1726 | }, 1727 | "has-values": { 1728 | "version": "1.0.0", 1729 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 1730 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1731 | "dev": true, 1732 | "requires": { 1733 | "is-number": "^3.0.0", 1734 | "kind-of": "^4.0.0" 1735 | }, 1736 | "dependencies": { 1737 | "is-number": { 1738 | "version": "3.0.0", 1739 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1740 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1741 | "dev": true, 1742 | "requires": { 1743 | "kind-of": "^3.0.2" 1744 | }, 1745 | "dependencies": { 1746 | "kind-of": { 1747 | "version": "3.2.2", 1748 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1749 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1750 | "dev": true, 1751 | "requires": { 1752 | "is-buffer": "^1.1.5" 1753 | } 1754 | } 1755 | } 1756 | }, 1757 | "kind-of": { 1758 | "version": "4.0.0", 1759 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1760 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1761 | "dev": true, 1762 | "requires": { 1763 | "is-buffer": "^1.1.5" 1764 | } 1765 | } 1766 | } 1767 | }, 1768 | "hash-base": { 1769 | "version": "3.1.0", 1770 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 1771 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 1772 | "dev": true, 1773 | "requires": { 1774 | "inherits": "^2.0.4", 1775 | "readable-stream": "^3.6.0", 1776 | "safe-buffer": "^5.2.0" 1777 | }, 1778 | "dependencies": { 1779 | "readable-stream": { 1780 | "version": "3.6.0", 1781 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1782 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1783 | "dev": true, 1784 | "requires": { 1785 | "inherits": "^2.0.3", 1786 | "string_decoder": "^1.1.1", 1787 | "util-deprecate": "^1.0.1" 1788 | } 1789 | }, 1790 | "safe-buffer": { 1791 | "version": "5.2.1", 1792 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1793 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1794 | "dev": true 1795 | } 1796 | } 1797 | }, 1798 | "hash.js": { 1799 | "version": "1.1.7", 1800 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1801 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1802 | "dev": true, 1803 | "requires": { 1804 | "inherits": "^2.0.3", 1805 | "minimalistic-assert": "^1.0.1" 1806 | } 1807 | }, 1808 | "hmac-drbg": { 1809 | "version": "1.0.1", 1810 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1811 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1812 | "dev": true, 1813 | "requires": { 1814 | "hash.js": "^1.0.3", 1815 | "minimalistic-assert": "^1.0.0", 1816 | "minimalistic-crypto-utils": "^1.0.1" 1817 | } 1818 | }, 1819 | "https-browserify": { 1820 | "version": "1.0.0", 1821 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1822 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 1823 | "dev": true 1824 | }, 1825 | "ieee754": { 1826 | "version": "1.2.1", 1827 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1828 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1829 | "dev": true 1830 | }, 1831 | "iferr": { 1832 | "version": "0.1.5", 1833 | "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", 1834 | "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", 1835 | "dev": true 1836 | }, 1837 | "ignore": { 1838 | "version": "3.3.10", 1839 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", 1840 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", 1841 | "dev": true 1842 | }, 1843 | "import-fresh": { 1844 | "version": "3.2.2", 1845 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", 1846 | "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", 1847 | "dev": true, 1848 | "requires": { 1849 | "parent-module": "^1.0.0", 1850 | "resolve-from": "^4.0.0" 1851 | }, 1852 | "dependencies": { 1853 | "resolve-from": { 1854 | "version": "4.0.0", 1855 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1856 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1857 | "dev": true 1858 | } 1859 | } 1860 | }, 1861 | "imurmurhash": { 1862 | "version": "0.1.4", 1863 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1864 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1865 | "dev": true 1866 | }, 1867 | "infer-owner": { 1868 | "version": "1.0.4", 1869 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", 1870 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", 1871 | "dev": true 1872 | }, 1873 | "inflight": { 1874 | "version": "1.0.6", 1875 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1876 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1877 | "dev": true, 1878 | "requires": { 1879 | "once": "^1.3.0", 1880 | "wrappy": "1" 1881 | } 1882 | }, 1883 | "inherits": { 1884 | "version": "2.0.4", 1885 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1886 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1887 | "dev": true 1888 | }, 1889 | "is-accessor-descriptor": { 1890 | "version": "0.1.6", 1891 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1892 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1893 | "dev": true, 1894 | "requires": { 1895 | "kind-of": "^3.0.2" 1896 | }, 1897 | "dependencies": { 1898 | "kind-of": { 1899 | "version": "3.2.2", 1900 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1901 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1902 | "dev": true, 1903 | "requires": { 1904 | "is-buffer": "^1.1.5" 1905 | } 1906 | } 1907 | } 1908 | }, 1909 | "is-arrayish": { 1910 | "version": "0.2.1", 1911 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1912 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1913 | "dev": true 1914 | }, 1915 | "is-binary-path": { 1916 | "version": "2.1.0", 1917 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1918 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1919 | "dev": true, 1920 | "requires": { 1921 | "binary-extensions": "^2.0.0" 1922 | } 1923 | }, 1924 | "is-buffer": { 1925 | "version": "1.1.6", 1926 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1927 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1928 | "dev": true 1929 | }, 1930 | "is-data-descriptor": { 1931 | "version": "0.1.4", 1932 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1933 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1934 | "dev": true, 1935 | "requires": { 1936 | "kind-of": "^3.0.2" 1937 | }, 1938 | "dependencies": { 1939 | "kind-of": { 1940 | "version": "3.2.2", 1941 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1942 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1943 | "dev": true, 1944 | "requires": { 1945 | "is-buffer": "^1.1.5" 1946 | } 1947 | } 1948 | } 1949 | }, 1950 | "is-descriptor": { 1951 | "version": "0.1.6", 1952 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1953 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1954 | "dev": true, 1955 | "requires": { 1956 | "is-accessor-descriptor": "^0.1.6", 1957 | "is-data-descriptor": "^0.1.4", 1958 | "kind-of": "^5.0.0" 1959 | }, 1960 | "dependencies": { 1961 | "kind-of": { 1962 | "version": "5.1.0", 1963 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1964 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 1965 | "dev": true 1966 | } 1967 | } 1968 | }, 1969 | "is-extendable": { 1970 | "version": "0.1.1", 1971 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1972 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1973 | "dev": true 1974 | }, 1975 | "is-extglob": { 1976 | "version": "2.1.1", 1977 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1978 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1979 | "dev": true 1980 | }, 1981 | "is-glob": { 1982 | "version": "4.0.1", 1983 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1984 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1985 | "dev": true, 1986 | "requires": { 1987 | "is-extglob": "^2.1.1" 1988 | } 1989 | }, 1990 | "is-number": { 1991 | "version": "7.0.0", 1992 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1993 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1994 | "dev": true 1995 | }, 1996 | "is-plain-object": { 1997 | "version": "2.0.4", 1998 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1999 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2000 | "dev": true, 2001 | "requires": { 2002 | "isobject": "^3.0.1" 2003 | } 2004 | }, 2005 | "is-windows": { 2006 | "version": "1.0.2", 2007 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2008 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2009 | "dev": true 2010 | }, 2011 | "is-wsl": { 2012 | "version": "1.1.0", 2013 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 2014 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", 2015 | "dev": true 2016 | }, 2017 | "isarray": { 2018 | "version": "1.0.0", 2019 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2020 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2021 | "dev": true 2022 | }, 2023 | "isobject": { 2024 | "version": "3.0.1", 2025 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2026 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2027 | "dev": true 2028 | }, 2029 | "js-tokens": { 2030 | "version": "4.0.0", 2031 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2032 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2033 | "dev": true 2034 | }, 2035 | "json-parse-better-errors": { 2036 | "version": "1.0.2", 2037 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 2038 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 2039 | "dev": true 2040 | }, 2041 | "json-parse-even-better-errors": { 2042 | "version": "2.3.1", 2043 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2044 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2045 | "dev": true 2046 | }, 2047 | "json-schema-traverse": { 2048 | "version": "0.4.1", 2049 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2050 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2051 | "dev": true 2052 | }, 2053 | "json5": { 2054 | "version": "1.0.1", 2055 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 2056 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 2057 | "dev": true, 2058 | "requires": { 2059 | "minimist": "^1.2.0" 2060 | }, 2061 | "dependencies": { 2062 | "minimist": { 2063 | "version": "1.2.5", 2064 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2065 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2066 | "dev": true 2067 | } 2068 | } 2069 | }, 2070 | "jsonfile": { 2071 | "version": "6.1.0", 2072 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 2073 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 2074 | "dev": true, 2075 | "requires": { 2076 | "graceful-fs": "^4.1.6", 2077 | "universalify": "^2.0.0" 2078 | }, 2079 | "dependencies": { 2080 | "universalify": { 2081 | "version": "2.0.0", 2082 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 2083 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 2084 | "dev": true 2085 | } 2086 | } 2087 | }, 2088 | "kind-of": { 2089 | "version": "6.0.3", 2090 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2091 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2092 | "dev": true 2093 | }, 2094 | "lines-and-columns": { 2095 | "version": "1.1.6", 2096 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 2097 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", 2098 | "dev": true 2099 | }, 2100 | "loader-runner": { 2101 | "version": "2.4.0", 2102 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", 2103 | "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", 2104 | "dev": true 2105 | }, 2106 | "loader-utils": { 2107 | "version": "1.4.0", 2108 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 2109 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 2110 | "dev": true, 2111 | "requires": { 2112 | "big.js": "^5.2.2", 2113 | "emojis-list": "^3.0.0", 2114 | "json5": "^1.0.1" 2115 | } 2116 | }, 2117 | "locate-path": { 2118 | "version": "3.0.0", 2119 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2120 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2121 | "dev": true, 2122 | "requires": { 2123 | "p-locate": "^3.0.0", 2124 | "path-exists": "^3.0.0" 2125 | } 2126 | }, 2127 | "lru-cache": { 2128 | "version": "5.1.1", 2129 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 2130 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 2131 | "dev": true, 2132 | "requires": { 2133 | "yallist": "^3.0.2" 2134 | } 2135 | }, 2136 | "make-dir": { 2137 | "version": "2.1.0", 2138 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 2139 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 2140 | "dev": true, 2141 | "requires": { 2142 | "pify": "^4.0.1", 2143 | "semver": "^5.6.0" 2144 | } 2145 | }, 2146 | "map-cache": { 2147 | "version": "0.2.2", 2148 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2149 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2150 | "dev": true 2151 | }, 2152 | "map-visit": { 2153 | "version": "1.0.0", 2154 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 2155 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2156 | "dev": true, 2157 | "requires": { 2158 | "object-visit": "^1.0.0" 2159 | } 2160 | }, 2161 | "md5.js": { 2162 | "version": "1.3.5", 2163 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 2164 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 2165 | "dev": true, 2166 | "requires": { 2167 | "hash-base": "^3.0.0", 2168 | "inherits": "^2.0.1", 2169 | "safe-buffer": "^5.1.2" 2170 | } 2171 | }, 2172 | "memfs": { 2173 | "version": "3.2.0", 2174 | "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.0.tgz", 2175 | "integrity": "sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A==", 2176 | "dev": true, 2177 | "requires": { 2178 | "fs-monkey": "1.0.1" 2179 | } 2180 | }, 2181 | "memory-fs": { 2182 | "version": "0.5.0", 2183 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 2184 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", 2185 | "dev": true, 2186 | "requires": { 2187 | "errno": "^0.1.3", 2188 | "readable-stream": "^2.0.1" 2189 | } 2190 | }, 2191 | "micromatch": { 2192 | "version": "4.0.2", 2193 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 2194 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 2195 | "dev": true, 2196 | "requires": { 2197 | "braces": "^3.0.1", 2198 | "picomatch": "^2.0.5" 2199 | } 2200 | }, 2201 | "miller-rabin": { 2202 | "version": "4.0.1", 2203 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 2204 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 2205 | "dev": true, 2206 | "requires": { 2207 | "bn.js": "^4.0.0", 2208 | "brorand": "^1.0.1" 2209 | }, 2210 | "dependencies": { 2211 | "bn.js": { 2212 | "version": "4.11.9", 2213 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 2214 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 2215 | "dev": true 2216 | } 2217 | } 2218 | }, 2219 | "minimalistic-assert": { 2220 | "version": "1.0.1", 2221 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 2222 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 2223 | "dev": true 2224 | }, 2225 | "minimalistic-crypto-utils": { 2226 | "version": "1.0.1", 2227 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 2228 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 2229 | "dev": true 2230 | }, 2231 | "minimatch": { 2232 | "version": "3.0.4", 2233 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2234 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2235 | "dev": true, 2236 | "requires": { 2237 | "brace-expansion": "^1.1.7" 2238 | } 2239 | }, 2240 | "minimist": { 2241 | "version": "1.2.5", 2242 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2243 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2244 | "dev": true 2245 | }, 2246 | "mississippi": { 2247 | "version": "3.0.0", 2248 | "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", 2249 | "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", 2250 | "dev": true, 2251 | "requires": { 2252 | "concat-stream": "^1.5.0", 2253 | "duplexify": "^3.4.2", 2254 | "end-of-stream": "^1.1.0", 2255 | "flush-write-stream": "^1.0.0", 2256 | "from2": "^2.1.0", 2257 | "parallel-transform": "^1.1.0", 2258 | "pump": "^3.0.0", 2259 | "pumpify": "^1.3.3", 2260 | "stream-each": "^1.1.0", 2261 | "through2": "^2.0.0" 2262 | } 2263 | }, 2264 | "mixin-deep": { 2265 | "version": "1.3.2", 2266 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 2267 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 2268 | "dev": true, 2269 | "requires": { 2270 | "for-in": "^1.0.2", 2271 | "is-extendable": "^1.0.1" 2272 | }, 2273 | "dependencies": { 2274 | "is-extendable": { 2275 | "version": "1.0.1", 2276 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 2277 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 2278 | "dev": true, 2279 | "requires": { 2280 | "is-plain-object": "^2.0.4" 2281 | } 2282 | } 2283 | } 2284 | }, 2285 | "mkdirp": { 2286 | "version": "0.5.5", 2287 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2288 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2289 | "dev": true, 2290 | "requires": { 2291 | "minimist": "^1.2.5" 2292 | } 2293 | }, 2294 | "move-concurrently": { 2295 | "version": "1.0.1", 2296 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", 2297 | "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", 2298 | "dev": true, 2299 | "requires": { 2300 | "aproba": "^1.1.1", 2301 | "copy-concurrently": "^1.0.0", 2302 | "fs-write-stream-atomic": "^1.0.8", 2303 | "mkdirp": "^0.5.1", 2304 | "rimraf": "^2.5.4", 2305 | "run-queue": "^1.0.3" 2306 | } 2307 | }, 2308 | "ms": { 2309 | "version": "2.0.0", 2310 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2311 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2312 | "dev": true 2313 | }, 2314 | "nan": { 2315 | "version": "2.14.2", 2316 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", 2317 | "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", 2318 | "dev": true, 2319 | "optional": true 2320 | }, 2321 | "nanomatch": { 2322 | "version": "1.2.13", 2323 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 2324 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 2325 | "dev": true, 2326 | "requires": { 2327 | "arr-diff": "^4.0.0", 2328 | "array-unique": "^0.3.2", 2329 | "define-property": "^2.0.2", 2330 | "extend-shallow": "^3.0.2", 2331 | "fragment-cache": "^0.2.1", 2332 | "is-windows": "^1.0.2", 2333 | "kind-of": "^6.0.2", 2334 | "object.pick": "^1.3.0", 2335 | "regex-not": "^1.0.0", 2336 | "snapdragon": "^0.8.1", 2337 | "to-regex": "^3.0.1" 2338 | } 2339 | }, 2340 | "neo-async": { 2341 | "version": "2.6.2", 2342 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 2343 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 2344 | "dev": true 2345 | }, 2346 | "node-libs-browser": { 2347 | "version": "2.2.1", 2348 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 2349 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 2350 | "dev": true, 2351 | "requires": { 2352 | "assert": "^1.1.1", 2353 | "browserify-zlib": "^0.2.0", 2354 | "buffer": "^4.3.0", 2355 | "console-browserify": "^1.1.0", 2356 | "constants-browserify": "^1.0.0", 2357 | "crypto-browserify": "^3.11.0", 2358 | "domain-browser": "^1.1.1", 2359 | "events": "^3.0.0", 2360 | "https-browserify": "^1.0.0", 2361 | "os-browserify": "^0.3.0", 2362 | "path-browserify": "0.0.1", 2363 | "process": "^0.11.10", 2364 | "punycode": "^1.2.4", 2365 | "querystring-es3": "^0.2.0", 2366 | "readable-stream": "^2.3.3", 2367 | "stream-browserify": "^2.0.1", 2368 | "stream-http": "^2.7.2", 2369 | "string_decoder": "^1.0.0", 2370 | "timers-browserify": "^2.0.4", 2371 | "tty-browserify": "0.0.0", 2372 | "url": "^0.11.0", 2373 | "util": "^0.11.0", 2374 | "vm-browserify": "^1.0.1" 2375 | }, 2376 | "dependencies": { 2377 | "punycode": { 2378 | "version": "1.4.1", 2379 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2380 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 2381 | "dev": true 2382 | } 2383 | } 2384 | }, 2385 | "normalize-path": { 2386 | "version": "3.0.0", 2387 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2388 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2389 | "dev": true 2390 | }, 2391 | "object-assign": { 2392 | "version": "4.1.1", 2393 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2394 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2395 | "dev": true 2396 | }, 2397 | "object-copy": { 2398 | "version": "0.1.0", 2399 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2400 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 2401 | "dev": true, 2402 | "requires": { 2403 | "copy-descriptor": "^0.1.0", 2404 | "define-property": "^0.2.5", 2405 | "kind-of": "^3.0.3" 2406 | }, 2407 | "dependencies": { 2408 | "define-property": { 2409 | "version": "0.2.5", 2410 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2411 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2412 | "dev": true, 2413 | "requires": { 2414 | "is-descriptor": "^0.1.0" 2415 | } 2416 | }, 2417 | "kind-of": { 2418 | "version": "3.2.2", 2419 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2420 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2421 | "dev": true, 2422 | "requires": { 2423 | "is-buffer": "^1.1.5" 2424 | } 2425 | } 2426 | } 2427 | }, 2428 | "object-visit": { 2429 | "version": "1.0.1", 2430 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 2431 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 2432 | "dev": true, 2433 | "requires": { 2434 | "isobject": "^3.0.0" 2435 | } 2436 | }, 2437 | "object.pick": { 2438 | "version": "1.3.0", 2439 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 2440 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2441 | "dev": true, 2442 | "requires": { 2443 | "isobject": "^3.0.1" 2444 | } 2445 | }, 2446 | "once": { 2447 | "version": "1.4.0", 2448 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2449 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2450 | "dev": true, 2451 | "requires": { 2452 | "wrappy": "1" 2453 | } 2454 | }, 2455 | "os-browserify": { 2456 | "version": "0.3.0", 2457 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 2458 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 2459 | "dev": true 2460 | }, 2461 | "p-limit": { 2462 | "version": "2.3.0", 2463 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2464 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2465 | "dev": true, 2466 | "requires": { 2467 | "p-try": "^2.0.0" 2468 | } 2469 | }, 2470 | "p-locate": { 2471 | "version": "3.0.0", 2472 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2473 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2474 | "dev": true, 2475 | "requires": { 2476 | "p-limit": "^2.0.0" 2477 | }, 2478 | "dependencies": { 2479 | "p-limit": { 2480 | "version": "2.3.0", 2481 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2482 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2483 | "dev": true, 2484 | "requires": { 2485 | "p-try": "^2.0.0" 2486 | } 2487 | } 2488 | } 2489 | }, 2490 | "p-try": { 2491 | "version": "2.2.0", 2492 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2493 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 2494 | "dev": true 2495 | }, 2496 | "pako": { 2497 | "version": "1.0.11", 2498 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 2499 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 2500 | "dev": true 2501 | }, 2502 | "parallel-transform": { 2503 | "version": "1.2.0", 2504 | "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", 2505 | "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", 2506 | "dev": true, 2507 | "requires": { 2508 | "cyclist": "^1.0.1", 2509 | "inherits": "^2.0.3", 2510 | "readable-stream": "^2.1.5" 2511 | } 2512 | }, 2513 | "parent-module": { 2514 | "version": "1.0.1", 2515 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2516 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2517 | "dev": true, 2518 | "requires": { 2519 | "callsites": "^3.0.0" 2520 | } 2521 | }, 2522 | "parse-asn1": { 2523 | "version": "5.1.6", 2524 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 2525 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 2526 | "dev": true, 2527 | "requires": { 2528 | "asn1.js": "^5.2.0", 2529 | "browserify-aes": "^1.0.0", 2530 | "evp_bytestokey": "^1.0.0", 2531 | "pbkdf2": "^3.0.3", 2532 | "safe-buffer": "^5.1.1" 2533 | } 2534 | }, 2535 | "parse-json": { 2536 | "version": "5.1.0", 2537 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", 2538 | "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", 2539 | "dev": true, 2540 | "requires": { 2541 | "@babel/code-frame": "^7.0.0", 2542 | "error-ex": "^1.3.1", 2543 | "json-parse-even-better-errors": "^2.3.0", 2544 | "lines-and-columns": "^1.1.6" 2545 | } 2546 | }, 2547 | "pascalcase": { 2548 | "version": "0.1.1", 2549 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 2550 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 2551 | "dev": true 2552 | }, 2553 | "path-browserify": { 2554 | "version": "0.0.1", 2555 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 2556 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", 2557 | "dev": true 2558 | }, 2559 | "path-dirname": { 2560 | "version": "1.0.2", 2561 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2562 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 2563 | "dev": true 2564 | }, 2565 | "path-exists": { 2566 | "version": "3.0.0", 2567 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 2568 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 2569 | "dev": true 2570 | }, 2571 | "path-is-absolute": { 2572 | "version": "1.0.1", 2573 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2574 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2575 | "dev": true 2576 | }, 2577 | "path-type": { 2578 | "version": "4.0.0", 2579 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2580 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2581 | "dev": true 2582 | }, 2583 | "pbkdf2": { 2584 | "version": "3.1.1", 2585 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", 2586 | "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", 2587 | "dev": true, 2588 | "requires": { 2589 | "create-hash": "^1.1.2", 2590 | "create-hmac": "^1.1.4", 2591 | "ripemd160": "^2.0.1", 2592 | "safe-buffer": "^5.0.1", 2593 | "sha.js": "^2.4.8" 2594 | } 2595 | }, 2596 | "picomatch": { 2597 | "version": "2.2.2", 2598 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 2599 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", 2600 | "dev": true 2601 | }, 2602 | "pify": { 2603 | "version": "4.0.1", 2604 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 2605 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 2606 | "dev": true 2607 | }, 2608 | "pkg-dir": { 2609 | "version": "3.0.0", 2610 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 2611 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", 2612 | "dev": true, 2613 | "requires": { 2614 | "find-up": "^3.0.0" 2615 | } 2616 | }, 2617 | "posix-character-classes": { 2618 | "version": "0.1.1", 2619 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 2620 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 2621 | "dev": true 2622 | }, 2623 | "prettier": { 2624 | "version": "2.0.5", 2625 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", 2626 | "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", 2627 | "dev": true 2628 | }, 2629 | "process": { 2630 | "version": "0.11.10", 2631 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 2632 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 2633 | "dev": true 2634 | }, 2635 | "process-nextick-args": { 2636 | "version": "2.0.1", 2637 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2638 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 2639 | "dev": true 2640 | }, 2641 | "promise-inflight": { 2642 | "version": "1.0.1", 2643 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 2644 | "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 2645 | "dev": true 2646 | }, 2647 | "prr": { 2648 | "version": "1.0.1", 2649 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 2650 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 2651 | "dev": true 2652 | }, 2653 | "public-encrypt": { 2654 | "version": "4.0.3", 2655 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 2656 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 2657 | "dev": true, 2658 | "requires": { 2659 | "bn.js": "^4.1.0", 2660 | "browserify-rsa": "^4.0.0", 2661 | "create-hash": "^1.1.0", 2662 | "parse-asn1": "^5.0.0", 2663 | "randombytes": "^2.0.1", 2664 | "safe-buffer": "^5.1.2" 2665 | }, 2666 | "dependencies": { 2667 | "bn.js": { 2668 | "version": "4.11.9", 2669 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 2670 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", 2671 | "dev": true 2672 | } 2673 | } 2674 | }, 2675 | "pump": { 2676 | "version": "3.0.0", 2677 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2678 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2679 | "dev": true, 2680 | "requires": { 2681 | "end-of-stream": "^1.1.0", 2682 | "once": "^1.3.1" 2683 | } 2684 | }, 2685 | "pumpify": { 2686 | "version": "1.5.1", 2687 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", 2688 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", 2689 | "dev": true, 2690 | "requires": { 2691 | "duplexify": "^3.6.0", 2692 | "inherits": "^2.0.3", 2693 | "pump": "^2.0.0" 2694 | }, 2695 | "dependencies": { 2696 | "pump": { 2697 | "version": "2.0.1", 2698 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 2699 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 2700 | "dev": true, 2701 | "requires": { 2702 | "end-of-stream": "^1.1.0", 2703 | "once": "^1.3.1" 2704 | } 2705 | } 2706 | } 2707 | }, 2708 | "punycode": { 2709 | "version": "2.1.1", 2710 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2711 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 2712 | "dev": true 2713 | }, 2714 | "querystring": { 2715 | "version": "0.2.0", 2716 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2717 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 2718 | "dev": true 2719 | }, 2720 | "querystring-es3": { 2721 | "version": "0.2.1", 2722 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 2723 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 2724 | "dev": true 2725 | }, 2726 | "randombytes": { 2727 | "version": "2.1.0", 2728 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2729 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2730 | "dev": true, 2731 | "requires": { 2732 | "safe-buffer": "^5.1.0" 2733 | } 2734 | }, 2735 | "randomfill": { 2736 | "version": "1.0.4", 2737 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 2738 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 2739 | "dev": true, 2740 | "requires": { 2741 | "randombytes": "^2.0.5", 2742 | "safe-buffer": "^5.1.0" 2743 | } 2744 | }, 2745 | "readable-stream": { 2746 | "version": "2.3.7", 2747 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2748 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2749 | "dev": true, 2750 | "requires": { 2751 | "core-util-is": "~1.0.0", 2752 | "inherits": "~2.0.3", 2753 | "isarray": "~1.0.0", 2754 | "process-nextick-args": "~2.0.0", 2755 | "safe-buffer": "~5.1.1", 2756 | "string_decoder": "~1.1.1", 2757 | "util-deprecate": "~1.0.1" 2758 | } 2759 | }, 2760 | "readdirp": { 2761 | "version": "3.5.0", 2762 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2763 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2764 | "dev": true, 2765 | "optional": true, 2766 | "requires": { 2767 | "picomatch": "^2.2.1" 2768 | } 2769 | }, 2770 | "regex-not": { 2771 | "version": "1.0.2", 2772 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 2773 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 2774 | "dev": true, 2775 | "requires": { 2776 | "extend-shallow": "^3.0.2", 2777 | "safe-regex": "^1.1.0" 2778 | } 2779 | }, 2780 | "remove-trailing-separator": { 2781 | "version": "1.1.0", 2782 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2783 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2784 | "dev": true, 2785 | "optional": true 2786 | }, 2787 | "repeat-element": { 2788 | "version": "1.1.3", 2789 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 2790 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 2791 | "dev": true 2792 | }, 2793 | "repeat-string": { 2794 | "version": "1.6.1", 2795 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2796 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2797 | "dev": true 2798 | }, 2799 | "resolve-url": { 2800 | "version": "0.2.1", 2801 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 2802 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 2803 | "dev": true 2804 | }, 2805 | "ret": { 2806 | "version": "0.1.15", 2807 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 2808 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 2809 | "dev": true 2810 | }, 2811 | "rimraf": { 2812 | "version": "2.7.1", 2813 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 2814 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 2815 | "dev": true, 2816 | "requires": { 2817 | "glob": "^7.1.3" 2818 | } 2819 | }, 2820 | "ripemd160": { 2821 | "version": "2.0.2", 2822 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 2823 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 2824 | "dev": true, 2825 | "requires": { 2826 | "hash-base": "^3.0.0", 2827 | "inherits": "^2.0.1" 2828 | } 2829 | }, 2830 | "run-queue": { 2831 | "version": "1.0.3", 2832 | "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", 2833 | "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", 2834 | "dev": true, 2835 | "requires": { 2836 | "aproba": "^1.1.1" 2837 | } 2838 | }, 2839 | "safe-buffer": { 2840 | "version": "5.1.2", 2841 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2842 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2843 | "dev": true 2844 | }, 2845 | "safe-regex": { 2846 | "version": "1.1.0", 2847 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 2848 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 2849 | "dev": true, 2850 | "requires": { 2851 | "ret": "~0.1.10" 2852 | } 2853 | }, 2854 | "safer-buffer": { 2855 | "version": "2.1.2", 2856 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2857 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2858 | "dev": true 2859 | }, 2860 | "schema-utils": { 2861 | "version": "1.0.0", 2862 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", 2863 | "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", 2864 | "dev": true, 2865 | "requires": { 2866 | "ajv": "^6.1.0", 2867 | "ajv-errors": "^1.0.0", 2868 | "ajv-keywords": "^3.1.0" 2869 | } 2870 | }, 2871 | "semver": { 2872 | "version": "5.7.1", 2873 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2874 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2875 | "dev": true 2876 | }, 2877 | "serialize-javascript": { 2878 | "version": "4.0.0", 2879 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 2880 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 2881 | "dev": true, 2882 | "requires": { 2883 | "randombytes": "^2.1.0" 2884 | } 2885 | }, 2886 | "set-value": { 2887 | "version": "2.0.1", 2888 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 2889 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 2890 | "dev": true, 2891 | "requires": { 2892 | "extend-shallow": "^2.0.1", 2893 | "is-extendable": "^0.1.1", 2894 | "is-plain-object": "^2.0.3", 2895 | "split-string": "^3.0.1" 2896 | }, 2897 | "dependencies": { 2898 | "extend-shallow": { 2899 | "version": "2.0.1", 2900 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2901 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2902 | "dev": true, 2903 | "requires": { 2904 | "is-extendable": "^0.1.0" 2905 | } 2906 | } 2907 | } 2908 | }, 2909 | "setimmediate": { 2910 | "version": "1.0.5", 2911 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2912 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 2913 | "dev": true 2914 | }, 2915 | "sha.js": { 2916 | "version": "2.4.11", 2917 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 2918 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 2919 | "dev": true, 2920 | "requires": { 2921 | "inherits": "^2.0.1", 2922 | "safe-buffer": "^5.0.1" 2923 | } 2924 | }, 2925 | "slash": { 2926 | "version": "1.0.0", 2927 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 2928 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 2929 | "dev": true 2930 | }, 2931 | "slash-commands": { 2932 | "version": "1.4.0", 2933 | "resolved": "https://registry.npmjs.org/slash-commands/-/slash-commands-1.4.0.tgz", 2934 | "integrity": "sha512-JLU3wj7LbrxYC2+xNVGscaTNeWqTIpv8eMXTNQsNVnIC845GK/LV1ISYcChzrlIfkLhEDltDGrFDb4YyL6xdWQ==", 2935 | "dev": true, 2936 | "requires": { 2937 | "centra": "^2.4.2", 2938 | "tweetnacl": "^1.0.3" 2939 | } 2940 | }, 2941 | "snapdragon": { 2942 | "version": "0.8.2", 2943 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 2944 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 2945 | "dev": true, 2946 | "requires": { 2947 | "base": "^0.11.1", 2948 | "debug": "^2.2.0", 2949 | "define-property": "^0.2.5", 2950 | "extend-shallow": "^2.0.1", 2951 | "map-cache": "^0.2.2", 2952 | "source-map": "^0.5.6", 2953 | "source-map-resolve": "^0.5.0", 2954 | "use": "^3.1.0" 2955 | }, 2956 | "dependencies": { 2957 | "define-property": { 2958 | "version": "0.2.5", 2959 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2960 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2961 | "dev": true, 2962 | "requires": { 2963 | "is-descriptor": "^0.1.0" 2964 | } 2965 | }, 2966 | "extend-shallow": { 2967 | "version": "2.0.1", 2968 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 2969 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 2970 | "dev": true, 2971 | "requires": { 2972 | "is-extendable": "^0.1.0" 2973 | } 2974 | } 2975 | } 2976 | }, 2977 | "snapdragon-node": { 2978 | "version": "2.1.1", 2979 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 2980 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 2981 | "dev": true, 2982 | "requires": { 2983 | "define-property": "^1.0.0", 2984 | "isobject": "^3.0.0", 2985 | "snapdragon-util": "^3.0.1" 2986 | }, 2987 | "dependencies": { 2988 | "define-property": { 2989 | "version": "1.0.0", 2990 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 2991 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 2992 | "dev": true, 2993 | "requires": { 2994 | "is-descriptor": "^1.0.0" 2995 | } 2996 | }, 2997 | "is-accessor-descriptor": { 2998 | "version": "1.0.0", 2999 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3000 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3001 | "dev": true, 3002 | "requires": { 3003 | "kind-of": "^6.0.0" 3004 | } 3005 | }, 3006 | "is-data-descriptor": { 3007 | "version": "1.0.0", 3008 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3009 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3010 | "dev": true, 3011 | "requires": { 3012 | "kind-of": "^6.0.0" 3013 | } 3014 | }, 3015 | "is-descriptor": { 3016 | "version": "1.0.2", 3017 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3018 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3019 | "dev": true, 3020 | "requires": { 3021 | "is-accessor-descriptor": "^1.0.0", 3022 | "is-data-descriptor": "^1.0.0", 3023 | "kind-of": "^6.0.2" 3024 | } 3025 | } 3026 | } 3027 | }, 3028 | "snapdragon-util": { 3029 | "version": "3.0.1", 3030 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3031 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 3032 | "dev": true, 3033 | "requires": { 3034 | "kind-of": "^3.2.0" 3035 | }, 3036 | "dependencies": { 3037 | "kind-of": { 3038 | "version": "3.2.2", 3039 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3040 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3041 | "dev": true, 3042 | "requires": { 3043 | "is-buffer": "^1.1.5" 3044 | } 3045 | } 3046 | } 3047 | }, 3048 | "source-list-map": { 3049 | "version": "2.0.1", 3050 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", 3051 | "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", 3052 | "dev": true 3053 | }, 3054 | "source-map": { 3055 | "version": "0.5.7", 3056 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3057 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3058 | "dev": true 3059 | }, 3060 | "source-map-resolve": { 3061 | "version": "0.5.3", 3062 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 3063 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 3064 | "dev": true, 3065 | "requires": { 3066 | "atob": "^2.1.2", 3067 | "decode-uri-component": "^0.2.0", 3068 | "resolve-url": "^0.2.1", 3069 | "source-map-url": "^0.4.0", 3070 | "urix": "^0.1.0" 3071 | } 3072 | }, 3073 | "source-map-support": { 3074 | "version": "0.5.19", 3075 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 3076 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 3077 | "dev": true, 3078 | "requires": { 3079 | "buffer-from": "^1.0.0", 3080 | "source-map": "^0.6.0" 3081 | }, 3082 | "dependencies": { 3083 | "source-map": { 3084 | "version": "0.6.1", 3085 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3086 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3087 | "dev": true 3088 | } 3089 | } 3090 | }, 3091 | "source-map-url": { 3092 | "version": "0.4.0", 3093 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 3094 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 3095 | "dev": true 3096 | }, 3097 | "split-string": { 3098 | "version": "3.1.0", 3099 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 3100 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 3101 | "dev": true, 3102 | "requires": { 3103 | "extend-shallow": "^3.0.0" 3104 | } 3105 | }, 3106 | "ssri": { 3107 | "version": "6.0.1", 3108 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", 3109 | "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", 3110 | "dev": true, 3111 | "requires": { 3112 | "figgy-pudding": "^3.5.1" 3113 | } 3114 | }, 3115 | "static-extend": { 3116 | "version": "0.1.2", 3117 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3118 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3119 | "dev": true, 3120 | "requires": { 3121 | "define-property": "^0.2.5", 3122 | "object-copy": "^0.1.0" 3123 | }, 3124 | "dependencies": { 3125 | "define-property": { 3126 | "version": "0.2.5", 3127 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3128 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3129 | "dev": true, 3130 | "requires": { 3131 | "is-descriptor": "^0.1.0" 3132 | } 3133 | } 3134 | } 3135 | }, 3136 | "stream-browserify": { 3137 | "version": "2.0.2", 3138 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 3139 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 3140 | "dev": true, 3141 | "requires": { 3142 | "inherits": "~2.0.1", 3143 | "readable-stream": "^2.0.2" 3144 | } 3145 | }, 3146 | "stream-each": { 3147 | "version": "1.2.3", 3148 | "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", 3149 | "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", 3150 | "dev": true, 3151 | "requires": { 3152 | "end-of-stream": "^1.1.0", 3153 | "stream-shift": "^1.0.0" 3154 | } 3155 | }, 3156 | "stream-http": { 3157 | "version": "2.8.3", 3158 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 3159 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 3160 | "dev": true, 3161 | "requires": { 3162 | "builtin-status-codes": "^3.0.0", 3163 | "inherits": "^2.0.1", 3164 | "readable-stream": "^2.3.6", 3165 | "to-arraybuffer": "^1.0.0", 3166 | "xtend": "^4.0.0" 3167 | } 3168 | }, 3169 | "stream-shift": { 3170 | "version": "1.0.1", 3171 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", 3172 | "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", 3173 | "dev": true 3174 | }, 3175 | "string_decoder": { 3176 | "version": "1.1.1", 3177 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3178 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3179 | "dev": true, 3180 | "requires": { 3181 | "safe-buffer": "~5.1.0" 3182 | } 3183 | }, 3184 | "supports-color": { 3185 | "version": "7.2.0", 3186 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3187 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3188 | "dev": true, 3189 | "requires": { 3190 | "has-flag": "^4.0.0" 3191 | }, 3192 | "dependencies": { 3193 | "has-flag": { 3194 | "version": "4.0.0", 3195 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3196 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3197 | "dev": true 3198 | } 3199 | } 3200 | }, 3201 | "tapable": { 3202 | "version": "1.1.3", 3203 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", 3204 | "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", 3205 | "dev": true 3206 | }, 3207 | "through2": { 3208 | "version": "2.0.5", 3209 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 3210 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 3211 | "dev": true, 3212 | "requires": { 3213 | "readable-stream": "~2.3.6", 3214 | "xtend": "~4.0.1" 3215 | } 3216 | }, 3217 | "timers-browserify": { 3218 | "version": "2.0.12", 3219 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 3220 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 3221 | "dev": true, 3222 | "requires": { 3223 | "setimmediate": "^1.0.4" 3224 | } 3225 | }, 3226 | "to-arraybuffer": { 3227 | "version": "1.0.1", 3228 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 3229 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 3230 | "dev": true 3231 | }, 3232 | "to-object-path": { 3233 | "version": "0.3.0", 3234 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3235 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 3236 | "dev": true, 3237 | "requires": { 3238 | "kind-of": "^3.0.2" 3239 | }, 3240 | "dependencies": { 3241 | "kind-of": { 3242 | "version": "3.2.2", 3243 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3244 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3245 | "dev": true, 3246 | "requires": { 3247 | "is-buffer": "^1.1.5" 3248 | } 3249 | } 3250 | } 3251 | }, 3252 | "to-regex": { 3253 | "version": "3.0.2", 3254 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 3255 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 3256 | "dev": true, 3257 | "requires": { 3258 | "define-property": "^2.0.2", 3259 | "extend-shallow": "^3.0.2", 3260 | "regex-not": "^1.0.2", 3261 | "safe-regex": "^1.1.0" 3262 | } 3263 | }, 3264 | "to-regex-range": { 3265 | "version": "5.0.1", 3266 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3267 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3268 | "dev": true, 3269 | "requires": { 3270 | "is-number": "^7.0.0" 3271 | } 3272 | }, 3273 | "ts-loader": { 3274 | "version": "7.0.5", 3275 | "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz", 3276 | "integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==", 3277 | "dev": true, 3278 | "requires": { 3279 | "chalk": "^2.3.0", 3280 | "enhanced-resolve": "^4.0.0", 3281 | "loader-utils": "^1.0.2", 3282 | "micromatch": "^4.0.0", 3283 | "semver": "^6.0.0" 3284 | }, 3285 | "dependencies": { 3286 | "semver": { 3287 | "version": "6.3.0", 3288 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3289 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3290 | "dev": true 3291 | } 3292 | } 3293 | }, 3294 | "tslib": { 3295 | "version": "1.14.1", 3296 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 3297 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 3298 | "dev": true 3299 | }, 3300 | "tty-browserify": { 3301 | "version": "0.0.0", 3302 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 3303 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", 3304 | "dev": true 3305 | }, 3306 | "tweetnacl": { 3307 | "version": "1.0.3", 3308 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 3309 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", 3310 | "dev": true 3311 | }, 3312 | "typedarray": { 3313 | "version": "0.0.6", 3314 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3315 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 3316 | "dev": true 3317 | }, 3318 | "typescript": { 3319 | "version": "3.9.5", 3320 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", 3321 | "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", 3322 | "dev": true 3323 | }, 3324 | "union-value": { 3325 | "version": "1.0.1", 3326 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 3327 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 3328 | "dev": true, 3329 | "requires": { 3330 | "arr-union": "^3.1.0", 3331 | "get-value": "^2.0.6", 3332 | "is-extendable": "^0.1.1", 3333 | "set-value": "^2.0.1" 3334 | } 3335 | }, 3336 | "unique-filename": { 3337 | "version": "1.1.1", 3338 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 3339 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 3340 | "dev": true, 3341 | "requires": { 3342 | "unique-slug": "^2.0.0" 3343 | } 3344 | }, 3345 | "unique-slug": { 3346 | "version": "2.0.2", 3347 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", 3348 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", 3349 | "dev": true, 3350 | "requires": { 3351 | "imurmurhash": "^0.1.4" 3352 | } 3353 | }, 3354 | "universalify": { 3355 | "version": "1.0.0", 3356 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", 3357 | "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", 3358 | "dev": true 3359 | }, 3360 | "unset-value": { 3361 | "version": "1.0.0", 3362 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 3363 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 3364 | "dev": true, 3365 | "requires": { 3366 | "has-value": "^0.3.1", 3367 | "isobject": "^3.0.0" 3368 | }, 3369 | "dependencies": { 3370 | "has-value": { 3371 | "version": "0.3.1", 3372 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 3373 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 3374 | "dev": true, 3375 | "requires": { 3376 | "get-value": "^2.0.3", 3377 | "has-values": "^0.1.4", 3378 | "isobject": "^2.0.0" 3379 | }, 3380 | "dependencies": { 3381 | "isobject": { 3382 | "version": "2.1.0", 3383 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3384 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3385 | "dev": true, 3386 | "requires": { 3387 | "isarray": "1.0.0" 3388 | } 3389 | } 3390 | } 3391 | }, 3392 | "has-values": { 3393 | "version": "0.1.4", 3394 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 3395 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 3396 | "dev": true 3397 | } 3398 | } 3399 | }, 3400 | "upath": { 3401 | "version": "1.2.0", 3402 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", 3403 | "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", 3404 | "dev": true, 3405 | "optional": true 3406 | }, 3407 | "uri-js": { 3408 | "version": "4.2.2", 3409 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 3410 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 3411 | "dev": true, 3412 | "requires": { 3413 | "punycode": "^2.1.0" 3414 | } 3415 | }, 3416 | "urix": { 3417 | "version": "0.1.0", 3418 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 3419 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 3420 | "dev": true 3421 | }, 3422 | "url": { 3423 | "version": "0.11.0", 3424 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 3425 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 3426 | "dev": true, 3427 | "requires": { 3428 | "punycode": "1.3.2", 3429 | "querystring": "0.2.0" 3430 | }, 3431 | "dependencies": { 3432 | "punycode": { 3433 | "version": "1.3.2", 3434 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 3435 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 3436 | "dev": true 3437 | } 3438 | } 3439 | }, 3440 | "use": { 3441 | "version": "3.1.1", 3442 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 3443 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 3444 | "dev": true 3445 | }, 3446 | "util": { 3447 | "version": "0.11.1", 3448 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 3449 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 3450 | "dev": true, 3451 | "requires": { 3452 | "inherits": "2.0.3" 3453 | }, 3454 | "dependencies": { 3455 | "inherits": { 3456 | "version": "2.0.3", 3457 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 3458 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 3459 | "dev": true 3460 | } 3461 | } 3462 | }, 3463 | "util-deprecate": { 3464 | "version": "1.0.2", 3465 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3466 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3467 | "dev": true 3468 | }, 3469 | "uuid": { 3470 | "version": "3.4.0", 3471 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 3472 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 3473 | "dev": true 3474 | }, 3475 | "vm-browserify": { 3476 | "version": "1.1.2", 3477 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 3478 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 3479 | "dev": true 3480 | }, 3481 | "watchpack": { 3482 | "version": "1.7.5", 3483 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", 3484 | "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", 3485 | "dev": true, 3486 | "requires": { 3487 | "chokidar": "^3.4.1", 3488 | "graceful-fs": "^4.1.2", 3489 | "neo-async": "^2.5.0", 3490 | "watchpack-chokidar2": "^2.0.1" 3491 | } 3492 | }, 3493 | "watchpack-chokidar2": { 3494 | "version": "2.0.1", 3495 | "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", 3496 | "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", 3497 | "dev": true, 3498 | "optional": true, 3499 | "requires": { 3500 | "chokidar": "^2.1.8" 3501 | }, 3502 | "dependencies": { 3503 | "anymatch": { 3504 | "version": "2.0.0", 3505 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", 3506 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", 3507 | "dev": true, 3508 | "optional": true, 3509 | "requires": { 3510 | "micromatch": "^3.1.4", 3511 | "normalize-path": "^2.1.1" 3512 | }, 3513 | "dependencies": { 3514 | "normalize-path": { 3515 | "version": "2.1.1", 3516 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 3517 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 3518 | "dev": true, 3519 | "optional": true, 3520 | "requires": { 3521 | "remove-trailing-separator": "^1.0.1" 3522 | } 3523 | } 3524 | } 3525 | }, 3526 | "binary-extensions": { 3527 | "version": "1.13.1", 3528 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", 3529 | "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", 3530 | "dev": true, 3531 | "optional": true 3532 | }, 3533 | "braces": { 3534 | "version": "2.3.2", 3535 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 3536 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 3537 | "dev": true, 3538 | "optional": true, 3539 | "requires": { 3540 | "arr-flatten": "^1.1.0", 3541 | "array-unique": "^0.3.2", 3542 | "extend-shallow": "^2.0.1", 3543 | "fill-range": "^4.0.0", 3544 | "isobject": "^3.0.1", 3545 | "repeat-element": "^1.1.2", 3546 | "snapdragon": "^0.8.1", 3547 | "snapdragon-node": "^2.0.1", 3548 | "split-string": "^3.0.2", 3549 | "to-regex": "^3.0.1" 3550 | }, 3551 | "dependencies": { 3552 | "extend-shallow": { 3553 | "version": "2.0.1", 3554 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3555 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3556 | "dev": true, 3557 | "optional": true, 3558 | "requires": { 3559 | "is-extendable": "^0.1.0" 3560 | } 3561 | } 3562 | } 3563 | }, 3564 | "chokidar": { 3565 | "version": "2.1.8", 3566 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", 3567 | "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", 3568 | "dev": true, 3569 | "optional": true, 3570 | "requires": { 3571 | "anymatch": "^2.0.0", 3572 | "async-each": "^1.0.1", 3573 | "braces": "^2.3.2", 3574 | "fsevents": "^1.2.7", 3575 | "glob-parent": "^3.1.0", 3576 | "inherits": "^2.0.3", 3577 | "is-binary-path": "^1.0.0", 3578 | "is-glob": "^4.0.0", 3579 | "normalize-path": "^3.0.0", 3580 | "path-is-absolute": "^1.0.0", 3581 | "readdirp": "^2.2.1", 3582 | "upath": "^1.1.1" 3583 | } 3584 | }, 3585 | "fill-range": { 3586 | "version": "4.0.0", 3587 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 3588 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 3589 | "dev": true, 3590 | "optional": true, 3591 | "requires": { 3592 | "extend-shallow": "^2.0.1", 3593 | "is-number": "^3.0.0", 3594 | "repeat-string": "^1.6.1", 3595 | "to-regex-range": "^2.1.0" 3596 | }, 3597 | "dependencies": { 3598 | "extend-shallow": { 3599 | "version": "2.0.1", 3600 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3601 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3602 | "dev": true, 3603 | "optional": true, 3604 | "requires": { 3605 | "is-extendable": "^0.1.0" 3606 | } 3607 | } 3608 | } 3609 | }, 3610 | "fsevents": { 3611 | "version": "1.2.13", 3612 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", 3613 | "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", 3614 | "dev": true, 3615 | "optional": true, 3616 | "requires": { 3617 | "bindings": "^1.5.0", 3618 | "nan": "^2.12.1" 3619 | } 3620 | }, 3621 | "glob-parent": { 3622 | "version": "3.1.0", 3623 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 3624 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 3625 | "dev": true, 3626 | "optional": true, 3627 | "requires": { 3628 | "is-glob": "^3.1.0", 3629 | "path-dirname": "^1.0.0" 3630 | }, 3631 | "dependencies": { 3632 | "is-glob": { 3633 | "version": "3.1.0", 3634 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 3635 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 3636 | "dev": true, 3637 | "optional": true, 3638 | "requires": { 3639 | "is-extglob": "^2.1.0" 3640 | } 3641 | } 3642 | } 3643 | }, 3644 | "is-binary-path": { 3645 | "version": "1.0.1", 3646 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 3647 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 3648 | "dev": true, 3649 | "optional": true, 3650 | "requires": { 3651 | "binary-extensions": "^1.0.0" 3652 | } 3653 | }, 3654 | "is-number": { 3655 | "version": "3.0.0", 3656 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 3657 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 3658 | "dev": true, 3659 | "optional": true, 3660 | "requires": { 3661 | "kind-of": "^3.0.2" 3662 | }, 3663 | "dependencies": { 3664 | "kind-of": { 3665 | "version": "3.2.2", 3666 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3667 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3668 | "dev": true, 3669 | "optional": true, 3670 | "requires": { 3671 | "is-buffer": "^1.1.5" 3672 | } 3673 | } 3674 | } 3675 | }, 3676 | "micromatch": { 3677 | "version": "3.1.10", 3678 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 3679 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 3680 | "dev": true, 3681 | "optional": true, 3682 | "requires": { 3683 | "arr-diff": "^4.0.0", 3684 | "array-unique": "^0.3.2", 3685 | "braces": "^2.3.1", 3686 | "define-property": "^2.0.2", 3687 | "extend-shallow": "^3.0.2", 3688 | "extglob": "^2.0.4", 3689 | "fragment-cache": "^0.2.1", 3690 | "kind-of": "^6.0.2", 3691 | "nanomatch": "^1.2.9", 3692 | "object.pick": "^1.3.0", 3693 | "regex-not": "^1.0.0", 3694 | "snapdragon": "^0.8.1", 3695 | "to-regex": "^3.0.2" 3696 | } 3697 | }, 3698 | "readdirp": { 3699 | "version": "2.2.1", 3700 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 3701 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 3702 | "dev": true, 3703 | "optional": true, 3704 | "requires": { 3705 | "graceful-fs": "^4.1.11", 3706 | "micromatch": "^3.1.10", 3707 | "readable-stream": "^2.0.2" 3708 | } 3709 | }, 3710 | "to-regex-range": { 3711 | "version": "2.1.1", 3712 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3713 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3714 | "dev": true, 3715 | "optional": true, 3716 | "requires": { 3717 | "is-number": "^3.0.0", 3718 | "repeat-string": "^1.6.1" 3719 | } 3720 | } 3721 | } 3722 | }, 3723 | "webpack": { 3724 | "version": "4.44.2", 3725 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", 3726 | "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", 3727 | "dev": true, 3728 | "requires": { 3729 | "@webassemblyjs/ast": "1.9.0", 3730 | "@webassemblyjs/helper-module-context": "1.9.0", 3731 | "@webassemblyjs/wasm-edit": "1.9.0", 3732 | "@webassemblyjs/wasm-parser": "1.9.0", 3733 | "acorn": "^6.4.1", 3734 | "ajv": "^6.10.2", 3735 | "ajv-keywords": "^3.4.1", 3736 | "chrome-trace-event": "^1.0.2", 3737 | "enhanced-resolve": "^4.3.0", 3738 | "eslint-scope": "^4.0.3", 3739 | "json-parse-better-errors": "^1.0.2", 3740 | "loader-runner": "^2.4.0", 3741 | "loader-utils": "^1.2.3", 3742 | "memory-fs": "^0.4.1", 3743 | "micromatch": "^3.1.10", 3744 | "mkdirp": "^0.5.3", 3745 | "neo-async": "^2.6.1", 3746 | "node-libs-browser": "^2.2.1", 3747 | "schema-utils": "^1.0.0", 3748 | "tapable": "^1.1.3", 3749 | "terser-webpack-plugin": "^1.4.3", 3750 | "watchpack": "^1.7.4", 3751 | "webpack-sources": "^1.4.1" 3752 | }, 3753 | "dependencies": { 3754 | "braces": { 3755 | "version": "2.3.2", 3756 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 3757 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 3758 | "dev": true, 3759 | "requires": { 3760 | "arr-flatten": "^1.1.0", 3761 | "array-unique": "^0.3.2", 3762 | "extend-shallow": "^2.0.1", 3763 | "fill-range": "^4.0.0", 3764 | "isobject": "^3.0.1", 3765 | "repeat-element": "^1.1.2", 3766 | "snapdragon": "^0.8.1", 3767 | "snapdragon-node": "^2.0.1", 3768 | "split-string": "^3.0.2", 3769 | "to-regex": "^3.0.1" 3770 | }, 3771 | "dependencies": { 3772 | "extend-shallow": { 3773 | "version": "2.0.1", 3774 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3775 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3776 | "dev": true, 3777 | "requires": { 3778 | "is-extendable": "^0.1.0" 3779 | } 3780 | } 3781 | } 3782 | }, 3783 | "enhanced-resolve": { 3784 | "version": "4.3.0", 3785 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", 3786 | "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", 3787 | "dev": true, 3788 | "requires": { 3789 | "graceful-fs": "^4.1.2", 3790 | "memory-fs": "^0.5.0", 3791 | "tapable": "^1.0.0" 3792 | }, 3793 | "dependencies": { 3794 | "memory-fs": { 3795 | "version": "0.5.0", 3796 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", 3797 | "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", 3798 | "dev": true, 3799 | "requires": { 3800 | "errno": "^0.1.3", 3801 | "readable-stream": "^2.0.1" 3802 | } 3803 | } 3804 | } 3805 | }, 3806 | "fill-range": { 3807 | "version": "4.0.0", 3808 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 3809 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 3810 | "dev": true, 3811 | "requires": { 3812 | "extend-shallow": "^2.0.1", 3813 | "is-number": "^3.0.0", 3814 | "repeat-string": "^1.6.1", 3815 | "to-regex-range": "^2.1.0" 3816 | }, 3817 | "dependencies": { 3818 | "extend-shallow": { 3819 | "version": "2.0.1", 3820 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3821 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3822 | "dev": true, 3823 | "requires": { 3824 | "is-extendable": "^0.1.0" 3825 | } 3826 | } 3827 | } 3828 | }, 3829 | "is-number": { 3830 | "version": "3.0.0", 3831 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 3832 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 3833 | "dev": true, 3834 | "requires": { 3835 | "kind-of": "^3.0.2" 3836 | }, 3837 | "dependencies": { 3838 | "kind-of": { 3839 | "version": "3.2.2", 3840 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3841 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3842 | "dev": true, 3843 | "requires": { 3844 | "is-buffer": "^1.1.5" 3845 | } 3846 | } 3847 | } 3848 | }, 3849 | "memory-fs": { 3850 | "version": "0.4.1", 3851 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", 3852 | "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", 3853 | "dev": true, 3854 | "requires": { 3855 | "errno": "^0.1.3", 3856 | "readable-stream": "^2.0.1" 3857 | } 3858 | }, 3859 | "micromatch": { 3860 | "version": "3.1.10", 3861 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 3862 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 3863 | "dev": true, 3864 | "requires": { 3865 | "arr-diff": "^4.0.0", 3866 | "array-unique": "^0.3.2", 3867 | "braces": "^2.3.1", 3868 | "define-property": "^2.0.2", 3869 | "extend-shallow": "^3.0.2", 3870 | "extglob": "^2.0.4", 3871 | "fragment-cache": "^0.2.1", 3872 | "kind-of": "^6.0.2", 3873 | "nanomatch": "^1.2.9", 3874 | "object.pick": "^1.3.0", 3875 | "regex-not": "^1.0.0", 3876 | "snapdragon": "^0.8.1", 3877 | "to-regex": "^3.0.2" 3878 | } 3879 | }, 3880 | "serialize-javascript": { 3881 | "version": "4.0.0", 3882 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", 3883 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", 3884 | "dev": true, 3885 | "requires": { 3886 | "randombytes": "^2.1.0" 3887 | } 3888 | }, 3889 | "source-map": { 3890 | "version": "0.6.1", 3891 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3892 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3893 | "dev": true 3894 | }, 3895 | "terser": { 3896 | "version": "4.8.0", 3897 | "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", 3898 | "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", 3899 | "dev": true, 3900 | "requires": { 3901 | "commander": "^2.20.0", 3902 | "source-map": "~0.6.1", 3903 | "source-map-support": "~0.5.12" 3904 | } 3905 | }, 3906 | "terser-webpack-plugin": { 3907 | "version": "1.4.5", 3908 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", 3909 | "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", 3910 | "dev": true, 3911 | "requires": { 3912 | "cacache": "^12.0.2", 3913 | "find-cache-dir": "^2.1.0", 3914 | "is-wsl": "^1.1.0", 3915 | "schema-utils": "^1.0.0", 3916 | "serialize-javascript": "^4.0.0", 3917 | "source-map": "^0.6.1", 3918 | "terser": "^4.1.2", 3919 | "webpack-sources": "^1.4.0", 3920 | "worker-farm": "^1.7.0" 3921 | } 3922 | }, 3923 | "to-regex-range": { 3924 | "version": "2.1.1", 3925 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3926 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3927 | "dev": true, 3928 | "requires": { 3929 | "is-number": "^3.0.0", 3930 | "repeat-string": "^1.6.1" 3931 | } 3932 | } 3933 | } 3934 | }, 3935 | "webpack-log": { 3936 | "version": "2.0.0", 3937 | "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", 3938 | "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", 3939 | "dev": true, 3940 | "requires": { 3941 | "ansi-colors": "^3.0.0", 3942 | "uuid": "^3.3.2" 3943 | } 3944 | }, 3945 | "webpack-sources": { 3946 | "version": "1.4.3", 3947 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", 3948 | "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", 3949 | "dev": true, 3950 | "requires": { 3951 | "source-list-map": "^2.0.0", 3952 | "source-map": "~0.6.1" 3953 | }, 3954 | "dependencies": { 3955 | "source-map": { 3956 | "version": "0.6.1", 3957 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3958 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3959 | "dev": true 3960 | } 3961 | } 3962 | }, 3963 | "worker-farm": { 3964 | "version": "1.7.0", 3965 | "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", 3966 | "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", 3967 | "dev": true, 3968 | "requires": { 3969 | "errno": "~0.1.7" 3970 | } 3971 | }, 3972 | "wrappy": { 3973 | "version": "1.0.2", 3974 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3975 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3976 | "dev": true 3977 | }, 3978 | "xtend": { 3979 | "version": "4.0.2", 3980 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3981 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 3982 | "dev": true 3983 | }, 3984 | "y18n": { 3985 | "version": "4.0.1", 3986 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", 3987 | "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", 3988 | "dev": true 3989 | }, 3990 | "yallist": { 3991 | "version": "3.1.1", 3992 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 3993 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 3994 | "dev": true 3995 | }, 3996 | "yaml": { 3997 | "version": "1.10.0", 3998 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", 3999 | "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", 4000 | "dev": true 4001 | } 4002 | } 4003 | } 4004 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "slash-worker", 3 | "version": "1.0.0", 4 | "description": "Cloudflare Worker for Discord Slash Commands.", 5 | "scripts": { 6 | "format": "prettier --write src/**/*.{ts,js,json} && prettier --write *.{json,md}", 7 | "publish": "wrangler publish", 8 | "watch": "wrangler preview --watch" 9 | }, 10 | "author": "A5rocks", 11 | "license": "Apache-2.0", 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/A5rocks/slash-worker" 15 | }, 16 | "devDependencies": { 17 | "@cloudflare/workers-types": "^2.0.0", 18 | "@types/node": "^14.14.12", 19 | "fork-ts-checker-webpack-plugin": "^6.0.6", 20 | "prettier": "^2.0.5", 21 | "slash-commands": "^1.4.0", 22 | "ts-loader": "^7.0.5", 23 | "ts-node": "^10.0.0", 24 | "typescript": "^3.9.5", 25 | "webpack": "^4.39.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/commands/8ball.ts: -------------------------------------------------------------------------------- 1 | import { InteractionResponseType } from 'slash-commands/dist/src/structures'; 2 | import { createOriginal, followup } from '.'; 3 | 4 | export async function handle8Ball( 5 | interaction: InteractionWithContext, 6 | ): Promise { 7 | await createOriginal(interaction, { 8 | type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE, 9 | data: { 10 | content: 'hihi!', 11 | }, 12 | }); 13 | await new Promise((resolve) => setTimeout(resolve, 5000)); 14 | 15 | await createOriginal(interaction, { 16 | type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE, 17 | data: { 18 | content: 'I have responded!', 19 | }, 20 | }); 21 | 22 | await followup(interaction, { 23 | // TODO: make a specialized option map for every command... maybe? 24 | // erroring might be enough, to be honest. 25 | content: `Your question was \`${interaction.options.get( 26 | 'question', 27 | )}\`, right?`, 28 | }); 29 | } 30 | -------------------------------------------------------------------------------- /src/commands/index.ts: -------------------------------------------------------------------------------- 1 | // todo: should this go into types 2 | export { 3 | createOriginal, 4 | followup, 5 | editFollowup, 6 | deleteFollowup, 7 | } from '../lib/endpoints'; 8 | 9 | import { handleOwO } from './owo'; 10 | import { handle8Ball } from './8ball'; 11 | 12 | type complexCommand = (_: InteractionWithContext) => Promise; 13 | type simpleCommand = (_: InteractionRequest) => Promise; 14 | 15 | export const handlers: { 16 | [id: string]: complexCommand | simpleCommand; 17 | } = { 18 | '786838810297630740': handleOwO, 19 | '788133812575797278': handle8Ball, 20 | }; 21 | -------------------------------------------------------------------------------- /src/commands/owo.ts: -------------------------------------------------------------------------------- 1 | import { InteractionResponseType } from 'slash-commands/dist/src/structures'; 2 | 3 | export async function handleOwO( 4 | req: InteractionRequest, 5 | ): Promise { 6 | return { 7 | type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE, 8 | data: { 9 | content: `<:slash:782701715479724063> Did I just hear someone... OwO??? From \`${ 10 | req.from 11 | }\`! 12 | rawr: 13 | \`\`\`json 14 | ${JSON.stringify(req, null, 4)} 15 | \`\`\``, 16 | flags: 64, 17 | }, 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { publicKeys, apiPrefix } from './services'; 2 | export { log } from './sentry'; 3 | export { handlers } from './commands'; 4 | import { handleRequest } from './lib/handle_request'; 5 | 6 | addEventListener('fetch', (event) => { 7 | event.respondWith(handleRequest(event)); 8 | }); 9 | -------------------------------------------------------------------------------- /src/lib/endpoints.ts: -------------------------------------------------------------------------------- 1 | import { AllowedMentions, Embed } from 'slash-commands/dist/src/structures'; 2 | import { apiPrefix } from '..'; 3 | 4 | type _Message = { 5 | content?: string; 6 | tts?: boolean; 7 | embeds?: Embed[]; 8 | allowed_mentions?: AllowedMentions; 9 | }; 10 | 11 | type _EmbedMessage = _Message & { 12 | embeds: Embed[]; 13 | }; 14 | 15 | type _TextMessage = _Message & { 16 | content: string; 17 | }; 18 | 19 | type Message = _TextMessage | _EmbedMessage; 20 | 21 | // TODO: break this into two functions 22 | export async function createOriginal( 23 | req: InteractionWithContext, 24 | msg: InteractionResponse, 25 | ) { 26 | if (!req.context.haveResponded) { 27 | req.context.haveResponded = true; 28 | req.context.originalResp(msg); 29 | } else if ('data' in msg && msg.data) { 30 | // oh no, accidentally ACK-ed earlier... 31 | await fetch( 32 | //@ts-expect-error 33 | `${apiPrefix[req.from]}/${req.application_id}/${ 34 | req.token 35 | }/messages/@original`, 36 | { 37 | method: 'PATCH', 38 | headers: { 39 | 'Content-Type': 'application/json', 40 | }, 41 | body: JSON.stringify({ 42 | content: msg.data.content, 43 | embeds: msg.data.embeds, 44 | allowed_mentions: msg.data.allowedMentions, 45 | }), 46 | }, 47 | ); 48 | } 49 | } 50 | 51 | type FollowupID = string; 52 | 53 | export async function followup( 54 | req: InteractionWithContext, 55 | msg: Message, 56 | ): Promise { 57 | const blah = await fetch( 58 | // @ts-expect-error 59 | `${apiPrefix[req.from]}/${req.application_id}/${req.token}`, 60 | { 61 | method: 'POST', 62 | headers: { 63 | 'Content-Type': 'application/json', 64 | }, 65 | body: JSON.stringify(msg), 66 | }, 67 | ); 68 | 69 | return (await blah.json()).id; 70 | } 71 | 72 | export async function editFollowup( 73 | req: InteractionWithContext, 74 | id: FollowupID, 75 | 76 | msg: Message, 77 | ) { 78 | await fetch( 79 | // @ts-expect-error 80 | `${apiPrefix[req.from]}/${req.application_id}/${ 81 | req.token 82 | }/messages/${id}`, 83 | { 84 | method: 'PATCH', 85 | headers: { 86 | 'Content-Type': 'application/json', 87 | }, 88 | body: JSON.stringify(msg), 89 | }, 90 | ); 91 | } 92 | 93 | export async function deleteFollowup( 94 | req: InteractionWithContext, 95 | id: FollowupID, 96 | ) { 97 | await fetch( 98 | // @ts-expect-error 99 | `${apiPrefix[req.from]}/${req.application_id}/${ 100 | req.token 101 | }/messages/${id}`, 102 | { 103 | method: 'DELETE', 104 | }, 105 | ); 106 | } 107 | -------------------------------------------------------------------------------- /src/lib/handle_command.ts: -------------------------------------------------------------------------------- 1 | import { 2 | InteractionResponseType, 3 | InteractionType, 4 | } from 'slash-commands/dist/src/structures'; 5 | import { handlers } from '..'; 6 | import { createOriginal } from './endpoints'; 7 | 8 | function neverHappens(): never { 9 | throw new Error('Invalid state, `handle_command.ts`'); 10 | } 11 | 12 | export async function handleCommand( 13 | interaction: InteractionRequest, 14 | event: FetchEvent, 15 | ): Promise { 16 | // todo: export ApplicationCommand from slash-worker so I do not lose type info 17 | if (interaction.type !== InteractionType.APPLICATION_COMMAND) 18 | return neverHappens(); 19 | 20 | const commandId = interaction.data.id; 21 | if (commandId in handlers) { 22 | const command = handlers[commandId]; 23 | 24 | const resp: Promise = new Promise((resolve) => { 25 | const context: InteractionWithContext = { 26 | ...interaction, 27 | context: { 28 | originalResp: resolve, 29 | haveResponded: false, 30 | }, 31 | }; 32 | 33 | setTimeout(() => { 34 | if (!context.context.haveResponded) { 35 | context.context.haveResponded = true; 36 | resolve({ 37 | type: InteractionResponseType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE, 38 | }); 39 | } 40 | }, 2500); 41 | 42 | event.waitUntil( 43 | (async () => { 44 | const res = await command(context); 45 | 46 | if (res && !context.context.haveResponded) { 47 | await createOriginal(context, res); 48 | } else if (res) { 49 | // this is safe because commands that return values cannot 50 | // call any endpoints (as they don't have a context on 51 | // them... well they do but not according to types). 52 | await createOriginal(context, res); 53 | } 54 | })(), 55 | ); 56 | }); 57 | 58 | return await resp; 59 | } else { 60 | return { 61 | type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE, 62 | data: { 63 | content: 'Command not set up in `slash-worker`.', 64 | }, 65 | }; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/lib/handle_request.ts: -------------------------------------------------------------------------------- 1 | import { verifySig } from './signatures'; 2 | import { 3 | Interaction, 4 | InteractionType, 5 | } from 'slash-commands/dist/src/structures'; 6 | import { publicKeys, log } from '..'; 7 | import { handleCommand } from './handle_command'; 8 | import { transformRequest } from './transform_request'; 9 | 10 | const MAX_AGE = 5; // max age of signature in seconds 11 | 12 | export async function handleRequest(evt: FetchEvent): Promise { 13 | const request = evt.request; 14 | 15 | // necessary checks 16 | if (request.method !== 'POST') 17 | return new Response('Method Not Allowed.', { status: 405 }); 18 | 19 | const sig = request.headers.get('X-Signature-Ed25519'); 20 | 21 | if (sig === null) 22 | return new Response('No signature given.', { status: 401 }); 23 | 24 | const timestamp = request.headers.get('X-Signature-Timestamp'); 25 | 26 | if (timestamp == null) 27 | return new Response('No timestamp given.', { status: 401 }); 28 | 29 | if (parseInt(timestamp) < Date.now() / 1000 - MAX_AGE) 30 | return new Response('Too old timestamp.', { status: 401 }); 31 | 32 | const body = await request.clone().text(); 33 | var correct = false; 34 | var from = ''; 35 | 36 | for (const keyFrom in publicKeys) { 37 | if (await verifySig(publicKeys[keyFrom], timestamp, body, sig)) { 38 | correct = true; 39 | from = keyFrom; 40 | break; 41 | } 42 | } 43 | 44 | if (!correct) return new Response('Invalid signature', { status: 401 }); 45 | 46 | // todo: some sort of validation... maybe. Only trusted people can get 47 | // here, after all. 48 | const req = (await request.json()) as Interaction; 49 | 50 | if (req === null) return new Response('Invalid request', { status: 400 }); 51 | 52 | if (req.type === InteractionType.PING) { 53 | return new Response(JSON.stringify({ type: 1 })); 54 | } else if (req.type === InteractionType.APPLICATION_COMMAND) { 55 | try { 56 | const result = await handleCommand( 57 | transformRequest(req, from), 58 | evt, 59 | ); 60 | return new Response(JSON.stringify(result), { 61 | headers: { 'Content-Type': 'application/json' }, 62 | }); 63 | } catch (e) { 64 | log(e, transformRequest(req, from)); 65 | 66 | return new Response( 67 | JSON.stringify({ 68 | type: 4, 69 | data: { 70 | content: 'An error occurred, try again in a while.', 71 | }, 72 | }), 73 | { 74 | headers: { 75 | 'Content-Type': 'application/json', 76 | }, 77 | }, 78 | ); 79 | } 80 | } else { 81 | return new Response('Unknown `type`!', { status: 400 }); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // basic pseudo-lib for slash-worker 2 | -------------------------------------------------------------------------------- /src/lib/signatures.ts: -------------------------------------------------------------------------------- 1 | export async function verifySig( 2 | key: string, 3 | timestamp: string, 4 | body: string, 5 | sig: string, 6 | ): Promise { 7 | const cryptoKey = await crypto.subtle.importKey( 8 | 'raw', 9 | Buffer.from(key, 'hex'), 10 | { name: 'NODE-ED25519', namedCurve: 'NODE-ED25519' }, 11 | false, 12 | ['verify'], 13 | ); 14 | 15 | return await crypto.subtle.verify( 16 | 'NODE-ED25519', 17 | cryptoKey, 18 | Buffer.from(sig, 'hex'), 19 | Buffer.from(timestamp + body), 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /src/lib/transform_request.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ApplicationCommandInteractionDataOption, 3 | ApplicationCommandOptionValue, 4 | Interaction, 5 | } from 'slash-commands/dist/src/structures'; 6 | 7 | // fixme: we ignore subgroups and subcommands 8 | // maybe a way to solve: (?) 9 | // https://discord.com/channels/110373943822540800/110373943822540800/788148728824463433 10 | // (BrightSkyz) 11 | function fixArguments( 12 | options: ApplicationCommandInteractionDataOption[], 13 | result: Map, 14 | ): Map { 15 | if (options === undefined) { 16 | return result; 17 | } 18 | 19 | for (const option of options) { 20 | if (!('value' in option)) { 21 | fixArguments(option.options, result); 22 | continue; 23 | } 24 | 25 | result.set(option.name, option.value); 26 | } 27 | 28 | return result; 29 | } 30 | 31 | // we want to transform the options into a mapping 32 | export function transformRequest( 33 | interaction: Interaction, 34 | from: string, 35 | ): InteractionRequest { 36 | const optionsDict: Map = new Map(); 37 | return { 38 | ...interaction, 39 | from: from, 40 | options: fixArguments( 41 | interaction.data === undefined 42 | ? [] 43 | : interaction.data.options === undefined 44 | ? [] 45 | : interaction.data.options, 46 | optionsDict, 47 | ), 48 | }; 49 | } 50 | -------------------------------------------------------------------------------- /src/sentry.ts: -------------------------------------------------------------------------------- 1 | // adapted from https://gist.githubusercontent.com/mhart/1b3bbfbdfa6825baab003b5f55a15322/raw/bec8f7afcacaf1f9dc4410174e4ebb65acc1b4bd/index.js 2 | 3 | // Get the key from the "DSN" at: https://sentry.io/settings//projects//keys/ 4 | // The "DSN" will be in the form: https://@/ 5 | // eg, https://0000aaaa1111bbbb2222cccc3333dddd@sentry.io/123456 6 | const SENTRY_PROJECT_ID = ''; 7 | const SENTRY_KEY = ''; 8 | const HOST = ''; 9 | 10 | // https://docs.sentry.io/error-reporting/configuration/?platform=javascript#environment 11 | const ENV = 'production'; 12 | 13 | // https://docs.sentry.io/error-reporting/configuration/?platform=javascript#release 14 | // A string describing the version of the release – we just use: git rev-parse --verify HEAD 15 | // You can use this to associate files/source-maps: https://docs.sentry.io/cli/releases/#upload-files 16 | const RELEASE = `slash-worker-${require('../package.json').version}`; 17 | 18 | // Indicates the name of the SDK client 19 | const CLIENT_NAME = 'slash-worker'; 20 | const CLIENT_VERSION = '1.0.0'; 21 | const RETRIES = 3; 22 | 23 | // The log() function takes an Error object and the current request 24 | // 25 | // Eg, from a worker: 26 | // 27 | // addEventListener('fetch', event => { 28 | // event.respondWith(async () => { 29 | // try { 30 | // throw new Error('Oh no!') 31 | // } catch (e) { 32 | // await log(e, event.request) 33 | // } 34 | // return new Response('Logged!') 35 | // }) 36 | // }) 37 | 38 | export async function log(err: Error, request: InteractionRequest) { 39 | // @ts-ignore 40 | if (SENTRY_PROJECT_ID === '' || SENTRY_KEY === '' || HOST === '') return; 41 | 42 | if (!(err instanceof Error)) return console.error(err); 43 | 44 | const body = JSON.stringify(toSentryEvent(err, request)); 45 | 46 | for (let i = 0; i <= RETRIES; i++) { 47 | const res = await fetch( 48 | `https://${HOST}/api/${SENTRY_PROJECT_ID}/store/`, 49 | { 50 | method: 'POST', 51 | headers: { 52 | 'Content-Type': 'application/json', 53 | 'X-Sentry-Auth': [ 54 | 'Sentry sentry_version=7', 55 | `sentry_client=${CLIENT_NAME}/${CLIENT_VERSION}`, 56 | `sentry_key=${SENTRY_KEY}`, 57 | ].join(', '), 58 | }, 59 | body, 60 | }, 61 | ); 62 | if (res.status === 200) { 63 | return; 64 | } 65 | // We couldn't send to Sentry, try to log the response at least 66 | console.error({ httpStatus: res.status, ...(await res.json()) }); // eslint-disable-line no-console 67 | } 68 | } 69 | 70 | function toSentryEvent(err: Error, request: InteractionRequest) { 71 | const errType = err.name || (err.constructor || {}).name; 72 | const frames = parse(err); 73 | return { 74 | event_id: uuidv4(), 75 | message: errType + ': ' + (err.message || ''), 76 | exception: { 77 | values: [ 78 | { 79 | type: errType, 80 | value: err.message, 81 | stacktrace: frames.length 82 | ? { frames: frames.reverse() } 83 | : undefined, 84 | }, 85 | ], 86 | }, 87 | extra: { 88 | // TODO: this does not seem right: upstream a fix if necessary. 89 | // guild id is also not always provided, but we're fine with `undefined` here :) 90 | guild_id: 91 | 'guild_id' in request ? request.guild_id : request.guildId, 92 | channel_id: 93 | 'channel_id' in request 94 | ? request.channel_id 95 | : request.channelId, 96 | command_name: 97 | request.data === undefined ? undefined : request.data.name, 98 | options: 99 | request.data === undefined ? undefined : request.data.options, 100 | from: request.from, 101 | }, 102 | tags: { 103 | command_id: 104 | request.data === undefined ? undefined : request.data.id, 105 | }, 106 | platform: 'javascript', 107 | environment: ENV, 108 | timestamp: Date.now() / 1000, 109 | user: 110 | request.member.user === undefined 111 | ? undefined 112 | : { 113 | id: request.member.user.id, 114 | username: `${request.member.user.username}#${request.member.user.discriminator}`, 115 | }, 116 | release: RELEASE, 117 | }; 118 | } 119 | 120 | function parse(err: Error) { 121 | return (err.stack || '') 122 | .split('\n') 123 | .slice(1) 124 | .map((line) => { 125 | if (line.match(/^\s*[-]{4,}$/)) { 126 | return { filename: line }; 127 | } 128 | 129 | // From https://github.com/felixge/node-stack-trace/blob/1ec9ba43eece124526c273c917104b4226898932/lib/stack-trace.js#L42 130 | const lineMatch = line.match( 131 | /at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/, 132 | ); 133 | if (!lineMatch) { 134 | return; 135 | } 136 | 137 | return { 138 | function: lineMatch[1] || undefined, 139 | filename: lineMatch[2] || undefined, 140 | lineno: +lineMatch[3] || undefined, 141 | colno: +lineMatch[4] || undefined, 142 | in_app: lineMatch[5] !== 'native' || undefined, 143 | }; 144 | }) 145 | .filter(Boolean); 146 | } 147 | 148 | function uuidv4() { 149 | const bytes = new Uint8Array(16); 150 | crypto.getRandomValues(bytes); 151 | bytes[6] = (bytes[6] & 0x0f) | 0x40; 152 | bytes[8] = (bytes[8] & 0x3f) | 0x80; 153 | return [...bytes].map((b) => ('0' + b.toString(16)).slice(-2)).join(''); // to hex 154 | } 155 | -------------------------------------------------------------------------------- /src/services.ts: -------------------------------------------------------------------------------- 1 | // the public keys to use to check payloads. This is accessed top to bottom, 2 | // which means the more likely keys should go to the top. 3 | export const publicKeys: { [id: string]: string } = { 4 | discord: 'PUBLIC KEY HERE', 5 | }; 6 | 7 | // these are prefixes to the follow up routes. 8 | export const apiPrefix: { [id: string]: string } = { 9 | discord: 'https://discord.com/api/v8/webhooks', 10 | }; 11 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ApplicationCommandOptionValue, 3 | Interaction, 4 | InteractionApplicationCommandCallbackData, 5 | InteractionResponseType, 6 | } from 'slash-commands/dist/src/structures'; 7 | 8 | // todo: better errors 9 | export class StringDictionary { 10 | private backing: { [id: string]: V } = {}; 11 | 12 | public get(k: string): V { 13 | if (!(k in this.backing)) { 14 | throw new Error( 15 | `Cannot get key that does not exist in dictionary: ${k}`, 16 | ); 17 | } 18 | 19 | return this.backing[k]; 20 | } 21 | 22 | public set(k: string, v: V): V | null { 23 | var prev = null; 24 | if (k in this.backing) { 25 | prev = this.backing[k]; 26 | } 27 | 28 | this.backing[k] = v; 29 | 30 | return prev; 31 | } 32 | 33 | public delete(k: string) { 34 | if (!(k in this.backing)) { 35 | throw new Error( 36 | `Cannot delete key that does not exist in dictionary: ${k}`, 37 | ); 38 | } 39 | 40 | delete this.backing[k]; 41 | } 42 | } 43 | 44 | type Context = { 45 | originalResp: (_: InteractionResponse) => void; 46 | haveResponded: boolean; 47 | }; 48 | 49 | declare global { 50 | type InteractionResponse = 51 | | { 52 | type: InteractionResponseType.DEFERRED_CHANNEL_MESSAGE_WITH_SOURCE; 53 | } 54 | | { 55 | type: InteractionResponseType.CHANNEL_MESSAGE_WITH_SOURCE; 56 | data?: InteractionApplicationCommandCallbackData; 57 | }; 58 | 59 | type InteractionRequest = Interaction & { 60 | from: string; 61 | // fixme: as it is, this pretends subcommands and groups don't exist 62 | options: Map; 63 | }; 64 | 65 | type InteractionWithContext = InteractionRequest & { 66 | context: Context; 67 | }; 68 | } 69 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./dist", 4 | "module": "commonjs", 5 | "target": "esnext", 6 | "lib": ["esnext", "webworker"], 7 | "alwaysStrict": true, 8 | "strict": true, 9 | "preserveConstEnums": true, 10 | "moduleResolution": "node", 11 | "sourceMap": true, 12 | "esModuleInterop": true, 13 | "types": ["@cloudflare/workers-types", "@types/node"] 14 | }, 15 | "include": [ 16 | "./src/*.ts", 17 | "./test/*.ts", 18 | "./src/**/*.ts", 19 | "./test/**/*.ts", 20 | "./node_modules/@cloudflare/workers-types/index.d.ts" 21 | ], 22 | "exclude": ["node_modules/", "dist/"] 23 | } 24 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); 3 | 4 | module.exports = { 5 | output: { 6 | filename: 'worker.js', 7 | path: path.join(__dirname, 'dist'), 8 | }, 9 | mode: 'production', 10 | resolve: { 11 | extensions: ['.ts', '.tsx', '.js'], 12 | }, 13 | module: { 14 | rules: [ 15 | { 16 | test: /\.tsx?$/, 17 | loader: 'ts-loader', 18 | options: { 19 | transpileOnly: true, 20 | }, 21 | }, 22 | ], 23 | }, 24 | plugins: [ 25 | new ForkTsCheckerWebpackPlugin() 26 | ], 27 | }; 28 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = "slash-worker" 2 | type = "webpack" 3 | account_id = "YOUR ACCOUNT ID" 4 | workers_dev = true 5 | route = "" 6 | zone_id = "" 7 | webpack_config = "webpack.config.js" 8 | --------------------------------------------------------------------------------