updated streams ponyfill
This commit is contained in:
parent
f4f8332f96
commit
f58b6194ce
4 changed files with 42 additions and 38 deletions
14
app/ece.js
14
app/ece.js
|
@ -1,12 +1,8 @@
|
|||
import 'buffer';
|
||||
import TransformStream from './transformStream';
|
||||
import { ReadableStream as ReadableStreamPony } from 'web-streams-ponyfill';
|
||||
try {
|
||||
new ReadableStream().pipeThrough(new TransformStream());
|
||||
} catch (e) {
|
||||
// eslint-disable-next-line no-global-assign
|
||||
ReadableStream = ReadableStreamPony;
|
||||
}
|
||||
import {
|
||||
TStream as TransformStream,
|
||||
RStream as ReadableStream
|
||||
} from './streams';
|
||||
|
||||
const NONCE_LENGTH = 12;
|
||||
const TAG_LENGTH = 16;
|
||||
|
@ -360,14 +356,12 @@ export default class ECE {
|
|||
new BlobSlicer(this.input, this.rs, this.mode)
|
||||
);
|
||||
} else {
|
||||
// eslint-disable-next-line no-undef
|
||||
const sliceStream = new TransformStream(
|
||||
new StreamSlicer(this.rs, this.mode)
|
||||
);
|
||||
inputStream = this.input.pipeThrough(sliceStream);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-undef
|
||||
const cryptoStream = new TransformStream(
|
||||
new ECETransformer(this.mode, this.key, this.rs, this.salt)
|
||||
);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import Keychain from './keychain';
|
||||
import { downloadStream } from './api';
|
||||
import TransformStream from './transformStream';
|
||||
import { TStream as TransformStream, wrapReadable } from './streams';
|
||||
|
||||
let noSave = false;
|
||||
const map = new Map();
|
||||
|
@ -30,7 +30,7 @@ async function decryptStream(request) {
|
|||
}
|
||||
});
|
||||
|
||||
const readStream = stream.pipeThrough(progStream);
|
||||
const readStream = wrapReadable(stream).pipeThrough(progStream);
|
||||
const decrypted = file.keychain.decryptStream(readStream);
|
||||
|
||||
const headers = {
|
||||
|
@ -38,7 +38,7 @@ async function decryptStream(request) {
|
|||
'Content-Type': file.type,
|
||||
'Content-Length': file.size
|
||||
};
|
||||
const body = decrypted.local ? decrypted.nativeReadable : decrypted;
|
||||
const body = decrypted.isPony ? decrypted.toNative() : decrypted;
|
||||
return new Response(body, { headers });
|
||||
} catch (e) {
|
||||
if (noSave) {
|
||||
|
|
35
app/streams.js
Normal file
35
app/streams.js
Normal file
|
@ -0,0 +1,35 @@
|
|||
/* global TransformStream ReadableStream */
|
||||
import { createReadableStreamWrapper } from '@mattiasbuelens/web-streams-adapter';
|
||||
import {
|
||||
TransformStream as TransformStreamPony,
|
||||
ReadableStream as ReadableStreamPony
|
||||
} from 'web-streams-ponyfill';
|
||||
|
||||
const toNativeReadable = createReadableStreamWrapper(ReadableStream);
|
||||
const toPonyReadable = createReadableStreamWrapper(ReadableStreamPony);
|
||||
|
||||
export let TStream;
|
||||
if (typeof TransformStream === 'function') {
|
||||
TStream = TransformStream;
|
||||
} else {
|
||||
TStream = TransformStreamPony;
|
||||
TStream.prototype.isPony = true;
|
||||
}
|
||||
|
||||
export let RStream = ReadableStream;
|
||||
try {
|
||||
new ReadableStream().pipeThrough(new TransformStream());
|
||||
} catch (e) {
|
||||
RStream = ReadableStreamPony;
|
||||
RStream.prototype.isPony = true;
|
||||
RStream.prototype.toNative = function() {
|
||||
return toNativeReadable(this);
|
||||
};
|
||||
}
|
||||
|
||||
export function wrapReadable(stream) {
|
||||
if (RStream === ReadableStream) {
|
||||
return stream;
|
||||
}
|
||||
return toPonyReadable(stream);
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
/* global TransformStream */
|
||||
import { createReadableStreamWrapper } from '@mattiasbuelens/web-streams-adapter';
|
||||
import { TransformStream as TransformStreamPony } from 'web-streams-ponyfill';
|
||||
|
||||
const toNative = createReadableStreamWrapper(ReadableStream);
|
||||
|
||||
class TransformStreamLocal {
|
||||
constructor(transformer) {
|
||||
this.stream = new TransformStreamPony(transformer);
|
||||
this.local = true;
|
||||
}
|
||||
get nativeReadable() {
|
||||
return toNative(this.stream.readable);
|
||||
}
|
||||
get readable() {
|
||||
return this.stream.readable;
|
||||
}
|
||||
get writable() {
|
||||
return this.stream.writable;
|
||||
}
|
||||
}
|
||||
|
||||
export default (typeof TransformStream === 'function'
|
||||
? TransformStream
|
||||
: TransformStreamLocal);
|
Loading…
Reference in a new issue