Skip to content

Commit

Permalink
Update deps and drop node 16 support
Browse files Browse the repository at this point in the history
  • Loading branch information
kanongil committed Dec 13, 2023
1 parent 7ba0289 commit af0b5f8
Show file tree
Hide file tree
Showing 11 changed files with 681 additions and 4,311 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/node.js.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:

strategy:
matrix:
node-version: [ 16, 18, 'latest' ]
node-version: [ 18, 20, 'latest' ]

steps:
- uses: actions/checkout@v3
Expand Down
4,914 changes: 643 additions & 4,271 deletions package-lock.json

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
"author": "Gil Pedersen <[email protected]>",
"license": "BSD-2-Clause",
"engines": {
"node": ">=16.17.0"
"node": ">=18.12.0"
},
"dependencies": {
"@hapi/hoek": "^10.0.0",
"hls-playlist-reader": "^3.0.3",
"@hapi/hoek": "^11.0.4",
"hls-playlist-reader": "^4.0.0",
"m3u8parse": "^4.0.0"
},
"devDependencies": {
Expand All @@ -43,14 +43,14 @@
"@types/hapi__inert": "^5.2.3",
"@types/mime-types": "^2.1.0",
"@types/mocha": "^10.0.1",
"@typescript-eslint/eslint-plugin": "^5.29.0",
"@typescript-eslint/parser": "^5.29.0",
"c8": "^7.12.0",
"concurrently": "^7.4.0",
"@typescript-eslint/eslint-plugin": "^6.14.0",
"@typescript-eslint/parser": "^6.14.0",
"c8": "^8.0.1",
"concurrently": "^8.2.2",
"eslint": "^8.23.0",
"joi": "^17.2.0",
"mocha": "^10.0.0",
"typescript": "~4.9.5",
"typescript": "~5.3.3",
"uristream": "^6.3.2"
},
"repository": {
Expand Down
4 changes: 2 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { HlsPlaylistFetcher, HlsPlaylistFetcherOptions } from 'hls-playlist-reader/fetcher';
import { ContentFetcher, webstreamImpl as WS } from 'hls-playlist-reader/helpers';
import { ContentFetcher } from 'hls-playlist-reader/helpers';
import { M3U8Playlist, MediaPlaylist } from 'm3u8parse';
import { HlsFetcherObject, HlsSegmentFetcher, HlsSegmentFetcherOptions } from './segment-fetcher.js';
import { HlsSegmentReadable } from './segment-readable.js';
Expand Down Expand Up @@ -39,7 +39,7 @@ const createSimpleReader = function (uri: URL | string, options: SimpleReaderOpt

if (options.stopDate) {
const stopDate = new Date(options.stopDate);
readable = readable.pipeThrough(new WS.TransformStream({
readable = readable.pipeThrough(new TransformStream({
transform(obj, controller) {

if ((obj.entry.program_time || 0) > stopDate) {
Expand Down
10 changes: 4 additions & 6 deletions src/part-stream.web.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
import type { ContentFetcher } from 'hls-playlist-reader/helpers.web';

import { webstreamImpl as WS } from 'hls-playlist-reader/helpers';

import { PartStreamCtor, PartStreamOptions, partStreamSetup } from './part-stream.js';

export class PartStream extends partStreamSetup<ReadableStream, Omit<ReadableStream<Uint8Array>, 'new'> & PartStreamCtor<ReadableStream>>(WS.ReadableStream as any) {
export class PartStream extends partStreamSetup<ReadableStream, Omit<ReadableStream<Uint8Array>, 'new'> & PartStreamCtor<ReadableStream>>(ReadableStream as any) {

#transform: TransformStream;

constructor(fetcher: InstanceType<typeof ContentFetcher>, options: PartStreamOptions) {

super(fetcher, options);

this.#transform = new WS.TransformStream();
this.#transform = new TransformStream();

// Mirror transform ReadableStream

for (const key of Reflect.ownKeys(WS.ReadableStream.prototype)) {
const descriptor = Object.getOwnPropertyDescriptor(WS.ReadableStream.prototype, key)!;
for (const key of Reflect.ownKeys(ReadableStream.prototype)) {
const descriptor = Object.getOwnPropertyDescriptor(ReadableStream.prototype, key)!;
if (key === 'constructor') {
continue;
}
Expand Down
6 changes: 3 additions & 3 deletions src/segment-readable.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/// <reference lib="dom" />

import { assert, webstreamImpl as WS } from 'hls-playlist-reader/helpers';
import { assert } from 'hls-playlist-reader/helpers';

import { HlsFetcherObject, HlsSegmentFetcher } from './segment-fetcher.js';

Expand Down Expand Up @@ -46,15 +46,15 @@ class HlsSegmentSource /*implements UnderlyingSource<HlsFetcherObject>*/ {
* Reads an HLS media playlist, and output segments in order.
* Live & Event playlists are refreshed as needed, and expired segments are dropped when backpressure is applied.
*/
export class HlsSegmentReadable extends WS.ReadableStream<HlsFetcherObject> {
export class HlsSegmentReadable extends ReadableStream<HlsFetcherObject> {

source: HlsSegmentSource;

constructor(fetcher: HlsSegmentFetcher) {

const source = new HlsSegmentSource(fetcher);

super(source, new WS.CountQueuingStrategy({ highWaterMark: 0 }));
super(source, new CountQueuingStrategy({ highWaterMark: 0 }));

this.source = source;
}
Expand Down
14 changes: 7 additions & 7 deletions src/segment-streamer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type { HlsFetcherObject } from './index.js';
import type { PartStreamCtor } from './part-stream.js';

import { AttrList } from 'm3u8parse';
import { assert, webstreamImpl as WS, Byterange, ContentFetcher, IDownloadTracker, IFetchResult, wait } from 'hls-playlist-reader/helpers';
import { assert, Byterange, ContentFetcher, IDownloadTracker, IFetchResult, wait } from 'hls-playlist-reader/helpers';
import { ContentFetcher as ContentFetcherWeb } from 'hls-playlist-reader/helpers.web';

try {
Expand Down Expand Up @@ -390,7 +390,7 @@ export class HlsSegmentDataSource implements Transformer<HlsFetcherObject, HlsSt
}


export class HlsSegmentStreamer extends WS.ReadableStream<HlsStreamerObject> {
export class HlsSegmentStreamer extends ReadableStream<HlsStreamerObject> {

readonly source: HlsSegmentDataSource;

Expand All @@ -399,10 +399,10 @@ export class HlsSegmentStreamer extends WS.ReadableStream<HlsStreamerObject> {
super();

let source;
const transform = new WS.TransformStream(
const transform = new TransformStream(
source = new HlsSegmentDataSource(options),
new WS.CountQueuingStrategy({ highWaterMark: 1 }),
new WS.CountQueuingStrategy({ highWaterMark: options.highWaterMark ?? 0 })
new CountQueuingStrategy({ highWaterMark: 1 }),
new CountQueuingStrategy({ highWaterMark: options.highWaterMark ?? 0 })
);

this.source = source;
Expand All @@ -413,8 +413,8 @@ export class HlsSegmentStreamer extends WS.ReadableStream<HlsStreamerObject> {

// Mirror transform ReadableStream

for (const key of Reflect.ownKeys(WS.ReadableStream.prototype)) {
const descriptor = Object.getOwnPropertyDescriptor(WS.ReadableStream.prototype, key)!;
for (const key of Reflect.ownKeys(ReadableStream.prototype)) {
const descriptor = Object.getOwnPropertyDescriptor(ReadableStream.prototype, key)!;
if (key === 'constructor') {
continue;
}
Expand Down
4 changes: 2 additions & 2 deletions src/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"allowSyntheticDefaultImports": true,
"target": "ES2022",
"lib": [ "ES2021", "ES2022.Error" ],
"module": "ES2022",
"moduleResolution": "node16",
"module": "Node16",
"moduleResolution": "Node16",
"isolatedModules": true,
"declaration": true,
"strict": true,
Expand Down
6 changes: 3 additions & 3 deletions test/part-stream.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { expect } from '@hapi/code';
import Hapi from '@hapi/hapi';
import Joi from 'joi';

import { assert, ContentFetcher as ContentFetcherDefault, Deferred, wait, webstreamImpl as WS } from 'hls-playlist-reader/helpers';
import { assert, ContentFetcher as ContentFetcherDefault, Deferred, wait } from 'hls-playlist-reader/helpers';
import { ContentFetcher as ContentFetcherWeb } from 'hls-playlist-reader/helpers.web';

import { PartStream as PartStreamNode } from '../lib/part-stream.node.js';
Expand Down Expand Up @@ -60,11 +60,11 @@ class InstrumentedSignal extends EventTarget implements AbortSignal {

const devNull = async (stream?: ReadableStream | Readable): Promise<number> => {

if (stream instanceof WS.ReadableStream) {
if (stream instanceof ReadableStream) {
return new Promise<number>((resolve, reject) => {

let consumed = 0;
stream.pipeTo(new WS.WritableStream<Uint8Array>({
stream.pipeTo(new WritableStream<Uint8Array>({
abort: reject,
write(c) {

Expand Down
12 changes: 6 additions & 6 deletions test/streamer.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { provisionServer, provisionLiveServer, genIndex, ServerState, Unprotecte
import { createSimpleReader, HlsFetcherObject, HlsSegmentReadable, HlsSegmentStreamer, HlsStreamerObject } from '../lib/index.js';
import { HlsSegmentStreamerOptions } from '../lib/segment-streamer.js';
import { HlsPlaylistFetcher, HlsPlaylistFetcherOptions } from 'hls-playlist-reader/fetcher';
import { ContentFetcher, Deferred, webstreamImpl as WS } from 'hls-playlist-reader/helpers';
import { ContentFetcher, Deferred } from 'hls-playlist-reader/helpers';
import { HlsSegmentFetcher, HlsSegmentFetcherOptions } from '../lib/segment-fetcher.js';


Expand All @@ -38,11 +38,11 @@ const nextValue = async function<T> (iter: AsyncIterator<T>, expectDone = false)

const devNull = async (stream?: ReadableStream | Readable): Promise<number> => {

if (stream instanceof WS.ReadableStream) {
if (stream instanceof ReadableStream) {
return new Promise<number>((resolve, reject) => {

let consumed = 0;
stream.pipeTo(new WS.WritableStream<Uint8Array>({
stream.pipeTo(new WritableStream<Uint8Array>({
abort: reject,
write(c) {

Expand Down Expand Up @@ -105,7 +105,7 @@ describe('HlsSegmentStreamer()', () => {

it('creates a valid object', () => {

const r = new HlsSegmentStreamer(new WS.ReadableStream());
const r = new HlsSegmentStreamer(new ReadableStream());

expect(r).to.be.instanceOf(HlsSegmentStreamer);
});
Expand Down Expand Up @@ -348,8 +348,8 @@ describe('HlsSegmentStreamer()', () => {
for await (const obj of r) {
const hasher = createHash('sha1');

if (obj.stream instanceof WS.ReadableStream) {
await obj.stream.pipeTo(new WS.WritableStream({
if (obj.stream instanceof ReadableStream) {
await obj.stream.pipeTo(new WritableStream({
write(chunk) {

hasher.update(chunk);
Expand Down
4 changes: 2 additions & 2 deletions test/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"allowSyntheticDefaultImports": true,
"target": "ES2022",
"lib": [ "ES2020" ],
"module": "ES2022",
"moduleResolution": "node16",
"module": "Node16",
"moduleResolution": "Node16",
"isolatedModules": true,
"declaration": false,
"strict": true,
Expand Down

0 comments on commit af0b5f8

Please sign in to comment.