Skip to content

Commit

Permalink
Provide own finished fn
Browse files Browse the repository at this point in the history
Node's promise `finished` function is only available in Node 16.
  • Loading branch information
fb55 committed Mar 17, 2022
1 parent 3c01e78 commit 459094c
Show file tree
Hide file tree
Showing 8 changed files with 15 additions and 10 deletions.
4 changes: 2 additions & 2 deletions bench/memory/sax-parser.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { readFile } from 'node:fs/promises';
import format from 'human-format';
import memwatch from '@airbnb/node-memwatch';
import { SAXParser } from '../../packages/parse5-sax-parser/dist/index.js';
import { finished } from 'node:stream/promises';
import { SAXParser } from 'parse5-sax-parser/dist/index.js';
import { finished } from 'parse5-test-utils/dist/common.js';

main();

Expand Down
3 changes: 1 addition & 2 deletions bench/perf/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@ import { readFileSync, createReadStream, readdirSync } from 'node:fs';
import Benchmark from 'benchmark';
import { loadTreeConstructionTestData } from 'parse5-test-utils/dist/generate-parsing-tests.js';
import { loadSAXParserTestData } from 'parse5-test-utils/dist/load-sax-parser-test-data.js';
import { treeAdapters, WritableStreamStub } from 'parse5-test-utils/dist/common.js';
import { treeAdapters, WritableStreamStub, finished } from 'parse5-test-utils/dist/common.js';
import * as parse5 from '../../packages/parse5/dist/index.js';
import { ParserStream as parse5Stream } from '../../packages/parse5-parser-stream/dist/index.js';
import * as parse5Upstream from 'parse5';
import { finished } from 'node:stream/promises';

const hugePagePath = new URL('../../test/data/huge-page/huge-page.html', import.meta.url);
const treeConstructionPath = new URL('../../test/data/html5lib-tests/tree-construction', import.meta.url);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { outdent } from 'outdent';
import { RewritingStream } from '../lib/index.js';
import { loadSAXParserTestData } from 'parse5-test-utils/utils/load-sax-parser-test-data.js';
import { getStringDiffMsg, writeChunkedToStream, WritableStreamStub } from 'parse5-test-utils/utils/common.js';
import { finished } from 'node:stream/promises';
import { finished } from 'parse5-test-utils/utils/common.js';

const srcHtml = outdent`
<!DOCTYPE html "">
Expand Down
2 changes: 1 addition & 1 deletion packages/parse5-parser-stream/test/parser-stream.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as assert from 'node:assert';
import { ParserStream } from '../lib/index.js';
import { generateParsingTests } from 'parse5-test-utils/utils/generate-parsing-tests.js';
import { parseChunked } from './utils/parse-chunked.js';
import { finished } from 'node:stream/promises';
import { finished } from 'parse5-test-utils/utils/common.js';

generateParsingTests('ParserStream', 'ParserStream', { skipFragments: true }, (test, opts) =>
parseChunked(test.input, opts)
Expand Down
2 changes: 1 addition & 1 deletion packages/parse5-parser-stream/test/scripting.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { ParserStream } from '../lib/index.js';
import { generateParsingTests } from 'parse5-test-utils/utils/generate-parsing-tests.js';
import { makeChunks, generateTestsForEachTreeAdapter } from 'parse5-test-utils/utils/common.js';
import { runInNewContext } from 'node:vm';
import { finished } from 'node:stream/promises';
import { finished } from 'parse5-test-utils/utils/common.js';

function pause(): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, 5));
Expand Down
2 changes: 1 addition & 1 deletion packages/parse5-sax-parser/test/sax-parser.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as assert from 'node:assert';
import * as fs from 'node:fs';
import { finished } from 'node:stream/promises';
import { finished } from 'parse5-test-utils/utils/common.js';
import { SAXParser, SAXParserOptions } from '../lib/index.js';
import { loadSAXParserTestData } from 'parse5-test-utils/utils/load-sax-parser-test-data.js';
import {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { SerializerStream } from '../lib/index.js';
import { generateSerializerTests } from 'parse5-test-utils/utils/generate-serializer-tests.js';
import { WritableStreamStub } from 'parse5-test-utils/utils/common.js';
import { finished } from 'node:stream/promises';
import { finished } from 'parse5-test-utils/utils/common.js';

generateSerializerTests('SerializerStream', 'SerializerStream', async (document, opts) => {
const stream = new SerializerStream(document, opts);
Expand Down
8 changes: 7 additions & 1 deletion test/utils/common.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Writable } from 'node:stream';
import { Writable, Readable, finished as finishedCb } from 'node:stream';
import * as assert from 'node:assert';
import type { TreeAdapter } from 'parse5/dist/tree-adapters/interface.js';
import * as defaultTreeAdapter from 'parse5/dist/tree-adapters/default.js';
Expand Down Expand Up @@ -130,3 +130,9 @@ export function getSubstringByLineCol(lines: string[], loc: Location): string {

return lines.join('\n');
}

// TODO [engine:node@>=16]: Replace this with `finished` from 'node:stream/promises'.

export function finished(stream: Writable | Readable): Promise<void> {
return new Promise((resolve, reject) => finishedCb(stream, (err) => (err ? reject(err) : resolve())));
}

0 comments on commit 459094c

Please sign in to comment.