From 45f1c0af0801271dacf8565a2509de160e34d972 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Thu, 18 Jul 2024 14:02:53 +0200 Subject: [PATCH 1/3] Add back Js_typed_array --- jscomp/others/js_typed_array.res | 1353 ++++++++++++++++++++++++++++++ jscomp/others/release.ninja | 3 +- lib/es6/js_typed_array.js | 48 ++ lib/js/js_typed_array.js | 46 + packages/artifacts.txt | 6 + 5 files changed, 1455 insertions(+), 1 deletion(-) create mode 100644 jscomp/others/js_typed_array.res create mode 100644 lib/es6/js_typed_array.js create mode 100644 lib/js/js_typed_array.js diff --git a/jscomp/others/js_typed_array.res b/jscomp/others/js_typed_array.res new file mode 100644 index 0000000000..bd0728fb68 --- /dev/null +++ b/jscomp/others/js_typed_array.res @@ -0,0 +1,1353 @@ +/* Copyright (C) 2015-2016 Bloomberg Finance L.P. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * In addition to the permissions granted to you by the LGPL, you may combine + * or link a "work that uses the Library" with a publicly distributed version + * of this file to produce a combined library or application, then distribute + * that combined work under the terms of your choosing, with no requirement + * to comply with the obligations normally placed on you by section 4 of the + * LGPL version 3 (or the corresponding section of a later version of the LGPL + * should you choose to use a later version). + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/*** +JavaScript Typed Array API + +**see** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) +*/ + +@@warning("-103") + +type array_buffer = Js_typed_array2.array_buffer +type array_like<'a> = Js_typed_array2.array_like<'a> + +module type Type = { + type t +} +module ArrayBuffer = { + /*** + The underlying buffer that the typed arrays provide views of + + **see** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) + */ + + type t = array_buffer + + @new /** takes length. initializes elements to 0 */ + external make: int => t = "ArrayBuffer" + + /* ArrayBuffer.isView: seems pointless with a type system */ + /* experimental + external transfer : array_buffer -> t = "ArrayBuffer.transfer" [@@val] + external transferWithLength : array_buffer -> int -> t = "ArrayBuffer.transfer" [@@val] + */ + + @get external byteLength: t => int = "byteLength" + + @bs.send.pipe(: t) external slice: (~start: int, ~end_: int) => array_buffer = "slice" /* FIXME */ + @bs.send.pipe(: t) external sliceFrom: int => array_buffer = "slice" +} +module type S = { + /*** Implements functionality common to all the typed arrays */ + + type elt + type typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) + * --- + */ + @get external length: t => int = "length" + + /* Mutator functions + */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions + */ + @bs.send.pipe(: t) /** ES2016 */ + external includes: elt => bool = "includes" + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) external slice: (~start: int, ~end_: int) => t = "slice" + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) external subarray: (~start: int, ~end_: int) => t = "subarray" + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions + */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + /** should we use `bool` or `boolean` seems they are intechangeable here */ + @bs.send.pipe(: t) + external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + /* commented out until bs has a plan for iterators + external values : elt array_iter = "" [@@bs.send.pipe: t] + */ +} + +/* commented out until bs has a plan for iterators + external values : elt array_iter = "" [@@bs.send.pipe: t] + */ + +module Int8Array = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Int8Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Int8Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Int8Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Int8Array" + + /** + raise Js.Exn.Error raise Js exception + + param offset is in bytes + */ + @new + external fromBufferOffset: (array_buffer, int) => t = "Int8Array" + + @new + /** + raise Js.Exn.Error raises Js exception + + param offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Int8Array" + + @new external fromLength: int => t = "Int8Array" + @val external from: array_like => t = "Int8Array.from" + /* *Array.of is redundant, use make */ +} + +module Uint8Array = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Uint8Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Uint8Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Uint8Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Uint8Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Uint8Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Uint8Array" + + @new external fromLength: int => t = "Uint8Array" + @val external from: array_like => t = "Uint8Array.from" + /* *Array.of is redundant, use make */ +} + +module Uint8ClampedArray = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Uint8ClampedArray.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Uint8ClampedArray.BYTES_PER_ELEMENT" + + @new external make: array => t = "Uint8ClampedArray" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Uint8ClampedArray" + + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + @new + external fromBufferOffset: (array_buffer, int) => t = "Uint8ClampedArray" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Uint8ClampedArray" + + @new external fromLength: int => t = "Uint8ClampedArray" + @val external from: array_like => t = "Uint8ClampedArray.from" + /* *Array.of is redundant, use make */ +} + +module Int16Array = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Int16Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Int16Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Int16Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Int16Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Int16Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Int16Array" + + @new external fromLength: int => t = "Int16Array" + @val external from: array_like => t = "Int16Array.from" + /* *Array.of is redundant, use make */ +} + +module Uint16Array = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Uint16Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Uint16Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Uint16Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Uint16Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Uint16Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Uint16Array" + + @new external fromLength: int => t = "Uint16Array" + @val external from: array_like => t = "Uint16Array.from" + /* *Array.of is redundant, use make */ +} + +module Int32Array = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Int32Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Int32Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Int32Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Int32Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Int32Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Int32Array" + + @new external fromLength: int => t = "Int32Array" + @val external from: array_like => t = "Int32Array.from" + /* *Array.of is redundant, use make */ + @new @deprecated("use `make` instead") external create: array => t = "Int32Array" + @new @deprecated("use `fromBuffer` instead") external of_buffer: array_buffer => t = "Int32Array" +} +module Int32_array = Int32Array + +module Uint32Array = { + /** */ + type elt = int + type typed_array<'a> = Js_typed_array2.Uint32Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Uint32Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Uint32Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Uint32Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Uint32Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Uint32Array" + + @new external fromLength: int => t = "Uint32Array" + @val external from: array_like => t = "Uint32Array.from" + /* *Array.of is redundant, use make */ +} + +/* + it still return number, `float` in this case +*/ +module Float32Array = { + /** */ + type elt = float + type typed_array<'a> = Js_typed_array2.Float32Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Float32Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Float32Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Float32Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Float32Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Float32Array" + + @new external fromLength: int => t = "Float32Array" + @val external from: array_like => t = "Float32Array.from" + /* *Array.of is redundant, use make */ + @new @deprecated("use `make` instead") external create: array => t = "Float32Array" + @new @deprecated("use `fromBuffer` instead") + external of_buffer: array_buffer => t = "Float32Array" +} +module Float32_array = Float32Array + +module Float64Array = { + /** */ + type elt = float + type typed_array<'a> = Js_typed_array2.Float64Array.typed_array<'a> + type t = typed_array + + @get_index external unsafe_get: (t, int) => elt = "" + @set_index external unsafe_set: (t, int, elt) => unit = "" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @bs.send.pipe(: t) external setArray: array => unit = "set" + @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ + + /* Array interface(-ish) */ + @get external length: t => int = "length" + + /* Mutator functions */ + @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + @bs.send.pipe(: t) + external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" + + @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + + @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + + @bs.send.pipe(: t) external sortInPlace: t = "sort" + @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + + /* Accessor functions */ + @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + + @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + + @bs.send.pipe(: t) external join: string = "join" + @bs.send.pipe(: t) external joinWith: string => string = "join" + + @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external slice: (~start: int, ~end_: int) => t = "slice" + + @bs.send.pipe(: t) external copy: t = "slice" + @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + + @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + external subarray: (~start: int, ~end_: int) => t = "subarray" + + @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + + @bs.send.pipe(: t) external toString: string = "toString" + @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + + /* Iteration functions */ + /* commented out until bs has a plan for iterators + external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + */ + @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + + @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + + @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + + @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + + @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + + /* commented out until bs has a plan for iterators + external keys : int array_iter = "" [@@bs.send.pipe: t] + */ + + @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + + @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + + @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + + @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + + @val external _BYTES_PER_ELEMENT: int = "Float64Array.BYTES_PER_ELEMENT" + + @new external make: array => t = "Float64Array" + @new /** can throw */ + external fromBuffer: array_buffer => t = "Float64Array" + + @new + /** + **raise** Js.Exn.Error raise Js exception + + **param** offset is in bytes + */ + external fromBufferOffset: (array_buffer, int) => t = "Float64Array" + + @new + /** + **raise** Js.Exn.Error raises Js exception + + **param** offset is in bytes, length in elements + */ + external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "Float64Array" + + @new external fromLength: int => t = "Float64Array" + @val external from: array_like => t = "Float64Array.from" + /* *Array.of is redundant, use make */ + @new @deprecated("use `make` instead") external create: array => t = "Float64Array" + @new @deprecated("use `fromBuffer` instead") + external of_buffer: array_buffer => t = "Float64Array" +} +module Float64_array = Float64Array + +/** +The DataView view provides a low-level interface for reading and writing +multiple number types in an ArrayBuffer irrespective of the platform's endianness. + +**see** [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView) +*/ +module DataView = { + type t = Js_typed_array2.DataView.t + + @new external make: array_buffer => t = "DataView" + @new external fromBuffer: array_buffer => t = "DataView" + @new external fromBufferOffset: (array_buffer, int) => t = "DataView" + @new external fromBufferRange: (array_buffer, ~offset: int, ~length: int) => t = "DataView" + + @get external buffer: t => array_buffer = "buffer" + @get external byteLength: t => int = "byteLength" + @get external byteOffset: t => int = "byteOffset" + + @send external getInt8: (t, int) => int = "getInt8" + @send external getUint8: (t, int) => int = "getUint8" + + @send external getInt16: (t, int) => int = "getInt16" + @send external getInt16LittleEndian: (t, int, @as(1) _) => int = "getInt16" + + @send external getUint16: (t, int) => int = "getUint16" + @send external getUint16LittleEndian: (t, int, @as(1) _) => int = "getUint16" + + @send external getInt32: (t, int) => int = "getInt32" + @send external getInt32LittleEndian: (t, int, @as(1) _) => int = "getInt32" + + @send external getUint32: (t, int) => int = "getUint32" + @send external getUint32LittleEndian: (t, int, @as(1) _) => int = "getUint32" + + @send external getFloat32: (t, int) => float = "getFloat32" + @send external getFloat32LittleEndian: (t, int, @as(1) _) => float = "getFloat32" + + @send external getFloat64: (t, int) => float = "getFloat64" + @send external getFloat64LittleEndian: (t, int, @as(1) _) => float = "getFloat64" + + @send external setInt8: (t, int, int) => unit = "setInt8" + @send external setUint8: (t, int, int) => unit = "setUint8" + + @send external setInt16: (t, int, int) => unit = "setInt16" + @send external setInt16LittleEndian: (t, int, int, @as(1) _) => unit = "setInt16" + + @send external setUint16: (t, int, int) => unit = "setUint16" + @send external setUint16LittleEndian: (t, int, int, @as(1) _) => unit = "setUint16" + + @send external setInt32: (t, int, int) => unit = "setInt32" + @send external setInt32LittleEndian: (t, int, int, @as(1) _) => unit = "setInt32" + + @send external setUint32: (t, int, int) => unit = "setUint32" + @send external setUint32LittleEndian: (t, int, int, @as(1) _) => unit = "setUint32" + + @send external setFloat32: (t, int, float) => unit = "setFloat32" + @send external setFloat32LittleEndian: (t, int, float, @as(1) _) => unit = "setFloat32" + + @send external setFloat64: (t, int, float) => unit = "setFloat64" + @send external setFloat64LittleEndian: (t, int, float, @as(1) _) => unit = "setFloat64" +} diff --git a/jscomp/others/release.ninja b/jscomp/others/release.ninja index bc8c3d95b0..3d50070551 100644 --- a/jscomp/others/release.ninja +++ b/jscomp/others/release.ninja @@ -53,6 +53,7 @@ o others/js_result.cmi : cc others/js_result.resi | others/belt_internals.cmi ot o others/js_set.cmi others/js_set.cmj : cc others/js_set.res | others/belt_internals.cmi others/js.cmi $bsc o others/js_string.cmi others/js_string.cmj : cc others/js_string.res | others/belt_internals.cmi others/js.cmi others/js_array2.cmj others/js_re.cmj $bsc o others/js_string2.cmi others/js_string2.cmj : cc others/js_string2.res | others/belt_internals.cmi others/js.cmi others/js_array2.cmj others/js_re.cmj $bsc +o others/js_typed_array.cmi others/js_typed_array.cmj : cc others/js_typed_array.res | others/belt_internals.cmi others/js.cmi others/js_typed_array2.cmj $bsc o others/js_typed_array2.cmi others/js_typed_array2.cmj : cc others/js_typed_array2.res | others/belt_internals.cmi others/js.cmi $bsc o others/js_types.cmj : cc_cmi others/js_types.res | others/belt_internals.cmi others/js.cmi others/js_null.cmj others/js_types.cmi $bsc o others/js_types.cmi : cc others/js_types.resi | others/belt_internals.cmi others/js.cmi $bsc @@ -71,7 +72,7 @@ o others/jsxEventU.cmi others/jsxEventU.cmj : cc others/jsxEventU.res | others/b o others/jsxPPXReactSupportC.cmi others/jsxPPXReactSupportC.cmj : cc others/jsxPPXReactSupportC.res | others/belt_internals.cmi others/js.cmi others/jsxC.cmj $bsc o others/jsxPPXReactSupportU.cmi others/jsxPPXReactSupportU.cmj : cc others/jsxPPXReactSupportU.res | others/belt_internals.cmi others/js.cmi others/jsxU.cmj $bsc o others/jsxU.cmi others/jsxU.cmj : cc others/jsxU.res | others/belt_internals.cmi others/js.cmi $bsc -o js_pkg : phony others/js_OO.cmi others/js_OO.cmj others/js_array.cmi others/js_array.cmj others/js_array2.cmi others/js_array2.cmj others/js_bigint.cmi others/js_bigint.cmj others/js_blob.cmi others/js_blob.cmj others/js_cast.cmi others/js_cast.cmj others/js_console.cmi others/js_console.cmj others/js_date.cmi others/js_date.cmj others/js_dict.cmi others/js_dict.cmj others/js_exn.cmi others/js_exn.cmj others/js_file.cmi others/js_file.cmj others/js_float.cmi others/js_float.cmj others/js_global.cmi others/js_global.cmj others/js_int.cmi others/js_int.cmj others/js_json.cmi others/js_json.cmj others/js_list.cmi others/js_list.cmj others/js_map.cmi others/js_map.cmj others/js_math.cmi others/js_math.cmj others/js_null.cmi others/js_null.cmj others/js_null_undefined.cmi others/js_null_undefined.cmj others/js_obj.cmi others/js_obj.cmj others/js_option.cmi others/js_option.cmj others/js_promise.cmi others/js_promise.cmj others/js_promise2.cmi others/js_promise2.cmj others/js_re.cmi others/js_re.cmj others/js_result.cmi others/js_result.cmj others/js_set.cmi others/js_set.cmj others/js_string.cmi others/js_string.cmj others/js_string2.cmi others/js_string2.cmj others/js_typed_array2.cmi others/js_typed_array2.cmj others/js_types.cmi others/js_types.cmj others/js_undefined.cmi others/js_undefined.cmj others/js_vector.cmi others/js_vector.cmj others/js_weakmap.cmi others/js_weakmap.cmj others/js_weakset.cmi others/js_weakset.cmj others/jsxC.cmi others/jsxC.cmj others/jsxDOMC.cmi others/jsxDOMC.cmj others/jsxDOMStyle.cmi others/jsxDOMStyle.cmj others/jsxDOMU.cmi others/jsxDOMU.cmj others/jsxEventC.cmi others/jsxEventC.cmj others/jsxEventU.cmi others/jsxEventU.cmj others/jsxPPXReactSupportC.cmi others/jsxPPXReactSupportC.cmj others/jsxPPXReactSupportU.cmi others/jsxPPXReactSupportU.cmj others/jsxU.cmi others/jsxU.cmj +o js_pkg : phony others/js_OO.cmi others/js_OO.cmj others/js_array.cmi others/js_array.cmj others/js_array2.cmi others/js_array2.cmj others/js_bigint.cmi others/js_bigint.cmj others/js_blob.cmi others/js_blob.cmj others/js_cast.cmi others/js_cast.cmj others/js_console.cmi others/js_console.cmj others/js_date.cmi others/js_date.cmj others/js_dict.cmi others/js_dict.cmj others/js_exn.cmi others/js_exn.cmj others/js_file.cmi others/js_file.cmj others/js_float.cmi others/js_float.cmj others/js_global.cmi others/js_global.cmj others/js_int.cmi others/js_int.cmj others/js_json.cmi others/js_json.cmj others/js_list.cmi others/js_list.cmj others/js_map.cmi others/js_map.cmj others/js_math.cmi others/js_math.cmj others/js_null.cmi others/js_null.cmj others/js_null_undefined.cmi others/js_null_undefined.cmj others/js_obj.cmi others/js_obj.cmj others/js_option.cmi others/js_option.cmj others/js_promise.cmi others/js_promise.cmj others/js_promise2.cmi others/js_promise2.cmj others/js_re.cmi others/js_re.cmj others/js_result.cmi others/js_result.cmj others/js_set.cmi others/js_set.cmj others/js_string.cmi others/js_string.cmj others/js_string2.cmi others/js_string2.cmj others/js_typed_array.cmi others/js_typed_array.cmj others/js_typed_array2.cmi others/js_typed_array2.cmj others/js_types.cmi others/js_types.cmj others/js_undefined.cmi others/js_undefined.cmj others/js_vector.cmi others/js_vector.cmj others/js_weakmap.cmi others/js_weakmap.cmj others/js_weakset.cmi others/js_weakset.cmj others/jsxC.cmi others/jsxC.cmj others/jsxDOMC.cmi others/jsxDOMC.cmj others/jsxDOMStyle.cmi others/jsxDOMStyle.cmj others/jsxDOMU.cmi others/jsxDOMU.cmj others/jsxEventC.cmi others/jsxEventC.cmj others/jsxEventU.cmi others/jsxEventU.cmj others/jsxPPXReactSupportC.cmi others/jsxPPXReactSupportC.cmj others/jsxPPXReactSupportU.cmi others/jsxPPXReactSupportU.cmj others/jsxU.cmi others/jsxU.cmj o others/belt_Array.cmj : cc_cmi others/belt_Array.res | others/belt.cmi others/belt_Array.cmi others/belt_internals.cmi others/js.cmi $bsc js_pkg o others/belt_Array.cmi : cc others/belt_Array.resi | others/belt_internals.cmi others/js.cmi $bsc o others/belt_Float.cmj : cc_cmi others/belt_Float.res | others/belt.cmi others/belt_Float.cmi others/belt_internals.cmi others/js.cmi $bsc js_pkg diff --git a/lib/es6/js_typed_array.js b/lib/es6/js_typed_array.js new file mode 100644 index 0000000000..5e2a72d2d9 --- /dev/null +++ b/lib/es6/js_typed_array.js @@ -0,0 +1,48 @@ + + + +let $$ArrayBuffer = {}; + +let $$Int8Array = {}; + +let $$Uint8Array = {}; + +let $$Uint8ClampedArray = {}; + +let $$Int16Array = {}; + +let $$Uint16Array = {}; + +let $$Int32Array = {}; + +let $$Uint32Array = {}; + +let $$Float32Array = {}; + +let $$Float64Array = {}; + +let $$DataView = {}; + +let Int32_array; + +let Float32_array; + +let Float64_array; + +export { + $$ArrayBuffer, + $$Int8Array, + $$Uint8Array, + $$Uint8ClampedArray, + $$Int16Array, + $$Uint16Array, + $$Int32Array, + Int32_array, + $$Uint32Array, + $$Float32Array, + Float32_array, + $$Float64Array, + Float64_array, + $$DataView, +} +/* No side effect */ diff --git a/lib/js/js_typed_array.js b/lib/js/js_typed_array.js new file mode 100644 index 0000000000..e0a5cdac2d --- /dev/null +++ b/lib/js/js_typed_array.js @@ -0,0 +1,46 @@ +'use strict'; + + +let $$ArrayBuffer = {}; + +let $$Int8Array = {}; + +let $$Uint8Array = {}; + +let $$Uint8ClampedArray = {}; + +let $$Int16Array = {}; + +let $$Uint16Array = {}; + +let $$Int32Array = {}; + +let $$Uint32Array = {}; + +let $$Float32Array = {}; + +let $$Float64Array = {}; + +let $$DataView = {}; + +let Int32_array; + +let Float32_array; + +let Float64_array; + +exports.$$ArrayBuffer = $$ArrayBuffer; +exports.$$Int8Array = $$Int8Array; +exports.$$Uint8Array = $$Uint8Array; +exports.$$Uint8ClampedArray = $$Uint8ClampedArray; +exports.$$Int16Array = $$Int16Array; +exports.$$Uint16Array = $$Uint16Array; +exports.$$Int32Array = $$Int32Array; +exports.Int32_array = Int32_array; +exports.$$Uint32Array = $$Uint32Array; +exports.$$Float32Array = $$Float32Array; +exports.Float32_array = Float32_array; +exports.$$Float64Array = $$Float64Array; +exports.Float64_array = Float64_array; +exports.$$DataView = $$DataView; +/* No side effect */ diff --git a/packages/artifacts.txt b/packages/artifacts.txt index 7b9d73b91f..aba52a0174 100644 --- a/packages/artifacts.txt +++ b/packages/artifacts.txt @@ -148,6 +148,7 @@ lib/es6/js_result.js lib/es6/js_set.js lib/es6/js_string.js lib/es6/js_string2.js +lib/es6/js_typed_array.js lib/es6/js_typed_array2.js lib/es6/js_types.js lib/es6/js_undefined.js @@ -313,6 +314,7 @@ lib/js/js_result.js lib/js/js_set.js lib/js/js_string.js lib/js/js_string2.js +lib/js/js_typed_array.js lib/js/js_typed_array2.js lib/js/js_types.js lib/js/js_undefined.js @@ -851,6 +853,10 @@ lib/ocaml/js_string2.cmi lib/ocaml/js_string2.cmj lib/ocaml/js_string2.cmt lib/ocaml/js_string2.res +lib/ocaml/js_typed_array.cmi +lib/ocaml/js_typed_array.cmj +lib/ocaml/js_typed_array.cmt +lib/ocaml/js_typed_array.res lib/ocaml/js_typed_array2.cmi lib/ocaml/js_typed_array2.cmj lib/ocaml/js_typed_array2.cmt From 0370967cf836de81466d68739222ab1709491bd7 Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Thu, 18 Jul 2024 14:03:08 +0200 Subject: [PATCH 2/3] Comment out all @bs.send.pipe in Js_typed_array --- jscomp/others/js_typed_array.res | 908 +++++++++++++++---------------- 1 file changed, 454 insertions(+), 454 deletions(-) diff --git a/jscomp/others/js_typed_array.res b/jscomp/others/js_typed_array.res index bd0728fb68..8365e29fd8 100644 --- a/jscomp/others/js_typed_array.res +++ b/jscomp/others/js_typed_array.res @@ -56,8 +56,8 @@ module ArrayBuffer = { @get external byteLength: t => int = "byteLength" - @bs.send.pipe(: t) external slice: (~start: int, ~end_: int) => array_buffer = "slice" /* FIXME */ - @bs.send.pipe(: t) external sliceFrom: int => array_buffer = "slice" + // @bs.send.pipe(: t) external slice: (~start: int, ~end_: int) => array_buffer = "slice" /* FIXME */ + // @bs.send.pipe(: t) external sliceFrom: int => array_buffer = "slice" } module type S = { /*** Implements functionality common to all the typed arrays */ @@ -73,8 +73,8 @@ module type S = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) @@ -84,90 +84,90 @@ module type S = { /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) /** ES2016 */ + // @bs.send.pipe(: t) /** ES2016 */ external includes: elt => bool = "includes" - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external slice: (~start: int, ~end_: int) => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarray: (~start: int, ~end_: int) => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" /** should we use `bool` or `boolean` seems they are intechangeable here */ - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" /* commented out until bs has a plan for iterators - external values : elt array_iter = "" [@@bs.send.pipe: t] + external values : elt array_iter = "" [@// @bs.send.pipe: t] */ } /* commented out until bs has a plan for iterators - external values : elt array_iter = "" [@@bs.send.pipe: t] + external values : elt array_iter = "" [@// @bs.send.pipe: t] */ module Int8Array = { @@ -183,88 +183,88 @@ module Int8Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Int8Array.BYTES_PER_ELEMENT" @@ -306,88 +306,88 @@ module Uint8Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Uint8Array.BYTES_PER_ELEMENT" @@ -429,88 +429,88 @@ module Uint8ClampedArray = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Uint8ClampedArray.BYTES_PER_ELEMENT" @@ -552,88 +552,88 @@ module Int16Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Int16Array.BYTES_PER_ELEMENT" @@ -675,88 +675,88 @@ module Uint16Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Uint16Array.BYTES_PER_ELEMENT" @@ -798,88 +798,88 @@ module Int32Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Int32Array.BYTES_PER_ELEMENT" @@ -924,88 +924,88 @@ module Uint32Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Uint32Array.BYTES_PER_ELEMENT" @@ -1050,88 +1050,88 @@ module Float32Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Float32Array.BYTES_PER_ELEMENT" @@ -1177,88 +1177,88 @@ module Float64Array = { @get external byteLength: t => int = "byteLength" @get external byteOffset: t => int = "byteOffset" - @bs.send.pipe(: t) external setArray: array => unit = "set" - @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" + // @bs.send.pipe(: t) external setArray: array => unit = "set" + // @bs.send.pipe(: t) external setArrayOffset: (array, int) => unit = "set" /* There's also an overload for typed arrays, but don't know how to model that without subtyping */ /* Array interface(-ish) */ @get external length: t => int = "length" /* Mutator functions */ - @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" - @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" - @bs.send.pipe(: t) + // @bs.send.pipe(: t) external copyWithin: (~to_: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFrom: (~to_: int, ~from: int) => t = "copyWithin" + // @bs.send.pipe(: t) external copyWithinFromRange: (~to_: int, ~start: int, ~end_: int) => t = "copyWithin" - @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" - @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" - @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" + // @bs.send.pipe(: t) external fillInPlace: elt => t = "fill" + // @bs.send.pipe(: t) external fillFromInPlace: (elt, ~from: int) => t = "fill" + // @bs.send.pipe(: t) external fillRangeInPlace: (elt, ~start: int, ~end_: int) => t = "fill" - @bs.send.pipe(: t) external reverseInPlace: t = "reverse" + // @bs.send.pipe(: t) external reverseInPlace: t = "reverse" - @bs.send.pipe(: t) external sortInPlace: t = "sort" - @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" + // @bs.send.pipe(: t) external sortInPlace: t = "sort" + // @bs.send.pipe(: t) external sortInPlaceWith: ((. elt, elt) => int) => t = "sort" /* Accessor functions */ - @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ + // @bs.send.pipe(: t) external includes: elt => bool = "includes" /* ES2016 */ - @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" - @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" + // @bs.send.pipe(: t) external indexOf: elt => int = "indexOf" + // @bs.send.pipe(: t) external indexOfFrom: (elt, ~from: int) => int = "indexOf" - @bs.send.pipe(: t) external join: string = "join" - @bs.send.pipe(: t) external joinWith: string => string = "join" + // @bs.send.pipe(: t) external join: string = "join" + // @bs.send.pipe(: t) external joinWith: string => string = "join" - @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" - @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOf: elt => int = "lastIndexOf" + // @bs.send.pipe(: t) external lastIndexOfFrom: (elt, ~from: int) => int = "lastIndexOf" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external slice: (~start: int, ~end_: int) => t = "slice" - @bs.send.pipe(: t) external copy: t = "slice" - @bs.send.pipe(: t) external sliceFrom: int => t = "slice" + // @bs.send.pipe(: t) external copy: t = "slice" + // @bs.send.pipe(: t) external sliceFrom: int => t = "slice" - @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ + // @bs.send.pipe(: t) /** `start` is inclusive, `end_` exclusive */ external subarray: (~start: int, ~end_: int) => t = "subarray" - @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" + // @bs.send.pipe(: t) external subarrayFrom: int => t = "subarray" - @bs.send.pipe(: t) external toString: string = "toString" - @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" + // @bs.send.pipe(: t) external toString: string = "toString" + // @bs.send.pipe(: t) external toLocaleString: string = "toLocaleString" /* Iteration functions */ /* commented out until bs has a plan for iterators - external entries : (int * elt) array_iter = "" [@@bs.send.pipe: t] + external entries : (int * elt) array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" - @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" + // @bs.send.pipe(: t) external every: ((. elt) => bool) => bool = "every" + // @bs.send.pipe(: t) external everyi: ((. elt, int) => bool) => bool = "every" - @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" - @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" + // @bs.send.pipe(: t) external filter: ((. elt) => bool) => t = "filter" + // @bs.send.pipe(: t) external filteri: ((. elt, int) => bool) => t = "filter" - @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external find: ((. elt) => bool) => Js.undefined = "find" + // @bs.send.pipe(: t) external findi: ((. elt, int) => bool) => Js.undefined = "find" - @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" - @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndex: ((. elt) => bool) => int = "findIndex" + // @bs.send.pipe(: t) external findIndexi: ((. elt, int) => bool) => int = "findIndex" - @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" - @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEach: ((. elt) => unit) => unit = "forEach" + // @bs.send.pipe(: t) external forEachi: ((. elt, int) => unit) => unit = "forEach" /* commented out until bs has a plan for iterators - external keys : int array_iter = "" [@@bs.send.pipe: t] + external keys : int array_iter = "" [@// @bs.send.pipe: t] */ - @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external map: ((. elt) => 'b) => typed_array<'b> = "map" + // @bs.send.pipe(: t) external mapi: ((. elt, int) => 'b) => typed_array<'b> = "map" - @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reduce: ((. 'b, elt) => 'b, 'b) => 'b = "reduce" + // @bs.send.pipe(: t) external reducei: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduce" - @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRight: ((. 'b, elt) => 'b, 'b) => 'b = "reduceRight" + // @bs.send.pipe(: t) external reduceRighti: ((. 'b, elt, int) => 'b, 'b) => 'b = "reduceRight" - @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" - @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" + // @bs.send.pipe(: t) external some: ((. elt) => bool) => bool = "some" + // @bs.send.pipe(: t) external somei: ((. elt, int) => bool) => bool = "some" @val external _BYTES_PER_ELEMENT: int = "Float64Array.BYTES_PER_ELEMENT" From 3862b997c517260e64d9b136362477223128b44b Mon Sep 17 00:00:00 2001 From: Christoph Knittel Date: Fri, 19 Jul 2024 10:38:13 +0200 Subject: [PATCH 3/3] CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22b4991961..fc0e78a7a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,7 @@ - Remove ml parsing tests and conversion from `.ml` to `.res` via format. https://github.com/rescript-lang/rescript-compiler/pull/6848 - Remove support for compiling `.ml` files, and general cleanup. https://github.com/rescript-lang/rescript-compiler/pull/6852 - Remove `rescript convert` subcommand. https://github.com/rescript-lang/rescript-compiler/pull/6860 -- Remove support for `@bs.send.pipe`. https://github.com/rescript-lang/rescript-compiler/pull/6858 +- Remove support for `@bs.send.pipe`. This also removes all functions in `Js_typed_array` that rely on `@bs.send.pipe`. https://github.com/rescript-lang/rescript-compiler/pull/6858 https://github.com/rescript-lang/rescript-compiler/pull/6891 #### :bug: Bug Fix