diff --git a/packages/artifacts.txt b/packages/artifacts.txt index 387548ef0c..afe668a6cc 100644 --- a/packages/artifacts.txt +++ b/packages/artifacts.txt @@ -928,7 +928,9 @@ lib/ocaml/Stdlib_Array.resi lib/ocaml/Stdlib_ArrayBuffer.cmi lib/ocaml/Stdlib_ArrayBuffer.cmj lib/ocaml/Stdlib_ArrayBuffer.cmt +lib/ocaml/Stdlib_ArrayBuffer.cmti lib/ocaml/Stdlib_ArrayBuffer.res +lib/ocaml/Stdlib_ArrayBuffer.resi lib/ocaml/Stdlib_AsyncIterator.cmi lib/ocaml/Stdlib_AsyncIterator.cmj lib/ocaml/Stdlib_AsyncIterator.cmt diff --git a/runtime/Stdlib_ArrayBuffer.res b/runtime/Stdlib_ArrayBuffer.res index 4b672e196d..a2e6420116 100644 --- a/runtime/Stdlib_ArrayBuffer.res +++ b/runtime/Stdlib_ArrayBuffer.res @@ -4,5 +4,6 @@ type t @new external make: int => t = "ArrayBuffer" @get external byteLength: t => int = "byteLength" -@send external slice: (t, ~start: int, ~end: int) => t = "slice" -@send external sliceToEnd: (t, ~start: int) => t = "slice" +@send external slice: (t, ~start: int=?, ~end: int=?) => t = "slice" + +@deprecated("Use `slice` instead.") @send external sliceToEnd: (t, ~start: int) => t = "slice" diff --git a/runtime/Stdlib_ArrayBuffer.resi b/runtime/Stdlib_ArrayBuffer.resi new file mode 100644 index 0000000000..657f4364c0 --- /dev/null +++ b/runtime/Stdlib_ArrayBuffer.resi @@ -0,0 +1,56 @@ +/*** +Functions for interacting with JavaScript ArrayBuffer. +See: [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer). +*/ + +/** +Type representing an ArrayBuffer object used to represent a generic raw binary data buffer. +*/ +@notUndefined +type t + +/** +`make(length)` creates a new ArrayBuffer with the specified length in bytes. +See [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/ArrayBuffer) on MDN. + +## Examples + +```rescript +let buffer = ArrayBuffer.make(8) +ArrayBuffer.byteLength(buffer) == 8 +``` + +## Exceptions + +- `RangeError`: If `length` is larger than `Number.MAX_SAFE_INTEGER` or negative. +*/ +@new external make: int => t = "ArrayBuffer" + +/** +`byteLength(arrayBuffer)` returns the size, in bytes, of the ArrayBuffer. +See [`ArrayBuffer.byteLength`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/byteLength) on MDN. + +## Examples + +```rescript +let buffer = ArrayBuffer.make(16) +ArrayBuffer.byteLength(buffer) == 16 +``` +*/ +@get external byteLength: t => int = "byteLength" + +/** +`slice(arrayBuffer, ~start, ~end)` returns a new ArrayBuffer whose contents are a copy of this ArrayBuffer's bytes from `start`, inclusive, up to `end`, exclusive. +See [`ArrayBuffer.slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice) on MDN. + +## Examples + +```rescript +let buffer = ArrayBuffer.make(16) +let sliced = buffer->ArrayBuffer.slice(~start=4, ~end=12) +ArrayBuffer.byteLength(sliced) == 8 +``` +*/ +@send external slice: (t, ~start: int=?, ~end: int=?) => t = "slice" + +@deprecated("Use `slice` instead.") @send external sliceToEnd: (t, ~start: int) => t = "slice"