├── .gitignore ├── .npmignore ├── CONTRIBUTORS.md ├── LICENSE ├── README.md ├── gulpfile.js ├── index.js ├── package-lock.json ├── package.json ├── src ├── bin │ └── swagger2angular.ts ├── index.ts └── package.json ├── tests ├── apis │ ├── petstore.json │ ├── protected.json │ ├── ref.json │ ├── swagger.json │ ├── swagger_yaml.json │ ├── swagger_yaml.yaml │ ├── uber.json │ └── users.json └── buildConfig.json └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | typings 2 | node_modules 3 | .idea 4 | .vs 5 | .vscode 6 | .idea 7 | bin 8 | !src/bin 9 | obj 10 | output 11 | temp 12 | lib 13 | client 14 | dist 15 | npm-debug.log 16 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | tests/ 3 | output/ 4 | node_modules/ 5 | .gitignore -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | # Contributors 2 | 3 | Based on Code of [Michal Krchňavý](https://github.com/zemacik) 4 | extended by [me](https://github.com/nvdnkpr) 5 | with helpful Pull Requests by in order of date and name : 6 | - [Jedediah Smith](https://github.com/jedsmithobd) 7 | - [Stephan van Rooij](https://github.com/svrooij) 8 | - [Robert Mayer](https://github.com/syron) 9 | 10 | 11 | -------------------------------------------------------------------------------- /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 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # angular2-swagger-apiclient-generator 2 | Angular 2 API client generator from swagger json 3 | 4 | # Description 5 | This package generates a angular2 typescript class from a swagger v2.0 specification file. The code is generated using mustache templates. 6 | 7 | # How to get it working 8 | 9 | ## Installation 10 | 1. `npm install swagger2ng2` 11 | 12 | or 13 | 14 | 1. get it from github `git clone https://github.com/syron/angular2-swagger-client-generator` 15 | 1. `cd angular2-swagger-client-generator` 16 | 1. `npm install` 17 | 1. `npm run build` 18 | 1. If you want to run globally run `npm install -g` 19 | 20 | ## Usage 21 | 22 | From commandline run: 23 | ``` 24 | swagger2ng2 -s [your/path/to/swagger.json] -c [className] -g [GenerateParameter] 25 | ``` 26 | 27 | or 28 | ``` 29 | swagger2ng2 -u [url/of/your/swagger.json] -c [className] -g [GenerateParameter] 30 | ``` 31 | 32 | If parameter -c is not provided, class name will be ApiClient Service. 33 | 34 | Available values for parameter -g are I, M, C or F, as well as you can combine them. 35 | 36 | ## Parameters 37 | 38 | Options: 39 | 40 | -s, --source Path to your swagger.json file 41 | 42 | -u, --url Url of your swagger.json file 43 | 44 | -o, --outputpath Path where to store generated files 45 | 46 | -c, --className Class name for Api client 47 | 48 | -g, --generate What to generate, F for full (default), I for interfaces, M for models, C for classes 49 | 50 | -f, --fileName Example '-f index' will generate both index.ts and index.interface.ts. 51 | 52 | -p, --modelPath If used, p provides a relative path to the place where models are stored. 53 | 54 | ## Example usage: 55 | 56 | This command will generate API client described in swagger.json file to ./out folder 57 | ``` 58 | swagger2ng2 -s .\tests\apis\swagger.json -o ./out 59 | ``` 60 | 61 | or from repository directory run: 62 | ``` 63 | node ./src/main -s .\tests\apis\swagger.json -o ./out 64 | ``` 65 | 66 | ##Note: 67 | This project was inspired by: 68 | 69 | [swagger-js-codegen](https://github.com/wcandillon/swagger-js-codegen) project 70 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | const ts = require('gulp-typescript'); 3 | const del = require('del'); 4 | 5 | gulp.task('default', ['clean', 'copyTemplates','copyLib']); 6 | 7 | gulp.task('clean', function(){ 8 | return del(['dist']); 9 | }); 10 | gulp.task('copyTemplates',['clean'], function(){ 11 | return gulp.src('src/**/*.hbs').pipe(gulp.dest('dist')); 12 | }); 13 | 14 | gulp.task('copyLib',['clean'], function(){ 15 | return gulp.src('src/**/*.ts').pipe(ts({project: 'tsconfig.json'})).pipe(gulp.dest('dist')); 16 | }); 17 | 18 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var generator = require('./lib/generator'); 2 | 3 | module.exports = generator; -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-swagger-client-generator", 3 | "version": "0.0.15", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/handlebars": { 8 | "version": "4.0.33", 9 | "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.33.tgz", 10 | "integrity": "sha512-39w19Mseg83z68JsIdcuFH3Z+BR/Jc3gRBB4Pn/aUm76rdy0prMz5iIMJAOb0Bo6H/rZhQc41vFf3tAMgqufVQ==", 11 | "dev": true 12 | }, 13 | "@types/js-beautify": { 14 | "version": "0.0.30", 15 | "resolved": "https://registry.npmjs.org/@types/js-beautify/-/js-beautify-0.0.30.tgz", 16 | "integrity": "sha512-T3KB4C0CDwupgvOmnzA/Z9qEGQlt0zcLUkqHd7lB/9cWhe5+htJZrjAxaU4riYNBfQ7fiCn/RKfQyXusirv0vQ==", 17 | "dev": true 18 | }, 19 | "@types/lodash": { 20 | "version": "4.14.68", 21 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.68.tgz", 22 | "integrity": "sha512-tndmbhJc7EeymtvgcZ0oX2H0P95VcT1FlAoeki3bl71DqL9zA/tbJcMZyR1kJkHDvr+57I7+gsn+BVPHIqgcbQ==", 23 | "dev": true 24 | }, 25 | "@types/node": { 26 | "version": "8.0.8", 27 | "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.8.tgz", 28 | "integrity": "sha512-mDdL8leJCDIe2uSA+jp2quT6t7y0Pt9guPYzfoMt97r8dhRGZ+jLetPYHCCHXLnWdmae/zHZIYvzTQaTj6BCQg==", 29 | "dev": true 30 | }, 31 | "@types/swagger-parser": { 32 | "version": "4.0.1", 33 | "resolved": "https://registry.npmjs.org/@types/swagger-parser/-/swagger-parser-4.0.1.tgz", 34 | "integrity": "sha512-n3TZi/7plDFjVAxDpqwgYOw9CWryb3nFVNbKoxfxXL0nmUnZhbJFcnCoO8NO+ogACJMOVfLMqfIrmfr0Uloh1A==", 35 | "dev": true, 36 | "requires": { 37 | "@types/swagger-schema-official": "2.0.5" 38 | } 39 | }, 40 | "@types/swagger-schema-official": { 41 | "version": "2.0.5", 42 | "resolved": "https://registry.npmjs.org/@types/swagger-schema-official/-/swagger-schema-official-2.0.5.tgz", 43 | "integrity": "sha1-n+SbQLHQM/1zvrt7tpz6jL8wufE=", 44 | "dev": true 45 | }, 46 | "abbrev": { 47 | "version": "1.1.0", 48 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", 49 | "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" 50 | }, 51 | "align-text": { 52 | "version": "0.1.4", 53 | "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", 54 | "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", 55 | "requires": { 56 | "kind-of": "3.2.2", 57 | "longest": "1.0.1", 58 | "repeat-string": "1.6.1" 59 | } 60 | }, 61 | "amdefine": { 62 | "version": "1.0.1", 63 | "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", 64 | "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" 65 | }, 66 | "ansi-regex": { 67 | "version": "2.1.1", 68 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 69 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 70 | }, 71 | "ansi-styles": { 72 | "version": "2.2.1", 73 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 74 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 75 | }, 76 | "archy": { 77 | "version": "1.0.0", 78 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 79 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 80 | "dev": true 81 | }, 82 | "argparse": { 83 | "version": "1.0.9", 84 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 85 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 86 | "requires": { 87 | "sprintf-js": "1.0.3" 88 | } 89 | }, 90 | "arr-diff": { 91 | "version": "2.0.0", 92 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 93 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 94 | "dev": true, 95 | "requires": { 96 | "arr-flatten": "1.1.0" 97 | } 98 | }, 99 | "arr-flatten": { 100 | "version": "1.1.0", 101 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 102 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 103 | "dev": true 104 | }, 105 | "array-differ": { 106 | "version": "1.0.0", 107 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 108 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", 109 | "dev": true 110 | }, 111 | "array-each": { 112 | "version": "1.0.1", 113 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 114 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 115 | "dev": true 116 | }, 117 | "array-slice": { 118 | "version": "1.0.0", 119 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", 120 | "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", 121 | "dev": true 122 | }, 123 | "array-union": { 124 | "version": "1.0.2", 125 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 126 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 127 | "dev": true, 128 | "requires": { 129 | "array-uniq": "1.0.3" 130 | } 131 | }, 132 | "array-uniq": { 133 | "version": "1.0.3", 134 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 135 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 136 | "dev": true 137 | }, 138 | "array-unique": { 139 | "version": "0.2.1", 140 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 141 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 142 | "dev": true 143 | }, 144 | "async": { 145 | "version": "1.5.2", 146 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 147 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" 148 | }, 149 | "babel-code-frame": { 150 | "version": "6.22.0", 151 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 152 | "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", 153 | "requires": { 154 | "chalk": "1.1.3", 155 | "esutils": "2.0.2", 156 | "js-tokens": "3.0.2" 157 | } 158 | }, 159 | "balanced-match": { 160 | "version": "1.0.0", 161 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 162 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 163 | }, 164 | "beeper": { 165 | "version": "1.1.1", 166 | "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", 167 | "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", 168 | "dev": true 169 | }, 170 | "bluebird": { 171 | "version": "3.5.0", 172 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 173 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" 174 | }, 175 | "brace-expansion": { 176 | "version": "1.1.8", 177 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 178 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 179 | "requires": { 180 | "balanced-match": "1.0.0", 181 | "concat-map": "0.0.1" 182 | } 183 | }, 184 | "braces": { 185 | "version": "1.8.5", 186 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 187 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 188 | "dev": true, 189 | "requires": { 190 | "expand-range": "1.8.2", 191 | "preserve": "0.2.0", 192 | "repeat-element": "1.1.2" 193 | } 194 | }, 195 | "call-me-maybe": { 196 | "version": "1.0.1", 197 | "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", 198 | "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" 199 | }, 200 | "camelcase": { 201 | "version": "1.2.1", 202 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", 203 | "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", 204 | "optional": true 205 | }, 206 | "center-align": { 207 | "version": "0.1.3", 208 | "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", 209 | "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", 210 | "optional": true, 211 | "requires": { 212 | "align-text": "0.1.4", 213 | "lazy-cache": "1.0.4" 214 | } 215 | }, 216 | "chalk": { 217 | "version": "1.1.3", 218 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 219 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 220 | "requires": { 221 | "ansi-styles": "2.2.1", 222 | "escape-string-regexp": "1.0.5", 223 | "has-ansi": "2.0.0", 224 | "strip-ansi": "3.0.1", 225 | "supports-color": "2.0.0" 226 | } 227 | }, 228 | "cliui": { 229 | "version": "2.1.0", 230 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", 231 | "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", 232 | "optional": true, 233 | "requires": { 234 | "center-align": "0.1.3", 235 | "right-align": "0.1.3", 236 | "wordwrap": "0.0.2" 237 | }, 238 | "dependencies": { 239 | "wordwrap": { 240 | "version": "0.0.2", 241 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", 242 | "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", 243 | "optional": true 244 | } 245 | } 246 | }, 247 | "clone": { 248 | "version": "1.0.2", 249 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", 250 | "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", 251 | "dev": true 252 | }, 253 | "clone-stats": { 254 | "version": "0.0.1", 255 | "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 256 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", 257 | "dev": true 258 | }, 259 | "colors": { 260 | "version": "1.1.2", 261 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", 262 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" 263 | }, 264 | "commander": { 265 | "version": "2.11.0", 266 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 267 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==" 268 | }, 269 | "commandpost": { 270 | "version": "1.1.0", 271 | "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.1.0.tgz", 272 | "integrity": "sha512-9yPICKOPS0+24bMM4kHx7AgTZ1tWw51/eq0BUYqzDodNoiszL3Z0w4JRt/UXd93Aw003tlQlpuERcw7mBlxt9g==" 273 | }, 274 | "concat-map": { 275 | "version": "0.0.1", 276 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 277 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 278 | }, 279 | "config-chain": { 280 | "version": "1.1.11", 281 | "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", 282 | "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", 283 | "requires": { 284 | "ini": "1.3.4", 285 | "proto-list": "1.2.4" 286 | } 287 | }, 288 | "convert-source-map": { 289 | "version": "1.5.0", 290 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 291 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 292 | "dev": true 293 | }, 294 | "core-util-is": { 295 | "version": "1.0.2", 296 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 297 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 298 | "dev": true 299 | }, 300 | "dateformat": { 301 | "version": "2.0.0", 302 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", 303 | "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", 304 | "dev": true 305 | }, 306 | "debug": { 307 | "version": "2.6.8", 308 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 309 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 310 | "requires": { 311 | "ms": "2.0.0" 312 | } 313 | }, 314 | "decamelize": { 315 | "version": "1.2.0", 316 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 317 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 318 | "optional": true 319 | }, 320 | "defaults": { 321 | "version": "1.0.3", 322 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 323 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 324 | "dev": true, 325 | "requires": { 326 | "clone": "1.0.2" 327 | } 328 | }, 329 | "del": { 330 | "version": "3.0.0", 331 | "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", 332 | "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", 333 | "dev": true, 334 | "requires": { 335 | "globby": "6.1.0", 336 | "is-path-cwd": "1.0.0", 337 | "is-path-in-cwd": "1.0.0", 338 | "p-map": "1.1.1", 339 | "pify": "3.0.0", 340 | "rimraf": "2.6.1" 341 | } 342 | }, 343 | "deprecated": { 344 | "version": "0.0.1", 345 | "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", 346 | "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", 347 | "dev": true 348 | }, 349 | "detect-file": { 350 | "version": "0.1.0", 351 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", 352 | "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", 353 | "dev": true, 354 | "requires": { 355 | "fs-exists-sync": "0.1.0" 356 | } 357 | }, 358 | "diff": { 359 | "version": "3.3.0", 360 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", 361 | "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==" 362 | }, 363 | "duplexer2": { 364 | "version": "0.0.2", 365 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 366 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", 367 | "dev": true, 368 | "requires": { 369 | "readable-stream": "1.1.14" 370 | } 371 | }, 372 | "duplexify": { 373 | "version": "3.5.0", 374 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", 375 | "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", 376 | "dev": true, 377 | "requires": { 378 | "end-of-stream": "1.0.0", 379 | "inherits": "2.0.3", 380 | "readable-stream": "2.3.3", 381 | "stream-shift": "1.0.0" 382 | }, 383 | "dependencies": { 384 | "isarray": { 385 | "version": "1.0.0", 386 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 387 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 388 | "dev": true 389 | }, 390 | "readable-stream": { 391 | "version": "2.3.3", 392 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 393 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 394 | "dev": true, 395 | "requires": { 396 | "core-util-is": "1.0.2", 397 | "inherits": "2.0.3", 398 | "isarray": "1.0.0", 399 | "process-nextick-args": "1.0.7", 400 | "safe-buffer": "5.1.1", 401 | "string_decoder": "1.0.3", 402 | "util-deprecate": "1.0.2" 403 | } 404 | }, 405 | "string_decoder": { 406 | "version": "1.0.3", 407 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 408 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 409 | "dev": true, 410 | "requires": { 411 | "safe-buffer": "5.1.1" 412 | } 413 | } 414 | } 415 | }, 416 | "editorconfig": { 417 | "version": "0.13.2", 418 | "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.2.tgz", 419 | "integrity": "sha1-jleSbZ7mmrbLmZ8CfCFxRnrM6zU=", 420 | "requires": { 421 | "bluebird": "3.5.0", 422 | "commander": "2.11.0", 423 | "lru-cache": "3.2.0", 424 | "sigmund": "1.0.1" 425 | } 426 | }, 427 | "end-of-stream": { 428 | "version": "1.0.0", 429 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", 430 | "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", 431 | "dev": true, 432 | "requires": { 433 | "once": "1.3.3" 434 | }, 435 | "dependencies": { 436 | "once": { 437 | "version": "1.3.3", 438 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 439 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", 440 | "dev": true, 441 | "requires": { 442 | "wrappy": "1.0.2" 443 | } 444 | } 445 | } 446 | }, 447 | "es6-promise": { 448 | "version": "3.3.1", 449 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", 450 | "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" 451 | }, 452 | "escape-string-regexp": { 453 | "version": "1.0.5", 454 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 455 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 456 | }, 457 | "esprima": { 458 | "version": "3.1.3", 459 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", 460 | "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" 461 | }, 462 | "esutils": { 463 | "version": "2.0.2", 464 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 465 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" 466 | }, 467 | "expand-brackets": { 468 | "version": "0.1.5", 469 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 470 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 471 | "dev": true, 472 | "requires": { 473 | "is-posix-bracket": "0.1.1" 474 | } 475 | }, 476 | "expand-range": { 477 | "version": "1.8.2", 478 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 479 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 480 | "dev": true, 481 | "requires": { 482 | "fill-range": "2.2.3" 483 | } 484 | }, 485 | "expand-tilde": { 486 | "version": "1.2.2", 487 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", 488 | "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", 489 | "dev": true, 490 | "requires": { 491 | "os-homedir": "1.0.2" 492 | } 493 | }, 494 | "extend": { 495 | "version": "3.0.1", 496 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 497 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 498 | "dev": true 499 | }, 500 | "extend-shallow": { 501 | "version": "2.0.1", 502 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 503 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 504 | "dev": true, 505 | "requires": { 506 | "is-extendable": "0.1.1" 507 | } 508 | }, 509 | "extglob": { 510 | "version": "0.3.2", 511 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 512 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 513 | "dev": true, 514 | "requires": { 515 | "is-extglob": "1.0.0" 516 | }, 517 | "dependencies": { 518 | "is-extglob": { 519 | "version": "1.0.0", 520 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 521 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 522 | "dev": true 523 | } 524 | } 525 | }, 526 | "fancy-log": { 527 | "version": "1.3.0", 528 | "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", 529 | "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", 530 | "dev": true, 531 | "requires": { 532 | "chalk": "1.1.3", 533 | "time-stamp": "1.1.0" 534 | } 535 | }, 536 | "filename-regex": { 537 | "version": "2.0.1", 538 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 539 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 540 | "dev": true 541 | }, 542 | "fill-range": { 543 | "version": "2.2.3", 544 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 545 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 546 | "dev": true, 547 | "requires": { 548 | "is-number": "2.1.0", 549 | "isobject": "2.1.0", 550 | "randomatic": "1.1.7", 551 | "repeat-element": "1.1.2", 552 | "repeat-string": "1.6.1" 553 | } 554 | }, 555 | "find-index": { 556 | "version": "0.1.1", 557 | "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", 558 | "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", 559 | "dev": true 560 | }, 561 | "findup-sync": { 562 | "version": "0.4.3", 563 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", 564 | "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", 565 | "dev": true, 566 | "requires": { 567 | "detect-file": "0.1.0", 568 | "is-glob": "2.0.1", 569 | "micromatch": "2.3.11", 570 | "resolve-dir": "0.1.1" 571 | }, 572 | "dependencies": { 573 | "is-extglob": { 574 | "version": "1.0.0", 575 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 576 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 577 | "dev": true 578 | }, 579 | "is-glob": { 580 | "version": "2.0.1", 581 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 582 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 583 | "dev": true, 584 | "requires": { 585 | "is-extglob": "1.0.0" 586 | } 587 | } 588 | } 589 | }, 590 | "fined": { 591 | "version": "1.1.0", 592 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", 593 | "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", 594 | "dev": true, 595 | "requires": { 596 | "expand-tilde": "2.0.2", 597 | "is-plain-object": "2.0.4", 598 | "object.defaults": "1.1.0", 599 | "object.pick": "1.2.0", 600 | "parse-filepath": "1.0.1" 601 | }, 602 | "dependencies": { 603 | "expand-tilde": { 604 | "version": "2.0.2", 605 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 606 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 607 | "dev": true, 608 | "requires": { 609 | "homedir-polyfill": "1.0.1" 610 | } 611 | } 612 | } 613 | }, 614 | "first-chunk-stream": { 615 | "version": "1.0.0", 616 | "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", 617 | "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", 618 | "dev": true 619 | }, 620 | "flagged-respawn": { 621 | "version": "0.3.2", 622 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", 623 | "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", 624 | "dev": true 625 | }, 626 | "for-in": { 627 | "version": "1.0.2", 628 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 629 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 630 | "dev": true 631 | }, 632 | "for-own": { 633 | "version": "0.1.5", 634 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 635 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 636 | "dev": true, 637 | "requires": { 638 | "for-in": "1.0.2" 639 | } 640 | }, 641 | "fs-exists-sync": { 642 | "version": "0.1.0", 643 | "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", 644 | "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", 645 | "dev": true 646 | }, 647 | "fs.realpath": { 648 | "version": "1.0.0", 649 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 650 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 651 | }, 652 | "gaze": { 653 | "version": "0.5.2", 654 | "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", 655 | "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", 656 | "dev": true, 657 | "requires": { 658 | "globule": "0.1.0" 659 | } 660 | }, 661 | "glob": { 662 | "version": "7.1.2", 663 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 664 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 665 | "requires": { 666 | "fs.realpath": "1.0.0", 667 | "inflight": "1.0.6", 668 | "inherits": "2.0.3", 669 | "minimatch": "3.0.4", 670 | "once": "1.4.0", 671 | "path-is-absolute": "1.0.1" 672 | } 673 | }, 674 | "glob-base": { 675 | "version": "0.3.0", 676 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 677 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 678 | "dev": true, 679 | "requires": { 680 | "glob-parent": "2.0.0", 681 | "is-glob": "2.0.1" 682 | }, 683 | "dependencies": { 684 | "glob-parent": { 685 | "version": "2.0.0", 686 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 687 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 688 | "dev": true, 689 | "requires": { 690 | "is-glob": "2.0.1" 691 | } 692 | }, 693 | "is-extglob": { 694 | "version": "1.0.0", 695 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 696 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 697 | "dev": true 698 | }, 699 | "is-glob": { 700 | "version": "2.0.1", 701 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 702 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 703 | "dev": true, 704 | "requires": { 705 | "is-extglob": "1.0.0" 706 | } 707 | } 708 | } 709 | }, 710 | "glob-parent": { 711 | "version": "3.1.0", 712 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 713 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 714 | "dev": true, 715 | "requires": { 716 | "is-glob": "3.1.0", 717 | "path-dirname": "1.0.2" 718 | } 719 | }, 720 | "glob-stream": { 721 | "version": "5.3.5", 722 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", 723 | "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", 724 | "dev": true, 725 | "requires": { 726 | "extend": "3.0.1", 727 | "glob": "5.0.15", 728 | "glob-parent": "3.1.0", 729 | "micromatch": "2.3.11", 730 | "ordered-read-streams": "0.3.0", 731 | "through2": "0.6.5", 732 | "to-absolute-glob": "0.1.1", 733 | "unique-stream": "2.2.1" 734 | }, 735 | "dependencies": { 736 | "glob": { 737 | "version": "5.0.15", 738 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 739 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 740 | "dev": true, 741 | "requires": { 742 | "inflight": "1.0.6", 743 | "inherits": "2.0.3", 744 | "minimatch": "3.0.4", 745 | "once": "1.4.0", 746 | "path-is-absolute": "1.0.1" 747 | } 748 | }, 749 | "readable-stream": { 750 | "version": "1.0.34", 751 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 752 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 753 | "dev": true, 754 | "requires": { 755 | "core-util-is": "1.0.2", 756 | "inherits": "2.0.3", 757 | "isarray": "0.0.1", 758 | "string_decoder": "0.10.31" 759 | } 760 | }, 761 | "through2": { 762 | "version": "0.6.5", 763 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 764 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 765 | "dev": true, 766 | "requires": { 767 | "readable-stream": "1.0.34", 768 | "xtend": "4.0.1" 769 | } 770 | } 771 | } 772 | }, 773 | "glob-watcher": { 774 | "version": "0.0.6", 775 | "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", 776 | "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", 777 | "dev": true, 778 | "requires": { 779 | "gaze": "0.5.2" 780 | } 781 | }, 782 | "glob2base": { 783 | "version": "0.0.12", 784 | "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", 785 | "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", 786 | "dev": true, 787 | "requires": { 788 | "find-index": "0.1.1" 789 | } 790 | }, 791 | "global-modules": { 792 | "version": "0.2.3", 793 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", 794 | "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", 795 | "dev": true, 796 | "requires": { 797 | "global-prefix": "0.1.5", 798 | "is-windows": "0.2.0" 799 | } 800 | }, 801 | "global-prefix": { 802 | "version": "0.1.5", 803 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", 804 | "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", 805 | "dev": true, 806 | "requires": { 807 | "homedir-polyfill": "1.0.1", 808 | "ini": "1.3.4", 809 | "is-windows": "0.2.0", 810 | "which": "1.2.14" 811 | } 812 | }, 813 | "globby": { 814 | "version": "6.1.0", 815 | "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", 816 | "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", 817 | "dev": true, 818 | "requires": { 819 | "array-union": "1.0.2", 820 | "glob": "7.1.2", 821 | "object-assign": "4.1.1", 822 | "pify": "2.3.0", 823 | "pinkie-promise": "2.0.1" 824 | }, 825 | "dependencies": { 826 | "object-assign": { 827 | "version": "4.1.1", 828 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 829 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 830 | "dev": true 831 | }, 832 | "pify": { 833 | "version": "2.3.0", 834 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 835 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 836 | "dev": true 837 | } 838 | } 839 | }, 840 | "globule": { 841 | "version": "0.1.0", 842 | "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", 843 | "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", 844 | "dev": true, 845 | "requires": { 846 | "glob": "3.1.21", 847 | "lodash": "1.0.2", 848 | "minimatch": "0.2.14" 849 | }, 850 | "dependencies": { 851 | "glob": { 852 | "version": "3.1.21", 853 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", 854 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", 855 | "dev": true, 856 | "requires": { 857 | "graceful-fs": "1.2.3", 858 | "inherits": "1.0.2", 859 | "minimatch": "0.2.14" 860 | } 861 | }, 862 | "graceful-fs": { 863 | "version": "1.2.3", 864 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 865 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", 866 | "dev": true 867 | }, 868 | "inherits": { 869 | "version": "1.0.2", 870 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 871 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", 872 | "dev": true 873 | }, 874 | "lodash": { 875 | "version": "1.0.2", 876 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", 877 | "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", 878 | "dev": true 879 | }, 880 | "lru-cache": { 881 | "version": "2.7.3", 882 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 883 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 884 | "dev": true 885 | }, 886 | "minimatch": { 887 | "version": "0.2.14", 888 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 889 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", 890 | "dev": true, 891 | "requires": { 892 | "lru-cache": "2.7.3", 893 | "sigmund": "1.0.1" 894 | } 895 | } 896 | } 897 | }, 898 | "glogg": { 899 | "version": "1.0.0", 900 | "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", 901 | "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", 902 | "dev": true, 903 | "requires": { 904 | "sparkles": "1.0.0" 905 | } 906 | }, 907 | "graceful-fs": { 908 | "version": "4.1.11", 909 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 910 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 911 | "dev": true 912 | }, 913 | "gulp": { 914 | "version": "3.9.1", 915 | "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", 916 | "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", 917 | "dev": true, 918 | "requires": { 919 | "archy": "1.0.0", 920 | "chalk": "1.1.3", 921 | "deprecated": "0.0.1", 922 | "gulp-util": "3.0.8", 923 | "interpret": "1.0.3", 924 | "liftoff": "2.3.0", 925 | "minimist": "1.2.0", 926 | "orchestrator": "0.3.8", 927 | "pretty-hrtime": "1.0.3", 928 | "semver": "4.3.6", 929 | "tildify": "1.2.0", 930 | "v8flags": "2.1.1", 931 | "vinyl-fs": "0.3.14" 932 | }, 933 | "dependencies": { 934 | "clone": { 935 | "version": "0.2.0", 936 | "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", 937 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", 938 | "dev": true 939 | }, 940 | "glob": { 941 | "version": "4.5.3", 942 | "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", 943 | "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", 944 | "dev": true, 945 | "requires": { 946 | "inflight": "1.0.6", 947 | "inherits": "2.0.3", 948 | "minimatch": "2.0.10", 949 | "once": "1.4.0" 950 | } 951 | }, 952 | "glob-stream": { 953 | "version": "3.1.18", 954 | "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", 955 | "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", 956 | "dev": true, 957 | "requires": { 958 | "glob": "4.5.3", 959 | "glob2base": "0.0.12", 960 | "minimatch": "2.0.10", 961 | "ordered-read-streams": "0.1.0", 962 | "through2": "0.6.5", 963 | "unique-stream": "1.0.0" 964 | } 965 | }, 966 | "graceful-fs": { 967 | "version": "3.0.11", 968 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", 969 | "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", 970 | "dev": true, 971 | "requires": { 972 | "natives": "1.1.0" 973 | } 974 | }, 975 | "minimatch": { 976 | "version": "2.0.10", 977 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 978 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 979 | "dev": true, 980 | "requires": { 981 | "brace-expansion": "1.1.8" 982 | } 983 | }, 984 | "minimist": { 985 | "version": "1.2.0", 986 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 987 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 988 | "dev": true 989 | }, 990 | "mkdirp": { 991 | "version": "0.5.1", 992 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 993 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 994 | "dev": true, 995 | "requires": { 996 | "minimist": "0.0.8" 997 | }, 998 | "dependencies": { 999 | "minimist": { 1000 | "version": "0.0.8", 1001 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1002 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1003 | "dev": true 1004 | } 1005 | } 1006 | }, 1007 | "ordered-read-streams": { 1008 | "version": "0.1.0", 1009 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", 1010 | "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", 1011 | "dev": true 1012 | }, 1013 | "readable-stream": { 1014 | "version": "1.0.34", 1015 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 1016 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 1017 | "dev": true, 1018 | "requires": { 1019 | "core-util-is": "1.0.2", 1020 | "inherits": "2.0.3", 1021 | "isarray": "0.0.1", 1022 | "string_decoder": "0.10.31" 1023 | } 1024 | }, 1025 | "semver": { 1026 | "version": "4.3.6", 1027 | "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 1028 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", 1029 | "dev": true 1030 | }, 1031 | "strip-bom": { 1032 | "version": "1.0.0", 1033 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", 1034 | "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", 1035 | "dev": true, 1036 | "requires": { 1037 | "first-chunk-stream": "1.0.0", 1038 | "is-utf8": "0.2.1" 1039 | } 1040 | }, 1041 | "through2": { 1042 | "version": "0.6.5", 1043 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 1044 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 1045 | "dev": true, 1046 | "requires": { 1047 | "readable-stream": "1.0.34", 1048 | "xtend": "4.0.1" 1049 | } 1050 | }, 1051 | "unique-stream": { 1052 | "version": "1.0.0", 1053 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", 1054 | "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", 1055 | "dev": true 1056 | }, 1057 | "vinyl": { 1058 | "version": "0.4.6", 1059 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", 1060 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", 1061 | "dev": true, 1062 | "requires": { 1063 | "clone": "0.2.0", 1064 | "clone-stats": "0.0.1" 1065 | } 1066 | }, 1067 | "vinyl-fs": { 1068 | "version": "0.3.14", 1069 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", 1070 | "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", 1071 | "dev": true, 1072 | "requires": { 1073 | "defaults": "1.0.3", 1074 | "glob-stream": "3.1.18", 1075 | "glob-watcher": "0.0.6", 1076 | "graceful-fs": "3.0.11", 1077 | "mkdirp": "0.5.1", 1078 | "strip-bom": "1.0.0", 1079 | "through2": "0.6.5", 1080 | "vinyl": "0.4.6" 1081 | } 1082 | } 1083 | } 1084 | }, 1085 | "gulp-sourcemaps": { 1086 | "version": "1.6.0", 1087 | "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", 1088 | "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", 1089 | "dev": true, 1090 | "requires": { 1091 | "convert-source-map": "1.5.0", 1092 | "graceful-fs": "4.1.11", 1093 | "strip-bom": "2.0.0", 1094 | "through2": "2.0.3", 1095 | "vinyl": "1.2.0" 1096 | }, 1097 | "dependencies": { 1098 | "vinyl": { 1099 | "version": "1.2.0", 1100 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", 1101 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", 1102 | "dev": true, 1103 | "requires": { 1104 | "clone": "1.0.2", 1105 | "clone-stats": "0.0.1", 1106 | "replace-ext": "0.0.1" 1107 | } 1108 | } 1109 | } 1110 | }, 1111 | "gulp-typescript": { 1112 | "version": "3.2.1", 1113 | "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.2.1.tgz", 1114 | "integrity": "sha1-Us136caETjuai93YjohM60al23k=", 1115 | "dev": true, 1116 | "requires": { 1117 | "gulp-util": "3.0.8", 1118 | "source-map": "0.5.6", 1119 | "through2": "2.0.3", 1120 | "vinyl-fs": "2.4.4" 1121 | }, 1122 | "dependencies": { 1123 | "source-map": { 1124 | "version": "0.5.6", 1125 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 1126 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 1127 | "dev": true 1128 | } 1129 | } 1130 | }, 1131 | "gulp-util": { 1132 | "version": "3.0.8", 1133 | "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", 1134 | "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", 1135 | "dev": true, 1136 | "requires": { 1137 | "array-differ": "1.0.0", 1138 | "array-uniq": "1.0.3", 1139 | "beeper": "1.1.1", 1140 | "chalk": "1.1.3", 1141 | "dateformat": "2.0.0", 1142 | "fancy-log": "1.3.0", 1143 | "gulplog": "1.0.0", 1144 | "has-gulplog": "0.1.0", 1145 | "lodash._reescape": "3.0.0", 1146 | "lodash._reevaluate": "3.0.0", 1147 | "lodash._reinterpolate": "3.0.0", 1148 | "lodash.template": "3.6.2", 1149 | "minimist": "0.0.8", 1150 | "multipipe": "0.1.2", 1151 | "object-assign": "3.0.0", 1152 | "replace-ext": "0.0.1", 1153 | "through2": "2.0.3", 1154 | "vinyl": "0.5.3" 1155 | } 1156 | }, 1157 | "gulplog": { 1158 | "version": "1.0.0", 1159 | "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 1160 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", 1161 | "dev": true, 1162 | "requires": { 1163 | "glogg": "1.0.0" 1164 | } 1165 | }, 1166 | "handlebars": { 1167 | "version": "4.0.10", 1168 | "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", 1169 | "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", 1170 | "requires": { 1171 | "async": "1.5.2", 1172 | "optimist": "0.6.1", 1173 | "source-map": "0.4.4", 1174 | "uglify-js": "2.8.29" 1175 | }, 1176 | "dependencies": { 1177 | "optimist": { 1178 | "version": "0.6.1", 1179 | "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 1180 | "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", 1181 | "requires": { 1182 | "minimist": "0.0.8", 1183 | "wordwrap": "0.0.3" 1184 | } 1185 | } 1186 | } 1187 | }, 1188 | "has-ansi": { 1189 | "version": "2.0.0", 1190 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1191 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1192 | "requires": { 1193 | "ansi-regex": "2.1.1" 1194 | } 1195 | }, 1196 | "has-gulplog": { 1197 | "version": "0.1.0", 1198 | "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", 1199 | "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", 1200 | "dev": true, 1201 | "requires": { 1202 | "sparkles": "1.0.0" 1203 | } 1204 | }, 1205 | "homedir-polyfill": { 1206 | "version": "1.0.1", 1207 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", 1208 | "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", 1209 | "dev": true, 1210 | "requires": { 1211 | "parse-passwd": "1.0.0" 1212 | } 1213 | }, 1214 | "inflight": { 1215 | "version": "1.0.6", 1216 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1217 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1218 | "requires": { 1219 | "once": "1.4.0", 1220 | "wrappy": "1.0.2" 1221 | } 1222 | }, 1223 | "inherits": { 1224 | "version": "2.0.3", 1225 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1226 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1227 | }, 1228 | "ini": { 1229 | "version": "1.3.4", 1230 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 1231 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" 1232 | }, 1233 | "interpret": { 1234 | "version": "1.0.3", 1235 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", 1236 | "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", 1237 | "dev": true 1238 | }, 1239 | "is-absolute": { 1240 | "version": "0.2.6", 1241 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", 1242 | "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", 1243 | "dev": true, 1244 | "requires": { 1245 | "is-relative": "0.2.1", 1246 | "is-windows": "0.2.0" 1247 | } 1248 | }, 1249 | "is-buffer": { 1250 | "version": "1.1.5", 1251 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 1252 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" 1253 | }, 1254 | "is-dotfile": { 1255 | "version": "1.0.3", 1256 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1257 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1258 | "dev": true 1259 | }, 1260 | "is-equal-shallow": { 1261 | "version": "0.1.3", 1262 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1263 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1264 | "dev": true, 1265 | "requires": { 1266 | "is-primitive": "2.0.0" 1267 | } 1268 | }, 1269 | "is-extendable": { 1270 | "version": "0.1.1", 1271 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1272 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1273 | "dev": true 1274 | }, 1275 | "is-extglob": { 1276 | "version": "2.1.1", 1277 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1278 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1279 | "dev": true 1280 | }, 1281 | "is-glob": { 1282 | "version": "3.1.0", 1283 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1284 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1285 | "dev": true, 1286 | "requires": { 1287 | "is-extglob": "2.1.1" 1288 | } 1289 | }, 1290 | "is-number": { 1291 | "version": "2.1.0", 1292 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1293 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1294 | "dev": true, 1295 | "requires": { 1296 | "kind-of": "3.2.2" 1297 | } 1298 | }, 1299 | "is-path-cwd": { 1300 | "version": "1.0.0", 1301 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 1302 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 1303 | "dev": true 1304 | }, 1305 | "is-path-in-cwd": { 1306 | "version": "1.0.0", 1307 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 1308 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 1309 | "dev": true, 1310 | "requires": { 1311 | "is-path-inside": "1.0.0" 1312 | } 1313 | }, 1314 | "is-path-inside": { 1315 | "version": "1.0.0", 1316 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", 1317 | "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", 1318 | "dev": true, 1319 | "requires": { 1320 | "path-is-inside": "1.0.2" 1321 | } 1322 | }, 1323 | "is-plain-object": { 1324 | "version": "2.0.4", 1325 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1326 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1327 | "dev": true, 1328 | "requires": { 1329 | "isobject": "3.0.1" 1330 | }, 1331 | "dependencies": { 1332 | "isobject": { 1333 | "version": "3.0.1", 1334 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1335 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1336 | "dev": true 1337 | } 1338 | } 1339 | }, 1340 | "is-posix-bracket": { 1341 | "version": "0.1.1", 1342 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1343 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1344 | "dev": true 1345 | }, 1346 | "is-primitive": { 1347 | "version": "2.0.0", 1348 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1349 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1350 | "dev": true 1351 | }, 1352 | "is-relative": { 1353 | "version": "0.2.1", 1354 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", 1355 | "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", 1356 | "dev": true, 1357 | "requires": { 1358 | "is-unc-path": "0.1.2" 1359 | } 1360 | }, 1361 | "is-stream": { 1362 | "version": "1.1.0", 1363 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1364 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1365 | "dev": true 1366 | }, 1367 | "is-unc-path": { 1368 | "version": "0.1.2", 1369 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", 1370 | "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", 1371 | "dev": true, 1372 | "requires": { 1373 | "unc-path-regex": "0.1.2" 1374 | } 1375 | }, 1376 | "is-utf8": { 1377 | "version": "0.2.1", 1378 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1379 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1380 | "dev": true 1381 | }, 1382 | "is-valid-glob": { 1383 | "version": "0.3.0", 1384 | "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", 1385 | "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", 1386 | "dev": true 1387 | }, 1388 | "is-windows": { 1389 | "version": "0.2.0", 1390 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", 1391 | "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", 1392 | "dev": true 1393 | }, 1394 | "isarray": { 1395 | "version": "0.0.1", 1396 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1397 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1398 | "dev": true 1399 | }, 1400 | "isexe": { 1401 | "version": "2.0.0", 1402 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1403 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1404 | "dev": true 1405 | }, 1406 | "isobject": { 1407 | "version": "2.1.0", 1408 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1409 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1410 | "dev": true, 1411 | "requires": { 1412 | "isarray": "1.0.0" 1413 | }, 1414 | "dependencies": { 1415 | "isarray": { 1416 | "version": "1.0.0", 1417 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1418 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1419 | "dev": true 1420 | } 1421 | } 1422 | }, 1423 | "js-beautify": { 1424 | "version": "1.6.14", 1425 | "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.6.14.tgz", 1426 | "integrity": "sha1-07j3Mi0CuSd9WL0jgmTDJ+WARM0=", 1427 | "requires": { 1428 | "config-chain": "1.1.11", 1429 | "editorconfig": "0.13.2", 1430 | "mkdirp": "0.5.1", 1431 | "nopt": "3.0.6" 1432 | }, 1433 | "dependencies": { 1434 | "mkdirp": { 1435 | "version": "0.5.1", 1436 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1437 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1438 | "requires": { 1439 | "minimist": "0.0.8" 1440 | } 1441 | } 1442 | } 1443 | }, 1444 | "js-tokens": { 1445 | "version": "3.0.2", 1446 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1447 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" 1448 | }, 1449 | "json-schema-ref-parser": { 1450 | "version": "1.4.1", 1451 | "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-1.4.1.tgz", 1452 | "integrity": "sha1-wMLkOL8HlnI7AkUbrovH3Qs3/tA=", 1453 | "requires": { 1454 | "call-me-maybe": "1.0.1", 1455 | "debug": "2.6.8", 1456 | "es6-promise": "3.3.1", 1457 | "js-yaml": "3.8.4", 1458 | "ono": "2.2.5" 1459 | }, 1460 | "dependencies": { 1461 | "js-yaml": { 1462 | "version": "3.8.4", 1463 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", 1464 | "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", 1465 | "requires": { 1466 | "argparse": "1.0.9", 1467 | "esprima": "3.1.3" 1468 | } 1469 | } 1470 | } 1471 | }, 1472 | "json-stable-stringify": { 1473 | "version": "1.0.1", 1474 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 1475 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 1476 | "dev": true, 1477 | "requires": { 1478 | "jsonify": "0.0.0" 1479 | } 1480 | }, 1481 | "jsonify": { 1482 | "version": "0.0.0", 1483 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1484 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1485 | "dev": true 1486 | }, 1487 | "kind-of": { 1488 | "version": "3.2.2", 1489 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1490 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1491 | "requires": { 1492 | "is-buffer": "1.1.5" 1493 | } 1494 | }, 1495 | "lazy-cache": { 1496 | "version": "1.0.4", 1497 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", 1498 | "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", 1499 | "optional": true 1500 | }, 1501 | "lazystream": { 1502 | "version": "1.0.0", 1503 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", 1504 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", 1505 | "dev": true, 1506 | "requires": { 1507 | "readable-stream": "2.3.3" 1508 | }, 1509 | "dependencies": { 1510 | "isarray": { 1511 | "version": "1.0.0", 1512 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1513 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1514 | "dev": true 1515 | }, 1516 | "readable-stream": { 1517 | "version": "2.3.3", 1518 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1519 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 1520 | "dev": true, 1521 | "requires": { 1522 | "core-util-is": "1.0.2", 1523 | "inherits": "2.0.3", 1524 | "isarray": "1.0.0", 1525 | "process-nextick-args": "1.0.7", 1526 | "safe-buffer": "5.1.1", 1527 | "string_decoder": "1.0.3", 1528 | "util-deprecate": "1.0.2" 1529 | } 1530 | }, 1531 | "string_decoder": { 1532 | "version": "1.0.3", 1533 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1534 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1535 | "dev": true, 1536 | "requires": { 1537 | "safe-buffer": "5.1.1" 1538 | } 1539 | } 1540 | } 1541 | }, 1542 | "liftoff": { 1543 | "version": "2.3.0", 1544 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", 1545 | "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", 1546 | "dev": true, 1547 | "requires": { 1548 | "extend": "3.0.1", 1549 | "findup-sync": "0.4.3", 1550 | "fined": "1.1.0", 1551 | "flagged-respawn": "0.3.2", 1552 | "lodash.isplainobject": "4.0.6", 1553 | "lodash.isstring": "4.0.1", 1554 | "lodash.mapvalues": "4.6.0", 1555 | "rechoir": "0.6.2", 1556 | "resolve": "1.3.3" 1557 | } 1558 | }, 1559 | "lodash": { 1560 | "version": "3.10.1", 1561 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 1562 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" 1563 | }, 1564 | "lodash._basecopy": { 1565 | "version": "3.0.1", 1566 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 1567 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 1568 | "dev": true 1569 | }, 1570 | "lodash._basetostring": { 1571 | "version": "3.0.1", 1572 | "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", 1573 | "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", 1574 | "dev": true 1575 | }, 1576 | "lodash._basevalues": { 1577 | "version": "3.0.0", 1578 | "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", 1579 | "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", 1580 | "dev": true 1581 | }, 1582 | "lodash._getnative": { 1583 | "version": "3.9.1", 1584 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 1585 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 1586 | "dev": true 1587 | }, 1588 | "lodash._isiterateecall": { 1589 | "version": "3.0.9", 1590 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 1591 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 1592 | "dev": true 1593 | }, 1594 | "lodash._reescape": { 1595 | "version": "3.0.0", 1596 | "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", 1597 | "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", 1598 | "dev": true 1599 | }, 1600 | "lodash._reevaluate": { 1601 | "version": "3.0.0", 1602 | "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", 1603 | "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", 1604 | "dev": true 1605 | }, 1606 | "lodash._reinterpolate": { 1607 | "version": "3.0.0", 1608 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1609 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", 1610 | "dev": true 1611 | }, 1612 | "lodash._root": { 1613 | "version": "3.0.1", 1614 | "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", 1615 | "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", 1616 | "dev": true 1617 | }, 1618 | "lodash.escape": { 1619 | "version": "3.2.0", 1620 | "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", 1621 | "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", 1622 | "dev": true, 1623 | "requires": { 1624 | "lodash._root": "3.0.1" 1625 | } 1626 | }, 1627 | "lodash.get": { 1628 | "version": "4.4.2", 1629 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 1630 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" 1631 | }, 1632 | "lodash.isarguments": { 1633 | "version": "3.1.0", 1634 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1635 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 1636 | "dev": true 1637 | }, 1638 | "lodash.isarray": { 1639 | "version": "3.0.4", 1640 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 1641 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 1642 | "dev": true 1643 | }, 1644 | "lodash.isequal": { 1645 | "version": "4.5.0", 1646 | "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 1647 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" 1648 | }, 1649 | "lodash.isplainobject": { 1650 | "version": "4.0.6", 1651 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1652 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", 1653 | "dev": true 1654 | }, 1655 | "lodash.isstring": { 1656 | "version": "4.0.1", 1657 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1658 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", 1659 | "dev": true 1660 | }, 1661 | "lodash.keys": { 1662 | "version": "3.1.2", 1663 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 1664 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 1665 | "dev": true, 1666 | "requires": { 1667 | "lodash._getnative": "3.9.1", 1668 | "lodash.isarguments": "3.1.0", 1669 | "lodash.isarray": "3.0.4" 1670 | } 1671 | }, 1672 | "lodash.mapvalues": { 1673 | "version": "4.6.0", 1674 | "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", 1675 | "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", 1676 | "dev": true 1677 | }, 1678 | "lodash.restparam": { 1679 | "version": "3.6.1", 1680 | "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", 1681 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", 1682 | "dev": true 1683 | }, 1684 | "lodash.template": { 1685 | "version": "3.6.2", 1686 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", 1687 | "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", 1688 | "dev": true, 1689 | "requires": { 1690 | "lodash._basecopy": "3.0.1", 1691 | "lodash._basetostring": "3.0.1", 1692 | "lodash._basevalues": "3.0.0", 1693 | "lodash._isiterateecall": "3.0.9", 1694 | "lodash._reinterpolate": "3.0.0", 1695 | "lodash.escape": "3.2.0", 1696 | "lodash.keys": "3.1.2", 1697 | "lodash.restparam": "3.6.1", 1698 | "lodash.templatesettings": "3.1.1" 1699 | } 1700 | }, 1701 | "lodash.templatesettings": { 1702 | "version": "3.1.1", 1703 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", 1704 | "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", 1705 | "dev": true, 1706 | "requires": { 1707 | "lodash._reinterpolate": "3.0.0", 1708 | "lodash.escape": "3.2.0" 1709 | } 1710 | }, 1711 | "longest": { 1712 | "version": "1.0.1", 1713 | "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", 1714 | "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" 1715 | }, 1716 | "lru-cache": { 1717 | "version": "3.2.0", 1718 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", 1719 | "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", 1720 | "requires": { 1721 | "pseudomap": "1.0.2" 1722 | } 1723 | }, 1724 | "map-cache": { 1725 | "version": "0.2.2", 1726 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1727 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1728 | "dev": true 1729 | }, 1730 | "merge-stream": { 1731 | "version": "1.0.1", 1732 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", 1733 | "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", 1734 | "dev": true, 1735 | "requires": { 1736 | "readable-stream": "2.3.3" 1737 | }, 1738 | "dependencies": { 1739 | "isarray": { 1740 | "version": "1.0.0", 1741 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1742 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1743 | "dev": true 1744 | }, 1745 | "readable-stream": { 1746 | "version": "2.3.3", 1747 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1748 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 1749 | "dev": true, 1750 | "requires": { 1751 | "core-util-is": "1.0.2", 1752 | "inherits": "2.0.3", 1753 | "isarray": "1.0.0", 1754 | "process-nextick-args": "1.0.7", 1755 | "safe-buffer": "5.1.1", 1756 | "string_decoder": "1.0.3", 1757 | "util-deprecate": "1.0.2" 1758 | } 1759 | }, 1760 | "string_decoder": { 1761 | "version": "1.0.3", 1762 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1763 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1764 | "dev": true, 1765 | "requires": { 1766 | "safe-buffer": "5.1.1" 1767 | } 1768 | } 1769 | } 1770 | }, 1771 | "micromatch": { 1772 | "version": "2.3.11", 1773 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 1774 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 1775 | "dev": true, 1776 | "requires": { 1777 | "arr-diff": "2.0.0", 1778 | "array-unique": "0.2.1", 1779 | "braces": "1.8.5", 1780 | "expand-brackets": "0.1.5", 1781 | "extglob": "0.3.2", 1782 | "filename-regex": "2.0.1", 1783 | "is-extglob": "1.0.0", 1784 | "is-glob": "2.0.1", 1785 | "kind-of": "3.2.2", 1786 | "normalize-path": "2.1.1", 1787 | "object.omit": "2.0.1", 1788 | "parse-glob": "3.0.4", 1789 | "regex-cache": "0.4.3" 1790 | }, 1791 | "dependencies": { 1792 | "is-extglob": { 1793 | "version": "1.0.0", 1794 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1795 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1796 | "dev": true 1797 | }, 1798 | "is-glob": { 1799 | "version": "2.0.1", 1800 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1801 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1802 | "dev": true, 1803 | "requires": { 1804 | "is-extglob": "1.0.0" 1805 | } 1806 | } 1807 | } 1808 | }, 1809 | "minimatch": { 1810 | "version": "3.0.4", 1811 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1812 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1813 | "requires": { 1814 | "brace-expansion": "1.1.8" 1815 | } 1816 | }, 1817 | "minimist": { 1818 | "version": "0.0.8", 1819 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1820 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 1821 | }, 1822 | "ms": { 1823 | "version": "2.0.0", 1824 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1825 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1826 | }, 1827 | "multipipe": { 1828 | "version": "0.1.2", 1829 | "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", 1830 | "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", 1831 | "dev": true, 1832 | "requires": { 1833 | "duplexer2": "0.0.2" 1834 | } 1835 | }, 1836 | "natives": { 1837 | "version": "1.1.0", 1838 | "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", 1839 | "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", 1840 | "dev": true 1841 | }, 1842 | "nopt": { 1843 | "version": "3.0.6", 1844 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 1845 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 1846 | "requires": { 1847 | "abbrev": "1.1.0" 1848 | } 1849 | }, 1850 | "normalize-path": { 1851 | "version": "2.1.1", 1852 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1853 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1854 | "dev": true, 1855 | "requires": { 1856 | "remove-trailing-separator": "1.0.2" 1857 | } 1858 | }, 1859 | "object-assign": { 1860 | "version": "3.0.0", 1861 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 1862 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", 1863 | "dev": true 1864 | }, 1865 | "object.defaults": { 1866 | "version": "1.1.0", 1867 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 1868 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 1869 | "dev": true, 1870 | "requires": { 1871 | "array-each": "1.0.1", 1872 | "array-slice": "1.0.0", 1873 | "for-own": "1.0.0", 1874 | "isobject": "3.0.1" 1875 | }, 1876 | "dependencies": { 1877 | "for-own": { 1878 | "version": "1.0.0", 1879 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 1880 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 1881 | "dev": true, 1882 | "requires": { 1883 | "for-in": "1.0.2" 1884 | } 1885 | }, 1886 | "isobject": { 1887 | "version": "3.0.1", 1888 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1889 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1890 | "dev": true 1891 | } 1892 | } 1893 | }, 1894 | "object.omit": { 1895 | "version": "2.0.1", 1896 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1897 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 1898 | "dev": true, 1899 | "requires": { 1900 | "for-own": "0.1.5", 1901 | "is-extendable": "0.1.1" 1902 | } 1903 | }, 1904 | "object.pick": { 1905 | "version": "1.2.0", 1906 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", 1907 | "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", 1908 | "dev": true, 1909 | "requires": { 1910 | "isobject": "2.1.0" 1911 | } 1912 | }, 1913 | "once": { 1914 | "version": "1.4.0", 1915 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1916 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1917 | "requires": { 1918 | "wrappy": "1.0.2" 1919 | } 1920 | }, 1921 | "ono": { 1922 | "version": "2.2.5", 1923 | "resolved": "https://registry.npmjs.org/ono/-/ono-2.2.5.tgz", 1924 | "integrity": "sha1-2vCUiLURdNp6fkJ136sxtDj/oOM=" 1925 | }, 1926 | "orchestrator": { 1927 | "version": "0.3.8", 1928 | "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", 1929 | "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", 1930 | "dev": true, 1931 | "requires": { 1932 | "end-of-stream": "0.1.5", 1933 | "sequencify": "0.0.7", 1934 | "stream-consume": "0.1.0" 1935 | }, 1936 | "dependencies": { 1937 | "end-of-stream": { 1938 | "version": "0.1.5", 1939 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", 1940 | "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", 1941 | "dev": true, 1942 | "requires": { 1943 | "once": "1.3.3" 1944 | } 1945 | }, 1946 | "once": { 1947 | "version": "1.3.3", 1948 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1949 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", 1950 | "dev": true, 1951 | "requires": { 1952 | "wrappy": "1.0.2" 1953 | } 1954 | } 1955 | } 1956 | }, 1957 | "ordered-read-streams": { 1958 | "version": "0.3.0", 1959 | "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", 1960 | "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", 1961 | "dev": true, 1962 | "requires": { 1963 | "is-stream": "1.1.0", 1964 | "readable-stream": "2.3.3" 1965 | }, 1966 | "dependencies": { 1967 | "isarray": { 1968 | "version": "1.0.0", 1969 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1970 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1971 | "dev": true 1972 | }, 1973 | "readable-stream": { 1974 | "version": "2.3.3", 1975 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1976 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 1977 | "dev": true, 1978 | "requires": { 1979 | "core-util-is": "1.0.2", 1980 | "inherits": "2.0.3", 1981 | "isarray": "1.0.0", 1982 | "process-nextick-args": "1.0.7", 1983 | "safe-buffer": "5.1.1", 1984 | "string_decoder": "1.0.3", 1985 | "util-deprecate": "1.0.2" 1986 | } 1987 | }, 1988 | "string_decoder": { 1989 | "version": "1.0.3", 1990 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1991 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1992 | "dev": true, 1993 | "requires": { 1994 | "safe-buffer": "5.1.1" 1995 | } 1996 | } 1997 | } 1998 | }, 1999 | "os-homedir": { 2000 | "version": "1.0.2", 2001 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2002 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2003 | "dev": true 2004 | }, 2005 | "p-map": { 2006 | "version": "1.1.1", 2007 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", 2008 | "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=", 2009 | "dev": true 2010 | }, 2011 | "parse-filepath": { 2012 | "version": "1.0.1", 2013 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", 2014 | "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", 2015 | "dev": true, 2016 | "requires": { 2017 | "is-absolute": "0.2.6", 2018 | "map-cache": "0.2.2", 2019 | "path-root": "0.1.1" 2020 | } 2021 | }, 2022 | "parse-glob": { 2023 | "version": "3.0.4", 2024 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2025 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2026 | "dev": true, 2027 | "requires": { 2028 | "glob-base": "0.3.0", 2029 | "is-dotfile": "1.0.3", 2030 | "is-extglob": "1.0.0", 2031 | "is-glob": "2.0.1" 2032 | }, 2033 | "dependencies": { 2034 | "is-extglob": { 2035 | "version": "1.0.0", 2036 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 2037 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 2038 | "dev": true 2039 | }, 2040 | "is-glob": { 2041 | "version": "2.0.1", 2042 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 2043 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 2044 | "dev": true, 2045 | "requires": { 2046 | "is-extglob": "1.0.0" 2047 | } 2048 | } 2049 | } 2050 | }, 2051 | "parse-passwd": { 2052 | "version": "1.0.0", 2053 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 2054 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 2055 | "dev": true 2056 | }, 2057 | "path-dirname": { 2058 | "version": "1.0.2", 2059 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 2060 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 2061 | "dev": true 2062 | }, 2063 | "path-is-absolute": { 2064 | "version": "1.0.1", 2065 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2066 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2067 | }, 2068 | "path-is-inside": { 2069 | "version": "1.0.2", 2070 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2071 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 2072 | "dev": true 2073 | }, 2074 | "path-parse": { 2075 | "version": "1.0.5", 2076 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 2077 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" 2078 | }, 2079 | "path-root": { 2080 | "version": "0.1.1", 2081 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 2082 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 2083 | "dev": true, 2084 | "requires": { 2085 | "path-root-regex": "0.1.2" 2086 | } 2087 | }, 2088 | "path-root-regex": { 2089 | "version": "0.1.2", 2090 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 2091 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 2092 | "dev": true 2093 | }, 2094 | "pify": { 2095 | "version": "3.0.0", 2096 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2097 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2098 | "dev": true 2099 | }, 2100 | "pinkie": { 2101 | "version": "2.0.4", 2102 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 2103 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 2104 | "dev": true 2105 | }, 2106 | "pinkie-promise": { 2107 | "version": "2.0.1", 2108 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 2109 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 2110 | "dev": true, 2111 | "requires": { 2112 | "pinkie": "2.0.4" 2113 | } 2114 | }, 2115 | "preserve": { 2116 | "version": "0.2.0", 2117 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2118 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2119 | "dev": true 2120 | }, 2121 | "pretty-hrtime": { 2122 | "version": "1.0.3", 2123 | "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 2124 | "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", 2125 | "dev": true 2126 | }, 2127 | "process-nextick-args": { 2128 | "version": "1.0.7", 2129 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 2130 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 2131 | "dev": true 2132 | }, 2133 | "proto-list": { 2134 | "version": "1.2.4", 2135 | "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", 2136 | "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" 2137 | }, 2138 | "pseudomap": { 2139 | "version": "1.0.2", 2140 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2141 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 2142 | }, 2143 | "randomatic": { 2144 | "version": "1.1.7", 2145 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 2146 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 2147 | "dev": true, 2148 | "requires": { 2149 | "is-number": "3.0.0", 2150 | "kind-of": "3.2.2" 2151 | }, 2152 | "dependencies": { 2153 | "is-number": { 2154 | "version": "3.0.0", 2155 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2156 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2157 | "dev": true, 2158 | "requires": { 2159 | "kind-of": "3.2.2" 2160 | } 2161 | } 2162 | } 2163 | }, 2164 | "readable-stream": { 2165 | "version": "1.1.14", 2166 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2167 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 2168 | "dev": true, 2169 | "requires": { 2170 | "core-util-is": "1.0.2", 2171 | "inherits": "2.0.3", 2172 | "isarray": "0.0.1", 2173 | "string_decoder": "0.10.31" 2174 | } 2175 | }, 2176 | "rechoir": { 2177 | "version": "0.6.2", 2178 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 2179 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 2180 | "dev": true, 2181 | "requires": { 2182 | "resolve": "1.3.3" 2183 | } 2184 | }, 2185 | "regex-cache": { 2186 | "version": "0.4.3", 2187 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", 2188 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", 2189 | "dev": true, 2190 | "requires": { 2191 | "is-equal-shallow": "0.1.3", 2192 | "is-primitive": "2.0.0" 2193 | } 2194 | }, 2195 | "remove-trailing-separator": { 2196 | "version": "1.0.2", 2197 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", 2198 | "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", 2199 | "dev": true 2200 | }, 2201 | "repeat-element": { 2202 | "version": "1.1.2", 2203 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2204 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2205 | "dev": true 2206 | }, 2207 | "repeat-string": { 2208 | "version": "1.6.1", 2209 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2210 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 2211 | }, 2212 | "replace-ext": { 2213 | "version": "0.0.1", 2214 | "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", 2215 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", 2216 | "dev": true 2217 | }, 2218 | "resolve": { 2219 | "version": "1.3.3", 2220 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", 2221 | "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", 2222 | "requires": { 2223 | "path-parse": "1.0.5" 2224 | } 2225 | }, 2226 | "resolve-dir": { 2227 | "version": "0.1.1", 2228 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", 2229 | "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", 2230 | "dev": true, 2231 | "requires": { 2232 | "expand-tilde": "1.2.2", 2233 | "global-modules": "0.2.3" 2234 | } 2235 | }, 2236 | "right-align": { 2237 | "version": "0.1.3", 2238 | "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", 2239 | "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", 2240 | "optional": true, 2241 | "requires": { 2242 | "align-text": "0.1.4" 2243 | } 2244 | }, 2245 | "rimraf": { 2246 | "version": "2.6.1", 2247 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 2248 | "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", 2249 | "dev": true, 2250 | "requires": { 2251 | "glob": "7.1.2" 2252 | } 2253 | }, 2254 | "safe-buffer": { 2255 | "version": "5.1.1", 2256 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2257 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 2258 | "dev": true 2259 | }, 2260 | "semver": { 2261 | "version": "5.3.0", 2262 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 2263 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" 2264 | }, 2265 | "sequencify": { 2266 | "version": "0.0.7", 2267 | "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", 2268 | "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", 2269 | "dev": true 2270 | }, 2271 | "sigmund": { 2272 | "version": "1.0.1", 2273 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 2274 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" 2275 | }, 2276 | "source-map": { 2277 | "version": "0.4.4", 2278 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", 2279 | "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", 2280 | "requires": { 2281 | "amdefine": "1.0.1" 2282 | } 2283 | }, 2284 | "sparkles": { 2285 | "version": "1.0.0", 2286 | "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", 2287 | "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", 2288 | "dev": true 2289 | }, 2290 | "sprintf-js": { 2291 | "version": "1.0.3", 2292 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2293 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 2294 | }, 2295 | "stream-consume": { 2296 | "version": "0.1.0", 2297 | "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", 2298 | "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", 2299 | "dev": true 2300 | }, 2301 | "stream-shift": { 2302 | "version": "1.0.0", 2303 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", 2304 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", 2305 | "dev": true 2306 | }, 2307 | "string_decoder": { 2308 | "version": "0.10.31", 2309 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2310 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2311 | "dev": true 2312 | }, 2313 | "strip-ansi": { 2314 | "version": "3.0.1", 2315 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2316 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2317 | "requires": { 2318 | "ansi-regex": "2.1.1" 2319 | } 2320 | }, 2321 | "strip-bom": { 2322 | "version": "2.0.0", 2323 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2324 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2325 | "dev": true, 2326 | "requires": { 2327 | "is-utf8": "0.2.1" 2328 | } 2329 | }, 2330 | "strip-bom-stream": { 2331 | "version": "1.0.0", 2332 | "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", 2333 | "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", 2334 | "dev": true, 2335 | "requires": { 2336 | "first-chunk-stream": "1.0.0", 2337 | "strip-bom": "2.0.0" 2338 | } 2339 | }, 2340 | "supports-color": { 2341 | "version": "2.0.0", 2342 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2343 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 2344 | }, 2345 | "swagger-methods": { 2346 | "version": "1.0.0", 2347 | "resolved": "https://registry.npmjs.org/swagger-methods/-/swagger-methods-1.0.0.tgz", 2348 | "integrity": "sha1-s5x3lX0wWmU1wKHgFQgRhbmdYfw=" 2349 | }, 2350 | "swagger-parser": { 2351 | "version": "3.4.1", 2352 | "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-3.4.1.tgz", 2353 | "integrity": "sha1-ApBSnbriVNF4tEKpXfYNI9FCMB0=", 2354 | "requires": { 2355 | "call-me-maybe": "1.0.1", 2356 | "debug": "2.6.8", 2357 | "es6-promise": "3.3.1", 2358 | "json-schema-ref-parser": "1.4.1", 2359 | "ono": "2.2.5", 2360 | "swagger-methods": "1.0.0", 2361 | "swagger-schema-official": "2.0.0-bab6bed", 2362 | "z-schema": "3.18.2" 2363 | } 2364 | }, 2365 | "swagger-schema-official": { 2366 | "version": "2.0.0-bab6bed", 2367 | "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz", 2368 | "integrity": "sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0=" 2369 | }, 2370 | "through2": { 2371 | "version": "2.0.3", 2372 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 2373 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 2374 | "dev": true, 2375 | "requires": { 2376 | "readable-stream": "2.3.3", 2377 | "xtend": "4.0.1" 2378 | }, 2379 | "dependencies": { 2380 | "isarray": { 2381 | "version": "1.0.0", 2382 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2383 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2384 | "dev": true 2385 | }, 2386 | "readable-stream": { 2387 | "version": "2.3.3", 2388 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2389 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2390 | "dev": true, 2391 | "requires": { 2392 | "core-util-is": "1.0.2", 2393 | "inherits": "2.0.3", 2394 | "isarray": "1.0.0", 2395 | "process-nextick-args": "1.0.7", 2396 | "safe-buffer": "5.1.1", 2397 | "string_decoder": "1.0.3", 2398 | "util-deprecate": "1.0.2" 2399 | } 2400 | }, 2401 | "string_decoder": { 2402 | "version": "1.0.3", 2403 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2404 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2405 | "dev": true, 2406 | "requires": { 2407 | "safe-buffer": "5.1.1" 2408 | } 2409 | } 2410 | } 2411 | }, 2412 | "through2-filter": { 2413 | "version": "2.0.0", 2414 | "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", 2415 | "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", 2416 | "dev": true, 2417 | "requires": { 2418 | "through2": "2.0.3", 2419 | "xtend": "4.0.1" 2420 | } 2421 | }, 2422 | "tildify": { 2423 | "version": "1.2.0", 2424 | "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 2425 | "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", 2426 | "dev": true, 2427 | "requires": { 2428 | "os-homedir": "1.0.2" 2429 | } 2430 | }, 2431 | "time-stamp": { 2432 | "version": "1.1.0", 2433 | "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 2434 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", 2435 | "dev": true 2436 | }, 2437 | "to-absolute-glob": { 2438 | "version": "0.1.1", 2439 | "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", 2440 | "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", 2441 | "dev": true, 2442 | "requires": { 2443 | "extend-shallow": "2.0.1" 2444 | } 2445 | }, 2446 | "tslib": { 2447 | "version": "1.7.1", 2448 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", 2449 | "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=" 2450 | }, 2451 | "tslint": { 2452 | "version": "5.5.0", 2453 | "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.5.0.tgz", 2454 | "integrity": "sha1-EOjas+MGH6YelELozuOYKs8gpqo=", 2455 | "requires": { 2456 | "babel-code-frame": "6.22.0", 2457 | "colors": "1.1.2", 2458 | "commander": "2.11.0", 2459 | "diff": "3.3.0", 2460 | "glob": "7.1.2", 2461 | "minimatch": "3.0.4", 2462 | "resolve": "1.3.3", 2463 | "semver": "5.3.0", 2464 | "tslib": "1.7.1", 2465 | "tsutils": "2.5.1" 2466 | } 2467 | }, 2468 | "tsutils": { 2469 | "version": "2.5.1", 2470 | "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.5.1.tgz", 2471 | "integrity": "sha1-wgATkMee7Bpcz6esEtWZY5aD4M8=", 2472 | "requires": { 2473 | "tslib": "1.7.1" 2474 | } 2475 | }, 2476 | "typescript": { 2477 | "version": "2.4.1", 2478 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.4.1.tgz", 2479 | "integrity": "sha1-w8yxbdqgsjFN4DHn5v7onlujRrw=" 2480 | }, 2481 | "typescript-formatter": { 2482 | "version": "5.2.0", 2483 | "resolved": "https://registry.npmjs.org/typescript-formatter/-/typescript-formatter-5.2.0.tgz", 2484 | "integrity": "sha1-zUUpT3TEzIgPSPgZg6IfsmT28XM=", 2485 | "requires": { 2486 | "commandpost": "1.1.0", 2487 | "editorconfig": "0.13.2" 2488 | } 2489 | }, 2490 | "uglify-js": { 2491 | "version": "2.8.29", 2492 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", 2493 | "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", 2494 | "optional": true, 2495 | "requires": { 2496 | "source-map": "0.5.6", 2497 | "uglify-to-browserify": "1.0.2", 2498 | "yargs": "3.10.0" 2499 | }, 2500 | "dependencies": { 2501 | "source-map": { 2502 | "version": "0.5.6", 2503 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 2504 | "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", 2505 | "optional": true 2506 | } 2507 | } 2508 | }, 2509 | "uglify-to-browserify": { 2510 | "version": "1.0.2", 2511 | "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", 2512 | "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", 2513 | "optional": true 2514 | }, 2515 | "unc-path-regex": { 2516 | "version": "0.1.2", 2517 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2518 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2519 | "dev": true 2520 | }, 2521 | "unique-stream": { 2522 | "version": "2.2.1", 2523 | "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", 2524 | "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", 2525 | "dev": true, 2526 | "requires": { 2527 | "json-stable-stringify": "1.0.1", 2528 | "through2-filter": "2.0.0" 2529 | } 2530 | }, 2531 | "user-home": { 2532 | "version": "1.1.1", 2533 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 2534 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 2535 | "dev": true 2536 | }, 2537 | "util-deprecate": { 2538 | "version": "1.0.2", 2539 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2540 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2541 | "dev": true 2542 | }, 2543 | "v8flags": { 2544 | "version": "2.1.1", 2545 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 2546 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 2547 | "dev": true, 2548 | "requires": { 2549 | "user-home": "1.1.1" 2550 | } 2551 | }, 2552 | "vali-date": { 2553 | "version": "1.0.0", 2554 | "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", 2555 | "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", 2556 | "dev": true 2557 | }, 2558 | "validator": { 2559 | "version": "6.3.0", 2560 | "resolved": "https://registry.npmjs.org/validator/-/validator-6.3.0.tgz", 2561 | "integrity": "sha1-R84j7Y1Ord+p1LjvAHG2zxB418g=" 2562 | }, 2563 | "vinyl": { 2564 | "version": "0.5.3", 2565 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", 2566 | "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", 2567 | "dev": true, 2568 | "requires": { 2569 | "clone": "1.0.2", 2570 | "clone-stats": "0.0.1", 2571 | "replace-ext": "0.0.1" 2572 | } 2573 | }, 2574 | "vinyl-fs": { 2575 | "version": "2.4.4", 2576 | "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", 2577 | "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", 2578 | "dev": true, 2579 | "requires": { 2580 | "duplexify": "3.5.0", 2581 | "glob-stream": "5.3.5", 2582 | "graceful-fs": "4.1.11", 2583 | "gulp-sourcemaps": "1.6.0", 2584 | "is-valid-glob": "0.3.0", 2585 | "lazystream": "1.0.0", 2586 | "lodash.isequal": "4.5.0", 2587 | "merge-stream": "1.0.1", 2588 | "mkdirp": "0.5.1", 2589 | "object-assign": "4.1.1", 2590 | "readable-stream": "2.3.3", 2591 | "strip-bom": "2.0.0", 2592 | "strip-bom-stream": "1.0.0", 2593 | "through2": "2.0.3", 2594 | "through2-filter": "2.0.0", 2595 | "vali-date": "1.0.0", 2596 | "vinyl": "1.2.0" 2597 | }, 2598 | "dependencies": { 2599 | "isarray": { 2600 | "version": "1.0.0", 2601 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2602 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2603 | "dev": true 2604 | }, 2605 | "mkdirp": { 2606 | "version": "0.5.1", 2607 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2608 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2609 | "dev": true, 2610 | "requires": { 2611 | "minimist": "0.0.8" 2612 | } 2613 | }, 2614 | "object-assign": { 2615 | "version": "4.1.1", 2616 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2617 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 2618 | "dev": true 2619 | }, 2620 | "readable-stream": { 2621 | "version": "2.3.3", 2622 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2623 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2624 | "dev": true, 2625 | "requires": { 2626 | "core-util-is": "1.0.2", 2627 | "inherits": "2.0.3", 2628 | "isarray": "1.0.0", 2629 | "process-nextick-args": "1.0.7", 2630 | "safe-buffer": "5.1.1", 2631 | "string_decoder": "1.0.3", 2632 | "util-deprecate": "1.0.2" 2633 | } 2634 | }, 2635 | "string_decoder": { 2636 | "version": "1.0.3", 2637 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2638 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2639 | "dev": true, 2640 | "requires": { 2641 | "safe-buffer": "5.1.1" 2642 | } 2643 | }, 2644 | "vinyl": { 2645 | "version": "1.2.0", 2646 | "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", 2647 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", 2648 | "dev": true, 2649 | "requires": { 2650 | "clone": "1.0.2", 2651 | "clone-stats": "0.0.1", 2652 | "replace-ext": "0.0.1" 2653 | } 2654 | } 2655 | } 2656 | }, 2657 | "which": { 2658 | "version": "1.2.14", 2659 | "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", 2660 | "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", 2661 | "dev": true, 2662 | "requires": { 2663 | "isexe": "2.0.0" 2664 | } 2665 | }, 2666 | "window-size": { 2667 | "version": "0.1.0", 2668 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", 2669 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", 2670 | "optional": true 2671 | }, 2672 | "wordwrap": { 2673 | "version": "0.0.3", 2674 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 2675 | "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" 2676 | }, 2677 | "wrappy": { 2678 | "version": "1.0.2", 2679 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2680 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 2681 | }, 2682 | "xtend": { 2683 | "version": "4.0.1", 2684 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2685 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 2686 | "dev": true 2687 | }, 2688 | "yargs": { 2689 | "version": "3.10.0", 2690 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", 2691 | "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", 2692 | "optional": true, 2693 | "requires": { 2694 | "camelcase": "1.2.1", 2695 | "cliui": "2.1.0", 2696 | "decamelize": "1.2.0", 2697 | "window-size": "0.1.0" 2698 | } 2699 | }, 2700 | "z-schema": { 2701 | "version": "3.18.2", 2702 | "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.2.tgz", 2703 | "integrity": "sha1-5CIZa17+YLRq3vPD8q7y3qqREWE=", 2704 | "requires": { 2705 | "commander": "2.11.0", 2706 | "lodash.get": "4.4.2", 2707 | "lodash.isequal": "4.5.0", 2708 | "validator": "6.3.0" 2709 | } 2710 | } 2711 | } 2712 | } 2713 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-swagger-client-generator", 3 | "version": "0.0.15", 4 | "description": "Angular 2 API client generator from swagger json", 5 | "homepage": "https://github.com/nvdnkpr/angular2-swagger-client-generator", 6 | "main": "index.js", 7 | "author": { 8 | "name": "Navid Nikpour", 9 | "email": "navid@nikpour.com" 10 | }, 11 | "bugs": { 12 | "url": "https://github.com/nvdnkpr/angular2-swagger-client-generator/issues" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git://github.com/nvdnkpr/angular2-swagger-client-generator.git" 17 | }, 18 | "keywords": [ 19 | "swagger", 20 | "rest", 21 | "angular2", 22 | "angular", 23 | "scaffolding", 24 | "webapi", 25 | "api", 26 | "generator" 27 | ], 28 | "license": "APACHE", 29 | "scripts": { 30 | "swagger2angular": "ts-node ./src/bin/swagger2angular", 31 | "build": "gulp" 32 | }, 33 | "dependencies": { 34 | "handlebars": "^4.0.10", 35 | "lodash": "^3.10.1", 36 | "mkdirp": "^0.5.1", 37 | "optimist": "^0.6.1", 38 | "swagger-parser": "^3.4.1", 39 | "typescript-formatter": "^5.2.0" 40 | }, 41 | "devDependencies": { 42 | "@types/handlebars": "^4.0.33", 43 | "@types/js-beautify": "0.0.30", 44 | "@types/lodash": "^4.14.68", 45 | "@types/node": "^8.0.8", 46 | "@types/swagger-parser": "^4.0.1", 47 | "@types/swagger-schema-official": "^2.0.5", 48 | "del": "^3.0.0", 49 | "gulp": "^3.9.1", 50 | "gulp-typescript": "^3.2.1", 51 | "tslint": "^5.5.0", 52 | "typescript": "^2.4.1" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/bin/swagger2angular.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import * as path from 'path'; 3 | import * as fs from 'fs'; 4 | 5 | import { map } from 'lodash'; 6 | 7 | /** 8 | * Command line interface (CLI) for generator. 9 | * 10 | * @package angular2-swagger-apiclient-generator 11 | * @author Navid Nikpour 12 | */ 13 | 14 | // 15 | const optimist = require('optimist') 16 | .usage('Usage: swagger2angular [options]') 17 | .alias('h', 'help').describe('h', 'Displays this help information') 18 | .alias('s', 'source').describe('s', 'Path to your swagger specification, can be file or a URL path') 19 | .alias('o', 'outputPath').describe('o', 'Output path for the generated files').default('o', 'client') 20 | .alias('d', 'debug').describe('d', 'Enable verbose debug message').default('d', false) 21 | .alias('t', 'templatePath').describe('t', 'Path to own templates to generate model and resource files') 22 | .alias('r', 'resourceTemplate').describe('o', 'Template filename for generating resource files') 23 | .alias('m', 'modelTemplate').describe('o', 'Template filename for generatiing model files') 24 | .alias('g', 'generateTemplates').describe('g', 'Generates files for model and resource templates, showing the template contexts') 25 | .alias('b', 'buildConfig').describe('b', 'Path to your swagger2angular configuration file.'); 26 | 27 | const argv = optimist.argv; 28 | console.log(argv); 29 | 30 | function stderr(err) { 31 | console.log('Error: ' + err); 32 | process.exit(1); 33 | } 34 | 35 | 36 | /** 37 | * Execute 38 | */ 39 | if (argv.help) { 40 | optimist.showHelp(); 41 | process.exit(0); 42 | } 43 | 44 | /** 45 | * Special Flag for generating 46 | */ 47 | 48 | /** 49 | * Only required option: the swagger file source, either file or URL path 50 | */ 51 | 52 | /** 53 | * Config 54 | */ 55 | const config = argv.buildConfig 56 | ? JSON.parse(fs.readFileSync(argv.buildConfig, 'utf8')) 57 | : { 58 | swaggerSpecFile: argv.source, 59 | output: argv.outputPath, 60 | debug: argv.debug, 61 | templatePath: argv.templatePath, 62 | modelTemplate: argv.modelTemplate, 63 | resourceTemplate: argv.resourceTemplate 64 | }; 65 | 66 | const Generator = require('..').Generator; 67 | 68 | const generator = new Generator(config); 69 | 70 | // create output paths if they don't exist 71 | const outputPath = path.join(process.cwd(), generator.getOutputPath()); 72 | if (!fs.existsSync(outputPath)) {fs.mkdirSync(outputPath); } 73 | 74 | const modelsPath = path.join(outputPath, 'models'); 75 | if (!fs.existsSync(modelsPath)) { fs.mkdirSync(modelsPath); } 76 | 77 | const resourcesPath = path.join(outputPath, 'resources'); 78 | if (!fs.existsSync(resourcesPath)) { fs.mkdirSync(resourcesPath); } 79 | 80 | 81 | const barrelRenderer = Generator.templateCompiler( 82 | ` 83 | /* tslint:disable */ 84 | {{#each paths}} 85 | export * from './{{this}}'; 86 | {{/each}} 87 | `); 88 | // create models and model barrel 89 | generator.getModels().then((models) => { 90 | const modelsPathList = map(models, (modelDefinition, modelName) => { 91 | const modelPath = path.join(modelsPath, `${modelName}.ts`); 92 | const data = generator.processModel({modelName, modelDefinition}); 93 | fs.writeFileSync(modelPath, data); 94 | 95 | return modelPath; 96 | }); 97 | 98 | const modelsRelativePaths = map(modelsPathList, (modelPath) => path.relative(modelsPath, modelPath)); 99 | fs.writeFileSync(path.join(modelsPath, 'index.ts'), barrelRenderer({paths: modelsRelativePaths})); 100 | }); 101 | 102 | // create resources and resource barrel 103 | generator.getResources().then((resources) => { 104 | const resourcesPathList = map(resources, (resourceDefinition, resourceName) => { 105 | const resourcePath = path.join(resourcesPath, `${resourceName}.ts`); 106 | const data = generator.processResource({resourceName, resourceDefinition}); 107 | fs.writeFileSync(resourcePath, data); 108 | 109 | return resourcePath; 110 | }); 111 | const resourcesRelativePaths = map(resourcesPathList, (resourcePath) => path.relative(resourcesPath, resourcePath)); 112 | fs.writeFileSync(path.join(resourcesPath, 'index.ts'), barrelRenderer({paths: resourcesRelativePaths})); 113 | }); 114 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/generator'; -------------------------------------------------------------------------------- /src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-swagger-client-generator", 3 | "version": "0.0.15", 4 | "description": "Angular 2 API client generator from swagger json", 5 | "homepage": "https://github.com/nvdnkpr/angular2-swagger-client-generator", 6 | "main": "index.js", 7 | "bin": { 8 | "swagger2angular": "./bin/swagger2angular.js" 9 | }, 10 | "author": { 11 | "name": "Navid Nikpour", 12 | "email": "navid@nikpour.com" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/nvdnkpr/angular2-swagger-client-generator/issues" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "git://github.com/nvdnkpr/angular2-swagger-client-generator.git" 20 | }, 21 | "keywords": [ 22 | "swagger", 23 | "rest", 24 | "angular2", 25 | "angular", 26 | "scaffolding", 27 | "webapi", 28 | "api", 29 | "generator" 30 | ], 31 | "license": "APACHE", 32 | "scripts": { 33 | "swagger2angular": "swagger2angular" 34 | }, 35 | "dependencies": { 36 | "handlebars": "^4.0.10", 37 | "js-beautify": "^1.6.14", 38 | "js-yaml": "^3.8.1", 39 | "lodash": "^3.10.1", 40 | "mkdirp": "^0.5.1", 41 | "optimist": "^0.6.1", 42 | "request": "^2.67.0", 43 | "swagger-parser": "^3.4.1", 44 | "tslint": "^5.5.0", 45 | "typescript": "^2.4.1", 46 | "typescript-formatter": "^5.2.0" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /tests/apis/petstore.json: -------------------------------------------------------------------------------- 1 | { 2 | "opts": {}, 3 | "spec": { 4 | "swagger": "2.0", 5 | "title": "Petstore Sample API", 6 | "info": { 7 | "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", 8 | "title": "Petstore Sample API", 9 | "contact": { 10 | "name": "Wordnik API Team" 11 | }, 12 | "license": { 13 | "name": "MIT", 14 | "url": "http://github.com/gruntjs/grunt/blob/master/LICENSE-MIT" 15 | } 16 | }, 17 | "host": "petstore.swagger.io", 18 | "basePath": "/api", 19 | "paths": { 20 | "/pet": { 21 | "put": { 22 | "tags": [ 23 | "pet" 24 | ], 25 | "parameters": [ 26 | { 27 | "name": "body", 28 | "in": "body", 29 | "description": "Pet object that needs to be added to the store", 30 | "required": false, 31 | "schema": { 32 | "$ref": "#/definitions/Pet" 33 | } 34 | } 35 | ], 36 | "responses": { 37 | "405": { 38 | "description": "Validation exception" 39 | }, 40 | "404": { 41 | "description": "Pet not found" 42 | }, 43 | "400": { 44 | "description": "Invalid ID supplied" 45 | } 46 | } 47 | }, 48 | "post": { 49 | "tags": [ 50 | "pet" 51 | ], 52 | "parameters": [ 53 | { 54 | "name": "body", 55 | "in": "body", 56 | "description": "Pet object that needs to be added to the store", 57 | "required": false, 58 | "schema": { 59 | "$ref": "#/definitions/Tag" 60 | } 61 | } 62 | ], 63 | "responses": { 64 | "405": { 65 | "description": "Invalid input" 66 | } 67 | } 68 | } 69 | }, 70 | "/user/createWithList": { 71 | "post": { 72 | "tags": [ 73 | "user" 74 | ], 75 | "parameters": [ 76 | { 77 | "name": "body", 78 | "in": "body", 79 | "description": "List of user object", 80 | "required": false 81 | } 82 | ] 83 | } 84 | }, 85 | "/store/order/{orderId}": { 86 | "get": { 87 | "tags": [ 88 | "store" 89 | ], 90 | "parameters": [ 91 | { 92 | "name": "orderId", 93 | "in": "path", 94 | "description": "ID of pet that needs to be fetched", 95 | "required": true, 96 | "type": "string" 97 | } 98 | ], 99 | "responses": { 100 | "404": { 101 | "description": "Order not found" 102 | }, 103 | "400": { 104 | "description": "Invalid ID supplied" 105 | } 106 | } 107 | }, 108 | "delete": { 109 | "tags": [ 110 | "store" 111 | ], 112 | "parameters": [ 113 | { 114 | "name": "orderId", 115 | "in": "path", 116 | "description": "ID of the order that needs to be deleted", 117 | "required": true, 118 | "type": "string" 119 | } 120 | ], 121 | "responses": { 122 | "404": { 123 | "description": "Order not found" 124 | }, 125 | "400": { 126 | "description": "Invalid ID supplied" 127 | } 128 | } 129 | } 130 | }, 131 | "/user/createWithArray": { 132 | "post": { 133 | "tags": [ 134 | "user" 135 | ], 136 | "parameters": [ 137 | { 138 | "name": "body", 139 | "in": "body", 140 | "description": "List of user object", 141 | "required": false, 142 | "schema": { 143 | "$ref": "#/definitions/User" 144 | } 145 | } 146 | ] 147 | } 148 | }, 149 | "/store/order": { 150 | "post": { 151 | "tags": [ 152 | "store" 153 | ], 154 | "parameters": [ 155 | { 156 | "name": "body", 157 | "in": "body", 158 | "description": "order placed for purchasing the pet", 159 | "required": false, 160 | "schema": { 161 | "$ref": "#/definitions/Order" 162 | } 163 | } 164 | ], 165 | "responses": { 166 | "400": { 167 | "description": "Invalid Order" 168 | } 169 | } 170 | } 171 | }, 172 | "/pet/findByStatus": { 173 | "get": { 174 | "tags": [ 175 | "pet" 176 | ], 177 | "parameters": [ 178 | { 179 | "name": "status", 180 | "in": "query", 181 | "description": "Status values that need to be considered for filter", 182 | "required": false, 183 | "type": "string" 184 | } 185 | ], 186 | "responses": { 187 | "400": { 188 | "description": "Invalid status value" 189 | } 190 | } 191 | } 192 | }, 193 | "/user/{username}": { 194 | "get": { 195 | "tags": [ 196 | "user" 197 | ], 198 | "parameters": [ 199 | { 200 | "name": "username", 201 | "in": "path", 202 | "description": "The name that needs to be fetched. Use user1 for testing. ", 203 | "required": true, 204 | "type": "string" 205 | } 206 | ], 207 | "responses": { 208 | "404": { 209 | "description": "User not found" 210 | }, 211 | "400": { 212 | "description": "Invalid username supplied" 213 | } 214 | } 215 | }, 216 | "put": { 217 | "tags": [ 218 | "user" 219 | ], 220 | "parameters": [ 221 | { 222 | "name": "username", 223 | "in": "path", 224 | "description": "name that need to be deleted", 225 | "required": true, 226 | "type": "string" 227 | }, 228 | { 229 | "name": "body", 230 | "in": "body", 231 | "description": "Updated user object", 232 | "required": false, 233 | "schema": { 234 | "$ref": "#/definitions/User" 235 | } 236 | } 237 | ], 238 | "responses": { 239 | "404": { 240 | "description": "User not found" 241 | }, 242 | "400": { 243 | "description": "Invalid user supplied" 244 | } 245 | } 246 | }, 247 | "delete": { 248 | "tags": [ 249 | "user" 250 | ], 251 | "parameters": [ 252 | { 253 | "name": "username", 254 | "in": "path", 255 | "description": "The name that needs to be deleted", 256 | "required": true, 257 | "type": "string" 258 | } 259 | ], 260 | "responses": { 261 | "404": { 262 | "description": "User not found" 263 | }, 264 | "400": { 265 | "description": "Invalid username supplied" 266 | } 267 | } 268 | } 269 | }, 270 | "/pet/findByTags": { 271 | "get": { 272 | "tags": [ 273 | "pet" 274 | ], 275 | "parameters": [ 276 | { 277 | "name": "tags", 278 | "in": "query", 279 | "description": "Tags to filter by", 280 | "required": false, 281 | "type": "string" 282 | } 283 | ], 284 | "responses": { 285 | "400": { 286 | "description": "Invalid tag value" 287 | } 288 | } 289 | } 290 | }, 291 | "/user": { 292 | "post": { 293 | "tags": [ 294 | "user" 295 | ], 296 | "parameters": [ 297 | { 298 | "name": "body", 299 | "in": "body", 300 | "description": "Created user object", 301 | "required": false, 302 | "schema": { 303 | "$ref": "#/definitions/User" 304 | } 305 | } 306 | ] 307 | } 308 | }, 309 | "/pet/{petId}": { 310 | "get": { 311 | "tags": [ 312 | "pet" 313 | ], 314 | "parameters": [ 315 | { 316 | "name": "petId", 317 | "in": "path", 318 | "description": "ID of pet that needs to be fetched", 319 | "required": true, 320 | "type": "string" 321 | } 322 | ], 323 | "responses": { 324 | "404": { 325 | "description": "Pet not found" 326 | }, 327 | "400": { 328 | "description": "Invalid ID supplied" 329 | } 330 | } 331 | } 332 | }, 333 | "/user/logout": { 334 | "get": { 335 | "tags": [ 336 | "user" 337 | ] 338 | } 339 | }, 340 | "/user/login": { 341 | "get": { 342 | "tags": [ 343 | "user" 344 | ], 345 | "parameters": [ 346 | { 347 | "name": "username", 348 | "in": "query", 349 | "description": "The user name for login", 350 | "required": false, 351 | "type": "string" 352 | }, 353 | { 354 | "name": "password", 355 | "in": "query", 356 | "description": "The password for login in clear text", 357 | "required": false, 358 | "type": "string" 359 | } 360 | ], 361 | "responses": { 362 | "400": { 363 | "description": "Invalid username/password supplied" 364 | } 365 | } 366 | } 367 | } 368 | }, 369 | "definitions": { 370 | "User": { 371 | "properties": { 372 | "id": { 373 | "type": "integer", 374 | "format": "int32" 375 | }, 376 | "lastName": { 377 | "type": "string" 378 | }, 379 | "username": { 380 | "type": "string" 381 | }, 382 | "phone": { 383 | "type": "string" 384 | }, 385 | "email": { 386 | "type": "string" 387 | }, 388 | "userStatus": { 389 | "type": "integer", 390 | "format": "int32" 391 | }, 392 | "firstName": { 393 | "type": "string" 394 | }, 395 | "password": { 396 | "type": "string" 397 | } 398 | } 399 | }, 400 | "Category": { 401 | "properties": { 402 | "id": { 403 | "type": "integer", 404 | "format": "int32" 405 | }, 406 | "name": { 407 | "type": "string" 408 | } 409 | } 410 | }, 411 | "Pet": { 412 | "properties": { 413 | "id": { 414 | "type": "integer", 415 | "format": "int32" 416 | }, 417 | "tags": { 418 | "type": "array", 419 | "items": { 420 | "$ref": "#/definitions/Tag" 421 | } 422 | }, 423 | "category": { 424 | "$ref": "#/definitions/Category" 425 | }, 426 | "status": { 427 | "type": "string" 428 | }, 429 | "name": { 430 | "type": "string" 431 | }, 432 | "photoUrls": { 433 | "type": "array", 434 | "items": { 435 | "type": "string" 436 | } 437 | } 438 | } 439 | }, 440 | "Tag": { 441 | "properties": { 442 | "id": { 443 | "type": "integer", 444 | "format": "int32" 445 | }, 446 | "name": { 447 | "type": "string" 448 | } 449 | } 450 | }, 451 | "Order": { 452 | "properties": { 453 | "id": { 454 | "type": "integer", 455 | "format": "int32" 456 | }, 457 | "petId": { 458 | "type": "integer", 459 | "format": "int32" 460 | }, 461 | "status": { 462 | "type": "string" 463 | }, 464 | "complete": { 465 | "type": "boolean" 466 | }, 467 | "quantity": { 468 | "type": "integer", 469 | "format": "int32" 470 | }, 471 | "shipDate": { 472 | "type": "string", 473 | "format": "date-time" 474 | } 475 | } 476 | } 477 | } 478 | } 479 | } -------------------------------------------------------------------------------- /tests/apis/protected.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "version": "0.0.1", 5 | "title": "title" 6 | }, 7 | "host": "portal.28.io", 8 | "basePath": "/api", 9 | "schemes": [ 10 | "https" 11 | ], 12 | "securityDefinitions": { 13 | "oauth2": { 14 | "type": "oauth2", 15 | "scopes": {}, 16 | "flow": "password", 17 | "tokenUrl": "" 18 | } 19 | }, 20 | "paths": { 21 | "/auth": { 22 | "post": { 23 | "description": "Get token", 24 | "operationId": "auth", 25 | "parameters": [ 26 | { 27 | "name": "grant_type", 28 | "description": "Authorization grant type. Use client_credentials to create a token or refresh_token to refresh a token", 29 | "required": true, 30 | "type": "string", 31 | "enum": ["client_credentials", "refresh_token"], 32 | "in": "query" 33 | }, 34 | { 35 | "name": "email", 36 | "description": "The account email. Mandatory if grant_type=client_credentials.", 37 | "required": false, 38 | "type": "string", 39 | "in": "query" 40 | }, 41 | { 42 | "name": "password", 43 | "description": "The account password. Mandatory if grant_type=client_credentials.", 44 | "required": false, 45 | "type": "string", 46 | "in": "query" 47 | }, 48 | { 49 | "name": "refresh_token", 50 | "description": "The refresh_token obtained in the last successful request to this endpoint. Mandatory if grant_type=refresh_token.", 51 | "required": false, 52 | "type": "string", 53 | "in": "query" 54 | } 55 | ], 56 | "responses": { 57 | "200": { 58 | "description": "Token", 59 | "schema": { 60 | "$ref": "#/definitions/Authentication" 61 | } 62 | }, 63 | "default": { 64 | "description": "Error", 65 | "schema": { 66 | "$ref": "#/definitions/Error" 67 | } 68 | } 69 | } 70 | } 71 | }, 72 | "/project": { 73 | "get": { 74 | "description": "Get secure", 75 | "operationId": "getSecure", 76 | "parameters": [ 77 | { 78 | "name": "token", 79 | "description": "Auth token", 80 | "required": false, 81 | "type": "string", 82 | "in": "query" 83 | } 84 | ], 85 | "security": [ 86 | { 87 | "oauth2": [] 88 | } 89 | ], 90 | "responses": { 91 | "200": { 92 | "description": "Secure response returned" 93 | }, 94 | "401": { 95 | "description": "Unauthorized" 96 | } 97 | } 98 | } 99 | } 100 | }, 101 | "definitions": { 102 | "Authentication": { 103 | "required": [ 104 | "token_type", 105 | "expiration_date", 106 | "access_token", 107 | "refresh_token", 108 | "project_tokens" 109 | ], 110 | "properties": { 111 | "token_type": { 112 | "type": "string", 113 | "description": "The API token type", 114 | "enum": [ 115 | "bearer" 116 | ] 117 | }, 118 | "expiration_date": { 119 | "type": "date-time", 120 | "description": "The expiration date of all the tokens in the response" 121 | }, 122 | "access_token": { 123 | "type": "string", 124 | "description": "The API token" 125 | }, 126 | "refresh_token": { 127 | "type": "string", 128 | "description": "The refresh token which can be used to refresh both the API and project tokens" 129 | }, 130 | "project_tokens": { 131 | "type": "ProjectTokens", 132 | "description": "The project tokens which can be used to make request to the APIs on the project endpoints" 133 | } 134 | } 135 | }, 136 | "Error": { 137 | "required": [ 138 | "code", 139 | "message" 140 | ], 141 | "properties": { 142 | "code": { 143 | "type": "string", 144 | "description": "The XQuery error code of the error" 145 | }, 146 | "message": { 147 | "type": "string", 148 | "description": "A formatted string which contain the error code (always) and the module name, line and column-number and error description (when available)" 149 | }, 150 | "description": { 151 | "type": "string", 152 | "description": "The error description" 153 | }, 154 | "module": { 155 | "type": "string", 156 | "description": "The error module" 157 | }, 158 | "line-number": { 159 | "type": "string", 160 | "description": "The error line number" 161 | }, 162 | "column-number": { 163 | "type": "string", 164 | "description": "The error column number" 165 | } 166 | } 167 | } 168 | } 169 | } -------------------------------------------------------------------------------- /tests/apis/ref.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "version": "0.0.0", 5 | "title": "" 6 | }, 7 | "parameters": { 8 | "id": { 9 | "name": "id", 10 | "in": "query", 11 | "description": "id", 12 | "required": true, 13 | "type": "string" 14 | } 15 | }, 16 | "paths": { 17 | "/persons": { 18 | "parameters": [ 19 | { 20 | "$ref": "#/parameters/id" 21 | } 22 | ], 23 | "get": { 24 | "description": "Gets `Person` object.", 25 | "responses": { 26 | "200": { 27 | "description": "Successful response", 28 | "schema": { 29 | "type": "object", 30 | "properties": { 31 | "name": { 32 | "type": "string" 33 | } 34 | } 35 | } 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tests/apis/swagger.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "version": "0.0.0", 5 | "title": "NextGenCommand" 6 | }, 7 | "x-dev-host":"http://localhost:5566", 8 | "basePath": "/v1", 9 | "produces": [ 10 | "application/json" 11 | ], 12 | "consumes": [ 13 | "application/json" 14 | ], 15 | "paths": { 16 | "/software_specs": { 17 | "get": { 18 | "tags": [ 19 | "SoftwareSpec", 20 | "list" 21 | ], 22 | "summary": "Software Specs", 23 | "description": "The endpoint returns informations about the \"Software Specs\".\nThe response includes the whole software spec including id, name and description\n", 24 | "operationId": "getSoftwareSpecs", 25 | "responses": { 26 | "200": { 27 | "description": "An array of software specs", 28 | "schema": { 29 | "type": "array", 30 | "items": { 31 | "$ref": "#/definitions/SoftwareSpec" 32 | } 33 | } 34 | } 35 | } 36 | }, 37 | "post": { 38 | "summary": "Add a new software spec", 39 | "description": "", 40 | "operationId": "addSoftwareSpec", 41 | "consumes": [ 42 | "application/json" 43 | ], 44 | "parameters": [ 45 | { 46 | "name": "spec", 47 | "in": "body", 48 | "description": "Software Spec object that needs to be added", 49 | "required": true, 50 | "schema": { 51 | "$ref": "#/definitions/SoftwareSpec" 52 | } 53 | } 54 | ], 55 | "responses": { 56 | "200": { 57 | "description": "Successful creation of Software Spec", 58 | "schema": { 59 | "$ref": "#/definitions/SoftwareSpec" 60 | } 61 | }, 62 | "400": { 63 | "description": "Invalid input" 64 | }, 65 | "422": { 66 | "description": "Validation exception", 67 | "schema": { 68 | "$ref": "#/definitions/Error" 69 | } 70 | } 71 | } 72 | } 73 | }, 74 | "/software_specs/{specId}": { 75 | "get": { 76 | "tags": [ 77 | "SoftwareSpec", 78 | "find" 79 | ], 80 | "summary": "Find software spec by ID", 81 | "description": "The endpoint returns the information about a \"Software Spec\", specified by id.\n", 82 | "operationId": "getSpecById", 83 | "parameters": [ 84 | { 85 | "in": "path", 86 | "name": "specId", 87 | "description": "ID of software spec that needs to be fetched", 88 | "required": true, 89 | "type": "integer", 90 | "format": "int64" 91 | } 92 | ], 93 | "responses": { 94 | "200": { 95 | "description": "Successful operation", 96 | "schema": { 97 | "$ref": "#/definitions/SoftwareSpec" 98 | } 99 | }, 100 | "404": { 101 | "description": "Software Spec not found" 102 | } 103 | } 104 | }, 105 | "patch": { 106 | "tags": [ 107 | "SoftwareSpec", 108 | "update" 109 | ], 110 | "summary": "UpdateS a software spec, specified by id, with form data", 111 | "description": "The endpoint returns the information about a \"Software Spec\", specified by id.\n", 112 | "operationId": "updateSpecById", 113 | "parameters": [ 114 | { 115 | "in": "path", 116 | "name": "specId", 117 | "description": "Id of software spec that needs to be fetched", 118 | "required": true, 119 | "type": "integer", 120 | "format": "int64" 121 | }, 122 | { 123 | "in": "body", 124 | "name": "spec", 125 | "description": "Software Spec object that needs to be added", 126 | "required": true, 127 | "schema": { 128 | "$ref": "#/definitions/SoftwareSpec" 129 | } 130 | } 131 | ], 132 | "responses": { 133 | "200": { 134 | "description": "Successful operation", 135 | "schema": { 136 | "$ref": "#/definitions/SoftwareSpec" 137 | } 138 | }, 139 | "400": { 140 | "description": "Invalid spec id supplied" 141 | }, 142 | "405": { 143 | "description": "Invalid input" 144 | }, 145 | "422": { 146 | "description": "Validation exception", 147 | "schema": { 148 | "$ref": "#/definitions/Error" 149 | } 150 | } 151 | } 152 | }, 153 | "delete": { 154 | "tags": [ 155 | "SoftwareSpec", 156 | "delete" 157 | ], 158 | "description": "Deletes a software spec", 159 | "operationId": "deleteSpecById", 160 | "parameters": [ 161 | { 162 | "in": "path", 163 | "name": "specId", 164 | "description": "Software Spec id to delete", 165 | "required": true, 166 | "type": "integer", 167 | "format": "int64" 168 | } 169 | ], 170 | "responses": { 171 | "200": { 172 | "description": "Successful operation", 173 | "schema": { 174 | "$ref": "#/definitions/SoftwareSpec" 175 | } 176 | }, 177 | "400": { 178 | "description": "Invalid spec id supplied" 179 | } 180 | } 181 | } 182 | } 183 | }, 184 | "definitions": { 185 | "SoftwareSpec": { 186 | "type": "object", 187 | "properties": { 188 | "id": { 189 | "type": "integer", 190 | "format": "int64" 191 | }, 192 | "name": { 193 | "type": "string" 194 | }, 195 | "description": { 196 | "type": "string" 197 | } 198 | }, 199 | "required": ["name", "description"], 200 | "additionalProperties": false 201 | }, 202 | "Error": { 203 | "type": "object", 204 | "properties": { 205 | "code": { 206 | "type": "integer", 207 | "format": "int32" 208 | }, 209 | "message": { 210 | "type": "string" 211 | }, 212 | "fields": { 213 | "type": "string" 214 | } 215 | } 216 | } 217 | } 218 | } -------------------------------------------------------------------------------- /tests/apis/swagger_yaml.json: -------------------------------------------------------------------------------- 1 | {"swagger":"2.0","info":{"version":"2.0","title":"WIS API - Events"},"host":"localhost:10010","basePath":"/","schemes":["http","https"],"consumes":["application/json"],"produces":["application/json"],"paths":{"/events":{"get":{"description":"Gets events.","responses":{"200":{"description":"Success","schema":{"$ref":"#/definitions/Event"}},"default":{"description":"Error","schema":{"$ref":"#/definitions/Error"}}}}},"/swagger":{"x-swagger-pipe":"swagger_raw"}},"definitions":{"Event":{"required":["Id","Subject"],"properties":{"Id":{"type":"number"},"Subject":{"type":"string"}}},"Error":{"required":["message","code"],"properties":{"message":{"type":"string"},"code":{"type":"integer"}}}}} -------------------------------------------------------------------------------- /tests/apis/swagger_yaml.yaml: -------------------------------------------------------------------------------- 1 | swagger: "2.0" 2 | info: 3 | version: "2.0" 4 | title: WIS API - Events 5 | # during dev, should point to your local machine 6 | host: localhost:10010 7 | # basePath prefixes all resource paths 8 | basePath: / 9 | # 10 | schemes: 11 | # tip: remove http to make production-grade 12 | - http 13 | - https 14 | # format of bodies a client can send (Content-Type) 15 | consumes: 16 | - application/json 17 | # format of the responses to the client (Accepts) 18 | produces: 19 | - application/json 20 | paths: 21 | /events: 22 | get: 23 | description: Gets events. 24 | responses: 25 | 200: 26 | description: Success 27 | schema: 28 | $ref: "#/definitions/Event" 29 | default: 30 | description: Error 31 | schema: 32 | $ref: "#/definitions/Error" 33 | /swagger: 34 | x-swagger-pipe: swagger_raw 35 | # complex objects have schema definitions 36 | definitions: 37 | Event: 38 | required: 39 | - Id 40 | - Subject 41 | - Modified 42 | properties: 43 | Id: 44 | type: number 45 | Subject: 46 | type: string 47 | Modified: 48 | type: string 49 | format: date-time 50 | Error: 51 | required: 52 | - message 53 | - code 54 | properties: 55 | message: 56 | type: string 57 | code: 58 | type: integer -------------------------------------------------------------------------------- /tests/apis/uber.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "title": "Uber API", 5 | "description": "Move your app forward with the Uber API", 6 | "version": "1.0.0" 7 | }, 8 | "host": "api.uber.com", 9 | "schemes": [ 10 | "https" 11 | ], 12 | "basePath": "/v1", 13 | "produces": [ 14 | "application/json" 15 | ], 16 | "parameters": { 17 | "id": { 18 | "name": "id", 19 | "in": "path", 20 | "type": "integer", 21 | "format": "int32", 22 | "required": true 23 | } 24 | }, 25 | "paths": { 26 | "/products": { 27 | "get": { 28 | "summary": "Product Types", 29 | "description": "The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.", 30 | "parameters": [ 31 | { 32 | "name": "latitude", 33 | "in": "query", 34 | "description": "Latitude component of location.", 35 | "required": true, 36 | "type": "number", 37 | "format": "double" 38 | }, 39 | { 40 | "name": "longitude", 41 | "in": "query", 42 | "description": "Longitude component of location.", 43 | "required": true, 44 | "type": "number", 45 | "format": "double" 46 | } 47 | ], 48 | "tags": [ 49 | "Products" 50 | ], 51 | "responses": { 52 | "200": { 53 | "description": "An array of products", 54 | "schema": { 55 | "type": "array", 56 | "items": { 57 | "$ref": "Product" 58 | } 59 | } 60 | }, 61 | "default": { 62 | "description": "Unexpected error", 63 | "schema": { 64 | "$ref": "Error" 65 | } 66 | } 67 | } 68 | } 69 | }, 70 | "/products/{id}": { 71 | "get": { 72 | "summary": "Product Types", 73 | "description": "The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.", 74 | "parameters": [ 75 | { 76 | "$ref": "id" 77 | }, 78 | { 79 | "name": "latitude", 80 | "in": "query", 81 | "description": "Latitude component of location.", 82 | "required": true, 83 | "type": "number", 84 | "format": "double" 85 | }, 86 | { 87 | "name": "longitude", 88 | "in": "query", 89 | "description": "Longitude component of location.", 90 | "required": true, 91 | "type": "number", 92 | "format": "double" 93 | } 94 | ], 95 | "tags": [ 96 | "Products" 97 | ], 98 | "responses": { 99 | "200": { 100 | "description": "An array of products", 101 | "schema": { 102 | "type": "array", 103 | "items": { 104 | "$ref": "Product" 105 | } 106 | } 107 | }, 108 | "default": { 109 | "description": "Unexpected error", 110 | "schema": { 111 | "$ref": "Error" 112 | } 113 | } 114 | } 115 | } 116 | }, 117 | "/estimates/price": { 118 | "get": { 119 | "summary": "Price Estimates", 120 | "description": "The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.

