Skip to content

Commit

Permalink
simplify createDataView
Browse files Browse the repository at this point in the history
  • Loading branch information
gfx committed Feb 5, 2025
1 parent ed3388c commit 84ac28a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 14 deletions.
7 changes: 4 additions & 3 deletions src/Decoder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { prettyByte } from "./utils/prettyByte";
import { ExtensionCodec, ExtensionCodecType } from "./ExtensionCodec";
import { getInt64, getUint64, UINT32_MAX } from "./utils/int";
import { utf8Decode } from "./utils/utf8";
import { createDataView, ensureUint8Array } from "./utils/typedArrays";
import { ensureUint8Array } from "./utils/typedArrays";
import { CachedKeyDecoder, KeyDecoder } from "./CachedKeyDecoder";
import { DecodeError } from "./DecodeError";
import type { ContextOf } from "./context";
Expand Down Expand Up @@ -244,8 +244,9 @@ export class Decoder<ContextType = undefined> {
}

private setBuffer(buffer: ArrayLike<number> | ArrayBufferView | ArrayBufferLike): void {
this.bytes = ensureUint8Array(buffer);
this.view = createDataView(this.bytes);
const bytes = ensureUint8Array(buffer);
this.bytes = bytes;
this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
this.pos = 0;
}

Expand Down
13 changes: 2 additions & 11 deletions src/utils/typedArrays.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
function isArrayBuffer(buffer: unknown): buffer is ArrayBuffer | SharedArrayBuffer {
function isArrayBufferLike(buffer: unknown): buffer is ArrayBufferLike {
return (
buffer instanceof ArrayBuffer || (typeof SharedArrayBuffer !== "undefined" && buffer instanceof SharedArrayBuffer)
);
Expand All @@ -11,19 +11,10 @@ export function ensureUint8Array(
return buffer;
} else if (ArrayBuffer.isView(buffer)) {
return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
} else if (isArrayBuffer(buffer)) {
} else if (isArrayBufferLike(buffer)) {
return new Uint8Array(buffer);
} else {
// ArrayLike<number>
return Uint8Array.from(buffer);
}
}

export function createDataView(buffer: ArrayLike<number> | ArrayBufferView | ArrayBuffer): DataView<ArrayBufferLike> {
if (buffer instanceof ArrayBuffer) {
return new DataView(buffer);
}

const bufferView = ensureUint8Array(buffer);
return new DataView(bufferView.buffer, bufferView.byteOffset, bufferView.byteLength);
}

0 comments on commit 84ac28a

Please sign in to comment.