utilium 2.3.0 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/buffer.d.ts CHANGED
@@ -229,21 +229,19 @@ export interface TypedArrayConstructor {
229
229
  */
230
230
  export declare function extendBuffer<T extends ArrayBufferLike | ArrayBufferView>(buffer: T, newByteLength: number): T;
231
231
  export declare function toUint8Array(buffer: ArrayBufferLike | ArrayBufferView): Uint8Array;
232
+ /**
233
+ * @hidden @deprecated
234
+ */
232
235
  export declare function initView<T extends ArrayBufferLike = ArrayBuffer>(view: Mutable<ArrayBufferView<T> & {
233
236
  BYTES_PER_ELEMENT?: number;
234
237
  }>, buffer?: T | ArrayBufferView<T> | ArrayLike<number> | number, byteOffset?: number, byteLength?: number): void;
235
- /** Creates a view of an array buffer */
236
- export declare class BufferView<T extends ArrayBufferLike = ArrayBufferLike> implements ArrayBufferView<T> {
237
- readonly buffer: T;
238
- readonly byteOffset: number;
239
- readonly byteLength: number;
240
- constructor(
241
- /** The buffer, view, or byte length to create the view from */
242
- buffer?: T | ArrayBufferView<T> | ArrayLike<number> | number, byteOffset?: number, byteLength?: number);
238
+ /** A generic view of an array buffer */
239
+ export declare class BufferView<T extends ArrayBufferLike = ArrayBuffer> extends DataView<T> implements ArrayBufferView<T> {
240
+ constructor(_buffer?: T | ArrayBufferView<T> | ArrayLike<number> | number, _byteOffset?: number, _byteLength?: number);
243
241
  }
244
242
  /** Creates a fixed-size array of a buffer view type */
245
243
  export declare function BufferViewArray<T extends ArrayBufferViewConstructor>(element: T, size: number): {
246
- new <TArrayBuffer extends ArrayBufferLike = ArrayBuffer>(buffer?: TArrayBuffer | ArrayBufferView<TArrayBuffer> | ArrayLike<number>, byteOffset?: number, byteLength?: number): {
244
+ new <TArrayBuffer extends ArrayBufferLike = ArrayBuffer>(_buffer?: TArrayBuffer | ArrayBufferView<TArrayBuffer> | ArrayLike<number>, _byteOffset?: number, _byteLength?: number): {
247
245
  [n: number]: any;
248
246
  readonly BYTES_PER_ELEMENT: number;
249
247
  readonly buffer: TArrayBuffer;
package/dist/buffer.js CHANGED
@@ -37,6 +37,9 @@ export function toUint8Array(buffer) {
37
37
  return new Uint8Array(buffer);
38
38
  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);
39
39
  }
40
+ /**
41
+ * @hidden @deprecated
42
+ */
40
43
  export function initView(view, buffer, byteOffset, byteLength) {
41
44
  if (typeof buffer == 'number') {
42
45
  view.buffer = new ArrayBuffer(buffer);
@@ -48,7 +51,7 @@ export function initView(view, buffer, byteOffset, byteLength) {
48
51
  || buffer instanceof ArrayBuffer
49
52
  || (globalThis.SharedArrayBuffer && buffer instanceof SharedArrayBuffer)) {
50
53
  const size = byteLength
51
- ?? view.constructor?.[Symbol.metadata]?.struct?.size // Memium structs
54
+ ?? view.constructor?.size // Memium types
52
55
  ?? buffer?.byteLength
53
56
  ?? 0;
54
57
  view.buffer = buffer ?? new ArrayBuffer(size);
@@ -70,25 +73,37 @@ export function initView(view, buffer, byteOffset, byteLength) {
70
73
  u8[i] = buffer[i];
71
74
  }
72
75
  }
73
- /** Creates a view of an array buffer */
74
- export class BufferView {
75
- constructor(
76
- /** The buffer, view, or byte length to create the view from */
77
- buffer, byteOffset, byteLength) {
78
- initView(this, buffer, byteOffset, byteLength);
76
+ /** A generic view of an array buffer */
77
+ export class BufferView extends DataView {
78
+ constructor(_buffer, _byteOffset, _byteLength) {
79
+ const { buffer, byteOffset, byteLength } = new Uint8Array(_buffer, _byteOffset, _byteLength);
80
+ super(buffer, byteOffset, byteLength);
79
81
  }
80
82
  }
83
+ for (const key of Object.getOwnPropertyNames(DataView.prototype)) {
84
+ if (!key.startsWith('get') && !key.startsWith('set'))
85
+ continue;
86
+ Object.defineProperty(BufferView.prototype, key, {
87
+ value: () => {
88
+ throw new ReferenceError('Do not use DataView methods on a BufferView.');
89
+ },
90
+ writable: false,
91
+ enumerable: false,
92
+ configurable: false,
93
+ });
94
+ }
81
95
  BufferView;
82
96
  /** Creates a fixed-size array of a buffer view type */
83
97
  export function BufferViewArray(element, size) {
84
98
  return class BufferViewArray extends Array {
85
99
  BYTES_PER_ELEMENT = size;
86
- constructor(buffer, byteOffset, byteLength) {
100
+ constructor(_buffer, _byteOffset, _byteLength) {
101
+ const { buffer, byteOffset, byteLength } = new Uint8Array(_buffer, _byteOffset, _byteLength);
87
102
  const length = (byteLength ?? size) / size;
88
103
  if (!Number.isSafeInteger(length))
89
104
  throw new Error('Invalid array length: ' + length);
90
105
  super(length);
91
- initView(this, buffer, byteOffset, byteLength);
106
+ Object.assign(this, { buffer, byteOffset, byteLength });
92
107
  for (let i = 0; i < length; i++) {
93
108
  this[i] = new element(this.buffer, this.byteOffset + i * size, size);
94
109
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "utilium",
3
- "version": "2.3.0",
3
+ "version": "2.3.2",
4
4
  "description": "Typescript utilities",
5
5
  "funding": {
6
6
  "type": "individual",