├── .gitignore ├── README.md ├── docs └── screenshot.png ├── package-lock.json ├── package.json └── src ├── app.js └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Screenshot 2 | ![](docs/screenshot.png) 3 | -------------------------------------------------------------------------------- /docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FaztWeb/javascript-tasks-app/c1bd9bf69cfeb78955fd2b0afbd001b8f10b7937/docs/screenshot.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javascript-todo-app", 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 | "anymatch": { 17 | "version": "1.3.2", 18 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 19 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 20 | "requires": { 21 | "micromatch": "2.3.11", 22 | "normalize-path": "2.1.1" 23 | } 24 | }, 25 | "apache-crypt": { 26 | "version": "1.2.1", 27 | "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.1.tgz", 28 | "integrity": "sha1-1vxyqm0n2ZyVqU/RiNcx7v/6Zjw=", 29 | "requires": { 30 | "unix-crypt-td-js": "1.0.0" 31 | } 32 | }, 33 | "apache-md5": { 34 | "version": "1.1.2", 35 | "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.2.tgz", 36 | "integrity": "sha1-7klza2ObTxCLbp5ibG2pkwa0FpI=" 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 | "requires": { 43 | "arr-flatten": "1.1.0" 44 | } 45 | }, 46 | "arr-flatten": { 47 | "version": "1.1.0", 48 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 49 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 50 | }, 51 | "array-unique": { 52 | "version": "0.2.1", 53 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 54 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" 55 | }, 56 | "async-each": { 57 | "version": "1.0.1", 58 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 59 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" 60 | }, 61 | "balanced-match": { 62 | "version": "1.0.0", 63 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 64 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 65 | }, 66 | "basic-auth": { 67 | "version": "2.0.0", 68 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz", 69 | "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=", 70 | "requires": { 71 | "safe-buffer": "5.1.1" 72 | }, 73 | "dependencies": { 74 | "safe-buffer": { 75 | "version": "5.1.1", 76 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 77 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 78 | } 79 | } 80 | }, 81 | "batch": { 82 | "version": "0.6.1", 83 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", 84 | "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" 85 | }, 86 | "bcryptjs": { 87 | "version": "2.4.3", 88 | "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", 89 | "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" 90 | }, 91 | "binary-extensions": { 92 | "version": "1.11.0", 93 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", 94 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" 95 | }, 96 | "brace-expansion": { 97 | "version": "1.1.11", 98 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 99 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 100 | "requires": { 101 | "balanced-match": "1.0.0", 102 | "concat-map": "0.0.1" 103 | } 104 | }, 105 | "braces": { 106 | "version": "1.8.5", 107 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 108 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 109 | "requires": { 110 | "expand-range": "1.8.2", 111 | "preserve": "0.2.0", 112 | "repeat-element": "1.1.2" 113 | } 114 | }, 115 | "chokidar": { 116 | "version": "1.7.0", 117 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 118 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 119 | "requires": { 120 | "anymatch": "1.3.2", 121 | "async-each": "1.0.1", 122 | "fsevents": "1.2.3", 123 | "glob-parent": "2.0.0", 124 | "inherits": "2.0.3", 125 | "is-binary-path": "1.0.1", 126 | "is-glob": "2.0.1", 127 | "path-is-absolute": "1.0.1", 128 | "readdirp": "2.1.0" 129 | } 130 | }, 131 | "colors": { 132 | "version": "1.2.1", 133 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.1.tgz", 134 | "integrity": "sha512-s8+wktIuDSLffCywiwSxQOMqtPxML11a/dtHE17tMn4B1MSWw/C22EKf7M2KGUBcDaVFEGT+S8N02geDXeuNKg==" 135 | }, 136 | "concat-map": { 137 | "version": "0.0.1", 138 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 139 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 140 | }, 141 | "connect": { 142 | "version": "3.5.1", 143 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.5.1.tgz", 144 | "integrity": "sha1-bTDXpjx/FwhXprOqazY9lz3KWI4=", 145 | "requires": { 146 | "debug": "2.2.0", 147 | "finalhandler": "0.5.1", 148 | "parseurl": "1.3.2", 149 | "utils-merge": "1.0.0" 150 | } 151 | }, 152 | "core-util-is": { 153 | "version": "1.0.2", 154 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 155 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 156 | }, 157 | "cors": { 158 | "version": "2.8.4", 159 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", 160 | "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", 161 | "requires": { 162 | "object-assign": "4.1.1", 163 | "vary": "1.1.2" 164 | } 165 | }, 166 | "debug": { 167 | "version": "2.2.0", 168 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 169 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 170 | "requires": { 171 | "ms": "0.7.1" 172 | } 173 | }, 174 | "depd": { 175 | "version": "1.1.2", 176 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 177 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 178 | }, 179 | "destroy": { 180 | "version": "1.0.4", 181 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 182 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 183 | }, 184 | "duplexer": { 185 | "version": "0.1.1", 186 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 187 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" 188 | }, 189 | "ee-first": { 190 | "version": "1.1.1", 191 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 192 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 193 | }, 194 | "encodeurl": { 195 | "version": "1.0.2", 196 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 197 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 198 | }, 199 | "escape-html": { 200 | "version": "1.0.3", 201 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 202 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 203 | }, 204 | "etag": { 205 | "version": "1.8.1", 206 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 207 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 208 | }, 209 | "event-stream": { 210 | "version": "3.3.4", 211 | "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 212 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", 213 | "requires": { 214 | "duplexer": "0.1.1", 215 | "from": "0.1.7", 216 | "map-stream": "0.1.0", 217 | "pause-stream": "0.0.11", 218 | "split": "0.3.3", 219 | "stream-combiner": "0.0.4", 220 | "through": "2.3.8" 221 | } 222 | }, 223 | "expand-brackets": { 224 | "version": "0.1.5", 225 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 226 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 227 | "requires": { 228 | "is-posix-bracket": "0.1.1" 229 | } 230 | }, 231 | "expand-range": { 232 | "version": "1.8.2", 233 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 234 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 235 | "requires": { 236 | "fill-range": "2.2.3" 237 | } 238 | }, 239 | "extglob": { 240 | "version": "0.3.2", 241 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 242 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 243 | "requires": { 244 | "is-extglob": "1.0.0" 245 | } 246 | }, 247 | "faye-websocket": { 248 | "version": "0.11.1", 249 | "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", 250 | "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", 251 | "requires": { 252 | "websocket-driver": "0.7.0" 253 | } 254 | }, 255 | "filename-regex": { 256 | "version": "2.0.1", 257 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 258 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" 259 | }, 260 | "fill-range": { 261 | "version": "2.2.3", 262 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 263 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 264 | "requires": { 265 | "is-number": "2.1.0", 266 | "isobject": "2.1.0", 267 | "randomatic": "1.1.7", 268 | "repeat-element": "1.1.2", 269 | "repeat-string": "1.6.1" 270 | } 271 | }, 272 | "finalhandler": { 273 | "version": "0.5.1", 274 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", 275 | "integrity": "sha1-LEANjUUwk1vCMlScX6OF7Afeb80=", 276 | "requires": { 277 | "debug": "2.2.0", 278 | "escape-html": "1.0.3", 279 | "on-finished": "2.3.0", 280 | "statuses": "1.3.1", 281 | "unpipe": "1.0.0" 282 | } 283 | }, 284 | "for-in": { 285 | "version": "1.0.2", 286 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 287 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" 288 | }, 289 | "for-own": { 290 | "version": "0.1.5", 291 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 292 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 293 | "requires": { 294 | "for-in": "1.0.2" 295 | } 296 | }, 297 | "fresh": { 298 | "version": "0.5.2", 299 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 300 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 301 | }, 302 | "from": { 303 | "version": "0.1.7", 304 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 305 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" 306 | }, 307 | "fsevents": { 308 | "version": "1.2.3", 309 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", 310 | "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", 311 | "optional": true, 312 | "requires": { 313 | "nan": "2.10.0", 314 | "node-pre-gyp": "0.9.1" 315 | }, 316 | "dependencies": { 317 | "abbrev": { 318 | "version": "1.1.1", 319 | "bundled": true, 320 | "optional": true 321 | }, 322 | "ansi-regex": { 323 | "version": "2.1.1", 324 | "bundled": true 325 | }, 326 | "aproba": { 327 | "version": "1.2.0", 328 | "bundled": true, 329 | "optional": true 330 | }, 331 | "are-we-there-yet": { 332 | "version": "1.1.4", 333 | "bundled": true, 334 | "optional": true, 335 | "requires": { 336 | "delegates": "1.0.0", 337 | "readable-stream": "2.3.6" 338 | } 339 | }, 340 | "balanced-match": { 341 | "version": "1.0.0", 342 | "bundled": true 343 | }, 344 | "brace-expansion": { 345 | "version": "1.1.11", 346 | "bundled": true, 347 | "requires": { 348 | "balanced-match": "1.0.0", 349 | "concat-map": "0.0.1" 350 | } 351 | }, 352 | "chownr": { 353 | "version": "1.0.1", 354 | "bundled": true, 355 | "optional": true 356 | }, 357 | "code-point-at": { 358 | "version": "1.1.0", 359 | "bundled": true 360 | }, 361 | "concat-map": { 362 | "version": "0.0.1", 363 | "bundled": true 364 | }, 365 | "console-control-strings": { 366 | "version": "1.1.0", 367 | "bundled": true 368 | }, 369 | "core-util-is": { 370 | "version": "1.0.2", 371 | "bundled": true, 372 | "optional": true 373 | }, 374 | "debug": { 375 | "version": "2.6.9", 376 | "bundled": true, 377 | "optional": true, 378 | "requires": { 379 | "ms": "2.0.0" 380 | } 381 | }, 382 | "deep-extend": { 383 | "version": "0.4.2", 384 | "bundled": true, 385 | "optional": true 386 | }, 387 | "delegates": { 388 | "version": "1.0.0", 389 | "bundled": true, 390 | "optional": true 391 | }, 392 | "detect-libc": { 393 | "version": "1.0.3", 394 | "bundled": true, 395 | "optional": true 396 | }, 397 | "fs-minipass": { 398 | "version": "1.2.5", 399 | "bundled": true, 400 | "optional": true, 401 | "requires": { 402 | "minipass": "2.2.4" 403 | } 404 | }, 405 | "fs.realpath": { 406 | "version": "1.0.0", 407 | "bundled": true, 408 | "optional": true 409 | }, 410 | "gauge": { 411 | "version": "2.7.4", 412 | "bundled": true, 413 | "optional": true, 414 | "requires": { 415 | "aproba": "1.2.0", 416 | "console-control-strings": "1.1.0", 417 | "has-unicode": "2.0.1", 418 | "object-assign": "4.1.1", 419 | "signal-exit": "3.0.2", 420 | "string-width": "1.0.2", 421 | "strip-ansi": "3.0.1", 422 | "wide-align": "1.1.2" 423 | } 424 | }, 425 | "glob": { 426 | "version": "7.1.2", 427 | "bundled": true, 428 | "optional": true, 429 | "requires": { 430 | "fs.realpath": "1.0.0", 431 | "inflight": "1.0.6", 432 | "inherits": "2.0.3", 433 | "minimatch": "3.0.4", 434 | "once": "1.4.0", 435 | "path-is-absolute": "1.0.1" 436 | } 437 | }, 438 | "has-unicode": { 439 | "version": "2.0.1", 440 | "bundled": true, 441 | "optional": true 442 | }, 443 | "iconv-lite": { 444 | "version": "0.4.21", 445 | "bundled": true, 446 | "optional": true, 447 | "requires": { 448 | "safer-buffer": "2.1.2" 449 | } 450 | }, 451 | "ignore-walk": { 452 | "version": "3.0.1", 453 | "bundled": true, 454 | "optional": true, 455 | "requires": { 456 | "minimatch": "3.0.4" 457 | } 458 | }, 459 | "inflight": { 460 | "version": "1.0.6", 461 | "bundled": true, 462 | "optional": true, 463 | "requires": { 464 | "once": "1.4.0", 465 | "wrappy": "1.0.2" 466 | } 467 | }, 468 | "inherits": { 469 | "version": "2.0.3", 470 | "bundled": true 471 | }, 472 | "ini": { 473 | "version": "1.3.5", 474 | "bundled": true, 475 | "optional": true 476 | }, 477 | "is-fullwidth-code-point": { 478 | "version": "1.0.0", 479 | "bundled": true, 480 | "requires": { 481 | "number-is-nan": "1.0.1" 482 | } 483 | }, 484 | "isarray": { 485 | "version": "1.0.0", 486 | "bundled": true, 487 | "optional": true 488 | }, 489 | "minimatch": { 490 | "version": "3.0.4", 491 | "bundled": true, 492 | "requires": { 493 | "brace-expansion": "1.1.11" 494 | } 495 | }, 496 | "minimist": { 497 | "version": "0.0.8", 498 | "bundled": true 499 | }, 500 | "minipass": { 501 | "version": "2.2.4", 502 | "bundled": true, 503 | "requires": { 504 | "safe-buffer": "5.1.1", 505 | "yallist": "3.0.2" 506 | } 507 | }, 508 | "minizlib": { 509 | "version": "1.1.0", 510 | "bundled": true, 511 | "optional": true, 512 | "requires": { 513 | "minipass": "2.2.4" 514 | } 515 | }, 516 | "mkdirp": { 517 | "version": "0.5.1", 518 | "bundled": true, 519 | "requires": { 520 | "minimist": "0.0.8" 521 | } 522 | }, 523 | "ms": { 524 | "version": "2.0.0", 525 | "bundled": true, 526 | "optional": true 527 | }, 528 | "needle": { 529 | "version": "2.2.0", 530 | "bundled": true, 531 | "optional": true, 532 | "requires": { 533 | "debug": "2.6.9", 534 | "iconv-lite": "0.4.21", 535 | "sax": "1.2.4" 536 | } 537 | }, 538 | "node-pre-gyp": { 539 | "version": "0.9.1", 540 | "bundled": true, 541 | "optional": true, 542 | "requires": { 543 | "detect-libc": "1.0.3", 544 | "mkdirp": "0.5.1", 545 | "needle": "2.2.0", 546 | "nopt": "4.0.1", 547 | "npm-packlist": "1.1.10", 548 | "npmlog": "4.1.2", 549 | "rc": "1.2.6", 550 | "rimraf": "2.6.2", 551 | "semver": "5.5.0", 552 | "tar": "4.4.1" 553 | } 554 | }, 555 | "nopt": { 556 | "version": "4.0.1", 557 | "bundled": true, 558 | "optional": true, 559 | "requires": { 560 | "abbrev": "1.1.1", 561 | "osenv": "0.1.5" 562 | } 563 | }, 564 | "npm-bundled": { 565 | "version": "1.0.3", 566 | "bundled": true, 567 | "optional": true 568 | }, 569 | "npm-packlist": { 570 | "version": "1.1.10", 571 | "bundled": true, 572 | "optional": true, 573 | "requires": { 574 | "ignore-walk": "3.0.1", 575 | "npm-bundled": "1.0.3" 576 | } 577 | }, 578 | "npmlog": { 579 | "version": "4.1.2", 580 | "bundled": true, 581 | "optional": true, 582 | "requires": { 583 | "are-we-there-yet": "1.1.4", 584 | "console-control-strings": "1.1.0", 585 | "gauge": "2.7.4", 586 | "set-blocking": "2.0.0" 587 | } 588 | }, 589 | "number-is-nan": { 590 | "version": "1.0.1", 591 | "bundled": true 592 | }, 593 | "object-assign": { 594 | "version": "4.1.1", 595 | "bundled": true, 596 | "optional": true 597 | }, 598 | "once": { 599 | "version": "1.4.0", 600 | "bundled": true, 601 | "requires": { 602 | "wrappy": "1.0.2" 603 | } 604 | }, 605 | "os-homedir": { 606 | "version": "1.0.2", 607 | "bundled": true, 608 | "optional": true 609 | }, 610 | "os-tmpdir": { 611 | "version": "1.0.2", 612 | "bundled": true, 613 | "optional": true 614 | }, 615 | "osenv": { 616 | "version": "0.1.5", 617 | "bundled": true, 618 | "optional": true, 619 | "requires": { 620 | "os-homedir": "1.0.2", 621 | "os-tmpdir": "1.0.2" 622 | } 623 | }, 624 | "path-is-absolute": { 625 | "version": "1.0.1", 626 | "bundled": true, 627 | "optional": true 628 | }, 629 | "process-nextick-args": { 630 | "version": "2.0.0", 631 | "bundled": true, 632 | "optional": true 633 | }, 634 | "rc": { 635 | "version": "1.2.6", 636 | "bundled": true, 637 | "optional": true, 638 | "requires": { 639 | "deep-extend": "0.4.2", 640 | "ini": "1.3.5", 641 | "minimist": "1.2.0", 642 | "strip-json-comments": "2.0.1" 643 | }, 644 | "dependencies": { 645 | "minimist": { 646 | "version": "1.2.0", 647 | "bundled": true, 648 | "optional": true 649 | } 650 | } 651 | }, 652 | "readable-stream": { 653 | "version": "2.3.6", 654 | "bundled": true, 655 | "optional": true, 656 | "requires": { 657 | "core-util-is": "1.0.2", 658 | "inherits": "2.0.3", 659 | "isarray": "1.0.0", 660 | "process-nextick-args": "2.0.0", 661 | "safe-buffer": "5.1.1", 662 | "string_decoder": "1.1.1", 663 | "util-deprecate": "1.0.2" 664 | } 665 | }, 666 | "rimraf": { 667 | "version": "2.6.2", 668 | "bundled": true, 669 | "optional": true, 670 | "requires": { 671 | "glob": "7.1.2" 672 | } 673 | }, 674 | "safe-buffer": { 675 | "version": "5.1.1", 676 | "bundled": true 677 | }, 678 | "safer-buffer": { 679 | "version": "2.1.2", 680 | "bundled": true, 681 | "optional": true 682 | }, 683 | "sax": { 684 | "version": "1.2.4", 685 | "bundled": true, 686 | "optional": true 687 | }, 688 | "semver": { 689 | "version": "5.5.0", 690 | "bundled": true, 691 | "optional": true 692 | }, 693 | "set-blocking": { 694 | "version": "2.0.0", 695 | "bundled": true, 696 | "optional": true 697 | }, 698 | "signal-exit": { 699 | "version": "3.0.2", 700 | "bundled": true, 701 | "optional": true 702 | }, 703 | "string-width": { 704 | "version": "1.0.2", 705 | "bundled": true, 706 | "requires": { 707 | "code-point-at": "1.1.0", 708 | "is-fullwidth-code-point": "1.0.0", 709 | "strip-ansi": "3.0.1" 710 | } 711 | }, 712 | "string_decoder": { 713 | "version": "1.1.1", 714 | "bundled": true, 715 | "optional": true, 716 | "requires": { 717 | "safe-buffer": "5.1.1" 718 | } 719 | }, 720 | "strip-ansi": { 721 | "version": "3.0.1", 722 | "bundled": true, 723 | "requires": { 724 | "ansi-regex": "2.1.1" 725 | } 726 | }, 727 | "strip-json-comments": { 728 | "version": "2.0.1", 729 | "bundled": true, 730 | "optional": true 731 | }, 732 | "tar": { 733 | "version": "4.4.1", 734 | "bundled": true, 735 | "optional": true, 736 | "requires": { 737 | "chownr": "1.0.1", 738 | "fs-minipass": "1.2.5", 739 | "minipass": "2.2.4", 740 | "minizlib": "1.1.0", 741 | "mkdirp": "0.5.1", 742 | "safe-buffer": "5.1.1", 743 | "yallist": "3.0.2" 744 | } 745 | }, 746 | "util-deprecate": { 747 | "version": "1.0.2", 748 | "bundled": true, 749 | "optional": true 750 | }, 751 | "wide-align": { 752 | "version": "1.1.2", 753 | "bundled": true, 754 | "optional": true, 755 | "requires": { 756 | "string-width": "1.0.2" 757 | } 758 | }, 759 | "wrappy": { 760 | "version": "1.0.2", 761 | "bundled": true 762 | }, 763 | "yallist": { 764 | "version": "3.0.2", 765 | "bundled": true 766 | } 767 | } 768 | }, 769 | "glob-base": { 770 | "version": "0.3.0", 771 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 772 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 773 | "requires": { 774 | "glob-parent": "2.0.0", 775 | "is-glob": "2.0.1" 776 | } 777 | }, 778 | "glob-parent": { 779 | "version": "2.0.0", 780 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 781 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 782 | "requires": { 783 | "is-glob": "2.0.1" 784 | } 785 | }, 786 | "graceful-fs": { 787 | "version": "4.1.11", 788 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 789 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 790 | }, 791 | "http-auth": { 792 | "version": "3.1.3", 793 | "resolved": "https://registry.npmjs.org/http-auth/-/http-auth-3.1.3.tgz", 794 | "integrity": "sha1-lFz63WZSHq+PfISRPTd9exXyTjE=", 795 | "requires": { 796 | "apache-crypt": "1.2.1", 797 | "apache-md5": "1.1.2", 798 | "bcryptjs": "2.4.3", 799 | "uuid": "3.2.1" 800 | } 801 | }, 802 | "http-errors": { 803 | "version": "1.6.3", 804 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 805 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 806 | "requires": { 807 | "depd": "1.1.2", 808 | "inherits": "2.0.3", 809 | "setprototypeof": "1.1.0", 810 | "statuses": "1.5.0" 811 | }, 812 | "dependencies": { 813 | "statuses": { 814 | "version": "1.5.0", 815 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 816 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 817 | } 818 | } 819 | }, 820 | "http-parser-js": { 821 | "version": "0.4.12", 822 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", 823 | "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=" 824 | }, 825 | "inherits": { 826 | "version": "2.0.3", 827 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 828 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 829 | }, 830 | "is-binary-path": { 831 | "version": "1.0.1", 832 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 833 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 834 | "requires": { 835 | "binary-extensions": "1.11.0" 836 | } 837 | }, 838 | "is-buffer": { 839 | "version": "1.1.6", 840 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 841 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 842 | }, 843 | "is-dotfile": { 844 | "version": "1.0.3", 845 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 846 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" 847 | }, 848 | "is-equal-shallow": { 849 | "version": "0.1.3", 850 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 851 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 852 | "requires": { 853 | "is-primitive": "2.0.0" 854 | } 855 | }, 856 | "is-extendable": { 857 | "version": "0.1.1", 858 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 859 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" 860 | }, 861 | "is-extglob": { 862 | "version": "1.0.0", 863 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 864 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 865 | }, 866 | "is-glob": { 867 | "version": "2.0.1", 868 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 869 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 870 | "requires": { 871 | "is-extglob": "1.0.0" 872 | } 873 | }, 874 | "is-number": { 875 | "version": "2.1.0", 876 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 877 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 878 | "requires": { 879 | "kind-of": "3.2.2" 880 | } 881 | }, 882 | "is-posix-bracket": { 883 | "version": "0.1.1", 884 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 885 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" 886 | }, 887 | "is-primitive": { 888 | "version": "2.0.0", 889 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 890 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" 891 | }, 892 | "is-wsl": { 893 | "version": "1.1.0", 894 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 895 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" 896 | }, 897 | "isarray": { 898 | "version": "1.0.0", 899 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 900 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 901 | }, 902 | "isobject": { 903 | "version": "2.1.0", 904 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 905 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 906 | "requires": { 907 | "isarray": "1.0.0" 908 | } 909 | }, 910 | "kind-of": { 911 | "version": "3.2.2", 912 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 913 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 914 | "requires": { 915 | "is-buffer": "1.1.6" 916 | } 917 | }, 918 | "live-server": { 919 | "version": "1.2.0", 920 | "resolved": "https://registry.npmjs.org/live-server/-/live-server-1.2.0.tgz", 921 | "integrity": "sha1-RJhkS7+Bpm8Y3Y3/3vYcTBw3TKM=", 922 | "requires": { 923 | "chokidar": "1.7.0", 924 | "colors": "1.2.1", 925 | "connect": "3.5.1", 926 | "cors": "2.8.4", 927 | "event-stream": "3.3.4", 928 | "faye-websocket": "0.11.1", 929 | "http-auth": "3.1.3", 930 | "morgan": "1.9.0", 931 | "object-assign": "4.1.1", 932 | "opn": "5.3.0", 933 | "proxy-middleware": "0.15.0", 934 | "send": "0.16.2", 935 | "serve-index": "1.9.1" 936 | } 937 | }, 938 | "map-stream": { 939 | "version": "0.1.0", 940 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 941 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" 942 | }, 943 | "micromatch": { 944 | "version": "2.3.11", 945 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 946 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 947 | "requires": { 948 | "arr-diff": "2.0.0", 949 | "array-unique": "0.2.1", 950 | "braces": "1.8.5", 951 | "expand-brackets": "0.1.5", 952 | "extglob": "0.3.2", 953 | "filename-regex": "2.0.1", 954 | "is-extglob": "1.0.0", 955 | "is-glob": "2.0.1", 956 | "kind-of": "3.2.2", 957 | "normalize-path": "2.1.1", 958 | "object.omit": "2.0.1", 959 | "parse-glob": "3.0.4", 960 | "regex-cache": "0.4.4" 961 | } 962 | }, 963 | "mime": { 964 | "version": "1.4.1", 965 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 966 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 967 | }, 968 | "mime-db": { 969 | "version": "1.33.0", 970 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 971 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" 972 | }, 973 | "mime-types": { 974 | "version": "2.1.18", 975 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 976 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 977 | "requires": { 978 | "mime-db": "1.33.0" 979 | } 980 | }, 981 | "minimatch": { 982 | "version": "3.0.4", 983 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 984 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 985 | "requires": { 986 | "brace-expansion": "1.1.11" 987 | } 988 | }, 989 | "morgan": { 990 | "version": "1.9.0", 991 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", 992 | "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", 993 | "requires": { 994 | "basic-auth": "2.0.0", 995 | "debug": "2.6.9", 996 | "depd": "1.1.2", 997 | "on-finished": "2.3.0", 998 | "on-headers": "1.0.1" 999 | }, 1000 | "dependencies": { 1001 | "debug": { 1002 | "version": "2.6.9", 1003 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1004 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1005 | "requires": { 1006 | "ms": "2.0.0" 1007 | } 1008 | }, 1009 | "ms": { 1010 | "version": "2.0.0", 1011 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1012 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1013 | } 1014 | } 1015 | }, 1016 | "ms": { 1017 | "version": "0.7.1", 1018 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 1019 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" 1020 | }, 1021 | "nan": { 1022 | "version": "2.10.0", 1023 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 1024 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", 1025 | "optional": true 1026 | }, 1027 | "negotiator": { 1028 | "version": "0.6.1", 1029 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 1030 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 1031 | }, 1032 | "normalize-path": { 1033 | "version": "2.1.1", 1034 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1035 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1036 | "requires": { 1037 | "remove-trailing-separator": "1.1.0" 1038 | } 1039 | }, 1040 | "object-assign": { 1041 | "version": "4.1.1", 1042 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1043 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1044 | }, 1045 | "object.omit": { 1046 | "version": "2.0.1", 1047 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1048 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 1049 | "requires": { 1050 | "for-own": "0.1.5", 1051 | "is-extendable": "0.1.1" 1052 | } 1053 | }, 1054 | "on-finished": { 1055 | "version": "2.3.0", 1056 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1057 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1058 | "requires": { 1059 | "ee-first": "1.1.1" 1060 | } 1061 | }, 1062 | "on-headers": { 1063 | "version": "1.0.1", 1064 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 1065 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" 1066 | }, 1067 | "opn": { 1068 | "version": "5.3.0", 1069 | "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", 1070 | "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", 1071 | "requires": { 1072 | "is-wsl": "1.1.0" 1073 | } 1074 | }, 1075 | "parse-glob": { 1076 | "version": "3.0.4", 1077 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 1078 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 1079 | "requires": { 1080 | "glob-base": "0.3.0", 1081 | "is-dotfile": "1.0.3", 1082 | "is-extglob": "1.0.0", 1083 | "is-glob": "2.0.1" 1084 | } 1085 | }, 1086 | "parseurl": { 1087 | "version": "1.3.2", 1088 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 1089 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 1090 | }, 1091 | "path-is-absolute": { 1092 | "version": "1.0.1", 1093 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1094 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1095 | }, 1096 | "pause-stream": { 1097 | "version": "0.0.11", 1098 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 1099 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", 1100 | "requires": { 1101 | "through": "2.3.8" 1102 | } 1103 | }, 1104 | "preserve": { 1105 | "version": "0.2.0", 1106 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 1107 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" 1108 | }, 1109 | "process-nextick-args": { 1110 | "version": "2.0.0", 1111 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 1112 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 1113 | }, 1114 | "proxy-middleware": { 1115 | "version": "0.15.0", 1116 | "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", 1117 | "integrity": "sha1-o/3xvvtzD5UZZYcqwvYHTGFHelY=" 1118 | }, 1119 | "randomatic": { 1120 | "version": "1.1.7", 1121 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 1122 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 1123 | "requires": { 1124 | "is-number": "3.0.0", 1125 | "kind-of": "4.0.0" 1126 | }, 1127 | "dependencies": { 1128 | "is-number": { 1129 | "version": "3.0.0", 1130 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1131 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1132 | "requires": { 1133 | "kind-of": "3.2.2" 1134 | }, 1135 | "dependencies": { 1136 | "kind-of": { 1137 | "version": "3.2.2", 1138 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1139 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1140 | "requires": { 1141 | "is-buffer": "1.1.6" 1142 | } 1143 | } 1144 | } 1145 | }, 1146 | "kind-of": { 1147 | "version": "4.0.0", 1148 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1149 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1150 | "requires": { 1151 | "is-buffer": "1.1.6" 1152 | } 1153 | } 1154 | } 1155 | }, 1156 | "range-parser": { 1157 | "version": "1.2.0", 1158 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 1159 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 1160 | }, 1161 | "readable-stream": { 1162 | "version": "2.3.6", 1163 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 1164 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 1165 | "requires": { 1166 | "core-util-is": "1.0.2", 1167 | "inherits": "2.0.3", 1168 | "isarray": "1.0.0", 1169 | "process-nextick-args": "2.0.0", 1170 | "safe-buffer": "5.1.2", 1171 | "string_decoder": "1.1.1", 1172 | "util-deprecate": "1.0.2" 1173 | } 1174 | }, 1175 | "readdirp": { 1176 | "version": "2.1.0", 1177 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 1178 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 1179 | "requires": { 1180 | "graceful-fs": "4.1.11", 1181 | "minimatch": "3.0.4", 1182 | "readable-stream": "2.3.6", 1183 | "set-immediate-shim": "1.0.1" 1184 | } 1185 | }, 1186 | "regex-cache": { 1187 | "version": "0.4.4", 1188 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 1189 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 1190 | "requires": { 1191 | "is-equal-shallow": "0.1.3" 1192 | } 1193 | }, 1194 | "remove-trailing-separator": { 1195 | "version": "1.1.0", 1196 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 1197 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" 1198 | }, 1199 | "repeat-element": { 1200 | "version": "1.1.2", 1201 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 1202 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" 1203 | }, 1204 | "repeat-string": { 1205 | "version": "1.6.1", 1206 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1207 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 1208 | }, 1209 | "safe-buffer": { 1210 | "version": "5.1.2", 1211 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1212 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1213 | }, 1214 | "send": { 1215 | "version": "0.16.2", 1216 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 1217 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 1218 | "requires": { 1219 | "debug": "2.6.9", 1220 | "depd": "1.1.2", 1221 | "destroy": "1.0.4", 1222 | "encodeurl": "1.0.2", 1223 | "escape-html": "1.0.3", 1224 | "etag": "1.8.1", 1225 | "fresh": "0.5.2", 1226 | "http-errors": "1.6.3", 1227 | "mime": "1.4.1", 1228 | "ms": "2.0.0", 1229 | "on-finished": "2.3.0", 1230 | "range-parser": "1.2.0", 1231 | "statuses": "1.4.0" 1232 | }, 1233 | "dependencies": { 1234 | "debug": { 1235 | "version": "2.6.9", 1236 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1237 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1238 | "requires": { 1239 | "ms": "2.0.0" 1240 | } 1241 | }, 1242 | "ms": { 1243 | "version": "2.0.0", 1244 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1245 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1246 | }, 1247 | "statuses": { 1248 | "version": "1.4.0", 1249 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 1250 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 1251 | } 1252 | } 1253 | }, 1254 | "serve-index": { 1255 | "version": "1.9.1", 1256 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", 1257 | "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", 1258 | "requires": { 1259 | "accepts": "1.3.5", 1260 | "batch": "0.6.1", 1261 | "debug": "2.6.9", 1262 | "escape-html": "1.0.3", 1263 | "http-errors": "1.6.3", 1264 | "mime-types": "2.1.18", 1265 | "parseurl": "1.3.2" 1266 | }, 1267 | "dependencies": { 1268 | "debug": { 1269 | "version": "2.6.9", 1270 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1271 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1272 | "requires": { 1273 | "ms": "2.0.0" 1274 | } 1275 | }, 1276 | "ms": { 1277 | "version": "2.0.0", 1278 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1279 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1280 | } 1281 | } 1282 | }, 1283 | "set-immediate-shim": { 1284 | "version": "1.0.1", 1285 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 1286 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" 1287 | }, 1288 | "setprototypeof": { 1289 | "version": "1.1.0", 1290 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 1291 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 1292 | }, 1293 | "split": { 1294 | "version": "0.3.3", 1295 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 1296 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", 1297 | "requires": { 1298 | "through": "2.3.8" 1299 | } 1300 | }, 1301 | "statuses": { 1302 | "version": "1.3.1", 1303 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 1304 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" 1305 | }, 1306 | "stream-combiner": { 1307 | "version": "0.0.4", 1308 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 1309 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", 1310 | "requires": { 1311 | "duplexer": "0.1.1" 1312 | } 1313 | }, 1314 | "string_decoder": { 1315 | "version": "1.1.1", 1316 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1317 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1318 | "requires": { 1319 | "safe-buffer": "5.1.2" 1320 | } 1321 | }, 1322 | "through": { 1323 | "version": "2.3.8", 1324 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1325 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1326 | }, 1327 | "unix-crypt-td-js": { 1328 | "version": "1.0.0", 1329 | "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.0.0.tgz", 1330 | "integrity": "sha1-HAgkFQSBvHoB1J6Y8exmjYJBLzs=" 1331 | }, 1332 | "unpipe": { 1333 | "version": "1.0.0", 1334 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1335 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1336 | }, 1337 | "util-deprecate": { 1338 | "version": "1.0.2", 1339 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1340 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1341 | }, 1342 | "utils-merge": { 1343 | "version": "1.0.0", 1344 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", 1345 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" 1346 | }, 1347 | "uuid": { 1348 | "version": "3.2.1", 1349 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", 1350 | "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" 1351 | }, 1352 | "vary": { 1353 | "version": "1.1.2", 1354 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1355 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1356 | }, 1357 | "websocket-driver": { 1358 | "version": "0.7.0", 1359 | "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", 1360 | "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", 1361 | "requires": { 1362 | "http-parser-js": "0.4.12", 1363 | "websocket-extensions": "0.1.3" 1364 | } 1365 | }, 1366 | "websocket-extensions": { 1367 | "version": "0.1.3", 1368 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", 1369 | "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" 1370 | } 1371 | } 1372 | } 1373 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javascript-todo-app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "live-server src/" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "live-server": "^1.2.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | document.getElementById('formTask').addEventListener('submit', saveTask); 2 | 3 | function saveTask(e) { 4 | let title = document.getElementById('title').value; 5 | let description = document.getElementById('description').value; 6 | console.log(description) 7 | 8 | let task = { 9 | title, 10 | description 11 | }; 12 | 13 | if(localStorage.getItem('tasks') === null) { 14 | let tasks = []; 15 | tasks.push(task); 16 | localStorage.setItem('tasks', JSON.stringify(tasks)); 17 | } else { 18 | let tasks = JSON.parse(localStorage.getItem('tasks')); 19 | tasks.push(task); 20 | localStorage.setItem('tasks', JSON.stringify(tasks)); 21 | } 22 | 23 | getTasks(); 24 | document.getElementById('formTask').reset(); 25 | e.preventDefault(); 26 | } 27 | 28 | function deleteTask(title) { 29 | console.log(title) 30 | let tasks = JSON.parse(localStorage.getItem('tasks')); 31 | for(let i = 0; i < tasks.length; i++) { 32 | if(tasks[i].title == title) { 33 | tasks.splice(i, 1); 34 | } 35 | } 36 | 37 | localStorage.setItem('tasks', JSON.stringify(tasks)); 38 | getTasks(); 39 | } 40 | 41 | function getTasks() { 42 | let tasks = JSON.parse(localStorage.getItem('tasks')); 43 | let tasksView = document.getElementById('tasks'); 44 | tasksView.innerHTML = ''; 45 | for(let i = 0; i < tasks.length; i++) { 46 | let title = tasks[i].title; 47 | let description = tasks[i].description; 48 | 49 | tasksView.innerHTML += `
50 |
51 |

${title} - ${description} 52 | Delete 53 |

54 |
55 |
`; 56 | } 57 | } 58 | 59 | getTasks(); 60 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Javsascript Task App 6 | 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 |
19 |
20 |
21 | 22 |
23 |
24 | 25 |
26 |
27 | 28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 |
36 |
37 | 38 |
39 |
40 |
41 |
42 |
43 | 44 | 45 | 46 | --------------------------------------------------------------------------------