The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier.", 121 | "parameters": [ 122 | { 123 | "name": "start_latitude", 124 | "in": "query", 125 | "description": "Latitude component of start location.", 126 | "required": true, 127 | "type": "number", 128 | "format": "double" 129 | }, 130 | { 131 | "name": "start_longitude", 132 | "in": "query", 133 | "description": "Longitude component of start location.", 134 | "required": true, 135 | "type": "number", 136 | "format": "double" 137 | }, 138 | { 139 | "name": "end_latitude", 140 | "in": "query", 141 | "description": "Latitude component of end location.", 142 | "required": true, 143 | "type": "number", 144 | "format": "double" 145 | }, 146 | { 147 | "name": "end_longitude", 148 | "in": "query", 149 | "description": "Longitude component of end location.", 150 | "required": true, 151 | "type": "number", 152 | "format": "double" 153 | } 154 | ], 155 | "tags": [ 156 | "Estimates" 157 | ], 158 | "responses": { 159 | "200": { 160 | "description": "An array of price estimates by product", 161 | "schema": { 162 | "type": "array", 163 | "items": { 164 | "$ref": "PriceEstimate" 165 | } 166 | } 167 | }, 168 | "default": { 169 | "description": "Unexpected error", 170 | "schema": { 171 | "$ref": "Error" 172 | } 173 | } 174 | } 175 | } 176 | }, 177 | "/estimates/time": { 178 | "get": { 179 | "summary": "Time Estimates", 180 | "description": "The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs.", 181 | "parameters": [ 182 | { 183 | "name": "start_latitude", 184 | "in": "query", 185 | "description": "Latitude component of start location.", 186 | "required": true, 187 | "type": "number", 188 | "format": "double" 189 | }, 190 | { 191 | "name": "start_longitude", 192 | "in": "query", 193 | "description": "Longitude component of start location.", 194 | "required": true, 195 | "type": "number", 196 | "format": "double" 197 | }, 198 | { 199 | "name": "customer_uuid", 200 | "in": "query", 201 | "type": "string", 202 | "format": "uuid", 203 | "description": "Unique customer identifier to be used for experience customization." 204 | }, 205 | { 206 | "name": "product_id", 207 | "in": "query", 208 | "type": "string", 209 | "description": "Unique identifier representing a specific product for a given latitude & longitude." 210 | } 211 | ], 212 | "tags": [ 213 | "Estimates" 214 | ], 215 | "responses": { 216 | "200": { 217 | "description": "An array of products", 218 | "schema": { 219 | "type": "array", 220 | "items": { 221 | "$ref": "Product" 222 | } 223 | } 224 | }, 225 | "default": { 226 | "description": "Unexpected error", 227 | "schema": { 228 | "$ref": "Error" 229 | } 230 | } 231 | } 232 | } 233 | }, 234 | "/me": { 235 | "get": { 236 | "summary": "User Profile", 237 | "description": "The User Profile endpoint returns information about the Uber user that has authorized with the application.", 238 | "tags": [ 239 | "User" 240 | ], 241 | "responses": { 242 | "200": { 243 | "description": "Profile information for a user", 244 | "schema": { 245 | "$ref": "Profile" 246 | } 247 | }, 248 | "default": { 249 | "description": "Unexpected error", 250 | "schema": { 251 | "$ref": "Error" 252 | } 253 | } 254 | } 255 | } 256 | }, 257 | "/history": { 258 | "get": { 259 | "summary": "User Activity", 260 | "description": "The User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.

