Best JavaScript code snippet using playwright-internal
test.js
Source:test.js
1const fs = require('fs');2const stream = require('stream');3const JSONStream = require('json-stream');4const aw = require('../lib/awaitify-stream.js');5const assert = require('assert');6const mainTestFile = 'test/txt/threeConstantLines.lftxt';7const expectedLines = ['foo\n', 'bar\n', 'baz\n'];8const constantLineLength = 4; // 3 letters and a newline character.9function delay(ms) {10 return new Promise((resolve) => {11 setTimeout(resolve, ms);12 })13}14// Do a second loop over all the tests to confirm that delays from asynchronous work don't affect reading or writing.15for (let readSlowly of [false, true]) {16 describe(`awaitify-stream (readSlowly: ${readSlowly})`, function() {17 describe(`just awaitify-stream`, function() {18 // Read constant-length lines without byline.19 async function readConstantLines(testFile) {20 let readStream = fs.createReadStream(testFile);21 readStream.setEncoding('utf8');22 let reader = aw.createReader(readStream);23 let line, lines = [];24 while (null !== (line = await reader.readAsync(constantLineLength))) {25 lines.push(line);26 if (readSlowly) {27 await delay(100);28 }29 }30 return lines;31 }32 it('should read test.js successfully', async function () {33 const testFile = 'test/test.js';34 let readStream = fs.createReadStream(testFile);35 let reader = aw.createReader(readStream);36 let readableListenerCount = readStream.listenerCount('readable');37 let endListenerCount = readStream.listenerCount('end');38 let errorListenerCount = readStream.listenerCount('error');39 let chunk, chunkCount = 0;40 while (null !== (chunk = await reader.readAsync())) {41 chunkCount++;42 if (readSlowly) {43 await delay(100);44 }45 }46 assert.notEqual(chunkCount, 0, 'test.js should be one chunk or more.');47 assert.equal(readStream.listenerCount('readable'), readableListenerCount);48 assert.equal(readStream.listenerCount('end'), endListenerCount);49 assert.equal(readStream.listenerCount('error'), errorListenerCount);50 });51 it('should propagate errors while reading', async function () {52 let readStream = new stream.Readable();53 readStream.read = function () {54 this.emit('error', new Error('dummy'));55 return null;56 };57 let reader = aw.createReader(readStream);58 try {59 await reader.readAsync();60 assert.fail('reader should throw sync read errors');61 } catch (ex) {62 assert.equal(ex.message, 'dummy');63 }64 });65 it('should propagate errors while waiting for read', async function () {66 let readStream = new stream.Readable();67 readStream.read = function () {68 process.nextTick(() => {69 this.emit('error', new Error('dummy'));70 });71 return null;72 };73 let reader = aw.createReader(readStream);74 try {75 await reader.readAsync();76 assert.fail('reader should throw async read errors');77 } catch (ex) {78 assert.equal(ex.message, 'dummy');79 }80 });81 it('should throw a given error only once', async function () {82 let readStream = JSONStream();83 let chunkCount = 0, errorCount = 0;84 let reader = aw.createReader(readStream);85 async function read() {86 let chunk, done;87 do {88 try {89 chunk = await reader.readAsync();90 if (chunk == null) {91 done = true;92 } else {93 chunkCount++;94 }95 } catch (ex) {96 errorCount++;97 assert.equal(errorCount, 1);98 assert.equal(ex.message, 'dummy');99 }100 if (readSlowly) {101 await delay(100);102 }103 } while (!done);104 }105 const readPromise = read();106 readStream.write('1\n');107 readStream.emit('error', new Error('dummy'));108 readStream.write('2\n');109 readStream.write('3\n');110 readStream.end();111 await readPromise;112 assert.equal(errorCount, 1, "One error should be caught.");113 assert.equal(chunkCount, 3, "Three chunks should be read.");114 });115 it('should read an empty file', async function() {116 const testFile = 'test/txt/empty.txt';117 let readStream = fs.createReadStream(testFile);118 let reader = aw.createReader(readStream);119 let chunk, chunkCount = 0;120 while (null !== (chunk = await reader.readAsync())) {121 chunkCount++;122 if (readSlowly) {123 await delay(100);124 }125 }126 assert.equal(chunkCount, 0, 'Empty file should have zero chunks.');127 });128 it('should read a one character file', async function () {129 const testFile = 'test/txt/oneChar.txt';130 let readStream = fs.createReadStream(testFile);131 let reader = aw.createReader(readStream);132 let chunk, chunkCount = 0;133 while (null !== (chunk = await reader.readAsync())) {134 chunkCount++;135 if (readSlowly) {136 await delay(100);137 }138 }139 assert.equal(chunkCount, 1, 'One character file should have one chunk.');140 });141 it('should read constant length lines', async function () {142 let lines = await readConstantLines(mainTestFile);143 assert.deepEqual(lines, expectedLines);144 });145 it('should write a file', async function () {146 const testFile = 'test/writeTest1.test_output';147 let writeStream = fs.createWriteStream(testFile);148 let writer = aw.createWriter(writeStream);149 let drainListenerCount = writeStream.listenerCount('drain');150 let errorListenerCount = writeStream.listenerCount('error');151 for (let i = 0; i < expectedLines.length; i++) {152 await writer.writeAsync(expectedLines[i]);153 if (readSlowly) {154 await delay(100);155 }156 }157 // Indicate that we're done, and wait for all the data to be flushed and the 'finish' event.158 await writer.endAsync();159 // If we waited for everything to flush, then we won't lose any data by calling close.160 writeStream.close();161 // Check the contents of the file we just wrote.162 let lines = await readConstantLines(testFile);163 assert.deepEqual(lines, expectedLines);164 assert.equal(writeStream.listenerCount('drain'), drainListenerCount);165 assert.equal(writeStream.listenerCount('error'), errorListenerCount);166 });167 it('should propagate errors while writing', async function () {168 let writeStream = new stream.Writable();169 writeStream.write = function () {170 this.emit('error', new Error('dummy'));171 return null;172 };173 let writer = aw.createWriter(writeStream);174 try {175 await writer.writeAsync('foobar');176 assert.fail('writer should throw sync write errors');177 } catch (ex) {178 assert.equal(ex.message, 'dummy');179 }180 });181 it('should propagate errors while waiting for write', async function () {182 let writeStream = new stream.Writable();183 writeStream.write = function () {184 return false;185 };186 let writer = aw.createWriter(writeStream);187 let drainListenerCount = writeStream.listenerCount('drain');188 let errorListenerCount = writeStream.listenerCount('error');189 try {190 await writer.writeAsync('foobar');191 process.nextTick(() => {192 writeStream.emit('error', new Error('dummy'));193 });194 await writer.writeAsync('foobar');195 assert.fail('writer should throw async writer errors');196 } catch (ex) {197 assert.equal(ex.message, 'dummy');198 }199 assert.equal(writeStream.listenerCount('drain'), drainListenerCount);200 assert.equal(writeStream.listenerCount('error'), errorListenerCount);201 });202 it('should propagate errors while ending', async function () {203 let writeStream = new stream.Writable();204 writeStream.end = function () {205 this.emit('error', new Error('dummy'));206 };207 let writer = aw.createWriter(writeStream);208 try {209 await writer.endAsync();210 assert.fail('writer should throw sync end errors');211 } catch (ex) {212 assert.equal(ex.message, 'dummy');213 }214 });215 it('should propagate errors while waiting for end', async function () {216 let writeStream = new stream.Writable();217 writeStream.end = function () {218 process.nextTick(() => {219 this.emit('error', new Error('dummy'));220 });221 };222 let writer = aw.createWriter(writeStream);223 let finishListenerCount = writeStream.listenerCount('finish');224 let errorListenerCount = writeStream.listenerCount('error');225 try {226 await writer.endAsync();227 assert.fail('writer should throw sync end errors');228 } catch (ex) {229 assert.equal(ex.message, 'dummy');230 }231 assert.equal(writeStream.listenerCount('finish'), finishListenerCount);232 assert.equal(writeStream.listenerCount('error'), errorListenerCount);233 });234 it('should augment streams with new functions', async function () {235 const testFile = 'test/writeTest2.test_output';236 let writeStream = aw.addAsyncFunctions(fs.createWriteStream(testFile));237 for (let i = 0; i < expectedLines.length; i++) {238 await writeStream.writeAsync(expectedLines[i]);239 if (readSlowly) {240 await delay(100);241 }242 }243 // Indicate that we're done, and wait for all the data to be flushed and the 'finish' event.244 await writeStream.endAsync();245 // If we waited for everything to flush, then we won't lose any data by calling close.246 writeStream.close();247 // Check the contents of the file we just wrote.248 let readStream = aw.addAsyncFunctions(fs.createReadStream(testFile));249 readStream.setEncoding('utf8');250 let line, lines = [];251 while (null !== (line = await readStream.readAsync(constantLineLength))) {252 lines.push(line);253 if (readSlowly) {254 await delay(100);255 }256 }257 assert.deepEqual(lines, expectedLines);258 });259 });260 describe('awaitify-stream in conjunction with byline', function() {261 const byline = require('byline');262 async function readLines(testFile) {263 let readStream = fs.createReadStream(testFile);264 readStream.setEncoding('utf8');265 let lineStream = byline.createStream(readStream, { keepEmptyLines: true });266 let reader = aw.createReader(lineStream);267 let line, lines = [];268 while (null !== (line = await reader.readAsync())) {269 lines.push(line);270 if (readSlowly) {271 await delay(100);272 }273 }274 return lines;275 }276 it('should read an empty file', async function () {277 let lines = await readLines('test/txt/empty.txt');278 assert.deepEqual(lines, [], 'Empty file should have zero lines.');279 });280 it('should read a one character file', async function () {281 let lines = await readLines('test/txt/oneChar.txt');282 assert.deepEqual(lines, ['a'], 'One character file should have one line with just "a".');283 });284 it('should read a newline file', async function () {285 let lines = await readLines('test/txt/newline.txt');286 assert.deepEqual(lines, ['', '']);287 });288 it('should read a one line file', async function () {289 let lines = await readLines('test/txt/oneChar_and_newline.txt');290 assert.deepEqual(lines, ['a', '']);291 });292 it('should read a four-line file', async function () {293 let lines = await readLines(mainTestFile);294 assert.deepEqual(lines, ['foo', 'bar', 'baz', '']);295 });296 it('should read a four-line file without a trailing EOL', async function() {297 let lines = await readLines('test/txt/threeConstantLines_no_eol.lftxt');298 assert.deepEqual(lines, ['foo', 'bar', 'baz']);299 });300 it('should read blank lines', async function () {301 let lines = await readLines('test/txt/lines_and_blanks.txt');302 assert.deepEqual(lines, ['foo', 'bar', 'baz', '', 'qaz', '', 'fin', '']);303 });304 it('should read test.js successfully', async function () {305 let lines = await readLines('test/test.js');306 let matchingLines = lines.filter((line) => {307 return line.indexOf('should read test.js successfully') > -1;308 })309 assert(lines.length > 100, 'There are at least 100 lines in this test file.');310 assert.equal(matchingLines.length, 4,311 'There should be four lines that say "should read test.js successfully"');312 });313 });314 });...
readLines.js
Source:readLines.js
1import { module, test } from "qunit";2import sinon from "sinon";3import { EventEmitter } from "events";4import readLinesInjector from "inject-loader?fs!utils/node/fs/readLines";5module( "utils/node/fs/readLines", {6 beforeEach() {7 this.fakeTimer = sinon.useFakeTimers({8 toFake: [ "setTimeout", "clearTimeout" ],9 target: window10 });11 },12 afterEach() {13 this.fakeTimer.restore();14 }15});16test( "Invalid files", async function( assert ) {17 const error = new Error( "File not found" );18 const closeSpy = sinon.spy();19 const readStream = new EventEmitter();20 readStream.close = closeSpy;21 const createReadStreamStub = sinon.stub().returns( readStream );22 const { default: readLines } = readLinesInjector({23 fs: {24 createReadStream: createReadStreamStub25 }26 });27 await assert.rejects(28 async () => {29 const promise = readLines( "foo" );30 readStream.emit( "error", error );31 await promise;32 },33 error,34 "Rejects if file can't be read"35 );36 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );37 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );38});39test( "Timeout", async function( assert ) {40 const closeSpy = sinon.spy();41 const readStream = new EventEmitter();42 readStream.close = closeSpy;43 const createReadStreamStub = sinon.stub().returns( readStream );44 const { default: readLines } = readLinesInjector({45 fs: {46 createReadStream: createReadStreamStub47 }48 });49 await assert.rejects(50 async () => {51 const promise = readLines( "foo", null, 1, 1000 );52 this.fakeTimer.tick( 1000 );53 await promise;54 },55 new Error( "Timeout" ),56 "Rejects if read time has expired"57 );58 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );59 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );60});61test( "File validation", async assert => {62 const sandbox = sinon.createSandbox();63 const closeSpy = sandbox.spy();64 const readStream = new EventEmitter();65 readStream.close = closeSpy;66 const createReadStreamStub = sandbox.stub().returns( readStream );67 const { default: readLines } = readLinesInjector({68 fs: {69 createReadStream: createReadStreamStub70 }71 });72 try {73 const promise = readLines( "foo", /foo/ );74 readStream.emit( "data", "bar\n" );75 await promise;76 } catch ([ data, buffer ]) {77 assert.propEqual( data, [ null ], "Doesn't match the line" );78 assert.propEqual( buffer, [ "bar" ], "Returns the whole line buffer" );79 }80 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );81 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );82 sandbox.resetHistory();83 await ( async () => {84 const promise = readLines( "foo", /f(oo)/ );85 readStream.emit( "data", "foo\n" );86 const [ [ data ], buffer ] = await promise;87 assert.propEqual( data, [ "foo", "oo" ], "Matches the line" );88 assert.propEqual( buffer, [ "foo" ], "Returns the whole line buffer" );89 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );90 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );91 })();92 sandbox.resetHistory();93 await ( async () => {94 const promise = readLines( "foo" );95 readStream.emit( "data", "foo\n" );96 const [ [ data ], buffer ] = await promise;97 assert.propEqual( data, [ "foo" ], "Validates the line with default validation" );98 assert.propEqual( buffer, [ "foo" ], "Returns the whole line buffer" );99 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );100 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );101 })();102 sandbox.resetHistory();103 await ( async () => {104 const validation = ( line, index ) => {105 return index === 1106 ? /bar/.exec( line )107 : false;108 };109 const promise = readLines( "foo", validation, 2 );110 readStream.emit( "data", "foo\n" );111 readStream.emit( "data", "bar\n" );112 readStream.emit( "data", "baz\n" );113 readStream.emit( "end" );114 const [ [ dataOne, dataTwo, dataThree ], buffer ] = await promise;115 assert.strictEqual( dataOne, false, "Doesn't match the first line" );116 assert.propEqual( dataTwo, [ "bar" ], "Matches the second line" );117 assert.strictEqual( dataThree, undefined, "Ignores the third line" );118 assert.propEqual( buffer, [ "foo", "bar" ], "Returns the whole line buffer" );119 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );120 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );121 })();122 sandbox.resetHistory();123 await ( async () => {124 const validation = ( line, index ) => {125 if ( index === 0 ) {126 return /foo/.exec( line );127 } else {128 return line.length === 3;129 }130 };131 const promise = readLines( "foo", validation, 2 );132 readStream.emit( "data", "foo\n" );133 readStream.emit( "data", "bar\n" );134 const [ [ dataOne, dataTwo ], buffer ] = await promise;135 assert.propEqual( dataOne, [ "foo" ], "Matches the first line" );136 assert.strictEqual( dataTwo, true, "Validates the second line" );137 assert.propEqual( buffer, [ "foo", "bar" ], "Returns the whole line buffer" );138 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );139 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );140 })();141 sandbox.resetHistory();142 await ( async () => {143 const promise = readLines( "foo", /foo/, 2 );144 readStream.emit( "data", "bar\nfoo\n" );145 const [ [ dataOne, dataTwo ], buffer ] = await promise;146 assert.strictEqual( dataOne, null, "Doesn't validate the first line" );147 assert.propEqual( dataTwo, [ "foo" ], "Validates the second line" );148 assert.propEqual( buffer, [ "bar", "foo" ], "Returns the whole line buffer" );149 assert.ok( createReadStreamStub.calledWithExactly( "foo" ), "Reads the correct file" );150 assert.ok( closeSpy.calledOnce, "Calls readStream.close" );151 })();...
node.tty_posix.ReadStream.js
Source:node.tty_posix.ReadStream.js
1goog.provide("node.tty_posix.ReadStream");2goog.require("node.buffer.Buffer");3/**4 * @constructor5 */6node.tty_posix.ReadStream = function() {};7/**8 * @type {node.buffer.Buffer|null}9 */10node.tty_posix.ReadStream.prototype.bufferSize = null;11/**12 * @type {string|null}13 */14node.tty_posix.ReadStream.prototype.fd = null;15/**16 * @type {string|null}17 */18node.tty_posix.ReadStream.prototype.type = null;19/**20 * @type {string|null}21 */22node.tty_posix.ReadStream.prototype.allowHalfOpen = null;23/**24 * @type {boolean|null}25 */26node.tty_posix.ReadStream.prototype.isTTY = null;27/**28 * @param {string} fd29 * @param {string} type30 */31node.tty_posix.ReadStream.prototype.open = function(fd, type) {32 return node.tty_posix.ReadStream.core_.open.apply(node.tty_posix.ReadStream.core_, arguments);33};34/**35 * @param {string} data36 * @param {string} [fd]37 * @param {string} [cb]38 */39node.tty_posix.ReadStream.prototype.write = function(data, [fd], [cb]) {40 return node.tty_posix.ReadStream.core_.write.apply(node.tty_posix.ReadStream.core_, arguments);41};42/**43 *44 */45node.tty_posix.ReadStream.prototype.flush = function() {46 return node.tty_posix.ReadStream.core_.flush.apply(node.tty_posix.ReadStream.core_, arguments);47};48/**49 * @param {string=} encoding50 */51node.tty_posix.ReadStream.prototype.setEncoding = function(encoding) {52 return node.tty_posix.ReadStream.core_.setEncoding.apply(node.tty_posix.ReadStream.core_, arguments);53};54/**55 *56 */57node.tty_posix.ReadStream.prototype.connect = function() {58 return node.tty_posix.ReadStream.core_.connect.apply(node.tty_posix.ReadStream.core_, arguments);59};60/**61 *62 */63node.tty_posix.ReadStream.prototype.address = function() {64 return node.tty_posix.ReadStream.core_.address.apply(node.tty_posix.ReadStream.core_, arguments);65};66/**67 * @param {string} v68 */69node.tty_posix.ReadStream.prototype.setNoDelay = function(v) {70 return node.tty_posix.ReadStream.core_.setNoDelay.apply(node.tty_posix.ReadStream.core_, arguments);71};72/**73 * @param {string} enable74 * @param {string} time75 */76node.tty_posix.ReadStream.prototype.setKeepAlive = function(enable, time) {77 return node.tty_posix.ReadStream.core_.setKeepAlive.apply(node.tty_posix.ReadStream.core_, arguments);78};79/**80 * @param {string} msecs81 * @param {function(Error?,...[*]):undefined=} callback82 */83node.tty_posix.ReadStream.prototype.setTimeout = function(msecs, callback) {84 return node.tty_posix.ReadStream.core_.setTimeout.apply(node.tty_posix.ReadStream.core_, arguments);85};86/**87 *88 */89node.tty_posix.ReadStream.prototype.pause = function() {90 return node.tty_posix.ReadStream.core_.pause.apply(node.tty_posix.ReadStream.core_, arguments);91};92/**93 *94 */95node.tty_posix.ReadStream.prototype.resume = function() {96 return node.tty_posix.ReadStream.core_.resume.apply(node.tty_posix.ReadStream.core_, arguments);97};98/**99 *100 */101node.tty_posix.ReadStream.prototype.destroySoon = function() {102 return node.tty_posix.ReadStream.core_.destroySoon.apply(node.tty_posix.ReadStream.core_, arguments);103};104/**105 * @param {string} exception106 */107node.tty_posix.ReadStream.prototype.destroy = function(exception) {108 return node.tty_posix.ReadStream.core_.destroy.apply(node.tty_posix.ReadStream.core_, arguments);109};110/**111 * @param {string} data112 * @param {string=} encoding113 */114node.tty_posix.ReadStream.prototype.end = function(data, encoding) {115 return node.tty_posix.ReadStream.core_.end.apply(node.tty_posix.ReadStream.core_, arguments);116};117/**118 * @param {string} dest119 * @param {Object} options120 */121node.tty_posix.ReadStream.prototype.pipe = function(dest, options) {122 return node.tty_posix.ReadStream.core_.pipe.apply(node.tty_posix.ReadStream.core_, arguments);123};124/**125 * @param {string} n126 */127node.tty_posix.ReadStream.prototype.setMaxListeners = function(n) {128 return node.tty_posix.ReadStream.core_.setMaxListeners.apply(node.tty_posix.ReadStream.core_, arguments);129};130/**131 * @param {string} type132 */133node.tty_posix.ReadStream.prototype.emit = function(type) {134 return node.tty_posix.ReadStream.core_.emit.apply(node.tty_posix.ReadStream.core_, arguments);135};136/**137 * @param {string} type138 * @param {string} listener139 */140node.tty_posix.ReadStream.prototype.addListener = function(type, listener) {141 return node.tty_posix.ReadStream.core_.addListener.apply(node.tty_posix.ReadStream.core_, arguments);142};143/**144 * @param {string} type145 * @param {string} listener146 */147node.tty_posix.ReadStream.prototype.on = function(type, listener) {148 return node.tty_posix.ReadStream.core_.on.apply(node.tty_posix.ReadStream.core_, arguments);149};150/**151 * @param {string} type152 * @param {string} listener153 */154node.tty_posix.ReadStream.prototype.once = function(type, listener) {155 return node.tty_posix.ReadStream.core_.once.apply(node.tty_posix.ReadStream.core_, arguments);156};157/**158 * @param {string} type159 * @param {string} listener160 */161node.tty_posix.ReadStream.prototype.removeListener = function(type, listener) {162 return node.tty_posix.ReadStream.core_.removeListener.apply(node.tty_posix.ReadStream.core_, arguments);163};164/**165 * @param {string} type166 */167node.tty_posix.ReadStream.prototype.removeAllListeners = function(type) {168 return node.tty_posix.ReadStream.core_.removeAllListeners.apply(node.tty_posix.ReadStream.core_, arguments);169};170/**171 * @param {string} type172 */173node.tty_posix.ReadStream.prototype.listeners = function(type) {174 return node.tty_posix.ReadStream.core_.listeners.apply(node.tty_posix.ReadStream.core_, arguments);175};176/**177 * @private178 * @type {*}179 */...
awaitify-stream.js
Source:awaitify-stream.js
1// Copyright (C) 2017 Chris Sidi2//3// packaging and argument validation based on node-byline, Copyright (C) 2011-2015 John Hewson4'use strict';5const aw = exports;6aw.createReader = function(readStream) {7 let obj = {8 stream: readStream,9 readable: true10 };11 return addReaderFunctions(readStream, obj);12}13aw.createWriter = function(writeStream) {14 let obj = {15 stream: writeStream,16 writable: true17 };18 return addWriterFunctions(writeStream, obj);19}20aw.createDuplexer = function(duplexStream) {21 let obj = {22 stream: duplexStream,23 readable: true,24 writable: true25 };26 return addDuplexFunctions(duplexStream, obj);27}28aw.addAsyncFunctions = function(stream, obj) {29 if (!stream) {30 throw new Error('stream argument required.');31 }32 if (!stream.readable && !stream.writable) {33 throw new Error('stream must be readable and/or writable.');34 }35 if (!obj) {36 obj = stream;37 }38 if (stream.readable) {39 addReaderFunctions(stream, obj);40 }41 if (stream.writable) {42 addWriterFunctions(stream, obj);43 }44 return obj;45}46function addDuplexFunctions(stream, obj) {47 addReaderFunctions(stream, obj);48 addWriterFunctions(stream, obj);49 return obj;50}51function addReaderFunctions(readStream, obj) {52 if (!readStream) {53 throw new Error('readStream argument required.');54 }55 if (!readStream.readable) {56 throw new Error('readStream is not readable.');57 }58 if (!obj) {59 throw new Error('obj argument required.');60 }61 const errors = [];62 readStream.on('error', (err) => {63 errors.push(err);64 });65 let ended = false;66 readStream.on('end', () => {67 ended = true;68 });69 obj.readAsync = function(size) {70 return new Promise((resolve, reject) => {71 function read() {72 // unregister the listener that wasn't called to avoid leaks.73 readStream.removeListener('readable', read);74 readStream.removeListener('end', read);75 readStream.removeListener('error', read);76 if (errors.length) {77 reject(errors.shift());78 return;79 }80 if (ended) {81 resolve(null);82 return;83 }84 let data = readStream.read(size);85 if (errors.length) {86 reject(errors.shift());87 return;88 }89 if (data !== null) {90 resolve(data);91 return;92 }93 // wait for more data to be available, or the end of the stream.94 readStream.once('readable', read);95 readStream.once('end', read);96 // Note that in the event of an error, the error-setting listener will be called ahead of read.97 // "The EventEmitter calls all listeners synchronously in the order in which they were registered." - https://nodejs.org/dist/latest-v8.x/docs/api/events.html98 readStream.once('error', read);99 }100 // Attempt to read data.101 read();102 });103 };104 return obj;105}106function addWriterFunctions(writeStream, obj) {107 if (!writeStream) {108 throw new Error('writeStream argument required.');109 }110 if (!writeStream.writable) {111 throw new Error('writeStream is not writable.');112 }113 if (!obj) {114 throw new Error('obj argument required.');115 }116 let bufferAvailable = true;117 writeStream.on('drain', () => {118 bufferAvailable = true;119 });120 const errors = [];121 writeStream.on('error', (err) => {122 errors.push(err);123 });124 obj.writeAsync = function(chunk, encoding) {125 return new Promise((resolve, reject) => {126 function write() {127 // unregister the listener that wasn't called to avoid leaks.128 writeStream.removeListener('drain', write);129 writeStream.removeListener('error', write);130 if (errors.length) {131 reject(errors.shift());132 return;133 }134 if (bufferAvailable) {135 bufferAvailable = writeStream.write(chunk, encoding);136 if (errors.length) {137 reject(errors.shift());138 } else {139 resolve();140 }141 return;142 }143 writeStream.once('drain', write);144 writeStream.once('error', write);145 }146 write();147 });148 };149 obj.endAsync = function(chunk, encoding) {150 return new Promise((resolve, reject) => {151 if (errors.length) {152 reject(errors.shift());153 return;154 }155 function ended()156 {157 // unregister the listener that wasn't called to avoid leaks.158 writeStream.removeListener('error', ended);159 if (errors.length) {160 reject(errors.shift());161 return;162 }163 resolve();164 }165 writeStream.on('error', ended);166 writeStream.end(chunk, encoding, ended);167 });168 };169 return obj;...
index.test.js
Source:index.test.js
1const assert = require('assert');2const { PassThrough } = require('stream');3const ReadlineTransform = require('../');4const MemoryWriteStream = require('./memory_write_stream');5describe('ReadlineTransform', () => {6 context('data ends without line break', () => {7 it('transforms all lines', (done) => {8 const readStream = new PassThrough();9 const transform = new ReadlineTransform();10 const writeStream = new MemoryWriteStream();11 writeStream.on('finish', () => {12 assert.deepEqual(writeStream.data, ['foo', 'bar', 'baz']);13 done();14 });15 readStream.pipe(transform).pipe(writeStream);16 readStream.write(Buffer.from('foo\nba'));17 readStream.write('r\r');18 readStream.end(Buffer.from('\nbaz'));19 });20 context('data contains empty lines and skipEmpty option is true', () => {21 it('transforms with dropping empty lines', (done) => {22 const readStream = new PassThrough();23 const transform = new ReadlineTransform({ skipEmpty: true });24 const writeStream = new MemoryWriteStream();25 writeStream.on('finish', () => {26 assert.deepEqual(writeStream.data, ['foo', 'bar', 'baz']);27 done();28 });29 readStream.pipe(transform).pipe(writeStream);30 readStream.write('foo\nba');31 readStream.write(Buffer.from('r\r\n\n\r'));32 readStream.end(Buffer.from('\nbaz'));33 });34 })35 })36 context('data ends with line break', () => {37 it('transforms all lines except last empty line', (done) => {38 const readStream = new PassThrough();39 const transform = new ReadlineTransform();40 const writeStream = new MemoryWriteStream();41 writeStream.on('finish', () => {42 assert.deepEqual(writeStream.data, ['foo', 'bar', '', 'baz']);43 done();44 });45 readStream.pipe(transform).pipe(writeStream);46 readStream.write(Buffer.from('foo\r\nbar\n'));47 readStream.end('\r\nbaz\r\n');48 });49 context('ignoreEndOfBreak is false', () => {50 it('transforms all lines', (done) => {51 const readStream = new PassThrough();52 const transform = new ReadlineTransform({ ignoreEndOfBreak: false });53 const writeStream = new MemoryWriteStream();54 writeStream.on('finish', () => {55 assert.deepEqual(writeStream.data, ['foo', 'bar', '', 'baz', '']);56 done();57 });58 readStream.pipe(transform).pipe(writeStream);59 readStream.write(Buffer.from('foo\r\nbar\n'));60 readStream.end('\r\nbaz\r\n');61 });62 })63 context('skipEmpty option is true', () => {64 it('transforms with dropping empty lines', (done) => {65 const readStream = new PassThrough();66 const transform = new ReadlineTransform({ skipEmpty: true });67 const writeStream = new MemoryWriteStream();68 writeStream.on('finish', () => {69 assert.deepEqual(writeStream.data, ['foo', 'bar', 'baz']);70 done();71 });72 readStream.pipe(transform).pipe(writeStream);73 readStream.write('foo\r\nbar\n');74 readStream.end(Buffer.from('\r\nbaz\r\n'));75 });76 })77 context('ignoreEndOfBreak is false and skipEmpty option is true', () => {78 it('works with dropping all empty lines', (done) => {79 const readStream = new PassThrough();80 const transform = new ReadlineTransform({ ignoreEndOfBreak: false, skipEmpty: true });81 const writeStream = new MemoryWriteStream();82 writeStream.on('finish', () => {83 assert.deepEqual(writeStream.data, ['foo', ' ', 'bar']);84 done();85 });86 readStream.pipe(transform).pipe(writeStream);87 readStream.write(Buffer.from('foo\n \n'));88 readStream.write('\n\n');89 readStream.write(Buffer.from('bar\n'));90 readStream.end();91 });92 })93 })94 context('line break is special', () => {95 it('transforms with dropping last empty line', (done) => {96 const readStream = new PassThrough();97 const transform = new ReadlineTransform({ breakMatcher: '_\n' });98 const writeStream = new MemoryWriteStream();99 writeStream.on('finish', () => {100 assert.deepEqual(writeStream.data, ['', 'foo', 'bar', 'baz', '']);101 done();102 });103 readStream.pipe(transform).pipe(writeStream);104 readStream.write(Buffer.from('_\nfoo_\nbar_\nbaz_\n_\n'));105 readStream.end();106 });107 })...
collectionFS.js
Source:collectionFS.js
1/* eslint no-undef: 0*/2/**3 * core collectionsFS configurations4 */5FS.HTTP.setBaseUrl("/assets");6FS.HTTP.setHeadersForGet([7 ["Cache-Control", "public, max-age=31536000"]8]);9/**10 * Define CollectionFS collection11 * See: https://github.com/CollectionFS/Meteor-CollectionFS12 * chunkSize: 1024*1024*2; <- CFS default // 256k is default GridFS chunk size, but performs terribly13 */14export const Media = new FS.Collection("Media", {15 stores: [16 new FS.Store.GridFS("image", {17 chunkSize: 1 * 1024 * 102418 }), new FS.Store.GridFS("large", {19 chunkSize: 1 * 1024 * 1024,20 transformWrite: function (fileObj, readStream, writeStream) {21 if (gm.isAvailable) {22 gm(readStream, fileObj.name).resize("1000", "1000").stream()23 .pipe(writeStream);24 } else {25 readStream.pipe(writeStream);26 }27 }28 }), new FS.Store.GridFS("medium", {29 chunkSize: 1 * 1024 * 1024,30 transformWrite: function (fileObj, readStream, writeStream) {31 if (gm.isAvailable) {32 gm(readStream, fileObj.name).resize("600", "600").stream().pipe(33 writeStream);34 } else {35 readStream.pipe(writeStream);36 }37 }38 }), new FS.Store.GridFS("small", {39 chunkSize: 1 * 1024 * 1024,40 transformWrite: function (fileObj, readStream, writeStream) {41 if (gm.isAvailable) {42 gm(readStream).resize("235", "235" + "^").gravity("Center")43 .extent("235", "235").stream("PNG").pipe(writeStream);44 } else {45 readStream.pipe(writeStream);46 }47 }48 }), new FS.Store.GridFS("thumbnail", {49 chunkSize: 1 * 1024 * 1024,50 transformWrite: function (fileObj, readStream, writeStream) {51 if (gm.isAvailable) {52 gm(readStream).resize("100", "100" + "^").gravity("Center")53 .extent("100", "100").stream("PNG").pipe(writeStream);54 } else {55 readStream.pipe(writeStream);56 }57 }58 })59 ],60 filter: {61 allow: {62 contentTypes: ["image/*"]63 }64 }65});66export const Audio = new FS.Collection("Audio", {67 stores: [new FS.Store.GridFS("audio", {68 transformWrite: function (fileObj, readStream, writeStream) {69 readStream.pipe(writeStream);70 }71 })72 ],73 filter: {74 allow: {75 contentTypes: ["audio/*"],76 extensions: ["wav", "wma", "aac", "mp3"]77 }78 }79});80export const Video = new FS.Collection("Video", {81 stores: [82 new FS.Store.GridFS("video", {83 transformWrite: function (fileObj, readStream, writeStream) {84 readStream.pipe(writeStream);85 }86 })87 ],88 filter: {89 allow: {90 contentTypes: ["video/*"],91 extensions: ["mp4", "mov", "flv", "3gp", "avi"]92 }93 }94});95export const Book = new FS.Collection("Book", {96 stores: [new FS.Store.GridFS("book", {97 transformWrite: function (fileObj, readStream, writeStream) {98 readStream.pipe(writeStream);99 }100 })101 ]102});103export const Software = new FS.Collection("Software", {104 stores: [new FS.Store.GridFS("software", {105 transformWrite: function (fileObj, readStream, writeStream) {106 readStream.pipe(writeStream);107 }108 })109 ]110});111const allow = (db) => {112 const actionMethod = () => true;113 db.allow({114 insert: actionMethod,115 download: actionMethod,116 update: actionMethod,117 remove: actionMethod118 });119};120allow(Audio);121allow(Video);122allow(Book);...
readStreamSpec.js
Source:readStreamSpec.js
1/* jshint jasmine: true */2'use strict';3var ReadStream = require('../lib/readStream');4describe('readstream spec', function () {5 var readStream;6 beforeEach(function () {7 readStream = new ReadStream();8 });9 it('should be able to set a buffer', function () {10 readStream.updateBuffer(new Buffer(100));11 expect(readStream._object.length).toBe(100);12 expect(readStream.complete).toBe(false);13 expect(readStream._readableState.ended).toBe(false);14 readStream.setBuffer('abc');15 expect(readStream._object).toEqual('abc');16 expect(readStream.complete).toBe(true);17 });18 it('should be able to read from the stream', function () {19 readStream.updateBuffer(new Buffer(100));20 expect(readStream.read(100).length).toEqual(100);21 expect(readStream.read(100)).toEqual(undefined);22 });23 it('should be able to read from a finished stream', function () {24 readStream.setBuffer(new Buffer(100));25 expect(readStream.read(100).length).toEqual(100);26 expect(readStream.read(100)).toEqual(null);27 });28 it('should be able to read parts from a finished stream', function () {29 readStream.setBuffer(new Buffer(10000));30 expect(readStream.read(450).length).toEqual(450);31 expect(readStream.read(550).length).toEqual(550);32 expect(readStream.read(4000).length).toEqual(4000);33 expect(readStream.read(5000).length).toEqual(5000);34 expect(readStream.read(100)).toEqual(null);35 expect(readStream._readableState.ended).toBe(true);36 });37 it('should be able to read strings', function () {38 readStream.setBuffer('abc');39 expect(readStream.read(10).toString()).toEqual('abc');40 });41 it('after reading the stream should be finished', function (done) {42 readStream.setBuffer(new Buffer(100));43 var endSpy = jasmine.createSpy();44 readStream.on('end', endSpy);45 readStream.read(500);46 readStream.read(500);47 readStream.read(500);48 expect(readStream._readableState.ended).toBe(true);49 setTimeout(function () {50 expect(endSpy).toHaveBeenCalled();51 done();52 }, 30);53 });54 describe('with flowing stream', function () {55 beforeEach(function () {56 // Adding a 'data' event handler changes57 // a stream from "paused" mode to "flowing" mode58 readStream.on('data', () => null);59 })60 it('should be able to set a buffer', function () {61 var len = 1;62 expect(readStream.read(2)).toEqual(null);63 readStream.setBuffer(new Buffer(len));64 expect(readStream.complete).toBe(true);65 expect(readStream._offset).toBe(len);66 expect(readStream._object.length).toBe(len);67 });68 });...
8fs文件流操作.js
Source:8fs文件流操作.js
1let fs = require('fs');2// let readStream = fs.createReadStream('./video.flv');3// let arr = [];4// readStream.on('open', fd => {5// console.log('æ件已æå¼');6// });7// readStream.on('data', data => {8// arr.push(data);9// });10// readStream.on('end', () => {11// let video = Buffer.concat(arr);//Buffer.concatæ¼æ¥æ°ç»12// fs.writeFile('./vv.flv', video, err => {13// console.log(err);14// });15// });16// readStream.on('error', err => {17// console.log('é误äº');18// });19// readStream.on('close', () => {20// console.log('æ件已å
³é');21// });22// éè¿æ件çæµæä½ä¸è¾¹è¯»ä¸è¾¹å23// let readStream = fs.createReadStream('./video.flv');24// let writeStream = fs.createWriteStream('./vv.flv');25// readStream.on('data', data => {26// writeStream.write(data);27// });28// readStream.on('end', () => {29// writeStream.end();30// });31let writeStream = fs.createWriteStream('./å®è¯.txt');32writeStream.write('èä¸å¡');33// writeStream.end('ç½å±
æ');34writeStream.write('åæ¯å¤©æ¶¯æ²¦è½äººï¼ç¸é¢ä½å¿
æ¾ç¸è¯');35writeStream.write('主人ä¸é©¬å®¢å¨è¹ï¼ä¸¾é
欲饮æ 管弦');36writeStream.end();37// writeStreamæµå¯ä»¥æ³¨åfinishäºä»¶æ¥çå¬åå
¥æ¯å¦å®æ¯38writeStream.on('finish', () => {39 console.log('åå
¥å®æ¯');40});41// éè¦ï¼ï¼ï¼endè°ç¨å°±ç»æäºï¼endåä¸è¦æwriteåendæä½ï¼ä¼æ¥éï¼endçåæ°å¯ä»¥ä¸ºç©ºï¼ä½æ¯endå¿
é¡»è¦åï¼42// pipe管éæä½43// let readStream = fs.createReadStream('./video.flv');44// let writeStream = fs.createWriteStream('./vv.flv');45// // 管éæä½...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const readStream = await page._delegate._browserContext._browser._connection._transport._ws._socket._socket._socket;7 readStream.on('data', (data) => {8 console.log(data.toString());9 });10 readStream.on('end', () => {11 console.log('end');12 });13})();14User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/89.0.4389.0 Safari/537.3615Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.916Accept-Language: en-US,en;q=0.917Cookie: _ga=GA1.2.1331881454.1613962554; _gid=GA1.2.1369851259.1613962554; _gat_gtag_UA_132696008_1=118Content-Type: text/html; charset=utf-8
Using AI Code Generation
1const fs = require('fs');2const path = require('path');3const { chromium } = require('playwright');4const { Readable } = require('stream');5(async () => {6 const browser = await chromium.launch();7 const context = await browser.newContext();8 const page = await context.newPage();9 const image = await page.screenshot();10 const readStream = new Readable();11 readStream.push(image);12 readStream.push(null);13 const writeStream = fs.createWriteStream(path.join(__dirname, 'image.png'));14 readStream.pipe(writeStream);15 await browser.close();16})();
Using AI Code Generation
1const fs = require('fs');2const { chromium } = require('playwright');3const { Readable } = require('stream');4const { createReadStream } = require('fs');5(async () => {6 const browser = await chromium.launch({ headless: false });7 const context = await browser.newContext();8 const page = await context.newPage();9 const readStream = createReadStream('./test.txt', {10 });11 const readableStream = new Readable({12 read() {13 this.push(readStream.read());14 }15 });16 const readableStream2 = new Readable({17 read() {18 this.push(readStream.read());19 }20 });21 const readableStream3 = new Readable({22 read() {23 this.push(readStream.read());24 }25 });26 const readableStream4 = new Readable({27 read() {28 this.push(readStream.read());29 }30 });31 const readableStream5 = new Readable({32 read() {33 this.push(readStream.read());34 }35 });36 const readableStream6 = new Readable({37 read() {38 this.push(readStream.read());39 }40 });41 const readableStream7 = new Readable({42 read() {43 this.push(readStream.read());44 }45 });46 const readableStream8 = new Readable({47 read() {48 this.push(readStream.read());49 }50 });51 const readableStream9 = new Readable({52 read() {53 this.push(readStream.read());54 }55 });56 const readableStream10 = new Readable({57 read() {58 this.push(readStream.read());59 }60 });61 const readableStream11 = new Readable({62 read() {63 this.push(readStream.read());64 }65 });66 const readableStream12 = new Readable({67 read() {68 this.push(read
Using AI Code Generation
1const { Playwright } = require('playwright');2const { chromium } = Playwright;3const fs = require('fs');4const path = require('path');5const { promisify } = require('util');6const writeFileAsync = promisify(fs.writeFile);7const readFileAsync = promisify(fs.readFile);8(async () => {9 const browser = await chromium.launch({10 });11 const context = await browser.newContext();12 const page = await context.newPage();13 const elementHandle = await page.$('input[name="q"]');14 await elementHandle.type('playwright');15 await page.keyboard.press('Enter');16 const readStream = await page.inputStream('input[name="q"]');17 let buffer = Buffer.from('');18 for await (const chunk of readStream) {19 buffer = Buffer.concat([buffer, chunk]);20 }21 await writeFileAsync('test.png', buffer);22 await browser.close();23})();24const { Playwright } = require('playwright');25const { chromium } = Playwright;26const fs = require('fs');27const path = require('path');28const { promisify } = require('util');29const writeFileAsync = promisify(fs.writeFile);30const readFileAsync = promisify(fs.readFile);31(async () => {32 const browser = await chromium.launch({33 });34 const context = await browser.newContext();35 const page = await context.newPage();36 const elementHandle = await page.$('input[name="q"]');37 await elementHandle.type('playwright');38 await page.keyboard.press('Enter');39 const buffer = await page.inputStream('input[name="q"]').read();40 await writeFileAsync('test.png', buffer);41 await browser.close();42})();43I think the problem is that you are not awaiting the readStream.read() call. You need to await it:44const buffer = await readStream.read();45I think the problem is that you are not awaiting the readStream.read() call. You need to await it:46const buffer = await readStream.read();
Using AI Code Generation
1const { Playwright } = require('playwright');2const { readStream } = Playwright.Internal;3(async () => {4 const stream = readStream('file.txt');5 const reader = stream.getReader();6 while (true) {7 const { done, value } = await reader.read();8 if (done) break;9 console.log(value);10 }11})();12const { Playwright } = require('playwright');13const { readStream } = Playwright.Internal;14(async () => {15 const reader = stream.getReader();16 while (true) {17 const { done, value } = await reader.read();18 if (done) break;19 console.log(value);20 }21})();
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!