Skip to content

Commit de8c6e2

Browse files
crisbetoandrewseguin
authored andcommitted
fix: import individual rx operators (#8160)
After the switch to lettable operators, we had started importing all operators via `rxjs/operators`. These changes switch us back to only importing the individual ones and add some linting so it doesn't happen in the future.
1 parent e0eda5a commit de8c6e2

40 files changed

+84
-42
lines changed

CODING_STANDARDS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ class ConfigBuilder {
128128

129129
#### RxJS
130130
When dealing with RxJS operators, import the lettable operator (e.g.
131-
`import {map} from 'rxjs/operators'`), as opposed to using the "patch" imports which pollute the
131+
`import {map} from 'rxjs/operators/map'`), as opposed to using the "patch" imports which pollute the
132132
user's global Observable object (e.g. `import 'rxjs/add/operator/map'`):
133133

134134
```ts
@@ -137,7 +137,7 @@ import 'rxjs/add/operator/map';
137137
someObservable.map(...).subscribe(...);
138138

139139
// YES
140-
import {map} from 'rxjs/operators';
140+
import {map} from 'rxjs/operators/map';
141141
someObservable.pipe(map(...)).subscribe(...);
142142
```
143143

src/cdk/a11y/focus-trap.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
} from '@angular/core';
1818
import {coerceBooleanProperty} from '@angular/cdk/coercion';
1919
import {Platform} from '@angular/cdk/platform';
20-
import {first} from 'rxjs/operators';
20+
import {first} from 'rxjs/operators/first';
2121
import {InteractivityChecker} from './interactivity-checker';
2222

2323

src/cdk/a11y/list-key-manager.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {DOWN_ARROW, TAB, UP_ARROW} from '@angular/cdk/keycodes';
2-
import {first} from 'rxjs/operators';
2+
import {first} from 'rxjs/operators/first';
33
import {QueryList} from '@angular/core';
44
import {fakeAsync, tick} from '@angular/core/testing';
55
import {createKeyboardEvent} from '../testing/event-objects';

src/cdk/a11y/list-key-manager.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ import {QueryList} from '@angular/core';
1010
import {Subject} from 'rxjs/Subject';
1111
import {Subscription} from 'rxjs/Subscription';
1212
import {UP_ARROW, DOWN_ARROW, TAB, A, Z, ZERO, NINE} from '@angular/cdk/keycodes';
13-
import {debounceTime, filter, map, tap} from 'rxjs/operators';
13+
import {debounceTime} from 'rxjs/operators/debounceTime';
14+
import {filter} from 'rxjs/operators/filter';
15+
import {map} from 'rxjs/operators/map';
16+
import {tap} from 'rxjs/operators/tap';
1417

1518
/** This interface is for items that can be passed to a ListKeyManager. */
1619
export interface ListKeyManagerOption {

src/cdk/layout/breakpoints-observer.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import {Injectable, NgZone, OnDestroy} from '@angular/core';
99
import {MediaMatcher} from './media-matcher';
1010
import {Observable} from 'rxjs/Observable';
1111
import {Subject} from 'rxjs/Subject';
12-
import {map, startWith, takeUntil} from 'rxjs/operators';
12+
import {map} from 'rxjs/operators/map';
13+
import {startWith} from 'rxjs/operators/startWith';
14+
import {takeUntil} from 'rxjs/operators/takeUntil';
1315
import {coerceArray} from '@angular/cdk/coercion';
1416
import {combineLatest} from 'rxjs/observable/combineLatest';
1517
import {fromEventPattern} from 'rxjs/observable/fromEventPattern';

src/cdk/observers/observe-content.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
NgZone,
2020
} from '@angular/core';
2121
import {Subject} from 'rxjs/Subject';
22-
import {debounceTime} from 'rxjs/operators';
22+
import {debounceTime} from 'rxjs/operators/debounceTime';
2323

