├── .gitignore ├── .vscode └── settings.json ├── README.md ├── backend ├── .babelrc ├── models │ └── Issue.js ├── package-lock.json ├── package.json └── server.js └── frontend ├── .editorconfig ├── README.md ├── angular.json ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.e2e.json ├── package-lock.json ├── package.json ├── src ├── app │ ├── app.component.css │ ├── app.component.html │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.module.ts │ ├── components │ │ ├── create │ │ │ ├── create.component.css │ │ │ ├── create.component.html │ │ │ ├── create.component.spec.ts │ │ │ └── create.component.ts │ │ ├── edit │ │ │ ├── edit.component.css │ │ │ ├── edit.component.html │ │ │ ├── edit.component.spec.ts │ │ │ └── edit.component.ts │ │ └── list │ │ │ ├── list.component.css │ │ │ ├── list.component.html │ │ │ ├── list.component.spec.ts │ │ │ └── list.component.ts │ ├── issue.model.ts │ ├── issue.service.spec.ts │ └── issue.service.ts ├── assets │ └── .gitkeep ├── browserslist ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── karma.conf.js ├── main.ts ├── polyfills.ts ├── styles.css ├── test.ts ├── tsconfig.app.json ├── tsconfig.spec.json └── tslint.json ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | /frontend/node_modules 11 | /backend/node_modules 12 | 13 | # IDEs and editors 14 | /.idea 15 | .project 16 | .classpath 17 | .c9/ 18 | *.launch 19 | .settings/ 20 | *.sublime-workspace 21 | 22 | # IDE - VSCode 23 | .vscode/* 24 | !.vscode/settings.json 25 | !.vscode/tasks.json 26 | !.vscode/launch.json 27 | !.vscode/extensions.json 28 | 29 | # misc 30 | /.sass-cache 31 | /connect.lock 32 | /coverage 33 | /libpeerconnection.log 34 | npm-debug.log 35 | yarn-error.log 36 | testem.log 37 | /typings 38 | 39 | # System Files 40 | .DS_Store 41 | Thumbs.db 42 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true 3 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MEAN-Stack Sample Application With Angular 6 - Part 1 2 | -------------------------------------------------------------------------------- /backend/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["env"] 3 | } -------------------------------------------------------------------------------- /backend/models/Issue.js: -------------------------------------------------------------------------------- 1 | import mongoose from 'mongoose'; 2 | 3 | const Schema = mongoose.Schema; 4 | 5 | let Issue = new Schema({ 6 | title: { 7 | type: String 8 | }, 9 | responsible: { 10 | type: String 11 | }, 12 | description: { 13 | type: String 14 | }, 15 | severity: { 16 | type: String 17 | }, 18 | status: { 19 | type: String, 20 | default: 'Open' 21 | } 22 | }); 23 | 24 | export default mongoose.model('Issue', Issue); -------------------------------------------------------------------------------- /backend/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.5", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 11 | "requires": { 12 | "mime-types": "~2.1.18", 13 | "negotiator": "0.6.1" 14 | } 15 | }, 16 | "ansi-regex": { 17 | "version": "2.1.1", 18 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 19 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 20 | "dev": true 21 | }, 22 | "ansi-styles": { 23 | "version": "2.2.1", 24 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 25 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 26 | "dev": true 27 | }, 28 | "anymatch": { 29 | "version": "1.3.2", 30 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 31 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 32 | "dev": true, 33 | "requires": { 34 | "micromatch": "^2.1.5", 35 | "normalize-path": "^2.0.0" 36 | } 37 | }, 38 | "arr-diff": { 39 | "version": "2.0.0", 40 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 41 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 42 | "dev": true, 43 | "requires": { 44 | "arr-flatten": "^1.0.1" 45 | } 46 | }, 47 | "arr-flatten": { 48 | "version": "1.1.0", 49 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 50 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 51 | "dev": true 52 | }, 53 | "array-flatten": { 54 | "version": "1.1.1", 55 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 56 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 57 | }, 58 | "array-unique": { 59 | "version": "0.2.1", 60 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 61 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 62 | "dev": true 63 | }, 64 | "async": { 65 | "version": "2.6.1", 66 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", 67 | "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", 68 | "requires": { 69 | "lodash": "^4.17.10" 70 | } 71 | }, 72 | "async-each": { 73 | "version": "1.0.1", 74 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 75 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 76 | "dev": true 77 | }, 78 | "babel-cli": { 79 | "version": "6.26.0", 80 | "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", 81 | "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", 82 | "dev": true, 83 | "requires": { 84 | "babel-core": "^6.26.0", 85 | "babel-polyfill": "^6.26.0", 86 | "babel-register": "^6.26.0", 87 | "babel-runtime": "^6.26.0", 88 | "chokidar": "^1.6.1", 89 | "commander": "^2.11.0", 90 | "convert-source-map": "^1.5.0", 91 | "fs-readdir-recursive": "^1.0.0", 92 | "glob": "^7.1.2", 93 | "lodash": "^4.17.4", 94 | "output-file-sync": "^1.1.2", 95 | "path-is-absolute": "^1.0.1", 96 | "slash": "^1.0.0", 97 | "source-map": "^0.5.6", 98 | "v8flags": "^2.1.1" 99 | } 100 | }, 101 | "babel-code-frame": { 102 | "version": "6.26.0", 103 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 104 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 105 | "dev": true, 106 | "requires": { 107 | "chalk": "^1.1.3", 108 | "esutils": "^2.0.2", 109 | "js-tokens": "^3.0.2" 110 | } 111 | }, 112 | "babel-core": { 113 | "version": "6.26.3", 114 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", 115 | "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", 116 | "dev": true, 117 | "requires": { 118 | "babel-code-frame": "^6.26.0", 119 | "babel-generator": "^6.26.0", 120 | "babel-helpers": "^6.24.1", 121 | "babel-messages": "^6.23.0", 122 | "babel-register": "^6.26.0", 123 | "babel-runtime": "^6.26.0", 124 | "babel-template": "^6.26.0", 125 | "babel-traverse": "^6.26.0", 126 | "babel-types": "^6.26.0", 127 | "babylon": "^6.18.0", 128 | "convert-source-map": "^1.5.1", 129 | "debug": "^2.6.9", 130 | "json5": "^0.5.1", 131 | "lodash": "^4.17.4", 132 | "minimatch": "^3.0.4", 133 | "path-is-absolute": "^1.0.1", 134 | "private": "^0.1.8", 135 | "slash": "^1.0.0", 136 | "source-map": "^0.5.7" 137 | } 138 | }, 139 | "babel-generator": { 140 | "version": "6.26.1", 141 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", 142 | "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", 143 | "dev": true, 144 | "requires": { 145 | "babel-messages": "^6.23.0", 146 | "babel-runtime": "^6.26.0", 147 | "babel-types": "^6.26.0", 148 | "detect-indent": "^4.0.0", 149 | "jsesc": "^1.3.0", 150 | "lodash": "^4.17.4", 151 | "source-map": "^0.5.7", 152 | "trim-right": "^1.0.1" 153 | } 154 | }, 155 | "babel-helper-builder-binary-assignment-operator-visitor": { 156 | "version": "6.24.1", 157 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 158 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 159 | "dev": true, 160 | "requires": { 161 | "babel-helper-explode-assignable-expression": "^6.24.1", 162 | "babel-runtime": "^6.22.0", 163 | "babel-types": "^6.24.1" 164 | } 165 | }, 166 | "babel-helper-call-delegate": { 167 | "version": "6.24.1", 168 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 169 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 170 | "dev": true, 171 | "requires": { 172 | "babel-helper-hoist-variables": "^6.24.1", 173 | "babel-runtime": "^6.22.0", 174 | "babel-traverse": "^6.24.1", 175 | "babel-types": "^6.24.1" 176 | } 177 | }, 178 | "babel-helper-define-map": { 179 | "version": "6.26.0", 180 | "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", 181 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", 182 | "dev": true, 183 | "requires": { 184 | "babel-helper-function-name": "^6.24.1", 185 | "babel-runtime": "^6.26.0", 186 | "babel-types": "^6.26.0", 187 | "lodash": "^4.17.4" 188 | } 189 | }, 190 | "babel-helper-explode-assignable-expression": { 191 | "version": "6.24.1", 192 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 193 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 194 | "dev": true, 195 | "requires": { 196 | "babel-runtime": "^6.22.0", 197 | "babel-traverse": "^6.24.1", 198 | "babel-types": "^6.24.1" 199 | } 200 | }, 201 | "babel-helper-function-name": { 202 | "version": "6.24.1", 203 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 204 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 205 | "dev": true, 206 | "requires": { 207 | "babel-helper-get-function-arity": "^6.24.1", 208 | "babel-runtime": "^6.22.0", 209 | "babel-template": "^6.24.1", 210 | "babel-traverse": "^6.24.1", 211 | "babel-types": "^6.24.1" 212 | } 213 | }, 214 | "babel-helper-get-function-arity": { 215 | "version": "6.24.1", 216 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 217 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 218 | "dev": true, 219 | "requires": { 220 | "babel-runtime": "^6.22.0", 221 | "babel-types": "^6.24.1" 222 | } 223 | }, 224 | "babel-helper-hoist-variables": { 225 | "version": "6.24.1", 226 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 227 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 228 | "dev": true, 229 | "requires": { 230 | "babel-runtime": "^6.22.0", 231 | "babel-types": "^6.24.1" 232 | } 233 | }, 234 | "babel-helper-optimise-call-expression": { 235 | "version": "6.24.1", 236 | "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 237 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", 238 | "dev": true, 239 | "requires": { 240 | "babel-runtime": "^6.22.0", 241 | "babel-types": "^6.24.1" 242 | } 243 | }, 244 | "babel-helper-regex": { 245 | "version": "6.26.0", 246 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", 247 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", 248 | "dev": true, 249 | "requires": { 250 | "babel-runtime": "^6.26.0", 251 | "babel-types": "^6.26.0", 252 | "lodash": "^4.17.4" 253 | } 254 | }, 255 | "babel-helper-remap-async-to-generator": { 256 | "version": "6.24.1", 257 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 258 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 259 | "dev": true, 260 | "requires": { 261 | "babel-helper-function-name": "^6.24.1", 262 | "babel-runtime": "^6.22.0", 263 | "babel-template": "^6.24.1", 264 | "babel-traverse": "^6.24.1", 265 | "babel-types": "^6.24.1" 266 | } 267 | }, 268 | "babel-helper-replace-supers": { 269 | "version": "6.24.1", 270 | "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 271 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", 272 | "dev": true, 273 | "requires": { 274 | "babel-helper-optimise-call-expression": "^6.24.1", 275 | "babel-messages": "^6.23.0", 276 | "babel-runtime": "^6.22.0", 277 | "babel-template": "^6.24.1", 278 | "babel-traverse": "^6.24.1", 279 | "babel-types": "^6.24.1" 280 | } 281 | }, 282 | "babel-helpers": { 283 | "version": "6.24.1", 284 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 285 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 286 | "dev": true, 287 | "requires": { 288 | "babel-runtime": "^6.22.0", 289 | "babel-template": "^6.24.1" 290 | } 291 | }, 292 | "babel-messages": { 293 | "version": "6.23.0", 294 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 295 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 296 | "dev": true, 297 | "requires": { 298 | "babel-runtime": "^6.22.0" 299 | } 300 | }, 301 | "babel-plugin-check-es2015-constants": { 302 | "version": "6.22.0", 303 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 304 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 305 | "dev": true, 306 | "requires": { 307 | "babel-runtime": "^6.22.0" 308 | } 309 | }, 310 | "babel-plugin-syntax-async-functions": { 311 | "version": "6.13.0", 312 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 313 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 314 | "dev": true 315 | }, 316 | "babel-plugin-syntax-exponentiation-operator": { 317 | "version": "6.13.0", 318 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 319 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 320 | "dev": true 321 | }, 322 | "babel-plugin-syntax-trailing-function-commas": { 323 | "version": "6.22.0", 324 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 325 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 326 | "dev": true 327 | }, 328 | "babel-plugin-transform-async-to-generator": { 329 | "version": "6.24.1", 330 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 331 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 332 | "dev": true, 333 | "requires": { 334 | "babel-helper-remap-async-to-generator": "^6.24.1", 335 | "babel-plugin-syntax-async-functions": "^6.8.0", 336 | "babel-runtime": "^6.22.0" 337 | } 338 | }, 339 | "babel-plugin-transform-es2015-arrow-functions": { 340 | "version": "6.22.0", 341 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 342 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", 343 | "dev": true, 344 | "requires": { 345 | "babel-runtime": "^6.22.0" 346 | } 347 | }, 348 | "babel-plugin-transform-es2015-block-scoped-functions": { 349 | "version": "6.22.0", 350 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 351 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", 352 | "dev": true, 353 | "requires": { 354 | "babel-runtime": "^6.22.0" 355 | } 356 | }, 357 | "babel-plugin-transform-es2015-block-scoping": { 358 | "version": "6.26.0", 359 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", 360 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", 361 | "dev": true, 362 | "requires": { 363 | "babel-runtime": "^6.26.0", 364 | "babel-template": "^6.26.0", 365 | "babel-traverse": "^6.26.0", 366 | "babel-types": "^6.26.0", 367 | "lodash": "^4.17.4" 368 | } 369 | }, 370 | "babel-plugin-transform-es2015-classes": { 371 | "version": "6.24.1", 372 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 373 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", 374 | "dev": true, 375 | "requires": { 376 | "babel-helper-define-map": "^6.24.1", 377 | "babel-helper-function-name": "^6.24.1", 378 | "babel-helper-optimise-call-expression": "^6.24.1", 379 | "babel-helper-replace-supers": "^6.24.1", 380 | "babel-messages": "^6.23.0", 381 | "babel-runtime": "^6.22.0", 382 | "babel-template": "^6.24.1", 383 | "babel-traverse": "^6.24.1", 384 | "babel-types": "^6.24.1" 385 | } 386 | }, 387 | "babel-plugin-transform-es2015-computed-properties": { 388 | "version": "6.24.1", 389 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 390 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", 391 | "dev": true, 392 | "requires": { 393 | "babel-runtime": "^6.22.0", 394 | "babel-template": "^6.24.1" 395 | } 396 | }, 397 | "babel-plugin-transform-es2015-destructuring": { 398 | "version": "6.23.0", 399 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 400 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 401 | "dev": true, 402 | "requires": { 403 | "babel-runtime": "^6.22.0" 404 | } 405 | }, 406 | "babel-plugin-transform-es2015-duplicate-keys": { 407 | "version": "6.24.1", 408 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 409 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", 410 | "dev": true, 411 | "requires": { 412 | "babel-runtime": "^6.22.0", 413 | "babel-types": "^6.24.1" 414 | } 415 | }, 416 | "babel-plugin-transform-es2015-for-of": { 417 | "version": "6.23.0", 418 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 419 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", 420 | "dev": true, 421 | "requires": { 422 | "babel-runtime": "^6.22.0" 423 | } 424 | }, 425 | "babel-plugin-transform-es2015-function-name": { 426 | "version": "6.24.1", 427 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 428 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 429 | "dev": true, 430 | "requires": { 431 | "babel-helper-function-name": "^6.24.1", 432 | "babel-runtime": "^6.22.0", 433 | "babel-types": "^6.24.1" 434 | } 435 | }, 436 | "babel-plugin-transform-es2015-literals": { 437 | "version": "6.22.0", 438 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 439 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", 440 | "dev": true, 441 | "requires": { 442 | "babel-runtime": "^6.22.0" 443 | } 444 | }, 445 | "babel-plugin-transform-es2015-modules-amd": { 446 | "version": "6.24.1", 447 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 448 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", 449 | "dev": true, 450 | "requires": { 451 | "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", 452 | "babel-runtime": "^6.22.0", 453 | "babel-template": "^6.24.1" 454 | } 455 | }, 456 | "babel-plugin-transform-es2015-modules-commonjs": { 457 | "version": "6.26.2", 458 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", 459 | "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", 460 | "dev": true, 461 | "requires": { 462 | "babel-plugin-transform-strict-mode": "^6.24.1", 463 | "babel-runtime": "^6.26.0", 464 | "babel-template": "^6.26.0", 465 | "babel-types": "^6.26.0" 466 | } 467 | }, 468 | "babel-plugin-transform-es2015-modules-systemjs": { 469 | "version": "6.24.1", 470 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 471 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", 472 | "dev": true, 473 | "requires": { 474 | "babel-helper-hoist-variables": "^6.24.1", 475 | "babel-runtime": "^6.22.0", 476 | "babel-template": "^6.24.1" 477 | } 478 | }, 479 | "babel-plugin-transform-es2015-modules-umd": { 480 | "version": "6.24.1", 481 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 482 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", 483 | "dev": true, 484 | "requires": { 485 | "babel-plugin-transform-es2015-modules-amd": "^6.24.1", 486 | "babel-runtime": "^6.22.0", 487 | "babel-template": "^6.24.1" 488 | } 489 | }, 490 | "babel-plugin-transform-es2015-object-super": { 491 | "version": "6.24.1", 492 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 493 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", 494 | "dev": true, 495 | "requires": { 496 | "babel-helper-replace-supers": "^6.24.1", 497 | "babel-runtime": "^6.22.0" 498 | } 499 | }, 500 | "babel-plugin-transform-es2015-parameters": { 501 | "version": "6.24.1", 502 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 503 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 504 | "dev": true, 505 | "requires": { 506 | "babel-helper-call-delegate": "^6.24.1", 507 | "babel-helper-get-function-arity": "^6.24.1", 508 | "babel-runtime": "^6.22.0", 509 | "babel-template": "^6.24.1", 510 | "babel-traverse": "^6.24.1", 511 | "babel-types": "^6.24.1" 512 | } 513 | }, 514 | "babel-plugin-transform-es2015-shorthand-properties": { 515 | "version": "6.24.1", 516 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 517 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", 518 | "dev": true, 519 | "requires": { 520 | "babel-runtime": "^6.22.0", 521 | "babel-types": "^6.24.1" 522 | } 523 | }, 524 | "babel-plugin-transform-es2015-spread": { 525 | "version": "6.22.0", 526 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 527 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 528 | "dev": true, 529 | "requires": { 530 | "babel-runtime": "^6.22.0" 531 | } 532 | }, 533 | "babel-plugin-transform-es2015-sticky-regex": { 534 | "version": "6.24.1", 535 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 536 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 537 | "dev": true, 538 | "requires": { 539 | "babel-helper-regex": "^6.24.1", 540 | "babel-runtime": "^6.22.0", 541 | "babel-types": "^6.24.1" 542 | } 543 | }, 544 | "babel-plugin-transform-es2015-template-literals": { 545 | "version": "6.22.0", 546 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 547 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", 548 | "dev": true, 549 | "requires": { 550 | "babel-runtime": "^6.22.0" 551 | } 552 | }, 553 | "babel-plugin-transform-es2015-typeof-symbol": { 554 | "version": "6.23.0", 555 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 556 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", 557 | "dev": true, 558 | "requires": { 559 | "babel-runtime": "^6.22.0" 560 | } 561 | }, 562 | "babel-plugin-transform-es2015-unicode-regex": { 563 | "version": "6.24.1", 564 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 565 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 566 | "dev": true, 567 | "requires": { 568 | "babel-helper-regex": "^6.24.1", 569 | "babel-runtime": "^6.22.0", 570 | "regexpu-core": "^2.0.0" 571 | } 572 | }, 573 | "babel-plugin-transform-exponentiation-operator": { 574 | "version": "6.24.1", 575 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 576 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 577 | "dev": true, 578 | "requires": { 579 | "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", 580 | "babel-plugin-syntax-exponentiation-operator": "^6.8.0", 581 | "babel-runtime": "^6.22.0" 582 | } 583 | }, 584 | "babel-plugin-transform-regenerator": { 585 | "version": "6.26.0", 586 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", 587 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", 588 | "dev": true, 589 | "requires": { 590 | "regenerator-transform": "^0.10.0" 591 | } 592 | }, 593 | "babel-plugin-transform-strict-mode": { 594 | "version": "6.24.1", 595 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 596 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 597 | "dev": true, 598 | "requires": { 599 | "babel-runtime": "^6.22.0", 600 | "babel-types": "^6.24.1" 601 | } 602 | }, 603 | "babel-polyfill": { 604 | "version": "6.26.0", 605 | "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", 606 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", 607 | "dev": true, 608 | "requires": { 609 | "babel-runtime": "^6.26.0", 610 | "core-js": "^2.5.0", 611 | "regenerator-runtime": "^0.10.5" 612 | }, 613 | "dependencies": { 614 | "regenerator-runtime": { 615 | "version": "0.10.5", 616 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 617 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", 618 | "dev": true 619 | } 620 | } 621 | }, 622 | "babel-preset-env": { 623 | "version": "1.7.0", 624 | "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", 625 | "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", 626 | "dev": true, 627 | "requires": { 628 | "babel-plugin-check-es2015-constants": "^6.22.0", 629 | "babel-plugin-syntax-trailing-function-commas": "^6.22.0", 630 | "babel-plugin-transform-async-to-generator": "^6.22.0", 631 | "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", 632 | "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", 633 | "babel-plugin-transform-es2015-block-scoping": "^6.23.0", 634 | "babel-plugin-transform-es2015-classes": "^6.23.0", 635 | "babel-plugin-transform-es2015-computed-properties": "^6.22.0", 636 | "babel-plugin-transform-es2015-destructuring": "^6.23.0", 637 | "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", 638 | "babel-plugin-transform-es2015-for-of": "^6.23.0", 639 | "babel-plugin-transform-es2015-function-name": "^6.22.0", 640 | "babel-plugin-transform-es2015-literals": "^6.22.0", 641 | "babel-plugin-transform-es2015-modules-amd": "^6.22.0", 642 | "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", 643 | "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", 644 | "babel-plugin-transform-es2015-modules-umd": "^6.23.0", 645 | "babel-plugin-transform-es2015-object-super": "^6.22.0", 646 | "babel-plugin-transform-es2015-parameters": "^6.23.0", 647 | "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", 648 | "babel-plugin-transform-es2015-spread": "^6.22.0", 649 | "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", 650 | "babel-plugin-transform-es2015-template-literals": "^6.22.0", 651 | "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", 652 | "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", 653 | "babel-plugin-transform-exponentiation-operator": "^6.22.0", 654 | "babel-plugin-transform-regenerator": "^6.22.0", 655 | "browserslist": "^3.2.6", 656 | "invariant": "^2.2.2", 657 | "semver": "^5.3.0" 658 | } 659 | }, 660 | "babel-register": { 661 | "version": "6.26.0", 662 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 663 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 664 | "dev": true, 665 | "requires": { 666 | "babel-core": "^6.26.0", 667 | "babel-runtime": "^6.26.0", 668 | "core-js": "^2.5.0", 669 | "home-or-tmp": "^2.0.0", 670 | "lodash": "^4.17.4", 671 | "mkdirp": "^0.5.1", 672 | "source-map-support": "^0.4.15" 673 | } 674 | }, 675 | "babel-runtime": { 676 | "version": "6.26.0", 677 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 678 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 679 | "dev": true, 680 | "requires": { 681 | "core-js": "^2.4.0", 682 | "regenerator-runtime": "^0.11.0" 683 | } 684 | }, 685 | "babel-template": { 686 | "version": "6.26.0", 687 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 688 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 689 | "dev": true, 690 | "requires": { 691 | "babel-runtime": "^6.26.0", 692 | "babel-traverse": "^6.26.0", 693 | "babel-types": "^6.26.0", 694 | "babylon": "^6.18.0", 695 | "lodash": "^4.17.4" 696 | } 697 | }, 698 | "babel-traverse": { 699 | "version": "6.26.0", 700 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 701 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 702 | "dev": true, 703 | "requires": { 704 | "babel-code-frame": "^6.26.0", 705 | "babel-messages": "^6.23.0", 706 | "babel-runtime": "^6.26.0", 707 | "babel-types": "^6.26.0", 708 | "babylon": "^6.18.0", 709 | "debug": "^2.6.8", 710 | "globals": "^9.18.0", 711 | "invariant": "^2.2.2", 712 | "lodash": "^4.17.4" 713 | } 714 | }, 715 | "babel-types": { 716 | "version": "6.26.0", 717 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 718 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 719 | "dev": true, 720 | "requires": { 721 | "babel-runtime": "^6.26.0", 722 | "esutils": "^2.0.2", 723 | "lodash": "^4.17.4", 724 | "to-fast-properties": "^1.0.3" 725 | } 726 | }, 727 | "babel-watch": { 728 | "version": "2.0.7", 729 | "resolved": "https://registry.npmjs.org/babel-watch/-/babel-watch-2.0.7.tgz", 730 | "integrity": "sha512-pBVjnK1A3xJZHOrgVCbfd727tIPQrvzxFqGL1hgUClNd7LdQpTlO73SM1RJ9I4ibgiljbUE/3IcIHXHBJSL5+w==", 731 | "dev": true, 732 | "requires": { 733 | "chokidar": "^1.4.3", 734 | "commander": "^2.9.0", 735 | "source-map-support": "^0.4.0" 736 | } 737 | }, 738 | "babylon": { 739 | "version": "6.18.0", 740 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 741 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 742 | "dev": true 743 | }, 744 | "balanced-match": { 745 | "version": "1.0.0", 746 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 747 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 748 | "dev": true 749 | }, 750 | "binary-extensions": { 751 | "version": "1.11.0", 752 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", 753 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", 754 | "dev": true 755 | }, 756 | "bluebird": { 757 | "version": "3.5.0", 758 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", 759 | "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" 760 | }, 761 | "body-parser": { 762 | "version": "1.18.2", 763 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 764 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 765 | "requires": { 766 | "bytes": "3.0.0", 767 | "content-type": "~1.0.4", 768 | "debug": "2.6.9", 769 | "depd": "~1.1.1", 770 | "http-errors": "~1.6.2", 771 | "iconv-lite": "0.4.19", 772 | "on-finished": "~2.3.0", 773 | "qs": "6.5.1", 774 | "raw-body": "2.3.2", 775 | "type-is": "~1.6.15" 776 | } 777 | }, 778 | "brace-expansion": { 779 | "version": "1.1.11", 780 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 781 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 782 | "dev": true, 783 | "requires": { 784 | "balanced-match": "^1.0.0", 785 | "concat-map": "0.0.1" 786 | } 787 | }, 788 | "braces": { 789 | "version": "1.8.5", 790 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 791 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 792 | "dev": true, 793 | "requires": { 794 | "expand-range": "^1.8.1", 795 | "preserve": "^0.2.0", 796 | "repeat-element": "^1.1.2" 797 | } 798 | }, 799 | "browserslist": { 800 | "version": "3.2.8", 801 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", 802 | "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", 803 | "dev": true, 804 | "requires": { 805 | "caniuse-lite": "^1.0.30000844", 806 | "electron-to-chromium": "^1.3.47" 807 | } 808 | }, 809 | "bson": { 810 | "version": "1.0.9", 811 | "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.9.tgz", 812 | "integrity": "sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg==" 813 | }, 814 | "bytes": { 815 | "version": "3.0.0", 816 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 817 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 818 | }, 819 | "caniuse-lite": { 820 | "version": "1.0.30000856", 821 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz", 822 | "integrity": "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==", 823 | "dev": true 824 | }, 825 | "chalk": { 826 | "version": "1.1.3", 827 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 828 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 829 | "dev": true, 830 | "requires": { 831 | "ansi-styles": "^2.2.1", 832 | "escape-string-regexp": "^1.0.2", 833 | "has-ansi": "^2.0.0", 834 | "strip-ansi": "^3.0.0", 835 | "supports-color": "^2.0.0" 836 | } 837 | }, 838 | "chokidar": { 839 | "version": "1.7.0", 840 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 841 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 842 | "dev": true, 843 | "requires": { 844 | "anymatch": "^1.3.0", 845 | "async-each": "^1.0.0", 846 | "fsevents": "^1.0.0", 847 | "glob-parent": "^2.0.0", 848 | "inherits": "^2.0.1", 849 | "is-binary-path": "^1.0.0", 850 | "is-glob": "^2.0.0", 851 | "path-is-absolute": "^1.0.0", 852 | "readdirp": "^2.0.0" 853 | } 854 | }, 855 | "commander": { 856 | "version": "2.15.1", 857 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 858 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 859 | "dev": true 860 | }, 861 | "concat-map": { 862 | "version": "0.0.1", 863 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 864 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 865 | "dev": true 866 | }, 867 | "content-disposition": { 868 | "version": "0.5.2", 869 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 870 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 871 | }, 872 | "content-type": { 873 | "version": "1.0.4", 874 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 875 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 876 | }, 877 | "convert-source-map": { 878 | "version": "1.5.1", 879 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", 880 | "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", 881 | "dev": true 882 | }, 883 | "cookie": { 884 | "version": "0.3.1", 885 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 886 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 887 | }, 888 | "cookie-signature": { 889 | "version": "1.0.6", 890 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 891 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 892 | }, 893 | "core-js": { 894 | "version": "2.5.7", 895 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", 896 | "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", 897 | "dev": true 898 | }, 899 | "core-util-is": { 900 | "version": "1.0.2", 901 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 902 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 903 | "dev": true 904 | }, 905 | "cors": { 906 | "version": "2.8.4", 907 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", 908 | "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", 909 | "requires": { 910 | "object-assign": "^4", 911 | "vary": "^1" 912 | } 913 | }, 914 | "debug": { 915 | "version": "2.6.9", 916 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 917 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 918 | "requires": { 919 | "ms": "2.0.0" 920 | } 921 | }, 922 | "depd": { 923 | "version": "1.1.2", 924 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 925 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 926 | }, 927 | "destroy": { 928 | "version": "1.0.4", 929 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 930 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 931 | }, 932 | "detect-indent": { 933 | "version": "4.0.0", 934 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 935 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 936 | "dev": true, 937 | "requires": { 938 | "repeating": "^2.0.0" 939 | } 940 | }, 941 | "ee-first": { 942 | "version": "1.1.1", 943 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 944 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 945 | }, 946 | "electron-to-chromium": { 947 | "version": "1.3.49", 948 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.49.tgz", 949 | "integrity": "sha1-ZROEsNgfB4qWY5srNpdRQbeRUAQ=", 950 | "dev": true 951 | }, 952 | "encodeurl": { 953 | "version": "1.0.2", 954 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 955 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 956 | }, 957 | "escape-html": { 958 | "version": "1.0.3", 959 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 960 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 961 | }, 962 | "escape-string-regexp": { 963 | "version": "1.0.5", 964 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 965 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 966 | "dev": true 967 | }, 968 | "esutils": { 969 | "version": "2.0.2", 970 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 971 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 972 | "dev": true 973 | }, 974 | "etag": { 975 | "version": "1.8.1", 976 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 977 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 978 | }, 979 | "expand-brackets": { 980 | "version": "0.1.5", 981 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 982 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 983 | "dev": true, 984 | "requires": { 985 | "is-posix-bracket": "^0.1.0" 986 | } 987 | }, 988 | "expand-range": { 989 | "version": "1.8.2", 990 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 991 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 992 | "dev": true, 993 | "requires": { 994 | "fill-range": "^2.1.0" 995 | } 996 | }, 997 | "express": { 998 | "version": "4.16.3", 999 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", 1000 | "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", 1001 | "requires": { 1002 | "accepts": "~1.3.5", 1003 | "array-flatten": "1.1.1", 1004 | "body-parser": "1.18.2", 1005 | "content-disposition": "0.5.2", 1006 | "content-type": "~1.0.4", 1007 | "cookie": "0.3.1", 1008 | "cookie-signature": "1.0.6", 1009 | "debug": "2.6.9", 1010 | "depd": "~1.1.2", 1011 | "encodeurl": "~1.0.2", 1012 | "escape-html": "~1.0.3", 1013 | "etag": "~1.8.1", 1014 | "finalhandler": "1.1.1", 1015 | "fresh": "0.5.2", 1016 | "merge-descriptors": "1.0.1", 1017 | "methods": "~1.1.2", 1018 | "on-finished": "~2.3.0", 1019 | "parseurl": "~1.3.2", 1020 | "path-to-regexp": "0.1.7", 1021 | "proxy-addr": "~2.0.3", 1022 | "qs": "6.5.1", 1023 | "range-parser": "~1.2.0", 1024 | "safe-buffer": "5.1.1", 1025 | "send": "0.16.2", 1026 | "serve-static": "1.13.2", 1027 | "setprototypeof": "1.1.0", 1028 | "statuses": "~1.4.0", 1029 | "type-is": "~1.6.16", 1030 | "utils-merge": "1.0.1", 1031 | "vary": "~1.1.2" 1032 | }, 1033 | "dependencies": { 1034 | "safe-buffer": { 1035 | "version": "5.1.1", 1036 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1037 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 1038 | } 1039 | } 1040 | }, 1041 | "extglob": { 1042 | "version": "0.3.2", 1043 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 1044 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 1045 | "dev": true, 1046 | "requires": { 1047 | "is-extglob": "^1.0.0" 1048 | } 1049 | }, 1050 | "filename-regex": { 1051 | "version": "2.0.1", 1052 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 1053 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 1054 | "dev": true 1055 | }, 1056 | "fill-range": { 1057 | "version": "2.2.4", 1058 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", 1059 | "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", 1060 | "dev": true, 1061 | "requires": { 1062 | "is-number": "^2.1.0", 1063 | "isobject": "^2.0.0", 1064 | "randomatic": "^3.0.0", 1065 | "repeat-element": "^1.1.2", 1066 | "repeat-string": "^1.5.2" 1067 | } 1068 | }, 1069 | "finalhandler": { 1070 | "version": "1.1.1", 1071 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", 1072 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 1073 | "requires": { 1074 | "debug": "2.6.9", 1075 | "encodeurl": "~1.0.2", 1076 | "escape-html": "~1.0.3", 1077 | "on-finished": "~2.3.0", 1078 | "parseurl": "~1.3.2", 1079 | "statuses": "~1.4.0", 1080 | "unpipe": "~1.0.0" 1081 | } 1082 | }, 1083 | "for-in": { 1084 | "version": "1.0.2", 1085 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1086 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1087 | "dev": true 1088 | }, 1089 | "for-own": { 1090 | "version": "0.1.5", 1091 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1092 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 1093 | "dev": true, 1094 | "requires": { 1095 | "for-in": "^1.0.1" 1096 | } 1097 | }, 1098 | "forwarded": { 1099 | "version": "0.1.2", 1100 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1101 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1102 | }, 1103 | "fresh": { 1104 | "version": "0.5.2", 1105 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1106 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1107 | }, 1108 | "fs-readdir-recursive": { 1109 | "version": "1.1.0", 1110 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", 1111 | "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", 1112 | "dev": true 1113 | }, 1114 | "fs.realpath": { 1115 | "version": "1.0.0", 1116 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1117 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1118 | "dev": true 1119 | }, 1120 | "fsevents": { 1121 | "version": "1.2.4", 1122 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", 1123 | "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", 1124 | "dev": true, 1125 | "optional": true, 1126 | "requires": { 1127 | "nan": "^2.9.2", 1128 | "node-pre-gyp": "^0.10.0" 1129 | }, 1130 | "dependencies": { 1131 | "abbrev": { 1132 | "version": "1.1.1", 1133 | "bundled": true, 1134 | "dev": true, 1135 | "optional": true 1136 | }, 1137 | "ansi-regex": { 1138 | "version": "2.1.1", 1139 | "bundled": true, 1140 | "dev": true 1141 | }, 1142 | "aproba": { 1143 | "version": "1.2.0", 1144 | "bundled": true, 1145 | "dev": true, 1146 | "optional": true 1147 | }, 1148 | "are-we-there-yet": { 1149 | "version": "1.1.4", 1150 | "bundled": true, 1151 | "dev": true, 1152 | "optional": true, 1153 | "requires": { 1154 | "delegates": "^1.0.0", 1155 | "readable-stream": "^2.0.6" 1156 | } 1157 | }, 1158 | "balanced-match": { 1159 | "version": "1.0.0", 1160 | "bundled": true, 1161 | "dev": true 1162 | }, 1163 | "brace-expansion": { 1164 | "version": "1.1.11", 1165 | "bundled": true, 1166 | "dev": true, 1167 | "requires": { 1168 | "balanced-match": "^1.0.0", 1169 | "concat-map": "0.0.1" 1170 | } 1171 | }, 1172 | "chownr": { 1173 | "version": "1.0.1", 1174 | "bundled": true, 1175 | "dev": true, 1176 | "optional": true 1177 | }, 1178 | "code-point-at": { 1179 | "version": "1.1.0", 1180 | "bundled": true, 1181 | "dev": true 1182 | }, 1183 | "concat-map": { 1184 | "version": "0.0.1", 1185 | "bundled": true, 1186 | "dev": true 1187 | }, 1188 | "console-control-strings": { 1189 | "version": "1.1.0", 1190 | "bundled": true, 1191 | "dev": true 1192 | }, 1193 | "core-util-is": { 1194 | "version": "1.0.2", 1195 | "bundled": true, 1196 | "dev": true, 1197 | "optional": true 1198 | }, 1199 | "debug": { 1200 | "version": "2.6.9", 1201 | "bundled": true, 1202 | "dev": true, 1203 | "optional": true, 1204 | "requires": { 1205 | "ms": "2.0.0" 1206 | } 1207 | }, 1208 | "deep-extend": { 1209 | "version": "0.5.1", 1210 | "bundled": true, 1211 | "dev": true, 1212 | "optional": true 1213 | }, 1214 | "delegates": { 1215 | "version": "1.0.0", 1216 | "bundled": true, 1217 | "dev": true, 1218 | "optional": true 1219 | }, 1220 | "detect-libc": { 1221 | "version": "1.0.3", 1222 | "bundled": true, 1223 | "dev": true, 1224 | "optional": true 1225 | }, 1226 | "fs-minipass": { 1227 | "version": "1.2.5", 1228 | "bundled": true, 1229 | "dev": true, 1230 | "optional": true, 1231 | "requires": { 1232 | "minipass": "^2.2.1" 1233 | } 1234 | }, 1235 | "fs.realpath": { 1236 | "version": "1.0.0", 1237 | "bundled": true, 1238 | "dev": true, 1239 | "optional": true 1240 | }, 1241 | "gauge": { 1242 | "version": "2.7.4", 1243 | "bundled": true, 1244 | "dev": true, 1245 | "optional": true, 1246 | "requires": { 1247 | "aproba": "^1.0.3", 1248 | "console-control-strings": "^1.0.0", 1249 | "has-unicode": "^2.0.0", 1250 | "object-assign": "^4.1.0", 1251 | "signal-exit": "^3.0.0", 1252 | "string-width": "^1.0.1", 1253 | "strip-ansi": "^3.0.1", 1254 | "wide-align": "^1.1.0" 1255 | } 1256 | }, 1257 | "glob": { 1258 | "version": "7.1.2", 1259 | "bundled": true, 1260 | "dev": true, 1261 | "optional": true, 1262 | "requires": { 1263 | "fs.realpath": "^1.0.0", 1264 | "inflight": "^1.0.4", 1265 | "inherits": "2", 1266 | "minimatch": "^3.0.4", 1267 | "once": "^1.3.0", 1268 | "path-is-absolute": "^1.0.0" 1269 | } 1270 | }, 1271 | "has-unicode": { 1272 | "version": "2.0.1", 1273 | "bundled": true, 1274 | "dev": true, 1275 | "optional": true 1276 | }, 1277 | "iconv-lite": { 1278 | "version": "0.4.21", 1279 | "bundled": true, 1280 | "dev": true, 1281 | "optional": true, 1282 | "requires": { 1283 | "safer-buffer": "^2.1.0" 1284 | } 1285 | }, 1286 | "ignore-walk": { 1287 | "version": "3.0.1", 1288 | "bundled": true, 1289 | "dev": true, 1290 | "optional": true, 1291 | "requires": { 1292 | "minimatch": "^3.0.4" 1293 | } 1294 | }, 1295 | "inflight": { 1296 | "version": "1.0.6", 1297 | "bundled": true, 1298 | "dev": true, 1299 | "optional": true, 1300 | "requires": { 1301 | "once": "^1.3.0", 1302 | "wrappy": "1" 1303 | } 1304 | }, 1305 | "inherits": { 1306 | "version": "2.0.3", 1307 | "bundled": true, 1308 | "dev": true 1309 | }, 1310 | "ini": { 1311 | "version": "1.3.5", 1312 | "bundled": true, 1313 | "dev": true, 1314 | "optional": true 1315 | }, 1316 | "is-fullwidth-code-point": { 1317 | "version": "1.0.0", 1318 | "bundled": true, 1319 | "dev": true, 1320 | "requires": { 1321 | "number-is-nan": "^1.0.0" 1322 | } 1323 | }, 1324 | "isarray": { 1325 | "version": "1.0.0", 1326 | "bundled": true, 1327 | "dev": true, 1328 | "optional": true 1329 | }, 1330 | "minimatch": { 1331 | "version": "3.0.4", 1332 | "bundled": true, 1333 | "dev": true, 1334 | "requires": { 1335 | "brace-expansion": "^1.1.7" 1336 | } 1337 | }, 1338 | "minimist": { 1339 | "version": "0.0.8", 1340 | "bundled": true, 1341 | "dev": true 1342 | }, 1343 | "minipass": { 1344 | "version": "2.2.4", 1345 | "bundled": true, 1346 | "dev": true, 1347 | "requires": { 1348 | "safe-buffer": "^5.1.1", 1349 | "yallist": "^3.0.0" 1350 | } 1351 | }, 1352 | "minizlib": { 1353 | "version": "1.1.0", 1354 | "bundled": true, 1355 | "dev": true, 1356 | "optional": true, 1357 | "requires": { 1358 | "minipass": "^2.2.1" 1359 | } 1360 | }, 1361 | "mkdirp": { 1362 | "version": "0.5.1", 1363 | "bundled": true, 1364 | "dev": true, 1365 | "requires": { 1366 | "minimist": "0.0.8" 1367 | } 1368 | }, 1369 | "ms": { 1370 | "version": "2.0.0", 1371 | "bundled": true, 1372 | "dev": true, 1373 | "optional": true 1374 | }, 1375 | "needle": { 1376 | "version": "2.2.0", 1377 | "bundled": true, 1378 | "dev": true, 1379 | "optional": true, 1380 | "requires": { 1381 | "debug": "^2.1.2", 1382 | "iconv-lite": "^0.4.4", 1383 | "sax": "^1.2.4" 1384 | } 1385 | }, 1386 | "node-pre-gyp": { 1387 | "version": "0.10.0", 1388 | "bundled": true, 1389 | "dev": true, 1390 | "optional": true, 1391 | "requires": { 1392 | "detect-libc": "^1.0.2", 1393 | "mkdirp": "^0.5.1", 1394 | "needle": "^2.2.0", 1395 | "nopt": "^4.0.1", 1396 | "npm-packlist": "^1.1.6", 1397 | "npmlog": "^4.0.2", 1398 | "rc": "^1.1.7", 1399 | "rimraf": "^2.6.1", 1400 | "semver": "^5.3.0", 1401 | "tar": "^4" 1402 | } 1403 | }, 1404 | "nopt": { 1405 | "version": "4.0.1", 1406 | "bundled": true, 1407 | "dev": true, 1408 | "optional": true, 1409 | "requires": { 1410 | "abbrev": "1", 1411 | "osenv": "^0.1.4" 1412 | } 1413 | }, 1414 | "npm-bundled": { 1415 | "version": "1.0.3", 1416 | "bundled": true, 1417 | "dev": true, 1418 | "optional": true 1419 | }, 1420 | "npm-packlist": { 1421 | "version": "1.1.10", 1422 | "bundled": true, 1423 | "dev": true, 1424 | "optional": true, 1425 | "requires": { 1426 | "ignore-walk": "^3.0.1", 1427 | "npm-bundled": "^1.0.1" 1428 | } 1429 | }, 1430 | "npmlog": { 1431 | "version": "4.1.2", 1432 | "bundled": true, 1433 | "dev": true, 1434 | "optional": true, 1435 | "requires": { 1436 | "are-we-there-yet": "~1.1.2", 1437 | "console-control-strings": "~1.1.0", 1438 | "gauge": "~2.7.3", 1439 | "set-blocking": "~2.0.0" 1440 | } 1441 | }, 1442 | "number-is-nan": { 1443 | "version": "1.0.1", 1444 | "bundled": true, 1445 | "dev": true 1446 | }, 1447 | "object-assign": { 1448 | "version": "4.1.1", 1449 | "bundled": true, 1450 | "dev": true, 1451 | "optional": true 1452 | }, 1453 | "once": { 1454 | "version": "1.4.0", 1455 | "bundled": true, 1456 | "dev": true, 1457 | "requires": { 1458 | "wrappy": "1" 1459 | } 1460 | }, 1461 | "os-homedir": { 1462 | "version": "1.0.2", 1463 | "bundled": true, 1464 | "dev": true, 1465 | "optional": true 1466 | }, 1467 | "os-tmpdir": { 1468 | "version": "1.0.2", 1469 | "bundled": true, 1470 | "dev": true, 1471 | "optional": true 1472 | }, 1473 | "osenv": { 1474 | "version": "0.1.5", 1475 | "bundled": true, 1476 | "dev": true, 1477 | "optional": true, 1478 | "requires": { 1479 | "os-homedir": "^1.0.0", 1480 | "os-tmpdir": "^1.0.0" 1481 | } 1482 | }, 1483 | "path-is-absolute": { 1484 | "version": "1.0.1", 1485 | "bundled": true, 1486 | "dev": true, 1487 | "optional": true 1488 | }, 1489 | "process-nextick-args": { 1490 | "version": "2.0.0", 1491 | "bundled": true, 1492 | "dev": true, 1493 | "optional": true 1494 | }, 1495 | "rc": { 1496 | "version": "1.2.7", 1497 | "bundled": true, 1498 | "dev": true, 1499 | "optional": true, 1500 | "requires": { 1501 | "deep-extend": "^0.5.1", 1502 | "ini": "~1.3.0", 1503 | "minimist": "^1.2.0", 1504 | "strip-json-comments": "~2.0.1" 1505 | }, 1506 | "dependencies": { 1507 | "minimist": { 1508 | "version": "1.2.0", 1509 | "bundled": true, 1510 | "dev": true, 1511 | "optional": true 1512 | } 1513 | } 1514 | }, 1515 | "readable-stream": { 1516 | "version": "2.3.6", 1517 | "bundled": true, 1518 | "dev": true, 1519 | "optional": true, 1520 | "requires": { 1521 | "core-util-is": "~1.0.0", 1522 | "inherits": "~2.0.3", 1523 | "isarray": "~1.0.0", 1524 | "process-nextick-args": "~2.0.0", 1525 | "safe-buffer": "~5.1.1", 1526 | "string_decoder": "~1.1.1", 1527 | "util-deprecate": "~1.0.1" 1528 | } 1529 | }, 1530 | "rimraf": { 1531 | "version": "2.6.2", 1532 | "bundled": true, 1533 | "dev": true, 1534 | "optional": true, 1535 | "requires": { 1536 | "glob": "^7.0.5" 1537 | } 1538 | }, 1539 | "safe-buffer": { 1540 | "version": "5.1.1", 1541 | "bundled": true, 1542 | "dev": true 1543 | }, 1544 | "safer-buffer": { 1545 | "version": "2.1.2", 1546 | "bundled": true, 1547 | "dev": true, 1548 | "optional": true 1549 | }, 1550 | "sax": { 1551 | "version": "1.2.4", 1552 | "bundled": true, 1553 | "dev": true, 1554 | "optional": true 1555 | }, 1556 | "semver": { 1557 | "version": "5.5.0", 1558 | "bundled": true, 1559 | "dev": true, 1560 | "optional": true 1561 | }, 1562 | "set-blocking": { 1563 | "version": "2.0.0", 1564 | "bundled": true, 1565 | "dev": true, 1566 | "optional": true 1567 | }, 1568 | "signal-exit": { 1569 | "version": "3.0.2", 1570 | "bundled": true, 1571 | "dev": true, 1572 | "optional": true 1573 | }, 1574 | "string-width": { 1575 | "version": "1.0.2", 1576 | "bundled": true, 1577 | "dev": true, 1578 | "requires": { 1579 | "code-point-at": "^1.0.0", 1580 | "is-fullwidth-code-point": "^1.0.0", 1581 | "strip-ansi": "^3.0.0" 1582 | } 1583 | }, 1584 | "string_decoder": { 1585 | "version": "1.1.1", 1586 | "bundled": true, 1587 | "dev": true, 1588 | "optional": true, 1589 | "requires": { 1590 | "safe-buffer": "~5.1.0" 1591 | } 1592 | }, 1593 | "strip-ansi": { 1594 | "version": "3.0.1", 1595 | "bundled": true, 1596 | "dev": true, 1597 | "requires": { 1598 | "ansi-regex": "^2.0.0" 1599 | } 1600 | }, 1601 | "strip-json-comments": { 1602 | "version": "2.0.1", 1603 | "bundled": true, 1604 | "dev": true, 1605 | "optional": true 1606 | }, 1607 | "tar": { 1608 | "version": "4.4.1", 1609 | "bundled": true, 1610 | "dev": true, 1611 | "optional": true, 1612 | "requires": { 1613 | "chownr": "^1.0.1", 1614 | "fs-minipass": "^1.2.5", 1615 | "minipass": "^2.2.4", 1616 | "minizlib": "^1.1.0", 1617 | "mkdirp": "^0.5.0", 1618 | "safe-buffer": "^5.1.1", 1619 | "yallist": "^3.0.2" 1620 | } 1621 | }, 1622 | "util-deprecate": { 1623 | "version": "1.0.2", 1624 | "bundled": true, 1625 | "dev": true, 1626 | "optional": true 1627 | }, 1628 | "wide-align": { 1629 | "version": "1.1.2", 1630 | "bundled": true, 1631 | "dev": true, 1632 | "optional": true, 1633 | "requires": { 1634 | "string-width": "^1.0.2" 1635 | } 1636 | }, 1637 | "wrappy": { 1638 | "version": "1.0.2", 1639 | "bundled": true, 1640 | "dev": true 1641 | }, 1642 | "yallist": { 1643 | "version": "3.0.2", 1644 | "bundled": true, 1645 | "dev": true 1646 | } 1647 | } 1648 | }, 1649 | "glob": { 1650 | "version": "7.1.2", 1651 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1652 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1653 | "dev": true, 1654 | "requires": { 1655 | "fs.realpath": "^1.0.0", 1656 | "inflight": "^1.0.4", 1657 | "inherits": "2", 1658 | "minimatch": "^3.0.4", 1659 | "once": "^1.3.0", 1660 | "path-is-absolute": "^1.0.0" 1661 | } 1662 | }, 1663 | "glob-base": { 1664 | "version": "0.3.0", 1665 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1666 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1667 | "dev": true, 1668 | "requires": { 1669 | "glob-parent": "^2.0.0", 1670 | "is-glob": "^2.0.0" 1671 | } 1672 | }, 1673 | "glob-parent": { 1674 | "version": "2.0.0", 1675 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1676 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1677 | "dev": true, 1678 | "requires": { 1679 | "is-glob": "^2.0.0" 1680 | } 1681 | }, 1682 | "globals": { 1683 | "version": "9.18.0", 1684 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 1685 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 1686 | "dev": true 1687 | }, 1688 | "graceful-fs": { 1689 | "version": "4.1.11", 1690 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1691 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1692 | "dev": true 1693 | }, 1694 | "has-ansi": { 1695 | "version": "2.0.0", 1696 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 1697 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 1698 | "dev": true, 1699 | "requires": { 1700 | "ansi-regex": "^2.0.0" 1701 | } 1702 | }, 1703 | "home-or-tmp": { 1704 | "version": "2.0.0", 1705 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 1706 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 1707 | "dev": true, 1708 | "requires": { 1709 | "os-homedir": "^1.0.0", 1710 | "os-tmpdir": "^1.0.1" 1711 | } 1712 | }, 1713 | "http-errors": { 1714 | "version": "1.6.3", 1715 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1716 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1717 | "requires": { 1718 | "depd": "~1.1.2", 1719 | "inherits": "2.0.3", 1720 | "setprototypeof": "1.1.0", 1721 | "statuses": ">= 1.4.0 < 2" 1722 | } 1723 | }, 1724 | "iconv-lite": { 1725 | "version": "0.4.19", 1726 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 1727 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 1728 | }, 1729 | "inflight": { 1730 | "version": "1.0.6", 1731 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1732 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1733 | "dev": true, 1734 | "requires": { 1735 | "once": "^1.3.0", 1736 | "wrappy": "1" 1737 | } 1738 | }, 1739 | "inherits": { 1740 | "version": "2.0.3", 1741 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1742 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1743 | }, 1744 | "invariant": { 1745 | "version": "2.2.4", 1746 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1747 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1748 | "dev": true, 1749 | "requires": { 1750 | "loose-envify": "^1.0.0" 1751 | } 1752 | }, 1753 | "ipaddr.js": { 1754 | "version": "1.6.0", 1755 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", 1756 | "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" 1757 | }, 1758 | "is-binary-path": { 1759 | "version": "1.0.1", 1760 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1761 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1762 | "dev": true, 1763 | "requires": { 1764 | "binary-extensions": "^1.0.0" 1765 | } 1766 | }, 1767 | "is-buffer": { 1768 | "version": "1.1.6", 1769 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1770 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1771 | "dev": true 1772 | }, 1773 | "is-dotfile": { 1774 | "version": "1.0.3", 1775 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1776 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1777 | "dev": true 1778 | }, 1779 | "is-equal-shallow": { 1780 | "version": "0.1.3", 1781 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1782 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1783 | "dev": true, 1784 | "requires": { 1785 | "is-primitive": "^2.0.0" 1786 | } 1787 | }, 1788 | "is-extendable": { 1789 | "version": "0.1.1", 1790 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1791 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1792 | "dev": true 1793 | }, 1794 | "is-extglob": { 1795 | "version": "1.0.0", 1796 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1797 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1798 | "dev": true 1799 | }, 1800 | "is-finite": { 1801 | "version": "1.0.2", 1802 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1803 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1804 | "dev": true, 1805 | "requires": { 1806 | "number-is-nan": "^1.0.0" 1807 | } 1808 | }, 1809 | "is-glob": { 1810 | "version": "2.0.1", 1811 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1812 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1813 | "dev": true, 1814 | "requires": { 1815 | "is-extglob": "^1.0.0" 1816 | } 1817 | }, 1818 | "is-number": { 1819 | "version": "2.1.0", 1820 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1821 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1822 | "dev": true, 1823 | "requires": { 1824 | "kind-of": "^3.0.2" 1825 | } 1826 | }, 1827 | "is-posix-bracket": { 1828 | "version": "0.1.1", 1829 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1830 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1831 | "dev": true 1832 | }, 1833 | "is-primitive": { 1834 | "version": "2.0.0", 1835 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1836 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1837 | "dev": true 1838 | }, 1839 | "isarray": { 1840 | "version": "1.0.0", 1841 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1842 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1843 | "dev": true 1844 | }, 1845 | "isobject": { 1846 | "version": "2.1.0", 1847 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1848 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1849 | "dev": true, 1850 | "requires": { 1851 | "isarray": "1.0.0" 1852 | } 1853 | }, 1854 | "js-tokens": { 1855 | "version": "3.0.2", 1856 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1857 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 1858 | "dev": true 1859 | }, 1860 | "jsesc": { 1861 | "version": "1.3.0", 1862 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 1863 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 1864 | "dev": true 1865 | }, 1866 | "json5": { 1867 | "version": "0.5.1", 1868 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 1869 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 1870 | "dev": true 1871 | }, 1872 | "kareem": { 1873 | "version": "2.2.1", 1874 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.2.1.tgz", 1875 | "integrity": "sha512-xpDFy8OxkFM+vK6pXy6JmH92ibeEFUuDWzas5M9L7MzVmHW3jzwAHxodCPV/BYkf4A31bVDLyonrMfp9RXb/oA==" 1876 | }, 1877 | "kind-of": { 1878 | "version": "3.2.2", 1879 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1880 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1881 | "dev": true, 1882 | "requires": { 1883 | "is-buffer": "^1.1.5" 1884 | } 1885 | }, 1886 | "lodash": { 1887 | "version": "4.17.10", 1888 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 1889 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" 1890 | }, 1891 | "lodash.get": { 1892 | "version": "4.4.2", 1893 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 1894 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" 1895 | }, 1896 | "loose-envify": { 1897 | "version": "1.3.1", 1898 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 1899 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 1900 | "dev": true, 1901 | "requires": { 1902 | "js-tokens": "^3.0.0" 1903 | } 1904 | }, 1905 | "math-random": { 1906 | "version": "1.0.1", 1907 | "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", 1908 | "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", 1909 | "dev": true 1910 | }, 1911 | "media-typer": { 1912 | "version": "0.3.0", 1913 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1914 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1915 | }, 1916 | "merge-descriptors": { 1917 | "version": "1.0.1", 1918 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1919 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1920 | }, 1921 | "methods": { 1922 | "version": "1.1.2", 1923 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1924 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1925 | }, 1926 | "micromatch": { 1927 | "version": "2.3.11", 1928 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 1929 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 1930 | "dev": true, 1931 | "requires": { 1932 | "arr-diff": "^2.0.0", 1933 | "array-unique": "^0.2.1", 1934 | "braces": "^1.8.2", 1935 | "expand-brackets": "^0.1.4", 1936 | "extglob": "^0.3.1", 1937 | "filename-regex": "^2.0.0", 1938 | "is-extglob": "^1.0.0", 1939 | "is-glob": "^2.0.1", 1940 | "kind-of": "^3.0.2", 1941 | "normalize-path": "^2.0.1", 1942 | "object.omit": "^2.0.0", 1943 | "parse-glob": "^3.0.4", 1944 | "regex-cache": "^0.4.2" 1945 | } 1946 | }, 1947 | "mime": { 1948 | "version": "1.4.1", 1949 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 1950 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 1951 | }, 1952 | "mime-db": { 1953 | "version": "1.33.0", 1954 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 1955 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 1956 | }, 1957 | "mime-types": { 1958 | "version": "2.1.18", 1959 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 1960 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 1961 | "requires": { 1962 | "mime-db": "~1.33.0" 1963 | } 1964 | }, 1965 | "minimatch": { 1966 | "version": "3.0.4", 1967 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1968 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1969 | "dev": true, 1970 | "requires": { 1971 | "brace-expansion": "^1.1.7" 1972 | } 1973 | }, 1974 | "minimist": { 1975 | "version": "0.0.8", 1976 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1977 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1978 | "dev": true 1979 | }, 1980 | "mkdirp": { 1981 | "version": "0.5.1", 1982 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1983 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1984 | "dev": true, 1985 | "requires": { 1986 | "minimist": "0.0.8" 1987 | } 1988 | }, 1989 | "mongodb": { 1990 | "version": "3.0.10", 1991 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.10.tgz", 1992 | "integrity": "sha512-jy9s4FgcM4rl8sHNETYHGeWcuRh9AlwQCUuMiTj041t/HD02HwyFgmm2VZdd9/mA9YNHaUJLqj0tzBx2QFivtg==", 1993 | "requires": { 1994 | "mongodb-core": "3.0.9" 1995 | } 1996 | }, 1997 | "mongodb-core": { 1998 | "version": "3.0.9", 1999 | "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.9.tgz", 2000 | "integrity": "sha512-buOWjdLLBlEqjHDeHYSXqXx173wHMVp7bafhdHxSjxWdB9V6Ri4myTqxjYZwL/eGFZxvd8oRQSuhwuIDbaaB+g==", 2001 | "requires": { 2002 | "bson": "~1.0.4", 2003 | "require_optional": "^1.0.1" 2004 | } 2005 | }, 2006 | "mongoose": { 2007 | "version": "5.1.6", 2008 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.1.6.tgz", 2009 | "integrity": "sha512-p8p/3Z2kfXViqawN1TV+cZ8XbHz6SsllkytKTog+CDWfCNObyGraHQlUuRv/9aYPNKiZfq6WWITgLpJLZW/o/A==", 2010 | "requires": { 2011 | "async": "2.6.1", 2012 | "bson": "~1.0.5", 2013 | "kareem": "2.2.1", 2014 | "lodash.get": "4.4.2", 2015 | "mongodb": "3.0.10", 2016 | "mongoose-legacy-pluralize": "1.0.2", 2017 | "mpath": "0.4.1", 2018 | "mquery": "3.0.0", 2019 | "ms": "2.0.0", 2020 | "regexp-clone": "0.0.1", 2021 | "sliced": "1.0.1" 2022 | } 2023 | }, 2024 | "mongoose-legacy-pluralize": { 2025 | "version": "1.0.2", 2026 | "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", 2027 | "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" 2028 | }, 2029 | "mpath": { 2030 | "version": "0.4.1", 2031 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.4.1.tgz", 2032 | "integrity": "sha512-NNY/MpBkALb9jJmjpBlIi6GRoLveLUM0pJzgbp9vY9F7IQEb/HREC/nxrixechcQwd1NevOhJnWWV8QQQRE+OA==" 2033 | }, 2034 | "mquery": { 2035 | "version": "3.0.0", 2036 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz", 2037 | "integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==", 2038 | "requires": { 2039 | "bluebird": "3.5.0", 2040 | "debug": "2.6.9", 2041 | "regexp-clone": "0.0.1", 2042 | "sliced": "0.0.5" 2043 | }, 2044 | "dependencies": { 2045 | "sliced": { 2046 | "version": "0.0.5", 2047 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", 2048 | "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=" 2049 | } 2050 | } 2051 | }, 2052 | "ms": { 2053 | "version": "2.0.0", 2054 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2055 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2056 | }, 2057 | "nan": { 2058 | "version": "2.10.0", 2059 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 2060 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", 2061 | "dev": true, 2062 | "optional": true 2063 | }, 2064 | "negotiator": { 2065 | "version": "0.6.1", 2066 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 2067 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 2068 | }, 2069 | "normalize-path": { 2070 | "version": "2.1.1", 2071 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2072 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2073 | "dev": true, 2074 | "requires": { 2075 | "remove-trailing-separator": "^1.0.1" 2076 | } 2077 | }, 2078 | "number-is-nan": { 2079 | "version": "1.0.1", 2080 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2081 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2082 | "dev": true 2083 | }, 2084 | "object-assign": { 2085 | "version": "4.1.1", 2086 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2087 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2088 | }, 2089 | "object.omit": { 2090 | "version": "2.0.1", 2091 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 2092 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2093 | "dev": true, 2094 | "requires": { 2095 | "for-own": "^0.1.4", 2096 | "is-extendable": "^0.1.1" 2097 | } 2098 | }, 2099 | "on-finished": { 2100 | "version": "2.3.0", 2101 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2102 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2103 | "requires": { 2104 | "ee-first": "1.1.1" 2105 | } 2106 | }, 2107 | "once": { 2108 | "version": "1.4.0", 2109 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2110 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2111 | "dev": true, 2112 | "requires": { 2113 | "wrappy": "1" 2114 | } 2115 | }, 2116 | "os-homedir": { 2117 | "version": "1.0.2", 2118 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 2119 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 2120 | "dev": true 2121 | }, 2122 | "os-tmpdir": { 2123 | "version": "1.0.2", 2124 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2125 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2126 | "dev": true 2127 | }, 2128 | "output-file-sync": { 2129 | "version": "1.1.2", 2130 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", 2131 | "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", 2132 | "dev": true, 2133 | "requires": { 2134 | "graceful-fs": "^4.1.4", 2135 | "mkdirp": "^0.5.1", 2136 | "object-assign": "^4.1.0" 2137 | } 2138 | }, 2139 | "parse-glob": { 2140 | "version": "3.0.4", 2141 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2142 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2143 | "dev": true, 2144 | "requires": { 2145 | "glob-base": "^0.3.0", 2146 | "is-dotfile": "^1.0.0", 2147 | "is-extglob": "^1.0.0", 2148 | "is-glob": "^2.0.0" 2149 | } 2150 | }, 2151 | "parseurl": { 2152 | "version": "1.3.2", 2153 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 2154 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 2155 | }, 2156 | "path-is-absolute": { 2157 | "version": "1.0.1", 2158 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2159 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2160 | "dev": true 2161 | }, 2162 | "path-to-regexp": { 2163 | "version": "0.1.7", 2164 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2165 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2166 | }, 2167 | "preserve": { 2168 | "version": "0.2.0", 2169 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2170 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2171 | "dev": true 2172 | }, 2173 | "private": { 2174 | "version": "0.1.8", 2175 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2176 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 2177 | "dev": true 2178 | }, 2179 | "process-nextick-args": { 2180 | "version": "2.0.0", 2181 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2182 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2183 | "dev": true 2184 | }, 2185 | "proxy-addr": { 2186 | "version": "2.0.3", 2187 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", 2188 | "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", 2189 | "requires": { 2190 | "forwarded": "~0.1.2", 2191 | "ipaddr.js": "1.6.0" 2192 | } 2193 | }, 2194 | "qs": { 2195 | "version": "6.5.1", 2196 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 2197 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 2198 | }, 2199 | "randomatic": { 2200 | "version": "3.0.0", 2201 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", 2202 | "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", 2203 | "dev": true, 2204 | "requires": { 2205 | "is-number": "^4.0.0", 2206 | "kind-of": "^6.0.0", 2207 | "math-random": "^1.0.1" 2208 | }, 2209 | "dependencies": { 2210 | "is-number": { 2211 | "version": "4.0.0", 2212 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 2213 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", 2214 | "dev": true 2215 | }, 2216 | "kind-of": { 2217 | "version": "6.0.2", 2218 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 2219 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 2220 | "dev": true 2221 | } 2222 | } 2223 | }, 2224 | "range-parser": { 2225 | "version": "1.2.0", 2226 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 2227 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 2228 | }, 2229 | "raw-body": { 2230 | "version": "2.3.2", 2231 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 2232 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 2233 | "requires": { 2234 | "bytes": "3.0.0", 2235 | "http-errors": "1.6.2", 2236 | "iconv-lite": "0.4.19", 2237 | "unpipe": "1.0.0" 2238 | }, 2239 | "dependencies": { 2240 | "depd": { 2241 | "version": "1.1.1", 2242 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 2243 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 2244 | }, 2245 | "http-errors": { 2246 | "version": "1.6.2", 2247 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 2248 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 2249 | "requires": { 2250 | "depd": "1.1.1", 2251 | "inherits": "2.0.3", 2252 | "setprototypeof": "1.0.3", 2253 | "statuses": ">= 1.3.1 < 2" 2254 | } 2255 | }, 2256 | "setprototypeof": { 2257 | "version": "1.0.3", 2258 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 2259 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 2260 | } 2261 | } 2262 | }, 2263 | "readable-stream": { 2264 | "version": "2.3.6", 2265 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2266 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2267 | "dev": true, 2268 | "requires": { 2269 | "core-util-is": "~1.0.0", 2270 | "inherits": "~2.0.3", 2271 | "isarray": "~1.0.0", 2272 | "process-nextick-args": "~2.0.0", 2273 | "safe-buffer": "~5.1.1", 2274 | "string_decoder": "~1.1.1", 2275 | "util-deprecate": "~1.0.1" 2276 | } 2277 | }, 2278 | "readdirp": { 2279 | "version": "2.1.0", 2280 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 2281 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2282 | "dev": true, 2283 | "requires": { 2284 | "graceful-fs": "^4.1.2", 2285 | "minimatch": "^3.0.2", 2286 | "readable-stream": "^2.0.2", 2287 | "set-immediate-shim": "^1.0.1" 2288 | } 2289 | }, 2290 | "regenerate": { 2291 | "version": "1.4.0", 2292 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 2293 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 2294 | "dev": true 2295 | }, 2296 | "regenerator-runtime": { 2297 | "version": "0.11.1", 2298 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 2299 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", 2300 | "dev": true 2301 | }, 2302 | "regenerator-transform": { 2303 | "version": "0.10.1", 2304 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", 2305 | "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", 2306 | "dev": true, 2307 | "requires": { 2308 | "babel-runtime": "^6.18.0", 2309 | "babel-types": "^6.19.0", 2310 | "private": "^0.1.6" 2311 | } 2312 | }, 2313 | "regex-cache": { 2314 | "version": "0.4.4", 2315 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 2316 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 2317 | "dev": true, 2318 | "requires": { 2319 | "is-equal-shallow": "^0.1.3" 2320 | } 2321 | }, 2322 | "regexp-clone": { 2323 | "version": "0.0.1", 2324 | "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", 2325 | "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" 2326 | }, 2327 | "regexpu-core": { 2328 | "version": "2.0.0", 2329 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 2330 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 2331 | "dev": true, 2332 | "requires": { 2333 | "regenerate": "^1.2.1", 2334 | "regjsgen": "^0.2.0", 2335 | "regjsparser": "^0.1.4" 2336 | } 2337 | }, 2338 | "regjsgen": { 2339 | "version": "0.2.0", 2340 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 2341 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 2342 | "dev": true 2343 | }, 2344 | "regjsparser": { 2345 | "version": "0.1.5", 2346 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 2347 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 2348 | "dev": true, 2349 | "requires": { 2350 | "jsesc": "~0.5.0" 2351 | }, 2352 | "dependencies": { 2353 | "jsesc": { 2354 | "version": "0.5.0", 2355 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 2356 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 2357 | "dev": true 2358 | } 2359 | } 2360 | }, 2361 | "remove-trailing-separator": { 2362 | "version": "1.1.0", 2363 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2364 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2365 | "dev": true 2366 | }, 2367 | "repeat-element": { 2368 | "version": "1.1.2", 2369 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2370 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2371 | "dev": true 2372 | }, 2373 | "repeat-string": { 2374 | "version": "1.6.1", 2375 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2376 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2377 | "dev": true 2378 | }, 2379 | "repeating": { 2380 | "version": "2.0.1", 2381 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 2382 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 2383 | "dev": true, 2384 | "requires": { 2385 | "is-finite": "^1.0.0" 2386 | } 2387 | }, 2388 | "require_optional": { 2389 | "version": "1.0.1", 2390 | "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", 2391 | "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", 2392 | "requires": { 2393 | "resolve-from": "^2.0.0", 2394 | "semver": "^5.1.0" 2395 | } 2396 | }, 2397 | "resolve-from": { 2398 | "version": "2.0.0", 2399 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", 2400 | "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" 2401 | }, 2402 | "safe-buffer": { 2403 | "version": "5.1.2", 2404 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2405 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2406 | "dev": true 2407 | }, 2408 | "semver": { 2409 | "version": "5.5.0", 2410 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 2411 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" 2412 | }, 2413 | "send": { 2414 | "version": "0.16.2", 2415 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 2416 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 2417 | "requires": { 2418 | "debug": "2.6.9", 2419 | "depd": "~1.1.2", 2420 | "destroy": "~1.0.4", 2421 | "encodeurl": "~1.0.2", 2422 | "escape-html": "~1.0.3", 2423 | "etag": "~1.8.1", 2424 | "fresh": "0.5.2", 2425 | "http-errors": "~1.6.2", 2426 | "mime": "1.4.1", 2427 | "ms": "2.0.0", 2428 | "on-finished": "~2.3.0", 2429 | "range-parser": "~1.2.0", 2430 | "statuses": "~1.4.0" 2431 | } 2432 | }, 2433 | "serve-static": { 2434 | "version": "1.13.2", 2435 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 2436 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 2437 | "requires": { 2438 | "encodeurl": "~1.0.2", 2439 | "escape-html": "~1.0.3", 2440 | "parseurl": "~1.3.2", 2441 | "send": "0.16.2" 2442 | } 2443 | }, 2444 | "set-immediate-shim": { 2445 | "version": "1.0.1", 2446 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2447 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 2448 | "dev": true 2449 | }, 2450 | "setprototypeof": { 2451 | "version": "1.1.0", 2452 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 2453 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 2454 | }, 2455 | "slash": { 2456 | "version": "1.0.0", 2457 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 2458 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 2459 | "dev": true 2460 | }, 2461 | "sliced": { 2462 | "version": "1.0.1", 2463 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", 2464 | "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" 2465 | }, 2466 | "source-map": { 2467 | "version": "0.5.7", 2468 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2469 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2470 | "dev": true 2471 | }, 2472 | "source-map-support": { 2473 | "version": "0.4.18", 2474 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 2475 | "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", 2476 | "dev": true, 2477 | "requires": { 2478 | "source-map": "^0.5.6" 2479 | } 2480 | }, 2481 | "statuses": { 2482 | "version": "1.4.0", 2483 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 2484 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 2485 | }, 2486 | "string_decoder": { 2487 | "version": "1.1.1", 2488 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2489 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2490 | "dev": true, 2491 | "requires": { 2492 | "safe-buffer": "~5.1.0" 2493 | } 2494 | }, 2495 | "strip-ansi": { 2496 | "version": "3.0.1", 2497 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2498 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2499 | "dev": true, 2500 | "requires": { 2501 | "ansi-regex": "^2.0.0" 2502 | } 2503 | }, 2504 | "supports-color": { 2505 | "version": "2.0.0", 2506 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2507 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2508 | "dev": true 2509 | }, 2510 | "to-fast-properties": { 2511 | "version": "1.0.3", 2512 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 2513 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 2514 | "dev": true 2515 | }, 2516 | "trim-right": { 2517 | "version": "1.0.1", 2518 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 2519 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 2520 | "dev": true 2521 | }, 2522 | "type-is": { 2523 | "version": "1.6.16", 2524 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 2525 | "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", 2526 | "requires": { 2527 | "media-typer": "0.3.0", 2528 | "mime-types": "~2.1.18" 2529 | } 2530 | }, 2531 | "unpipe": { 2532 | "version": "1.0.0", 2533 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2534 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2535 | }, 2536 | "user-home": { 2537 | "version": "1.1.1", 2538 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 2539 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 2540 | "dev": true 2541 | }, 2542 | "util-deprecate": { 2543 | "version": "1.0.2", 2544 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2545 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2546 | "dev": true 2547 | }, 2548 | "utils-merge": { 2549 | "version": "1.0.1", 2550 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2551 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2552 | }, 2553 | "v8flags": { 2554 | "version": "2.1.1", 2555 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 2556 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 2557 | "dev": true, 2558 | "requires": { 2559 | "user-home": "^1.1.1" 2560 | } 2561 | }, 2562 | "vary": { 2563 | "version": "1.1.2", 2564 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2565 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2566 | }, 2567 | "wrappy": { 2568 | "version": "1.0.2", 2569 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2570 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2571 | "dev": true 2572 | } 2573 | } 2574 | } 2575 | -------------------------------------------------------------------------------- /backend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "dev": "babel-watch server.js" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "babel-cli": "^6.26.0", 15 | "babel-preset-env": "^1.7.0", 16 | "babel-watch": "^2.0.7" 17 | }, 18 | "dependencies": { 19 | "cors": "^2.8.4", 20 | "express": "^4.16.3", 21 | "mongoose": "^5.1.6" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /backend/server.js: -------------------------------------------------------------------------------- 1 | import express from 'express'; 2 | import cors from 'cors'; 3 | import bodyParser from 'body-parser'; 4 | import mongoose from 'mongoose'; 5 | 6 | import Issue from './models/Issue'; 7 | 8 | const app = express(); 9 | const router = express.Router(); 10 | 11 | app.use(cors()); 12 | app.use(bodyParser.json()); 13 | 14 | mongoose.connect('mongodb://localhost:27017/issues'); 15 | 16 | const connection = mongoose.connection; 17 | 18 | connection.once('open', () => { 19 | console.log('MongoDB database connection established successfully!'); 20 | }); 21 | 22 | router.route('/issues').get((req, res) => { 23 | Issue.find((err, issues) => { 24 | if (err) 25 | console.log(err); 26 | else 27 | res.json(issues); 28 | }); 29 | }); 30 | 31 | router.route('/issues/:id').get((req, res) => { 32 | Issue.findById(req.params.id, (err, issue) => { 33 | if (err) 34 | console.log(err); 35 | else 36 | res.json(issue); 37 | }); 38 | }); 39 | 40 | router.route('/issues/add').post((req, res) => { 41 | let issue = new Issue(req.body); 42 | issue.save() 43 | .then(issue => { 44 | res.status(200).json({'issue': 'Added successfully'}); 45 | }) 46 | .catch(err => { 47 | res.status(400).send('Failed to create new record'); 48 | }); 49 | }); 50 | 51 | router.route('/issues/update/:id').post((req, res) => { 52 | Issue.findById(req.params.id, (err, issue) => { 53 | if (!issue) 54 | return next(new Error('Could not load document')); 55 | else { 56 | issue.title = req.body.title; 57 | issue.responsible = req.body.responsible; 58 | issue.description = req.body.description; 59 | issue.severity = req.body.severity; 60 | issue.status = req.body.status; 61 | 62 | issue.save().then(issue => { 63 | res.json('Update done'); 64 | }).catch(err => { 65 | res.status(400).send('Update failed'); 66 | }); 67 | } 68 | }); 69 | }); 70 | 71 | router.route('/issues/delete/:id').get((req, res) => { 72 | Issue.findByIdAndRemove({_id: req.params.id}, (err, issue) => { 73 | if (err) 74 | res.json(err); 75 | else 76 | res.json('Remove successfully'); 77 | }) 78 | }) 79 | 80 | app.use('/', router); 81 | 82 | app.listen(4000, () => console.log('Express server running on port 4000')); -------------------------------------------------------------------------------- /frontend/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /frontend/README.md: -------------------------------------------------------------------------------- 1 | # Frontend 2 | 3 | This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.0. 4 | 5 | ## Development server 6 | 7 | Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. 8 | 9 | ## Code scaffolding 10 | 11 | Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. 12 | 13 | ## Build 14 | 15 | Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. 16 | 17 | ## Running unit tests 18 | 19 | Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). 20 | 21 | ## Running end-to-end tests 22 | 23 | Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). 24 | 25 | ## Further help 26 | 27 | To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). 28 | -------------------------------------------------------------------------------- /frontend/angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "frontend": { 7 | "root": "", 8 | "sourceRoot": "src", 9 | "projectType": "application", 10 | "prefix": "app", 11 | "schematics": {}, 12 | "architect": { 13 | "build": { 14 | "builder": "@angular-devkit/build-angular:browser", 15 | "options": { 16 | "outputPath": "dist/frontend", 17 | "index": "src/index.html", 18 | "main": "src/main.ts", 19 | "polyfills": "src/polyfills.ts", 20 | "tsConfig": "src/tsconfig.app.json", 21 | "assets": [ 22 | "src/favicon.ico", 23 | "src/assets" 24 | ], 25 | "styles": [ 26 | { 27 | "input": "node_modules/@angular/material/prebuilt-themes/indigo-pink.css" 28 | }, 29 | "src/styles.css" 30 | ], 31 | "scripts": [] 32 | }, 33 | "configurations": { 34 | "production": { 35 | "fileReplacements": [ 36 | { 37 | "replace": "src/environments/environment.ts", 38 | "with": "src/environments/environment.prod.ts" 39 | } 40 | ], 41 | "optimization": true, 42 | "outputHashing": "all", 43 | "sourceMap": false, 44 | "extractCss": true, 45 | "namedChunks": false, 46 | "aot": true, 47 | "extractLicenses": true, 48 | "vendorChunk": false, 49 | "buildOptimizer": true 50 | } 51 | } 52 | }, 53 | "serve": { 54 | "builder": "@angular-devkit/build-angular:dev-server", 55 | "options": { 56 | "browserTarget": "frontend:build" 57 | }, 58 | "configurations": { 59 | "production": { 60 | "browserTarget": "frontend:build:production" 61 | } 62 | } 63 | }, 64 | "extract-i18n": { 65 | "builder": "@angular-devkit/build-angular:extract-i18n", 66 | "options": { 67 | "browserTarget": "frontend:build" 68 | } 69 | }, 70 | "test": { 71 | "builder": "@angular-devkit/build-angular:karma", 72 | "options": { 73 | "main": "src/test.ts", 74 | "polyfills": "src/polyfills.ts", 75 | "tsConfig": "src/tsconfig.spec.json", 76 | "karmaConfig": "src/karma.conf.js", 77 | "styles": [ 78 | { 79 | "input": "node_modules/@angular/material/prebuilt-themes/indigo-pink.css" 80 | }, 81 | "styles.css" 82 | ], 83 | "scripts": [], 84 | "assets": [ 85 | "src/favicon.ico", 86 | "src/assets" 87 | ] 88 | } 89 | }, 90 | "lint": { 91 | "builder": "@angular-devkit/build-angular:tslint", 92 | "options": { 93 | "tsConfig": [ 94 | "src/tsconfig.app.json", 95 | "src/tsconfig.spec.json" 96 | ], 97 | "exclude": [ 98 | "**/node_modules/**" 99 | ] 100 | } 101 | } 102 | } 103 | }, 104 | "frontend-e2e": { 105 | "root": "e2e/", 106 | "projectType": "application", 107 | "architect": { 108 | "e2e": { 109 | "builder": "@angular-devkit/build-angular:protractor", 110 | "options": { 111 | "protractorConfig": "e2e/protractor.conf.js", 112 | "devServerTarget": "frontend:serve" 113 | } 114 | }, 115 | "lint": { 116 | "builder": "@angular-devkit/build-angular:tslint", 117 | "options": { 118 | "tsConfig": "e2e/tsconfig.e2e.json", 119 | "exclude": [ 120 | "**/node_modules/**" 121 | ] 122 | } 123 | } 124 | } 125 | } 126 | }, 127 | "defaultProject": "frontend" 128 | } -------------------------------------------------------------------------------- /frontend/e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: [ 9 | './src/**/*.e2e-spec.ts' 10 | ], 11 | capabilities: { 12 | 'browserName': 'chrome' 13 | }, 14 | directConnect: true, 15 | baseUrl: 'http://localhost:4200/', 16 | framework: 'jasmine', 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000, 20 | print: function() {} 21 | }, 22 | onPrepare() { 23 | require('ts-node').register({ 24 | project: require('path').join(__dirname, './tsconfig.e2e.json') 25 | }); 26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 27 | } 28 | }; -------------------------------------------------------------------------------- /frontend/e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | 3 | describe('workspace-project App', () => { 4 | let page: AppPage; 5 | 6 | beforeEach(() => { 7 | page = new AppPage(); 8 | }); 9 | 10 | it('should display welcome message', () => { 11 | page.navigateTo(); 12 | expect(page.getParagraphText()).toEqual('Welcome to app!'); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /frontend/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "ng": "ng", 6 | "start": "ng serve", 7 | "build": "ng build", 8 | "test": "ng test", 9 | "lint": "ng lint", 10 | "e2e": "ng e2e" 11 | }, 12 | "private": true, 13 | "dependencies": { 14 | "@angular/animations": "^6.0.0", 15 | "@angular/common": "^6.0.0", 16 | "@angular/compiler": "^6.0.0", 17 | "@angular/core": "^6.0.0", 18 | "@angular/forms": "^6.0.0", 19 | "@angular/http": "^6.0.0", 20 | "@angular/material": "^6.2.1", 21 | "@angular/platform-browser": "^6.0.0", 22 | "@angular/platform-browser-dynamic": "^6.0.0", 23 | "@angular/router": "^6.0.0", 24 | "core-js": "^2.5.4", 25 | "rxjs": "^6.0.0", 26 | "zone.js": "^0.8.26", 27 | "@angular/cdk": "^6.2.0" 28 | }, 29 | "devDependencies": { 30 | "@angular/compiler-cli": "^6.0.0", 31 | "@angular-devkit/build-angular": "~0.6.0", 32 | "typescript": "~2.7.2", 33 | "@angular/cli": "~6.0.0", 34 | "@angular/language-service": "^6.0.0", 35 | "@types/jasmine": "~2.8.6", 36 | "@types/jasminewd2": "~2.0.3", 37 | "@types/node": "~8.9.4", 38 | "codelyzer": "~4.2.1", 39 | "jasmine-core": "~2.99.1", 40 | "jasmine-spec-reporter": "~4.2.1", 41 | "karma": "~1.7.1", 42 | "karma-chrome-launcher": "~2.2.0", 43 | "karma-coverage-istanbul-reporter": "~1.4.2", 44 | "karma-jasmine": "~1.1.1", 45 | "karma-jasmine-html-reporter": "^0.2.2", 46 | "protractor": "~5.3.0", 47 | "ts-node": "~5.0.1", 48 | "tslint": "~5.9.1" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /frontend/src/app/app.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingthesmartway/mean-stack-angular-6-part-4/05b90183fb1faa349cb7032211cec526855e4c81/frontend/src/app/app.component.css -------------------------------------------------------------------------------- /frontend/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | Angular 6 - MEAN Stack Sample Application 3 | 4 |
5 | 6 |
7 | 8 | -------------------------------------------------------------------------------- /frontend/src/app/app.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, async } from '@angular/core/testing'; 2 | import { AppComponent } from './app.component'; 3 | describe('AppComponent', () => { 4 | beforeEach(async(() => { 5 | TestBed.configureTestingModule({ 6 | declarations: [ 7 | AppComponent 8 | ], 9 | }).compileComponents(); 10 | })); 11 | it('should create the app', async(() => { 12 | const fixture = TestBed.createComponent(AppComponent); 13 | const app = fixture.debugElement.componentInstance; 14 | expect(app).toBeTruthy(); 15 | })); 16 | it(`should have as title 'app'`, async(() => { 17 | const fixture = TestBed.createComponent(AppComponent); 18 | const app = fixture.debugElement.componentInstance; 19 | expect(app.title).toEqual('app'); 20 | })); 21 | it('should render title in a h1 tag', async(() => { 22 | const fixture = TestBed.createComponent(AppComponent); 23 | fixture.detectChanges(); 24 | const compiled = fixture.debugElement.nativeElement; 25 | expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); 26 | })); 27 | }); 28 | -------------------------------------------------------------------------------- /frontend/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'app'; 10 | } 11 | -------------------------------------------------------------------------------- /frontend/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | import { RouterModule, Routes } from '@angular/router'; 4 | import { HttpClientModule } from '@angular/common/http'; 5 | import { ReactiveFormsModule } from '@angular/forms'; 6 | 7 | import { MatToolbarModule, MatFormFieldModule, MatInputModule, MatOptionModule, MatSelectModule, MatIconModule, MatButtonModule, MatCardModule, MatTableModule, MatDividerModule, MatSnackBarModule } from '@angular/material'; 8 | 9 | import { AppComponent } from './app.component'; 10 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 11 | import { ListComponent } from './components/list/list.component'; 12 | import { CreateComponent } from './components/create/create.component'; 13 | import { EditComponent } from './components/edit/edit.component'; 14 | 15 | import { IssueService } from './issue.service'; 16 | 17 | const routes: Routes = [ 18 | { path: 'create', component: CreateComponent}, 19 | { path: 'edit/:id', component: EditComponent}, 20 | { path: 'list', component: ListComponent}, 21 | { path: '', redirectTo: 'list', pathMatch: 'full'} 22 | ]; 23 | 24 | @NgModule({ 25 | declarations: [ 26 | AppComponent, 27 | ListComponent, 28 | CreateComponent, 29 | EditComponent 30 | ], 31 | imports: [ 32 | BrowserModule, 33 | BrowserAnimationsModule, 34 | HttpClientModule, 35 | RouterModule.forRoot(routes), 36 | ReactiveFormsModule, 37 | MatToolbarModule, 38 | MatFormFieldModule, 39 | MatInputModule, 40 | MatOptionModule, 41 | MatSelectModule, 42 | MatIconModule, 43 | MatButtonModule, 44 | MatCardModule, 45 | MatTableModule, 46 | MatDividerModule, 47 | MatSnackBarModule 48 | ], 49 | providers: [IssueService], 50 | bootstrap: [AppComponent] 51 | }) 52 | export class AppModule { } 53 | -------------------------------------------------------------------------------- /frontend/src/app/components/create/create.component.css: -------------------------------------------------------------------------------- 1 | .create-form { 2 | min-width: 150px; 3 | width: 100%; 4 | } 5 | 6 | .field-full-width { 7 | width: 100%; 8 | } -------------------------------------------------------------------------------- /frontend/src/app/components/create/create.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |

Create A New Issue

6 |
7 | 8 |
9 |
10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Low 25 | Medium 26 | High 27 | 28 | 29 | 30 |

31 |   32 | 33 |
34 |
35 |
-------------------------------------------------------------------------------- /frontend/src/app/components/create/create.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { CreateComponent } from './create.component'; 4 | 5 | describe('CreateComponent', () => { 6 | let component: CreateComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CreateComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CreateComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /frontend/src/app/components/create/create.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 3 | import { Router } from '@angular/router'; 4 | import { IssueService } from '../../issue.service'; 5 | 6 | @Component({ 7 | selector: 'app-create', 8 | templateUrl: './create.component.html', 9 | styleUrls: ['./create.component.css'] 10 | }) 11 | export class CreateComponent implements OnInit { 12 | 13 | createForm: FormGroup; 14 | 15 | constructor(private issueService: IssueService, private fb: FormBuilder, private router: Router) { 16 | this.createForm = this.fb.group({ 17 | title: ['', Validators.required], 18 | responsible: '', 19 | description: '', 20 | severity: '' 21 | }); 22 | } 23 | 24 | addIssue(title, responsible, description, severity) { 25 | this.issueService.addIssue(title, responsible, description, severity).subscribe(() => { 26 | this.router.navigate(['/list']); 27 | }); 28 | } 29 | 30 | ngOnInit() { 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /frontend/src/app/components/edit/edit.component.css: -------------------------------------------------------------------------------- 1 | .edit-form { 2 | min-width: 150px; 3 | width: 100%; 4 | } 5 | 6 | .field-full-width { 7 | width: 100%; 8 | } -------------------------------------------------------------------------------- /frontend/src/app/components/edit/edit.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |

Update Issue

6 |
7 | 8 |
9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Low 22 | Medium 23 | High 24 | 25 | 26 | 27 | 28 | Open 29 | In Progress 30 | Done 31 | 32 | 33 | 34 |

35 |   36 | 37 |
38 |
39 |
40 | -------------------------------------------------------------------------------- /frontend/src/app/components/edit/edit.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { EditComponent } from './edit.component'; 4 | 5 | describe('EditComponent', () => { 6 | let component: EditComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ EditComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(EditComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /frontend/src/app/components/edit/edit.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Router, ActivatedRoute } from '@angular/router'; 3 | import { FormGroup, FormBuilder, Validators } from '@angular/forms'; 4 | 5 | import { MatSnackBar } from '@angular/material'; 6 | 7 | import { IssueService } from '../../issue.service'; 8 | import { Issue } from '../../issue.model'; 9 | 10 | @Component({ 11 | selector: 'app-edit', 12 | templateUrl: './edit.component.html', 13 | styleUrls: ['./edit.component.css'] 14 | }) 15 | export class EditComponent implements OnInit { 16 | 17 | id: String; 18 | issue: any = {}; 19 | updateForm: FormGroup; 20 | 21 | // tslint:disable-next-line:max-line-length 22 | constructor(private issueService: IssueService, private router: Router, private route: ActivatedRoute, private snackBar: MatSnackBar, private fb: FormBuilder) { 23 | this.createForm(); 24 | } 25 | 26 | createForm() { 27 | this.updateForm = this.fb.group({ 28 | title: ['', Validators.required], 29 | responsible: '', 30 | description: '', 31 | severity: '', 32 | status: '' 33 | }); 34 | } 35 | 36 | ngOnInit() { 37 | this.route.params.subscribe(params => { 38 | this.id = params.id; 39 | this.issueService.getIssueById(this.id).subscribe(res => { 40 | this.issue = res; 41 | this.updateForm.get('title').setValue(this.issue.title); 42 | this.updateForm.get('responsible').setValue(this.issue.responsible); 43 | this.updateForm.get('description').setValue(this.issue.description); 44 | this.updateForm.get('severity').setValue(this.issue.severity); 45 | this.updateForm.get('status').setValue(this.issue.status); 46 | }); 47 | }); 48 | } 49 | 50 | updateIssue(title, responsible, description, severity, status) { 51 | this.issueService.updateIssue(this.id, title, responsible, description, severity, status).subscribe(() => { 52 | this.snackBar.open('Issue updated successfully', 'OK', { 53 | duration: 3000 54 | }); 55 | }); 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /frontend/src/app/components/list/list.component.css: -------------------------------------------------------------------------------- 1 | table { 2 | width: 100%; 3 | } 4 | 5 | .mat-column-right { 6 | text-align: center; 7 | } -------------------------------------------------------------------------------- /frontend/src/app/components/list/list.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |

6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 35 | 36 | 37 | 38 | 39 | 40 |
Title {{element.title}} Responsible {{element.responsible}} Severity {{element.severity}} Status {{element.status}} Actions 32 | 33 | 34 |
41 |
42 |
43 | -------------------------------------------------------------------------------- /frontend/src/app/components/list/list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ListComponent } from './list.component'; 4 | 5 | describe('ListComponent', () => { 6 | let component: ListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ListComponent ] 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ListComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /frontend/src/app/components/list/list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Router } from '@angular/router'; 3 | import { MatTableDataSource } from '@angular/material'; 4 | 5 | import { Issue } from '../../issue.model'; 6 | import { IssueService } from '../../issue.service'; 7 | 8 | @Component({ 9 | selector: 'app-list', 10 | templateUrl: './list.component.html', 11 | styleUrls: ['./list.component.css'] 12 | }) 13 | export class ListComponent implements OnInit { 14 | 15 | issues: Issue[]; 16 | displayedColumns = ['title', 'responsible', 'severity', 'status', 'actions']; 17 | 18 | constructor(private issueService: IssueService, private router: Router) { } 19 | 20 | ngOnInit() { 21 | this.fetchIssues(); 22 | } 23 | 24 | fetchIssues() { 25 | this.issueService 26 | .getIssues() 27 | .subscribe((data: Issue[]) => { 28 | this.issues = data; 29 | console.log('Data requested ...'); 30 | console.log(this.issues); 31 | }); 32 | } 33 | 34 | editIssue(id) { 35 | this.router.navigate([`/edit/${id}`]); 36 | } 37 | 38 | deleteIssue(id) { 39 | this.issueService.deleteIssue(id).subscribe(() => { 40 | this.fetchIssues(); 41 | }); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /frontend/src/app/issue.model.ts: -------------------------------------------------------------------------------- 1 | export interface Issue { 2 | id: String; 3 | title: String; 4 | responsible: String; 5 | description: String; 6 | severity: String; 7 | status: String; 8 | } 9 | -------------------------------------------------------------------------------- /frontend/src/app/issue.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { IssueService } from './issue.service'; 4 | 5 | describe('IssueService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [IssueService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([IssueService], (service: IssueService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /frontend/src/app/issue.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpClient } from '@angular/common/http'; 3 | 4 | @Injectable({ 5 | providedIn: 'root' 6 | }) 7 | export class IssueService { 8 | 9 | uri = 'http://localhost:4000'; 10 | 11 | constructor(private http: HttpClient) { } 12 | 13 | getIssues() { 14 | return this.http.get(`${this.uri}/issues`); 15 | } 16 | 17 | getIssueById(id) { 18 | return this.http.get(`${this.uri}/issues/${id}`); 19 | } 20 | 21 | addIssue(title, responsible, description, severity) { 22 | const issue = { 23 | title: title, 24 | responsible: responsible, 25 | description: description, 26 | severity: severity 27 | }; 28 | return this.http.post(`${this.uri}/issues/add`, issue); 29 | } 30 | 31 | updateIssue(id, title, responsible, description, severity, status) { 32 | const issue = { 33 | title: title, 34 | responsible: responsible, 35 | description: description, 36 | severity: severity, 37 | status: status 38 | }; 39 | return this.http.post(`${this.uri}/issues/update/${id}`, issue); 40 | } 41 | 42 | deleteIssue(id) { 43 | return this.http.get(`${this.uri}/issues/delete/${id}`); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /frontend/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingthesmartway/mean-stack-angular-6-part-4/05b90183fb1faa349cb7032211cec526855e4c81/frontend/src/assets/.gitkeep -------------------------------------------------------------------------------- /frontend/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # For IE 9-11 support, please uncomment the last line of the file and adjust as needed 5 | > 0.5% 6 | last 2 versions 7 | Firefox ESR 8 | not dead 9 | # IE 9-11 -------------------------------------------------------------------------------- /frontend/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /frontend/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * In development mode, to ignore zone related error stack frames such as 11 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can 12 | * import the following file, but please comment it out in production mode 13 | * because it will have performance impact when throw error 14 | */ 15 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 16 | -------------------------------------------------------------------------------- /frontend/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codingthesmartway/mean-stack-angular-6-part-4/05b90183fb1faa349cb7032211cec526855e4c81/frontend/src/favicon.ico -------------------------------------------------------------------------------- /frontend/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Frontend 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /frontend/src/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | clearContext: false // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | coverageIstanbulReporter: { 19 | dir: require('path').join(__dirname, '../coverage'), 20 | reports: ['html', 'lcovonly'], 21 | fixWebpackSourcePaths: true 22 | }, 23 | reporters: ['progress', 'kjhtml'], 24 | port: 9876, 25 | colors: true, 26 | logLevel: config.LOG_INFO, 27 | autoWatch: true, 28 | browsers: ['Chrome'], 29 | singleRun: false 30 | }); 31 | }; -------------------------------------------------------------------------------- /frontend/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.log(err)); 13 | -------------------------------------------------------------------------------- /frontend/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ 22 | // import 'core-js/es6/symbol'; 23 | // import 'core-js/es6/object'; 24 | // import 'core-js/es6/function'; 25 | // import 'core-js/es6/parse-int'; 26 | // import 'core-js/es6/parse-float'; 27 | // import 'core-js/es6/number'; 28 | // import 'core-js/es6/math'; 29 | // import 'core-js/es6/string'; 30 | // import 'core-js/es6/date'; 31 | // import 'core-js/es6/array'; 32 | // import 'core-js/es6/regexp'; 33 | // import 'core-js/es6/map'; 34 | // import 'core-js/es6/weak-map'; 35 | // import 'core-js/es6/set'; 36 | 37 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 38 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 39 | 40 | /** IE10 and IE11 requires the following for the Reflect API. */ 41 | // import 'core-js/es6/reflect'; 42 | 43 | 44 | /** Evergreen browsers require these. **/ 45 | // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. 46 | import 'core-js/es7/reflect'; 47 | 48 | 49 | /** 50 | * Web Animations `@angular/platform-browser/animations` 51 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. 52 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). 53 | **/ 54 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 55 | 56 | /** 57 | * By default, zone.js will patch all possible macroTask and DomEvents 58 | * user can disable parts of macroTask/DomEvents patch by setting following flags 59 | */ 60 | 61 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 62 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 63 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 64 | 65 | /* 66 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 67 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 68 | */ 69 | // (window as any).__Zone_enable_cross_context_check = true; 70 | 71 | /*************************************************************************************************** 72 | * Zone JS is required by default for Angular itself. 73 | */ 74 | import 'zone.js/dist/zone'; // Included with Angular CLI. 75 | 76 | 77 | 78 | /*************************************************************************************************** 79 | * APPLICATION IMPORTS 80 | */ 81 | -------------------------------------------------------------------------------- /frontend/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | body { margin: 0; } 4 | -------------------------------------------------------------------------------- /frontend/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /frontend/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "es2015", 6 | "types": [] 7 | }, 8 | "exclude": [ 9 | "src/test.ts", 10 | "**/*.spec.ts" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /frontend/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "module": "commonjs", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /frontend/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "app", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "app", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2017", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /frontend/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/codelyzer" 4 | ], 5 | "rules": { 6 | "arrow-return-shorthand": true, 7 | "callable-types": true, 8 | "class-name": true, 9 | "comment-format": [ 10 | true, 11 | "check-space" 12 | ], 13 | "curly": true, 14 | "deprecation": { 15 | "severity": "warn" 16 | }, 17 | "eofline": true, 18 | "forin": true, 19 | "import-blacklist": [ 20 | true, 21 | "rxjs/Rx" 22 | ], 23 | "import-spacing": true, 24 | "indent": [ 25 | true, 26 | "spaces" 27 | ], 28 | "interface-over-type-literal": true, 29 | "label-position": true, 30 | "max-line-length": [ 31 | true, 32 | 140 33 | ], 34 | "member-access": false, 35 | "member-ordering": [ 36 | true, 37 | { 38 | "order": [ 39 | "static-field", 40 | "instance-field", 41 | "static-method", 42 | "instance-method" 43 | ] 44 | } 45 | ], 46 | "no-arg": true, 47 | "no-bitwise": true, 48 | "no-console": [ 49 | true, 50 | "debug", 51 | "info", 52 | "time", 53 | "timeEnd", 54 | "trace" 55 | ], 56 | "no-construct": true, 57 | "no-debugger": true, 58 | "no-duplicate-super": true, 59 | "no-empty": false, 60 | "no-empty-interface": true, 61 | "no-eval": true, 62 | "no-inferrable-types": [ 63 | true, 64 | "ignore-params" 65 | ], 66 | "no-misused-new": true, 67 | "no-non-null-assertion": true, 68 | "no-shadowed-variable": true, 69 | "no-string-literal": false, 70 | "no-string-throw": true, 71 | "no-switch-case-fall-through": true, 72 | "no-trailing-whitespace": true, 73 | "no-unnecessary-initializer": true, 74 | "no-unused-expression": true, 75 | "no-use-before-declare": true, 76 | "no-var-keyword": true, 77 | "object-literal-sort-keys": false, 78 | "one-line": [ 79 | true, 80 | "check-open-brace", 81 | "check-catch", 82 | "check-else", 83 | "check-whitespace" 84 | ], 85 | "prefer-const": true, 86 | "quotemark": [ 87 | true, 88 | "single" 89 | ], 90 | "radix": true, 91 | "semicolon": [ 92 | true, 93 | "always" 94 | ], 95 | "triple-equals": [ 96 | true, 97 | "allow-null-check" 98 | ], 99 | "typedef-whitespace": [ 100 | true, 101 | { 102 | "call-signature": "nospace", 103 | "index-signature": "nospace", 104 | "parameter": "nospace", 105 | "property-declaration": "nospace", 106 | "variable-declaration": "nospace" 107 | } 108 | ], 109 | "unified-signatures": true, 110 | "variable-name": false, 111 | "whitespace": [ 112 | true, 113 | "check-branch", 114 | "check-decl", 115 | "check-operator", 116 | "check-separator", 117 | "check-type" 118 | ], 119 | "no-output-on-prefix": true, 120 | "use-input-property-decorator": true, 121 | "use-output-property-decorator": true, 122 | "use-host-property-decorator": true, 123 | "no-input-rename": true, 124 | "no-output-rename": true, 125 | "use-life-cycle-interface": true, 126 | "use-pipe-transform-interface": true, 127 | "component-class-suffix": true, 128 | "directive-class-suffix": true 129 | } 130 | } 131 | --------------------------------------------------------------------------------