From 391c958fbc992d36cffdd4f2431086a6d9faa608 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 23:30:49 +0000 Subject: [PATCH] Upgrade rxjs to ^7.8 and remove rxjs-compat Co-Authored-By: Toby Drinkall --- package-lock.json | 76 ++----------------- package.json | 3 +- src/app/feeds/feed/feed.component.ts | 10 +-- .../item-details/item-details.component.ts | 11 ++- .../shared/services/hackernews-api.service.ts | 5 +- src/app/user/user.component.ts | 11 ++- 6 files changed, 27 insertions(+), 89 deletions(-) diff --git a/package-lock.json b/package-lock.json index 666087f39..b52825886 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/router": "^20.0.0", "@angular/service-worker": "^20.0.0", - "rxjs": "~6.6.7", - "rxjs-compat": "^6.6.7", + "rxjs": "^7.8.2", "tslib": "^2.6.0", "unfetch": "^4.1.0", "zone.js": "~0.15.0" @@ -276,16 +275,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-20.3.31.tgz", @@ -419,16 +408,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-webpack": { "version": "0.2003.31", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.2003.31.tgz", @@ -449,16 +428,6 @@ "webpack-dev-server": "^5.0.2" } }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/core": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.31.tgz", @@ -487,16 +456,6 @@ } } }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/schematics": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.31.tgz", @@ -516,16 +475,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular/build": { "version": "20.3.31", "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.31.tgz", @@ -12756,29 +12705,14 @@ } }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "tslib": "^2.1.0" } }, - "node_modules/rxjs-compat": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs-compat/-/rxjs-compat-6.6.7.tgz", - "integrity": "sha512-szN4fK+TqBPOFBcBcsR0g2cmTTUF/vaFEOZNuSdfU8/pGFnNmmn2u8SystYXG1QMrjOPBc6XTKHMVfENDf6hHw==", - "license": "Apache-2.0" - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "license": "Apache-2.0" - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", diff --git a/package.json b/package.json index e264716bc..44b264366 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,7 @@ "@angular/platform-browser": "^20.0.0", "@angular/router": "^20.0.0", "@angular/service-worker": "^20.0.0", - "rxjs": "~6.6.7", - "rxjs-compat": "^6.6.7", + "rxjs": "^7.8.2", "tslib": "^2.6.0", "unfetch": "^4.1.0", "zone.js": "~0.15.0" diff --git a/src/app/feeds/feed/feed.component.ts b/src/app/feeds/feed/feed.component.ts index 939b10306..9b277ab8c 100644 --- a/src/app/feeds/feed/feed.component.ts +++ b/src/app/feeds/feed/feed.component.ts @@ -37,14 +37,14 @@ export class FeedComponent implements OnInit { this.pageSub = this.route.params.subscribe(params => { this.pageNum = params['page'] ? +params['page'] : 1; this._hackerNewsAPIService.fetchFeed(this.feedType, this.pageNum) - .subscribe( - items => this.items = items, - error => this.errorMessage = 'Could not load ' + this.feedType + ' stories.', - () => { + .subscribe({ + next: items => this.items = items, + error: () => this.errorMessage = 'Could not load ' + this.feedType + ' stories.', + complete: () => { this.listStart = ((this.pageNum - 1) * 30) + 1; window.scrollTo(0, 0); } - ); + }); }); } } diff --git a/src/app/item-details/item-details.component.ts b/src/app/item-details/item-details.component.ts index 451e876f4..98956c086 100644 --- a/src/app/item-details/item-details.component.ts +++ b/src/app/item-details/item-details.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Location } from '@angular/common'; -import { Subscription } from 'rxjs/Subscription'; +import { Subscription } from 'rxjs'; import { HackerNewsAPIService } from '../shared/services/hackernews-api.service'; import { SettingsService } from '../shared/services/settings.service'; @@ -33,9 +33,12 @@ export class ItemDetailsComponent implements OnInit { ngOnInit() { this.sub = this.route.params.subscribe(params => { let itemID = +params['id']; - this._hackerNewsAPIService.fetchItemContent(itemID).subscribe(item => { - this.item = item; - }, error => this.errorMessage = 'Could not load item comments.'); + this._hackerNewsAPIService.fetchItemContent(itemID).subscribe({ + next: item => { + this.item = item; + }, + error: () => this.errorMessage = 'Could not load item comments.' + }); }); window.scrollTo(0, 0); } diff --git a/src/app/shared/services/hackernews-api.service.ts b/src/app/shared/services/hackernews-api.service.ts index e5c565364..78ba89721 100644 --- a/src/app/shared/services/hackernews-api.service.ts +++ b/src/app/shared/services/hackernews-api.service.ts @@ -1,7 +1,6 @@ import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs/Observable'; +import { Observable, map } from 'rxjs'; import fetch from 'unfetch'; -import {map } from 'rxjs/operators'; import { Story } from '../models/story'; import { User } from '../models/user'; @@ -45,7 +44,7 @@ export class HackerNewsAPIService { } } -function lazyFetch(url, options?) { +function lazyFetch(url: string, options?: RequestInit) { return new Observable(fetchObserver => { let cancelToken = false; fetch(url, options) diff --git a/src/app/user/user.component.ts b/src/app/user/user.component.ts index c8991e62a..dfe01649d 100644 --- a/src/app/user/user.component.ts +++ b/src/app/user/user.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Location } from '@angular/common'; -import { Subscription } from 'rxjs/Subscription'; +import { Subscription } from 'rxjs'; import { HackerNewsAPIService } from '../shared/services/hackernews-api.service'; import { User } from '../shared/models/user'; @@ -26,9 +26,12 @@ export class UserComponent implements OnInit { ngOnInit() { this.sub = this.route.params.subscribe(params => { let userID = params['id']; - this._hackerNewsAPIService.fetchUser(userID).subscribe(data => { - this.user = data; - }, error => this.errorMessage = 'Could not load user ' + userID + '.'); + this._hackerNewsAPIService.fetchUser(userID).subscribe({ + next: data => { + this.user = data; + }, + error: () => this.errorMessage = 'Could not load user ' + userID + '.' + }); }); }