The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary.", 261 | "parameters": [ 262 | { 263 | "name": "offset", 264 | "in": "query", 265 | "type": "integer", 266 | "format": "int32", 267 | "description": "Offset the list of returned results by this amount. Default is zero." 268 | }, 269 | { 270 | "name": "limit", 271 | "in": "query", 272 | "type": "integer", 273 | "format": "int32", 274 | "description": "Number of items to retrieve. Default is 5, maximum is 100." 275 | } 276 | ], 277 | "tags": [ 278 | "User" 279 | ], 280 | "responses": { 281 | "200": { 282 | "description": "History information for the given user", 283 | "schema": { 284 | "$ref": "Activities" 285 | } 286 | }, 287 | "default": { 288 | "description": "Unexpected error", 289 | "schema": { 290 | "$ref": "Error" 291 | } 292 | } 293 | } 294 | } 295 | } 296 | }, 297 | "definitions": { 298 | "Product": { 299 | "properties": { 300 | "product_id": { 301 | "type": "string", 302 | "description": "Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles." 303 | }, 304 | "description": { 305 | "type": "string", 306 | "description": "Description of product." 307 | }, 308 | "display_name": { 309 | "type": "string", 310 | "description": "Display name of product." 311 | }, 312 | "capacity": { 313 | "type": "string", 314 | "description": "Capacity of product. For example, 4 people." 315 | }, 316 | "image": { 317 | "type": "string", 318 | "description": "Image URL representing the product." 319 | } 320 | } 321 | }, 322 | "PriceEstimate": { 323 | "properties": { 324 | "product_id": { 325 | "type": "string", 326 | "description": "Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles" 327 | }, 328 | "currency_code": { 329 | "type": "string", 330 | "description": "[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code." 331 | }, 332 | "display_name": { 333 | "type": "string", 334 | "description": "Display name of product." 335 | }, 336 | "estimate": { 337 | "type": "string", 338 | "description": "Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or \"Metered\" for TAXI." 339 | }, 340 | "low_estimate": { 341 | "type": "number", 342 | "description": "Lower bound of the estimated price." 343 | }, 344 | "high_estimate": { 345 | "type": "number", 346 | "description": "Upper bound of the estimated price." 347 | }, 348 | "surge_multiplier": { 349 | "type": "number", 350 | "description": "Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier." 351 | } 352 | } 353 | }, 354 | "Profile": { 355 | "properties": { 356 | "first_name": { 357 | "type": "string", 358 | "description": "First name of the Uber user." 359 | }, 360 | "last_name": { 361 | "type": "string", 362 | "description": "Last name of the Uber user." 363 | }, 364 | "email": { 365 | "type": "string", 366 | "description": "Email address of the Uber user" 367 | }, 368 | "picture": { 369 | "type": "string", 370 | "description": "Image URL of the Uber user." 371 | }, 372 | "promo_code": { 373 | "type": "string", 374 | "description": "Promo code of the Uber user." 375 | } 376 | } 377 | }, 378 | "Activity": { 379 | "properties": { 380 | "uuid": { 381 | "type": "string", 382 | "description": "Unique identifier for the activity" 383 | } 384 | } 385 | }, 386 | "Activities": { 387 | "properties": { 388 | "offset": { 389 | "type": "integer", 390 | "format": "int32", 391 | "description": "Position in pagination." 392 | }, 393 | "limit": { 394 | "type": "integer", 395 | "format": "int32", 396 | "description": "Number of items to retrieve (100 max)." 397 | }, 398 | "count": { 399 | "type": "integer", 400 | "format": "int32", 401 | "description": "Total number of items available." 402 | }, 403 | "history": { 404 | "type": "array", 405 | "$ref": "Activity" 406 | } 407 | } 408 | }, 409 | "Error": { 410 | "properties": { 411 | "code": { 412 | "type": "integer", 413 | "format": "int32" 414 | }, 415 | "message": { 416 | "type": "string" 417 | }, 418 | "fields": { 419 | "type": "string" 420 | } 421 | } 422 | } 423 | } 424 | } 425 | -------------------------------------------------------------------------------- /tests/apis/users.json: -------------------------------------------------------------------------------- 1 | { 2 | "swagger": "2.0", 3 | "info": { 4 | "version": "0.0.0", 5 | "title": "" 6 | }, 7 | "paths": { 8 | "/users/{userId}": { 9 | "parameters": [ 10 | { 11 | "name": "userId", 12 | "in": "path", 13 | "description": "User's id", 14 | "required": true, 15 | "type": "string" 16 | } 17 | ], 18 | "get": { 19 | "description": "Get user", 20 | "operationId": "findById", 21 | "responses": { 22 | "200": { 23 | "description": "User returned", 24 | "schema": { 25 | "type": "object", 26 | "properties": { 27 | "name": { 28 | "type": "string" 29 | } 30 | } 31 | } 32 | }, 33 | "404": { 34 | "description": "User not found" 35 | } 36 | } 37 | }, 38 | "delete": { 39 | "description": "Delete user", 40 | "operationId": "delete", 41 | "responses": { 42 | "200": { 43 | "description": "User deleted" 44 | } 45 | } 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /tests/buildConfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "source": "tests\\apis\\swagger_yaml.yaml", 3 | "outputPath": ".\\output", 4 | "className": null, 5 | "generate": null, 6 | "modelInterfaces": null, 7 | "fileName": null, 8 | "modelPath": null, 9 | "createModelPath": true, 10 | "createModelExportFile": true 11 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "baseUrl": "src", 6 | "inlineSourceMap": true, 7 | "inlineSources": true, 8 | "declaration": false, 9 | "moduleResolution": "node", 10 | "outDir": "dist", 11 | "emitDecoratorMetadata": true, 12 | "experimentalDecorators": true, 13 | "typeRoots": [ 14 | "node_modules/@types" 15 | ], 16 | "lib": [ 17 | "es2015", 18 | "es2016", 19 | "dom" 20 | ] 21 | } 22 | } 23 | --------------------------------------------------------------------------------