2424
/**
2525
* Factory that creates a new MutationObserver and allows us to stub it out in unit tests.

src/cdk/overlay/keyboard/overlay-keyboard-dispatcher.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import {Injectable, Optional, SkipSelf, OnDestroy} from '@angular/core';
1010
import {OverlayRef} from '../overlay-ref';
1111
import {Subscription} from 'rxjs/Subscription';
12-
import {filter} from 'rxjs/operators';
12+
import {filter} from 'rxjs/operators/filter';
1313
import {fromEvent} from 'rxjs/observable/fromEvent';
1414

1515
/**

src/cdk/overlay/overlay-ref.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {OverlayConfig} from './overlay-config';
1212
import {OverlayKeyboardDispatcher} from './keyboard/overlay-keyboard-dispatcher';
1313
import {Observable} from 'rxjs/Observable';
1414
import {Subject} from 'rxjs/Subject';
15-
import {first} from 'rxjs/operators';
15+
import {first} from 'rxjs/operators/first';
1616

1717

1818
/**

src/cdk/scrolling/scroll-dispatcher.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import {Subscription} from 'rxjs/Subscription';
1313
import {Observable} from 'rxjs/Observable';
1414
import {of as observableOf} from 'rxjs/observable/of';
1515
import {fromEvent} from 'rxjs/observable/fromEvent';
16-
import {auditTime, filter} from 'rxjs/operators';
16+
import {auditTime} from 'rxjs/operators/auditTime';
17+
import {filter} from 'rxjs/operators/filter';
1718
import {CdkScrollable} from './scrollable';
1819

1920

src/cdk/scrolling/viewport-ruler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {Platform} from '@angular/cdk/platform';
1111
import {Observable} from 'rxjs/Observable';
1212
import {fromEvent} from 'rxjs/observable/fromEvent';
1313
import {merge} from 'rxjs/observable/merge';
14-
import {auditTime} from 'rxjs/operators';
14+
import {auditTime} from 'rxjs/operators/auditTime';
1515
import {Subscription} from 'rxjs/Subscription';
1616
import {of as observableOf} from 'rxjs/observable/of';
1717

src/cdk/table/table.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {BehaviorSubject} from 'rxjs/BehaviorSubject';
66
import {combineLatest} from 'rxjs/observable/combineLatest';
77
import {CdkTableModule} from './index';
88
import {Observable} from 'rxjs/Observable';
9-
import {map} from 'rxjs/operators';
9+
import {map} from 'rxjs/operators/map';
1010
import {
1111
getTableDuplicateColumnNameError,
1212
getTableMissingMatchingRowDefError,

src/cdk/table/table.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import {
3131
} from '@angular/core';
3232
import {CollectionViewer, DataSource} from '@angular/cdk/collections';
3333
import {CdkCellOutlet, CdkCellOutletRowContext, CdkHeaderRowDef, CdkRowDef} from './row';
34-
import {takeUntil} from 'rxjs/operators';
34+
import {takeUntil} from 'rxjs/operators/takeUntil';
3535
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
3636
import {Subscription} from 'rxjs/Subscription';
3737
import {Subject} from 'rxjs/Subject';

src/demo-app/system-config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ System.config({
8282
packages: {
8383
// Thirdparty barrels.
8484
'rxjs': {main: 'index'},
85-
'rxjs/operators': {main: 'index'},
8685

8786
// Set the default extension for the root package, because otherwise the demo-app can't
8887
// be built within the production mode. Due to missing file extensions.

src/e2e-app/system-config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ System.config({
8282
packages: {
8383
// Thirdparty barrels.
8484
'rxjs': {main: 'index'},
85-
'rxjs/operators': {main: 'index'},
8685

8786
// Set the default extension for the root package, because otherwise the demo-app can't
8887
// be built within the production mode. Due to missing file extensions.

src/lib/autocomplete/autocomplete-trigger.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ import {
1717
ScrollStrategy,
1818
} from '@angular/cdk/overlay';
1919
import {TemplatePortal} from '@angular/cdk/portal';
20-
import {filter, first, switchMap, tap, delay} from 'rxjs/operators';
20+
import {filter} from 'rxjs/operators/filter';
21+
import {first} from 'rxjs/operators/first';
22+
import {switchMap} from 'rxjs/operators/switchMap';
23+
import {tap} from 'rxjs/operators/tap';
24+
import {delay} from 'rxjs/operators/delay';
2125
import {
2226
ChangeDetectorRef,
2327
Directive,

src/lib/autocomplete/autocomplete.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import {Direction, Directionality} from '@angular/cdk/bidi';
22
import {DOWN_ARROW, ENTER, ESCAPE, SPACE, UP_ARROW, TAB} from '@angular/cdk/keycodes';
33
import {OverlayContainer} from '@angular/cdk/overlay';
4-
import {map, startWith} from 'rxjs/operators';
4+
import {map} from 'rxjs/operators/map';
5+
import {startWith} from 'rxjs/operators/startWith';
56
import {ScrollDispatcher} from '@angular/cdk/scrolling';
67
import {
78
createKeyboardEvent,

src/lib/chips/chip-list.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {Directionality} from '@angular/cdk/bidi';
1111
import {coerceBooleanProperty} from '@angular/cdk/coercion';
1212
import {SelectionModel} from '@angular/cdk/collections';
1313
import {BACKSPACE, LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes';
14-
import {startWith} from 'rxjs/operators';
14+
import {startWith} from 'rxjs/operators/startWith';
1515
import {
1616
AfterContentInit,
1717
ChangeDetectionStrategy,

src/lib/datepicker/calendar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import {
3636
SimpleChanges,
3737
} from '@angular/core';
3838
import {DateAdapter, MAT_DATE_FORMATS, MatDateFormats} from '@angular/material/core';
39-
import {first} from 'rxjs/operators';
39+
import {first} from 'rxjs/operators/first';
4040
import {Subscription} from 'rxjs/Subscription';
4141
import {createMissingDateImplError} from './datepicker-errors';
4242
import {MatDatepickerIntl} from './datepicker-intl';

src/lib/datepicker/datepicker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
ScrollStrategy,
1919
} from '@angular/cdk/overlay';
2020
import {ComponentPortal} from '@angular/cdk/portal';
21-
import {first} from 'rxjs/operators';
21+
import {first} from 'rxjs/operators/first';
2222
import {
2323
AfterContentInit,
2424
ChangeDetectionStrategy,

src/lib/dialog/dialog-ref.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
*/
88

