swc/bundler/tests/.cache/deno/0d23c5b9cc93892c0b3962151240a8fd65b69297.ts
강동윤 246bdd5088
fix(bundler): Fix bugs (#1572)
swc_bundler:
 - Ensure that denoland/deno#10141 is fixed. 
 - Run deno tests on ci.
 - Support nested `export *`. (denoland/deno#10153, denoland/deno#10174)

swc_ecma_codegen:
 - Remove `,` after rest elements. (#1573, denoland/deno#10167)

swc_ecma_transforms_optimization:
 - Don't drop items used by the discriminant of a switch.

swc_ecma_transforms_typescript:
 - Remove constructors without a body.
2021-04-14 14:00:33 +00:00

45 lines
1.1 KiB
TypeScript

// Loaded from https://deno.land/std@0.89.0/io/writers.ts
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
type Writer = Deno.Writer;
type WriterSync = Deno.WriterSync;
/** Writer utility for buffering string chunks */
export class StringWriter implements Writer, WriterSync {
private chunks: Uint8Array[] = [];
private byteLength = 0;
private cache: string | undefined;
constructor(private base: string = "") {
const c = new TextEncoder().encode(base);
this.chunks.push(c);
this.byteLength += c.byteLength;
}
write(p: Uint8Array): Promise<number> {
return Promise.resolve(this.writeSync(p));
}
writeSync(p: Uint8Array): number {
this.chunks.push(p);
this.byteLength += p.byteLength;
this.cache = undefined;
return p.byteLength;
}
toString(): string {
if (this.cache) {
return this.cache;
}
const buf = new Uint8Array(this.byteLength);
let offs = 0;
for (const chunk of this.chunks) {
buf.set(chunk, offs);
offs += chunk.byteLength;
}
this.cache = new TextDecoder().decode(buf);
return this.cache;
}
}