From 8391cbfd9bc7cf906c774bf31c7822fb812af05a Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 3 Jul 2025 16:01:35 +0200 Subject: [PATCH 1/3] docstrings for ArrayBuffer --- packages/artifacts.txt | 2 + runtime/Stdlib_ArrayBuffer.resi | 68 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 runtime/Stdlib_ArrayBuffer.resi 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.resi b/runtime/Stdlib_ArrayBuffer.resi new file mode 100644 index 0000000000..62ea17a733 --- /dev/null +++ b/runtime/Stdlib_ArrayBuffer.resi @@ -0,0 +1,68 @@ +/*** +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)->assertEqual(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)->assertEqual(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 = ArrayBuffer.slice(buffer, ~start=4, ~end=12) +ArrayBuffer.byteLength(sliced)->assertEqual(8) +``` +*/ +@send external slice: (t, ~start: int, ~end: int) => t = "slice" + +/** +`sliceToEnd(arrayBuffer, ~start)` returns a new ArrayBuffer whose contents are a copy of this ArrayBuffer's bytes from `start` to the end of the buffer. +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 = ArrayBuffer.sliceToEnd(buffer, ~start=8) +ArrayBuffer.byteLength(sliced)->assertEqual(8) +``` +*/ +@send external sliceToEnd: (t, ~start: int) => t = "slice" From fa538107baf4b9050eab121855537945292753df Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 3 Jul 2025 16:12:07 +0200 Subject: [PATCH 2/3] change to == --- runtime/Stdlib_ArrayBuffer.resi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/Stdlib_ArrayBuffer.resi b/runtime/Stdlib_ArrayBuffer.resi index 62ea17a733..e331914598 100644 --- a/runtime/Stdlib_ArrayBuffer.resi +++ b/runtime/Stdlib_ArrayBuffer.resi @@ -17,7 +17,7 @@ See [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe ```rescript let buffer = ArrayBuffer.make(8) -ArrayBuffer.byteLength(buffer)->assertEqual(8) +ArrayBuffer.byteLength(buffer) == 8 ``` ## Exceptions @@ -34,7 +34,7 @@ See [`ArrayBuffer.byteLength`](https://developer.mozilla.org/en-US/docs/Web/Java ```rescript let buffer = ArrayBuffer.make(16) -ArrayBuffer.byteLength(buffer)->assertEqual(16) +ArrayBuffer.byteLength(buffer) == 16 ``` */ @get external byteLength: t => int = "byteLength" @@ -48,7 +48,7 @@ See [`ArrayBuffer.slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScrip ```rescript let buffer = ArrayBuffer.make(16) let sliced = ArrayBuffer.slice(buffer, ~start=4, ~end=12) -ArrayBuffer.byteLength(sliced)->assertEqual(8) +ArrayBuffer.byteLength(sliced) == 8 ``` */ @send external slice: (t, ~start: int, ~end: int) => t = "slice" @@ -62,7 +62,7 @@ See [`ArrayBuffer.slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScrip ```rescript let buffer = ArrayBuffer.make(16) let sliced = ArrayBuffer.sliceToEnd(buffer, ~start=8) -ArrayBuffer.byteLength(sliced)->assertEqual(8) +ArrayBuffer.byteLength(sliced) == 8 ``` */ @send external sliceToEnd: (t, ~start: int) => t = "slice" From 09f11721f08f6646819766b8542b7e8a7c3e0cc2 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Thu, 3 Jul 2025 20:13:52 +0200 Subject: [PATCH 3/3] change and deprecate --- runtime/Stdlib_ArrayBuffer.res | 5 +++-- runtime/Stdlib_ArrayBuffer.resi | 18 +++--------------- 2 files changed, 6 insertions(+), 17 deletions(-) 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 index e331914598..657f4364c0 100644 --- a/runtime/Stdlib_ArrayBuffer.resi +++ b/runtime/Stdlib_ArrayBuffer.resi @@ -47,22 +47,10 @@ See [`ArrayBuffer.slice`](https://developer.mozilla.org/en-US/docs/Web/JavaScrip ```rescript let buffer = ArrayBuffer.make(16) -let sliced = ArrayBuffer.slice(buffer, ~start=4, ~end=12) +let sliced = buffer->ArrayBuffer.slice(~start=4, ~end=12) ArrayBuffer.byteLength(sliced) == 8 ``` */ -@send external slice: (t, ~start: int, ~end: int) => t = "slice" +@send external slice: (t, ~start: int=?, ~end: int=?) => t = "slice" -/** -`sliceToEnd(arrayBuffer, ~start)` returns a new ArrayBuffer whose contents are a copy of this ArrayBuffer's bytes from `start` to the end of the buffer. -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 = ArrayBuffer.sliceToEnd(buffer, ~start=8) -ArrayBuffer.byteLength(sliced) == 8 -``` -*/ -@send external sliceToEnd: (t, ~start: int) => t = "slice" +@deprecated("Use `slice` instead.") @send external sliceToEnd: (t, ~start: int) => t = "slice"