99
import {OverlayRef, GlobalPositionStrategy} from '@angular/cdk/overlay';
10-
import {filter, first} from 'rxjs/operators';
10+
import {filter} from 'rxjs/operators/filter';
11+
import {first} from 'rxjs/operators/first';
1112
import {DialogPosition} from './dialog-config';
1213
import {Observable} from 'rxjs/Observable';
1314
import {Subject} from 'rxjs/Subject';

src/lib/dialog/dialog.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import {
1515
ScrollStrategy,
1616
} from '@angular/cdk/overlay';
1717
import {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';
18-
import {startWith, filter} from 'rxjs/operators';
18+
import {filter} from 'rxjs/operators/filter';
19+
import {startWith} from 'rxjs/operators/startWith';
1920
import {Location} from '@angular/common';
2021
import {
2122
ComponentRef,

src/lib/expansion/expansion-panel-header.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import {animate, state, style, transition, trigger} from '@angular/animations';
1010
import {FocusMonitor} from '@angular/cdk/a11y';
1111
import {ENTER, SPACE} from '@angular/cdk/keycodes';
12-
import {filter} from 'rxjs/operators';
12+
import {filter} from 'rxjs/operators/filter';
1313
import {
1414
ChangeDetectionStrategy,
1515
ChangeDetectorRef,

src/lib/form-field/form-field.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88

99
import {animate, state, style, transition, trigger} from '@angular/animations';
1010
import {coerceBooleanProperty} from '@angular/cdk/coercion';
11-
import {first, startWith} from 'rxjs/operators';
11+
import {first} from 'rxjs/operators/first';
12+
import {startWith} from 'rxjs/operators/startWith';
1213
import {
1314
AfterContentChecked,
1415
AfterContentInit,

src/lib/icon/icon-registry.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {catchError, tap, finalize, map, share} from 'rxjs/operators';
9+
import {catchError} from 'rxjs/operators/catchError';
10+
import {tap} from 'rxjs/operators/tap';
11+
import {finalize} from 'rxjs/operators/finalize';
12+
import {map} from 'rxjs/operators/map';
13+
import {share} from 'rxjs/operators/share';
1014
import {Injectable, Optional, SecurityContext, SkipSelf} from '@angular/core';
1115
import {HttpClient} from '@angular/common/http';
1216
import {DomSanitizer, SafeResourceUrl} from '@angular/platform-browser';

src/lib/icon/icon.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9-
import {first} from 'rxjs/operators';
9+
import {first} from 'rxjs/operators/first';
1010
import {
1111
Attribute,
1212
ChangeDetectionStrategy,

src/lib/menu/menu-directive.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import {AnimationEvent} from '@angular/animations';
1010
import {FocusKeyManager} from '@angular/cdk/a11y';
1111
import {Direction} from '@angular/cdk/bidi';
1212
import {ESCAPE, LEFT_ARROW, RIGHT_ARROW} from '@angular/cdk/keycodes';
13-
import {startWith, switchMap, first} from 'rxjs/operators';
13+
import {startWith} from 'rxjs/operators/startWith';
14+
import {switchMap} from 'rxjs/operators/switchMap';
15+
import {first} from 'rxjs/operators/first';
1416
import {
1517
AfterContentInit,
1618
ChangeDetectionStrategy,

src/lib/menu/menu-trigger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
VerticalConnectionPos,
2121
} from '@angular/cdk/overlay';
2222
import {TemplatePortal} from '@angular/cdk/portal';
23-
import {filter} from 'rxjs/operators';
23+
import {filter} from 'rxjs/operators/filter';
2424
import {
2525
AfterContentInit,
2626
Directive,

src/lib/select/select.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import {
4040
import {MatFormFieldModule} from '@angular/material/form-field';
4141
import {By} from '@angular/platform-browser';
4242
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
43-
import {map} from 'rxjs/operators';
43+
import {map} from 'rxjs/operators/map';
4444
import {Subject} from 'rxjs/Subject';
4545
import {MatSelectModule} from './index';
4646
import {MatSelect} from './select';

src/lib/select/select.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ import {
1818
ScrollStrategy,
1919
ViewportRuler,
2020
} from '@angular/cdk/overlay';
21-
import {filter, first, map, startWith, takeUntil} from 'rxjs/operators';
21+
import {filter} from 'rxjs/operators/filter';
22+
import {first} from 'rxjs/operators/first';
23+
import {map} from 'rxjs/operators/map';
24+
import {startWith} from 'rxjs/operators/startWith';
25+
import {takeUntil} from 'rxjs/operators/takeUntil';
2226
import {
2327
AfterContentInit,
2428
Attribute,

src/lib/sidenav/drawer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ import {
3232
} from '@angular/core';
3333
import {DOCUMENT} from '@angular/platform-browser';
3434
import {merge} from 'rxjs/observable/merge';
35-
import {filter, first, startWith, takeUntil, map} from 'rxjs/operators';
35+
import {filter} from 'rxjs/operators/filter';
36+
import {first} from 'rxjs/operators/first';
37+
import {startWith} from 'rxjs/operators/startWith';
38+
import {takeUntil} from 'rxjs/operators/takeUntil';
39+
import {map} from 'rxjs/operators/map';
3640
import {Subject} from 'rxjs/Subject';
3741
import {Observable} from 'rxjs/Observable';
3842

src/lib/snack-bar/snack-bar-container.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {
3232
ComponentPortal,
3333
CdkPortalOutlet,
3434
} from '@angular/cdk/portal';
35-
import {first} from 'rxjs/operators';
35+
import {first} from 'rxjs/operators/first';
3636
import {AnimationCurves, AnimationDurations} from '@angular/material/core';
3737
import {Observable} from 'rxjs/Observable';
3838
import {Subject} from 'rxjs/Subject';

src/lib/snack-bar/snack-bar.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';
1616
import {MatSnackBarContainer} from './snack-bar-container';
1717
import {MatSnackBarRef} from './snack-bar-ref';
1818
import {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';
19-
import {takeUntil, first} from 'rxjs/operators';
19+
import {takeUntil} from 'rxjs/operators/takeUntil';
20+
import {first} from 'rxjs/operators/first';
2021

2122

2223
/**

src/lib/sort/sort.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {async, ComponentFixture, inject, TestBed} from '@angular/core/testing';
66
import {By} from '@angular/platform-browser';
77
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
88
import {Observable} from 'rxjs/Observable';
9-
import {map} from 'rxjs/operators';
9+
import {map} from 'rxjs/operators/map';
1010
import {MatTableModule} from '../table/index';
1111
import {
1212
MatSort,

src/lib/table/table-data-source.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import {BehaviorSubject} from 'rxjs/BehaviorSubject';
1111
import {MatPaginator} from '@angular/material/paginator';
1212
import {MatSort} from '@angular/material/sort';
1313
import {Subscription} from 'rxjs/Subscription';
14-
import {combineLatest, map, startWith} from 'rxjs/operators';
14+
import {combineLatest} from 'rxjs/operators/combineLatest';
15+
import {map} from 'rxjs/operators/map';
16+
import {startWith} from 'rxjs/operators/startWith';
1517
import {empty} from 'rxjs/observable/empty';
1618

1719
/**

src/lib/tabs/tab-header.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import {Direction, Directionality} from '@angular/cdk/bidi';
1010
import {ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE} from '@angular/cdk/keycodes';
11-
import {startWith} from 'rxjs/operators';
11+
import {startWith} from 'rxjs/operators/startWith';
1212
import {
1313
AfterContentChecked,
1414
AfterContentInit,

src/lib/tabs/tab-nav-bar/tab-nav-bar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import {Directionality} from '@angular/cdk/bidi';
99
import {coerceBooleanProperty} from '@angular/cdk/coercion';
1010
import {Platform} from '@angular/cdk/platform';
11-
import {takeUntil} from 'rxjs/operators';
11+
import {takeUntil} from 'rxjs/operators/takeUntil';
1212
import {ViewportRuler} from '@angular/cdk/scrolling';
1313
import {
1414
AfterContentInit,

src/lib/tooltip/tooltip.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
} from '@angular/cdk/overlay';
2525
import {Platform} from '@angular/cdk/platform';
2626
import {ComponentPortal} from '@angular/cdk/portal';
27-
import {first} from 'rxjs/operators';
27+
import {first} from 'rxjs/operators/first';
2828
import {ScrollDispatcher} from '@angular/cdk/scrolling';
2929
import {
3030
ChangeDetectionStrategy,

test/karma-test-shim.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ System.config({
102102
packages: {
103103
// Thirdparty barrels.
104104
'rxjs': {main: 'index'},
105-
'rxjs/operators': {main: 'index'},
106105

107106
// Set the default extension for the root package, because otherwise the demo-app can't
108107
// be built within the production mode. Due to missing file extensions.

0 commit comments

Comments
 (0)