From fb1ead0fde90a87676b6dffa15753b293162e0e1 Mon Sep 17 00:00:00 2001 From: Jason Walton Date: Thu, 1 Apr 2021 13:20:35 -0400 Subject: [PATCH 1/2] fix(types): Remove unused Loader.loader property. --- api-extractor/report/hls.js.api.md | 2 -- package-lock.json | 36 ++++++++++++++++++++++++++-- src/types/loader.ts | 1 - src/utils/fetch-loader.ts | 2 +- src/utils/xhr-loader.ts | 2 +- tests/unit/loader/fragment-loader.ts | 1 - 6 files changed, 36 insertions(+), 8 deletions(-) diff --git a/api-extractor/report/hls.js.api.md b/api-extractor/report/hls.js.api.md index 30d9d4914ab..210d5fcb366 100644 --- a/api-extractor/report/hls.js.api.md +++ b/api-extractor/report/hls.js.api.md @@ -1560,8 +1560,6 @@ export interface Loader { // (undocumented) load(context: LoaderContext, config: LoaderConfiguration, callbacks: LoaderCallbacks): void; // (undocumented) - loader: any; - // (undocumented) stats: LoaderStats; } diff --git a/package-lock.json b/package-lock.json index 3ce85d5b0cd..1f41d2ac320 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6007,6 +6007,16 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -10966,6 +10976,13 @@ "integrity": "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -15801,6 +15818,13 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, "nanoid": { "version": "3.1.20", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", @@ -21861,7 +21885,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -22511,7 +22539,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", diff --git a/src/types/loader.ts b/src/types/loader.ts index 3bcf950904f..0d8cbef6a4d 100644 --- a/src/types/loader.ts +++ b/src/types/loader.ts @@ -122,7 +122,6 @@ export interface Loader { ): void; getResponseHeader(name: string): string | null; context: T; - loader: any; stats: LoaderStats; } diff --git a/src/utils/fetch-loader.ts b/src/utils/fetch-loader.ts index 4fb139eaf69..24a4b2b0a4d 100644 --- a/src/utils/fetch-loader.ts +++ b/src/utils/fetch-loader.ts @@ -37,7 +37,7 @@ class FetchLoader implements Loader { private config: LoaderConfiguration | null = null; private callbacks: LoaderCallbacks | null = null; public stats: LoaderStats; - public loader: Response | null = null; + private loader: Response | null = null; constructor(config /* HlsConfig */) { this.fetchSetup = config.fetchSetup || getRequest; diff --git a/src/utils/xhr-loader.ts b/src/utils/xhr-loader.ts index ce6f2605d19..15b417a379e 100644 --- a/src/utils/xhr-loader.ts +++ b/src/utils/xhr-loader.ts @@ -17,7 +17,7 @@ class XhrLoader implements Loader { private callbacks: LoaderCallbacks | null = null; public context!: LoaderContext; - public loader: XMLHttpRequest | null = null; + private loader: XMLHttpRequest | null = null; public stats: LoaderStats; constructor(config /* HlsConfig */) { diff --git a/tests/unit/loader/fragment-loader.ts b/tests/unit/loader/fragment-loader.ts index 0fd614fc9f2..2a29d197b30 100644 --- a/tests/unit/loader/fragment-loader.ts +++ b/tests/unit/loader/fragment-loader.ts @@ -22,7 +22,6 @@ const expect = chai.expect; class MockXhr implements Loader { context!: LoaderContext; - loader: any; stats: LoadStats; callbacks?: LoaderCallbacks; From 87906b2d66c133e9a0de39138a0b710cff0747cf Mon Sep 17 00:00:00 2001 From: Jason Walton Date: Thu, 1 Apr 2021 14:10:40 -0400 Subject: [PATCH 2/2] refactor: Replace `getResponseHeader()` with `getCacheAge()`. --- api-extractor/report/hls.js.api.md | 3 +-- src/loader/playlist-loader.ts | 3 +-- src/types/loader.ts | 6 +++++- src/utils/fetch-loader.ts | 12 +++++------- src/utils/xhr-loader.ts | 13 +++++++++---- tests/unit/loader/fragment-loader.ts | 4 ++-- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/api-extractor/report/hls.js.api.md b/api-extractor/report/hls.js.api.md index 210d5fcb366..a828e25191b 100644 --- a/api-extractor/report/hls.js.api.md +++ b/api-extractor/report/hls.js.api.md @@ -1555,8 +1555,7 @@ export interface Loader { context: T; // (undocumented) destroy(): void; - // (undocumented) - getResponseHeader(name: string): string | null; + getCacheAge(): number; // (undocumented) load(context: LoaderContext, config: LoaderConfiguration, callbacks: LoaderCallbacks): void; // (undocumented) diff --git a/src/loader/playlist-loader.ts b/src/loader/playlist-loader.ts index 4dfb45daac8..ce8f4ccb5c1 100644 --- a/src/loader/playlist-loader.ts +++ b/src/loader/playlist-loader.ts @@ -684,8 +684,7 @@ class PlaylistLoader { } if (levelDetails.live) { - const ageHeader = loader.getResponseHeader('age'); - levelDetails.ageHeader = ageHeader ? parseFloat(ageHeader) : 0; + levelDetails.ageHeader = loader.getCacheAge(); } switch (type) { diff --git a/src/types/loader.ts b/src/types/loader.ts index 0d8cbef6a4d..4b2745b2562 100644 --- a/src/types/loader.ts +++ b/src/types/loader.ts @@ -120,7 +120,11 @@ export interface Loader { config: LoaderConfiguration, callbacks: LoaderCallbacks ): void; - getResponseHeader(name: string): string | null; + /** + * Returns the time, in seconds, that this object has been in a proxy cache. + * For HTTP based loaders, this returns the value of the "age" HTTP header. + */ + getCacheAge(): number; context: T; stats: LoaderStats; } diff --git a/src/utils/fetch-loader.ts b/src/utils/fetch-loader.ts index 24a4b2b0a4d..ee3fc28ab77 100644 --- a/src/utils/fetch-loader.ts +++ b/src/utils/fetch-loader.ts @@ -160,15 +160,13 @@ class FetchLoader implements Loader { }); } - getResponseHeader(name: string): string | null { + getCacheAge(): number { + let result: number = 0; if (this.response) { - try { - return this.response.headers.get(name); - } catch (error) { - /* Could not get header */ - } + const ageHeader = this.response.headers.get('age'); + result = ageHeader ? parseFloat(ageHeader) : 0; } - return null; + return result; } private loadProgressively( diff --git a/src/utils/xhr-loader.ts b/src/utils/xhr-loader.ts index 15b417a379e..6232ad9a624 100644 --- a/src/utils/xhr-loader.ts +++ b/src/utils/xhr-loader.ts @@ -249,11 +249,16 @@ class XhrLoader implements Loader { } } - getResponseHeader(name: string): string | null { - if (this.loader && this.loader.getAllResponseHeaders().indexOf(name) >= 0) { - return this.loader.getResponseHeader(name); + getCacheAge(): number { + let result: number = 0; + if ( + this.loader && + this.loader.getAllResponseHeaders().indexOf('age') >= 0 + ) { + const ageHeader = this.loader.getResponseHeader('age'); + result = ageHeader ? parseFloat(ageHeader) : 0; } - return null; + return result; } } diff --git a/tests/unit/loader/fragment-loader.ts b/tests/unit/loader/fragment-loader.ts index 2a29d197b30..24705077dce 100644 --- a/tests/unit/loader/fragment-loader.ts +++ b/tests/unit/loader/fragment-loader.ts @@ -35,8 +35,8 @@ class MockXhr implements Loader { abort() {} destroy(): void {} - getResponseHeader(name: string): string | null { - return null; + getCacheAge(): number { + return 0; } }