From 342437af48340fefdeb650b538e7211b00931ad6 Mon Sep 17 00:00:00 2001 From: Ward Bell Date: Sun, 17 Nov 2019 16:57:38 -0800 Subject: [PATCH 1/2] feature: add supplementary map operator demo to rxjs-end (not in rxjs-begin) --- README.md | 2 +- src/3-rxjs-end/app-routing.module.ts | 4 + .../core/toolbar/toolbar.component.html | 3 + src/3-rxjs-end/mapping/addImg.ts | 83 ++++++++++++++++ src/3-rxjs-end/mapping/mapping.component.html | 23 +++++ src/3-rxjs-end/mapping/mapping.component.ts | 92 ++++++++++++++++++ src/3-rxjs-end/mapping/mapping.module.ts | 20 ++++ src/assets/kitten.jpg | Bin 0 -> 39074 bytes 8 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 src/3-rxjs-end/mapping/addImg.ts create mode 100644 src/3-rxjs-end/mapping/mapping.component.html create mode 100644 src/3-rxjs-end/mapping/mapping.component.ts create mode 100644 src/3-rxjs-end/mapping/mapping.module.ts create mode 100644 src/assets/kitten.jpg diff --git a/README.md b/README.md index fc812b7..3e8df2c 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ We also have a routing guard lab. `1-routing-guards-begin` and `1-routing-guards ### 2-Modules -`2-modules-begin` and `1-modules-end`. +`2-modules-begin` and `2-modules-end`. ### 3-rxjs diff --git a/src/3-rxjs-end/app-routing.module.ts b/src/3-rxjs-end/app-routing.module.ts index 8102496..2884cef 100644 --- a/src/3-rxjs-end/app-routing.module.ts +++ b/src/3-rxjs-end/app-routing.module.ts @@ -30,6 +30,10 @@ const routes: Routes = [ { path: 'bus', loadChildren: '3-rxjs-end/bus/bus.module#BusModule' + }, + { + path: 'mapping', + loadChildren: '3-rxjs-end/mapping/mapping.module#MappingModule' } ]; diff --git a/src/3-rxjs-end/core/toolbar/toolbar.component.html b/src/3-rxjs-end/core/toolbar/toolbar.component.html index 1fcf723..625bf98 100644 --- a/src/3-rxjs-end/core/toolbar/toolbar.component.html +++ b/src/3-rxjs-end/core/toolbar/toolbar.component.html @@ -27,6 +27,9 @@ Bus + + Mapping + diff --git a/src/3-rxjs-end/mapping/addImg.ts b/src/3-rxjs-end/mapping/addImg.ts new file mode 100644 index 0000000..5604a5f --- /dev/null +++ b/src/3-rxjs-end/mapping/addImg.ts @@ -0,0 +1,83 @@ +import { defer, Observable } from 'rxjs'; +import { finalize, map, tap } from 'rxjs/operators'; + +/** + * Observable of animated image as it drops and bounces + * @param svg The SVG image to which the animated image will be appended. + * @returns object with data about the most recent frame of the animation + */ +export const addImg = (svg: any) => defer(() => { + // Animate the image + // const elem = document.createElementNS('http://www.w3.org/2000/svg', 'circle'); + // elem.style = 'fill: red; stroke: none;'; + + const elem = document.createElementNS('http://www.w3.org/2000/svg', 'image'); + elem.setAttribute('height', '150'); + elem.setAttribute('width', '150'); + elem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '../../../assets/kitten.jpg'); + + svg.appendChild(elem); + elem.setAttribute('r', '20'); + + return animationTime(2000).pipe( + map(t => ({ + t, + x: easeLinear(t) * 600, // width of svg canvas (see mapping.component) + y: easeOutBounce(t) * 500 // height of svg canvas (see mapping.component) + })), + tap(({ x, y }) => { + // console.log(`x: ${x}, y: ${y}`); + + // For circles + // elem.setAttribute('x', x.toString()); + // elem.setAttribute('y', (y - 100).toString()); + + // For images + elem.setAttribute('x', x.toString()); + elem.setAttribute('y', (y - 100).toString()); + }), + finalize(() => elem.remove()), + ); +}); + +function animationTime(duration = 1000) { + return new Observable(observer => { + const start = Date.now(); + let id: number; + + const animate = () => { + id = requestAnimationFrame(() => { + const diff = Date.now() - start; + if (diff < duration) { + observer.next(diff / duration); + } else { + observer.next(1); + observer.complete(); + } + animate(); + }); + }; + + animate(); + + return () => { + if (id) { + cancelAnimationFrame(id); + } + }; + }); +} + +function easeOutBounce(pos: number) { + if ((pos) < (1 / 2.75)) { + return (7.5625 * pos * pos); + } else if (pos < (2 / 2.75)) { + return (7.5625 * (pos -= (1.5 / 2.75)) * pos + 0.75); + } else if (pos < (2.5 / 2.75)) { + return (7.5625 * (pos -= (2.25 / 2.75)) * pos + 0.9375); + } else { + return (7.5625 * (pos -= (2.625 / 2.75)) * pos + 0.984375); + } +} + +function easeLinear(x: number) { return x; } diff --git a/src/3-rxjs-end/mapping/mapping.component.html b/src/3-rxjs-end/mapping/mapping.component.html new file mode 100644 index 0000000..c1ef7c4 --- /dev/null +++ b/src/3-rxjs-end/mapping/mapping.component.html @@ -0,0 +1,23 @@ +

Map Operators in Action

+ + + + +
+ + Dropped: {{results.dropped}} + Complete: {{results.completed}} +
+ + + +

Example courtesy of Ben Lesh

diff --git a/src/3-rxjs-end/mapping/mapping.component.ts b/src/3-rxjs-end/mapping/mapping.component.ts new file mode 100644 index 0000000..354d305 --- /dev/null +++ b/src/3-rxjs-end/mapping/mapping.component.ts @@ -0,0 +1,92 @@ +import { Component, ElementRef, ViewChild } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; + +import { + concatMap, exhaustMap, mergeMap, switchMap, + endWith, scan, map, startWith +} from 'rxjs/operators'; + +import { addImg } from './addImg'; + +interface Results { + dropped: number; + completed: number; +} + +// tslint:disable:member-ordering +@Component({ + templateUrl: './mapping.component.html' +}) +export class MappingComponent { + @ViewChild('svg') svg: ElementRef; + + /** Subject/Observable of clicks of the drop button */ + drop$ = new Subject(); + + /** Observable of results from clicking the drop button. */ + results$: Observable; + + constructor() { + this.resetResults$('mergeMap'); // start with default, mergeMap + } + + /** + * Reset the observable of results (results$). + * Emits results built from combining animation observables with the selected map operator. + * Animation observables are (or may be) created after each drop-click. + * @param mapOpName Name of the map operator to use + */ + resetResults$(mapOpName: string) { + + // Return an image animation observable that emits an action: { type: string } when + // 1) the image starts to drop, + // 2) after each animation frame, and + // 3) when it stops + const add = () => addImg(this.svg.nativeElement as SVGSVGElement).pipe( + // when the ball animates, emit an action + map((e) => ({ type: 'IMG_ANIMATE', e })), // for diagnostic purposes + // it starts with a IMG_START action + startWith({ type: 'IMG_START' }), + // it ends with a IMG_END action + endWith({ type: 'IMG_END' }), + ); + + // Pick the selected map operator + // tslint:disable: deprecation + const mapOperator = + mapOpName === 'exhaustMap' ? exhaustMap : + mapOpName === 'concatMap' ? concatMap : + mapOpName === 'switchMap' ? switchMap : + mergeMap; // default to mergeMap + // tslint:enable: deprecation + + // Observable of flattened add()observables, mapped with the selected map operator + const mapped$ = this.drop$.pipe( + mapOperator(add) // e.g., mergeMap(add) + ); + + + // Observable of mapped animations, transformed into results for display + this.results$ = mapped$.pipe( + // use a scan for state management (we'll just mutate state, it's okay here) + scan((state: Results, action: {type: string}) => { + switch (action.type) { + // when you get a IMG_START, increment dropped counter + case 'IMG_START': + state.dropped++; + break; + // when you get a IMG_END, increment the completed counter + case 'IMG_END': + state.completed++; + break; + // otherwise we don't care + } + return state; + }, { dropped: 0, completed: 0 }), + + // Begin with zeroed-out results each time we reset results$ + startWith({ dropped: 0, completed: 0 }) + ); + } + +} diff --git a/src/3-rxjs-end/mapping/mapping.module.ts b/src/3-rxjs-end/mapping/mapping.module.ts new file mode 100644 index 0000000..dcdb0df --- /dev/null +++ b/src/3-rxjs-end/mapping/mapping.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Routes, RouterModule } from '@angular/router'; + +import { MappingComponent } from './mapping.component'; +import { SharedModule } from '../shared/shared.module'; + +const routes: Routes = [{ path: '', pathMatch: 'full', component: MappingComponent }]; + +@NgModule({ + imports: [ + CommonModule, + SharedModule, + RouterModule.forChild(routes), + ], + declarations: [ + MappingComponent, + ] +}) +export class MappingModule {} diff --git a/src/assets/kitten.jpg b/src/assets/kitten.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6c35bb7fcf55ac72898723cf6ea60757d9b113e8 GIT binary patch literal 39074 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 E0Z>{b!vFvP literal 0 HcmV?d00001 From 0fec826e7c6a099d15ee58b92486ae6014ebf9b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2019 01:06:32 +0000 Subject: [PATCH 2/2] Bump lodash from 4.17.11 to 4.17.15 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15) Signed-off-by: dependabot[bot] --- package-lock.json | 159 +++++++++++++++++++++++++++++++++------------- 1 file changed, 116 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 87ceb8a..658c21b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -302,7 +302,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -323,12 +324,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -343,17 +346,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -470,7 +476,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -482,6 +489,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -496,6 +504,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -503,12 +512,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -527,6 +538,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -607,7 +619,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -619,6 +632,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -704,7 +718,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -740,6 +755,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -759,6 +775,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -802,12 +819,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -1604,6 +1623,7 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, + "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -2237,6 +2257,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, + "optional": true, "requires": { "hoek": "2.x.x" } @@ -2431,7 +2452,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", - "dev": true + "dev": true, + "optional": true }, "buffer-xor": { "version": "1.0.3", @@ -2949,7 +2971,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true + "dev": true, + "optional": true }, "constants-browserify": { "version": "1.0.0", @@ -3377,7 +3400,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true + "dev": true, + "optional": true }, "depd": { "version": "1.1.2", @@ -4409,7 +4433,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -4430,12 +4455,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4450,17 +4477,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -4577,7 +4607,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -4589,6 +4620,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4603,6 +4635,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4610,12 +4643,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4634,6 +4669,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -4714,7 +4750,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -4726,6 +4763,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -4811,7 +4849,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -4847,6 +4886,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4866,6 +4906,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4909,12 +4950,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -4923,6 +4966,7 @@ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -4982,6 +5026,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, + "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -5039,7 +5084,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true + "dev": true, + "optional": true }, "get-stream": { "version": "3.0.0", @@ -5253,7 +5299,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true + "dev": true, + "optional": true }, "has-value": { "version": "1.0.0", @@ -5346,7 +5393,8 @@ "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true + "dev": true, + "optional": true }, "homedir-polyfill": { "version": "1.0.1", @@ -5470,6 +5518,7 @@ "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz", "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=", "dev": true, + "optional": true, "requires": { "httpreq": ">=0.4.22", "underscore": "~1.7.0" @@ -5479,7 +5528,8 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", - "dev": true + "dev": true, + "optional": true }, "https-browserify": { "version": "1.0.0", @@ -6048,7 +6098,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true + "dev": true, + "optional": true }, "is-stream": { "version": "1.1.0", @@ -6648,13 +6699,15 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz", "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY=", - "dev": true + "dev": true, + "optional": true }, "libmime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/libmime/-/libmime-3.0.0.tgz", "integrity": "sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY=", "dev": true, + "optional": true, "requires": { "iconv-lite": "0.4.15", "libbase64": "0.1.0", @@ -6665,7 +6718,8 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true + "dev": true, + "optional": true } } }, @@ -6673,7 +6727,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz", "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g=", - "dev": true + "dev": true, + "optional": true }, "license-webpack-plugin": { "version": "2.1.0", @@ -6699,6 +6754,7 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -6711,7 +6767,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "optional": true } } }, @@ -6743,9 +6800,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.assign": { "version": "4.2.0", @@ -7215,7 +7272,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true + "dev": true, + "optional": true }, "map-visit": { "version": "1.0.0", @@ -7867,13 +7925,15 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz", "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q=", - "dev": true + "dev": true, + "optional": true }, "nodemailer-shared": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz", "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=", "dev": true, + "optional": true, "requires": { "nodemailer-fetch": "1.6.0" } @@ -7906,7 +7966,8 @@ "version": "0.1.10", "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz", "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U=", - "dev": true + "dev": true, + "optional": true }, "nopt": { "version": "3.0.6", @@ -8012,6 +8073,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, + "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -8789,7 +8851,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "dev": true, + "optional": true }, "process": { "version": "0.11.10", @@ -9186,6 +9249,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, + "optional": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -9197,6 +9261,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -9207,7 +9272,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "dev": true, + "optional": true } } }, @@ -9216,6 +9282,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, + "optional": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -9226,6 +9293,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, + "optional": true, "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -9236,6 +9304,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, + "optional": true, "requires": { "pinkie-promise": "^2.0.0" } @@ -9952,6 +10021,7 @@ "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz", "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=", "dev": true, + "optional": true, "requires": { "httpntlm": "1.6.1", "nodemailer-shared": "1.1.0" @@ -11228,6 +11298,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, + "optional": true, "requires": { "prelude-ls": "~1.1.2" } @@ -11283,7 +11354,8 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true + "dev": true, + "optional": true }, "union-value": { "version": "1.0.0", @@ -12052,6 +12124,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, + "optional": true, "requires": { "string-width": "^1.0.2 || 2" }