rc-js-util
Version:
A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.
3,100 lines (1,392 loc) • 57.4 kB
Markdown
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
[Home](./index.md) > [rc-js-util](./rc-js-util.md)
## rc-js-util package
## Classes
<table><thead><tr><th>
Class
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[\_Array](./rc-js-util._array.md)
</td><td>
Utilities that apply to `Array` and `ArrayLike`<!-- -->.
</td></tr>
<tr><td>
[\_Debug](./rc-js-util._debug.md)
</td><td>
Utilities for debug builds.
</td></tr>
<tr><td>
[\_Dictionary](./rc-js-util._dictionary.md)
</td><td>
Utilities for 'dictionaries', i.e. { \[index: string\]: any }<!-- -->.
</td></tr>
<tr><td>
[\_Equality](./rc-js-util._equality.md)
</td><td>
Non-standard equality tests.
</td></tr>
<tr><td>
[\_F32](./rc-js-util._f32.md)
</td><td>
Utilities relating to single precision floats.
</td></tr>
<tr><td>
[\_F64](./rc-js-util._f64.md)
</td><td>
Utilities relating to double precision floats.
</td></tr>
<tr><td>
[\_Fp](./rc-js-util._fp.md)
</td><td>
Utilities for functional programming.
</td></tr>
<tr><td>
[\_Identifier](./rc-js-util._identifier.md)
</td><td>
Utilities for generating identifiers.
</td></tr>
<tr><td>
[\_Iterator](./rc-js-util._iterator.md)
</td><td>
Utilities relating to `IterableIterator` & generators.
</td></tr>
<tr><td>
[\_Map](./rc-js-util._map.md)
</td><td>
Utilities that apply to `Map`<!-- -->.
</td></tr>
<tr><td>
[\_Math](./rc-js-util._math.md)
</td><td>
Utilities relating to math.
</td></tr>
<tr><td>
[\_Number](./rc-js-util._number.md)
</td><td>
Utilities that apply to numbers.
</td></tr>
<tr><td>
[\_Path](./rc-js-util._path.md)
</td><td>
File path manipulation utilities.
</td></tr>
<tr><td>
[\_Production](./rc-js-util._production.md)
</td><td>
Utilities for production builds.
</td></tr>
<tr><td>
[\_Promise](./rc-js-util._promise.md)
</td><td>
Utilities for handling promises.
</td></tr>
<tr><td>
[\_RegExp](./rc-js-util._regexp.md)
</td><td>
Utilities that apply to `RegExp`<!-- -->.
</td></tr>
<tr><td>
[\_Set](./rc-js-util._set.md)
</td><td>
Utilities that apply to `Set`<!-- -->.
</td></tr>
<tr><td>
[\_String](./rc-js-util._string.md)
</td><td>
Utilities that apply to `string`<!-- -->.
</td></tr>
<tr><td>
[\_Tree](./rc-js-util._tree.md)
</td><td>
Utilities that apply to tree like structures.
</td></tr>
<tr><td>
[ATypedArrayTuple](./rc-js-util.atypedarraytuple.md)
</td><td>
Common methods of typed arrays, extend to make typed array tuples.
</td></tr>
<tr><td>
[AutomaticGcStrategy](./rc-js-util.automaticgcstrategy.md)
</td><td>
Automatically releases handles when objects are garbage collected. The implementation relies on `FinalizationRegistry`<!-- -->, which comes with a large number of health warnings, you probably shouldn't use it in production for anything important...
Do not use this for testing of library functions, instead use [ReferenceCountedStrategy](./rc-js-util.referencecountedstrategy.md)<!-- -->.
</td></tr>
<tr><td>
[BroadcastChannel](./rc-js-util.broadcastchannel.md)
</td><td>
Strong reference implementation of [IBroadcastChannel](./rc-js-util.ibroadcastchannel.md)<!-- -->.
</td></tr>
<tr><td>
[CircularBuffer](./rc-js-util.circularbuffer.md)
</td><td>
Presents an array as if it were circular, going past the end or start loops around.
</td></tr>
<tr><td>
[CircularFIFOStack](./rc-js-util.circularfifostack.md)
</td><td>
Circular first in first out stack.
</td></tr>
<tr><td>
[CleanupRegistry](./rc-js-util.cleanupregistry.md)
</td><td>
Strong reference implementation of [ICleanupRegistry](./rc-js-util.icleanupregistry.md)<!-- -->.
</td></tr>
<tr><td>
[DebugProtectedView](./rc-js-util.debugprotectedview.md)
</td><td>
Provides a view of an object that can be invalidated, causing attempts to access it to error in `_BUILD.DEBUG`<!-- -->.
</td></tr>
<tr><td>
[DebugSharedObjectLifeCycleChecker](./rc-js-util.debugsharedobjectlifecyclechecker.md)
</td><td>
Wrapper of [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/FinalizationRegistry](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry) for shared objects, useful for checking if the shared object was properly disposed. Available in debug contexts only.
</td></tr>
<tr><td>
[DebugWeakBroadcastChannel](./rc-js-util.debugweakbroadcastchannel.md)
</td><td>
Like [BroadcastChannel](./rc-js-util.broadcastchannel.md) but without holding strong references. Available in debug contexts only.
</td></tr>
<tr><td>
[DebugWeakStore](./rc-js-util.debugweakstore.md)
</td><td>
</td></tr>
<tr><td>
[DirtyCheckedUniqueCollection](./rc-js-util.dirtycheckeduniquecollection.md)
</td><td>
Provides a unique array with O(1) add & remove, with dirty checking on `getArray`<!-- -->.
</td></tr>
<tr><td>
[EmscriptenWrapperOptions](./rc-js-util.emscriptenwrapperoptions.md)
</td><td>
</td></tr>
<tr><td>
[IdCategory](./rc-js-util.idcategory.md)
</td><td>
Mirrors the C++ class of the same name. Each category can have multiple kinds of specializations.
</td></tr>
<tr><td>
[IdSpecialization](./rc-js-util.idspecialization.md)
</td><td>
Mirrors the C++ class of the same name. A specialization of a conceptual category. E.g. a number (category) which is a float 32 (specialization).
</td></tr>
<tr><td>
[IncrementalUpdater](./rc-js-util.incrementalupdater.md)
</td><td>
Performs update operations once every `waitPeriod` until the iterator returned by [IIncrementallyUpdatable](./rc-js-util.iincrementallyupdatable.md) is exhausted.
</td></tr>
<tr><td>
[IncrementingIdentifierFactory](./rc-js-util.incrementingidentifierfactory.md)
</td><td>
Provides an incrementing integer identifier.
</td></tr>
<tr><td>
[Mulberry32Generator](./rc-js-util.mulberry32generator.md)
</td><td>
Random number generator.
</td></tr>
<tr><td>
[NormalizedDataViewProvider](./rc-js-util.normalizeddataviewprovider.md)
</td><td>
Provides [INormalizedDataView](./rc-js-util.inormalizeddataview.md)<!-- -->.
</td></tr>
<tr><td>
[NotRandomGenerator](./rc-js-util.notrandomgenerator.md)
</td><td>
Instead of returning a random number, return the constant instead.
</td></tr>
<tr><td>
[PointerDebugMetadata](./rc-js-util.pointerdebugmetadata.md)
</td><td>
</td></tr>
<tr><td>
[ReferenceCountedStrategy](./rc-js-util.referencecountedstrategy.md)
</td><td>
The recommended lifecycle strategy. This strategy only adds debug checks for leaking objects; you must unlink objects from their owners once they are finished with them.
</td></tr>
<tr><td>
[ReferenceCounter](./rc-js-util.referencecounter.md)
</td><td>
Weak reference counter.
</td></tr>
<tr><td>
[ResizableArray](./rc-js-util.resizablearray.md)
</td><td>
Typed array shared between wasm and javascript, unlike [SharedArray](./rc-js-util.sharedarray.md)<!-- -->, resizing is possible.
</td></tr>
<tr><td>
[RgbaColorPacker](./rc-js-util.rgbacolorpacker.md)
</td><td>
Utility for packing and unpacking RGBA into int32 with one byte per channel.
</td></tr>
<tr><td>
[SanitizedEmscriptenTestModule](./rc-js-util.sanitizedemscriptentestmodule.md)
</td><td>
A wrapper for running emscripten modules built with ASAN. To see the full report, you must call `endEmscriptenProgram`<!-- -->.
</td></tr>
<tr><td>
[SharedArray](./rc-js-util.sharedarray.md)
</td><td>
Typed array shared between wasm and javascript.
</td></tr>
<tr><td>
[SharedBufferView](./rc-js-util.sharedbufferview.md)
</td><td>
Provides a view into shared memory, which avoids the need to keep recreating shared arrays. The view is NOT owning.
</td></tr>
<tr><td>
[SharedMemoryBlock](./rc-js-util.sharedmemoryblock.md)
</td><td>
Provides a reference counted wrapper to a pointer `malloc`<!-- -->'d from JS and is `free`<!-- -->'d on reference count hitting 0.
</td></tr>
<tr><td>
[SharedObjectCleanup](./rc-js-util.sharedobjectcleanup.md)
</td><td>
Provides reasonable defaults for cleaning up a handle to a `JsInterop::ASharedMemoryObject`<!-- -->.
</td></tr>
<tr><td>
[SharedTypedArrayTuple](./rc-js-util.sharedtypedarraytuple.md)
</td><td>
Wrapper of block of memory that is the same size as `TArray`<!-- -->. Provides utility functions with stronger typing than [ISharedMemoryBlock](./rc-js-util.isharedmemoryblock.md)<!-- -->.
</td></tr>
<tr><td>
[StableId](./rc-js-util.stableid.md)
</td><td>
Mirrors the C++ class of the same name. This can be used as a key to get a unique number which can be matched on the C++ side.
</td></tr>
<tr><td>
[StableIdStore](./rc-js-util.stableidstore.md)
</td><td>
Provides the number which matches up with the C++ end, given a [StableId](./rc-js-util.stableid.md)<!-- -->.
</td></tr>
<tr><td>
[TypedArrayTuple](./rc-js-util.typedarraytuple.md)
</td><td>
</td></tr>
<tr><td>
[WasmErrorCause](./rc-js-util.wasmerrorcause.md)
</td><td>
The static members are the cause in [INestedError](./rc-js-util.inestederror.md)<!-- -->.
</td></tr>
<tr><td>
[WorkerPool](./rc-js-util.workerpool.md)
</td><td>
A shared pool of web workers to run jobs off the main thread.
</td></tr>
<tr><td>
[WorkerPoolErrorCause](./rc-js-util.workerpoolerrorcause.md)
</td><td>
The static members are the cause in [INestedError](./rc-js-util.inestederror.md)<!-- -->.
</td></tr>
</tbody></table>
## Abstract Classes
<table><thead><tr><th>
Abstract Class
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[Margin2d](./rc-js-util.margin2d.md)
</td><td>
2x2 matrix representing margins on a rectangle.
</td></tr>
<tr><td>
[Mat2](./rc-js-util.mat2.md)
</td><td>
Row major 2x2 matrix.
</td></tr>
<tr><td>
[Mat3](./rc-js-util.mat3.md)
</td><td>
Row major 3x3 matrix.
</td></tr>
<tr><td>
[Mat4](./rc-js-util.mat4.md)
</td><td>
Row major 4x4 matrix.
</td></tr>
<tr><td>
[Range1d](./rc-js-util.range1d.md)
</td><td>
Vec2 representing a 1d range.
</td></tr>
<tr><td>
[Range2d](./rc-js-util.range2d.md)
</td><td>
2x2 matrix representing a 2d range.
</td></tr>
<tr><td>
[Vec2](./rc-js-util.vec2.md)
</td><td>
Vector 2.
</td></tr>
<tr><td>
[Vec3](./rc-js-util.vec3.md)
</td><td>
Vector 3.
</td></tr>
<tr><td>
[Vec4](./rc-js-util.vec4.md)
</td><td>
Vector 4.
</td></tr>
</tbody></table>
## Enumerations
<table><thead><tr><th>
Enumeration
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[ECircularStackOverflowMode](./rc-js-util.ecircularstackoverflowmode.md)
</td><td>
Sets the behavior of [CircularFIFOStack](./rc-js-util.circularfifostack.md) when a value is pushed which won't fit.
</td></tr>
<tr><td>
[ENumberIdentifier](./rc-js-util.enumberidentifier.md)
</td><td>
Matches ENumberIdentifier in `RTTI.hpp`<!-- -->.
</td></tr>
<tr><td>
[EResolutionState](./rc-js-util.eresolutionstate.md)
</td><td>
</td></tr>
<tr><td>
[ERgbaMasks](./rc-js-util.ergbamasks.md)
</td><td>
Bit mask for packed RGBA colors.
</td></tr>
<tr><td>
[ERgbaShift](./rc-js-util.ergbashift.md)
</td><td>
Bit offset for packed RGBA colors.
</td></tr>
<tr><td>
[ESharedObjectOwnerKind](./rc-js-util.esharedobjectownerkind.md)
</td><td>
Defines the cleanup behavior of [SharedObjectCleanup](./rc-js-util.sharedobjectcleanup.md)
</td></tr>
<tr><td>
[EVectorIdentifier](./rc-js-util.evectoridentifier.md)
</td><td>
</td></tr>
<tr><td>
[EWorkerPoolOverflowMode](./rc-js-util.eworkerpooloverflowmode.md)
</td><td>
How to handle jobs which don't "overflow", i.e. the workers cannot keep up with the work being sent.
</td></tr>
</tbody></table>
## Functions
<table><thead><tr><th>
Function
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[arrayAddToSet(items, set)](./rc-js-util.arrayaddtoset.md)
</td><td>
Adds the items in an array to the set.
</td></tr>
<tr><td>
[arrayBinaryFindInsertionIndex(indexable, comparisonValueToSearchFor, getComparisonValueAtIndex, length, start)](./rc-js-util.arraybinaryfindinsertionindex.md)
</td><td>
Performs a bisection search of an 'indexable' object such that if the value were inserted, it would remain in order.
</td></tr>
<tr><td>
[arrayBinaryIndexOf(indexable, comparisonValueToSearchFor, getComparisonValueAtIndex, length, start)](./rc-js-util.arraybinaryindexof.md)
</td><td>
Performs a bisection search of an 'indexable' object, i.e. can be accessed by index, for example `Array`<!-- -->. Custom data structures are also supported.
</td></tr>
<tr><td>
[arrayBinaryLastIndexOf(indexable, comparisonValueToSearchFor, getComparisonValueAtIndex, length, start)](./rc-js-util.arraybinarylastindexof.md)
</td><td>
Performs a bisection search of an 'indexable' object, i.e. can be accessed by index, for example `Array`<!-- -->. Custom data structures are also supported.
</td></tr>
<tr><td>
[arrayCollect(items, collected, collect)](./rc-js-util.arraycollect.md)
</td><td>
Like `Array.reduce` but without the requirement to return the value in the callback.
</td></tr>
<tr><td>
[arrayCompact(items)](./rc-js-util.arraycompact.md)
</td><td>
Strips null and undefined items from arrays (non mutative).
</td></tr>
<tr><td>
[arrayCompactMap(items, map)](./rc-js-util.arraycompactmap.md)
</td><td>
Like \_Array.map but where the callback returns null it will be omitted from the result.
</td></tr>
<tr><td>
[arrayContains(items, item)](./rc-js-util.arraycontains.md)
</td><td>
Returns true if the item is present in the list (=== equality test).
</td></tr>
<tr><td>
[arrayContains(items, item)](./rc-js-util.arraycontains_1.md)
</td><td>
Returns true if the item is present in the list (=== equality test).
</td></tr>
<tr><td>
[arrayCopyInto(from, to, startIndex, length)](./rc-js-util.arraycopyinto.md)
</td><td>
Make an array contain the same items as another.
</td></tr>
<tr><td>
[arrayFlatMap(items, mapCallback)](./rc-js-util.arrayflatmap.md)
</td><td>
Iterate over `ArrayLike` calling a callback against it, the callback returns `ArrayLike` which is concatenated into a single `Array`<!-- -->.
</td></tr>
<tr><td>
[arrayForEach(items, callback)](./rc-js-util.arrayforeach.md)
</td><td>
Like `Array.forEach`<!-- -->.
</td></tr>
<tr><td>
[arrayForEachRange(from, to, callback)](./rc-js-util.arrayforeachrange.md)
</td><td>
Like [arrayForEach()](./rc-js-util.arrayforeach.md) with integer range as input.
</td></tr>
<tr><td>
[arrayGenerateRange(from, to)](./rc-js-util.arraygeneraterange.md)
</td><td>
Generates a range of integers output in an `Array`<!-- -->.
</td></tr>
<tr><td>
[arrayIndex(items, getKey)](./rc-js-util.arrayindex.md)
</td><td>
Populates a `Map` given a key creating function and `ArrayLike`<!-- -->.
</td></tr>
<tr><td>
[arrayInsertAtIndex(items, itemToInsert, insertAtIndex)](./rc-js-util.arrayinsertatindex.md)
</td><td>
Modifies input array by inserting at given index.
</td></tr>
<tr><td>
[arrayIntersect(a, b, getComparisonValue)](./rc-js-util.arrayintersect.md)
</td><td>
Given two `ArrayLike`<!-- -->, provides the items common between them in an `Array`<!-- -->.
</td></tr>
<tr><td>
[arrayIsArray(obj)](./rc-js-util.arrayisarray.md)
</td><td>
Checks if the parameter is an instance of `Array` or is a view of `ArrayBuffer`<!-- -->.
</td></tr>
<tr><td>
[arrayIsNotEmpty(items)](./rc-js-util.arrayisnotempty.md)
</td><td>
Returns true if the argument is not null, undefined or empty. Type narrows to `TArray` where true.
</td></tr>
<tr><td>
[arrayLast(items)](./rc-js-util.arraylast.md)
</td><td>
Gets the last value in `ArrayLike`<!-- -->.
</td></tr>
<tr><td>
[arrayMap(items, callback)](./rc-js-util.arraymap.md)
</td><td>
Like `Array.map`<!-- -->.
</td></tr>
<tr><td>
[arrayMapRange(from, to, callback)](./rc-js-util.arraymaprange.md)
</td><td>
Like [arrayMap()](./rc-js-util.arraymap.md) with integer range as input.
</td></tr>
<tr><td>
[arrayMax(numbers)](./rc-js-util.arraymax.md)
</td><td>
Find the largest number in an array, if the array is empty the return is -Infinity.
</td></tr>
<tr><td>
[arrayMin(numbers)](./rc-js-util.arraymin.md)
</td><td>
Find the smallest number in an array, if the array is empty the return is Infinity.
</td></tr>
<tr><td>
[arrayNormalizeEmptyToUndefined(array)](./rc-js-util.arraynormalizeemptytoundefined.md)
</td><td>
Replaces length 0 `ArrayLike` with `undefined`<!-- -->.
</td></tr>
<tr><td>
[arrayNormalizeNullishToEmpty(array)](./rc-js-util.arraynormalizenullishtoempty.md)
</td><td>
Replaces `null` / `undefined` with an empty `Array`<!-- -->.
</td></tr>
<tr><td>
[arrayPushUnique(items, itemToPush, getComparisonValue)](./rc-js-util.arraypushunique.md)
</td><td>
Like `Array.push` but checks if the value is unique first.
</td></tr>
<tr><td>
[arrayRemoveMany(items, itemsToRemove)](./rc-js-util.arrayremovemany.md)
</td><td>
Removes each item in `itemsToRemove` from `items` (including any repeated items).
</td></tr>
<tr><td>
[arrayRemoveOne(items, itemToRemove)](./rc-js-util.arrayremoveone.md)
</td><td>
Removes either 0 or one item from items, even if itemToRemove appears more than once.
</td></tr>
<tr><td>
[arrayReplaceOne(items, itemToRemove, replaceWith)](./rc-js-util.arrayreplaceone.md)
</td><td>
Replaces the first match of itemToRemove with replaceWith.
</td></tr>
<tr><td>
[arraySetDifference(a, b)](./rc-js-util.arraysetdifference.md)
</td><td>
returns items in A not in B.
</td></tr>
<tr><td>
[arraySymmetricDifference(a, b, aSet, bSet)](./rc-js-util.arraysymmetricdifference.md)
</td><td>
Returns those items in A not in B, and those items in B not in A.
</td></tr>
<tr><td>
[arrayUnion(items, getComparisonValue)](./rc-js-util.arrayunion.md)
</td><td>
Given an `ArrayLike` of `ArrayLike`<!-- -->, provides all unique items in an `Array`<!-- -->.
</td></tr>
<tr><td>
[arrayUnique(items)](./rc-js-util.arrayunique.md)
</td><td>
Creates a new array with no duplicates, using standard object equality.
</td></tr>
<tr><td>
[blockScope(callback)](./rc-js-util.blockscope.md)
</td><td>
Any shared objects allocated in the callback will be released on return. By default, these will be released on throw too. In such event the error will be rethrown after releasing any shared objects.
Error handling can be disabled by setting the build flag `WASM_DISABLE_STACK_LIFECYCLE_TRY_CATCH`<!-- -->.
</td></tr>
<tr><td>
[dictionaryCloneExtend(base, extension)](./rc-js-util.dictionarycloneextend.md)
</td><td>
Creates an object which is extended sequentially by two additional objects.
</td></tr>
<tr><td>
[dictionaryCollect(items, collected, collect, keys)](./rc-js-util.dictionarycollect.md)
</td><td>
Like `Array.reduce` but for dictionaries and without the requirement to return the value in the callback.
</td></tr>
<tr><td>
[dictionaryForEach(dictionary, callback)](./rc-js-util.dictionaryforeach.md)
</td><td>
Like `Array.forEach` but for arbitrary objects.
</td></tr>
<tr><td>
[dictionaryOverwrite(base, extension)](./rc-js-util.dictionaryoverwrite.md)
</td><td>
Modifies an object to include the keys and values of another.
</td></tr>
<tr><td>
[dictionaryPairs(dictionary)](./rc-js-util.dictionarypairs.md)
</td><td>
converts objects into key value pair tuples.
</td></tr>
<tr><td>
[dictionaryPush(dict, key, value)](./rc-js-util.dictionarypush.md)
</td><td>
Used with dictionary that store arrays. Where an array exists for a given key the value will be appended to that array, otherwise a new array will be created containing the value.
</td></tr>
<tr><td>
[dictionaryValues(d)](./rc-js-util.dictionaryvalues.md)
</td><td>
Equivalent to Object.values.
</td></tr>
<tr><td>
[equalityAllEqual(items)](./rc-js-util.equalityallequal.md)
</td><td>
Returns true if all items are triple equal `===`<!-- -->.
</td></tr>
<tr><td>
[equalityAreConsistentlyDefined(a, b)](./rc-js-util.equalityareconsistentlydefined.md)
</td><td>
Returns true if both `A` and `B` are both null, undefined or 'defined'. Defined is not null and not undefined.
</td></tr>
<tr><td>
[fpDebounce(wait, immediate, functionToProxy)](./rc-js-util.fpdebounce.md)
</td><td>
Creates a function that will proxy calls to `functionToProxy` when `wait` time has passed since the last call, using the most recent arguments. Where `immediate` is true, the function immediately proxies the call and will not proxy again until `wait` time passes since the last call.
</td></tr>
<tr><td>
[fpIdentity(arg)](./rc-js-util.fpidentity.md)
</td><td>
Returns the argument.
</td></tr>
<tr><td>
[fpMaybeNewValue(newValue, oldValue)](./rc-js-util.fpmaybenewvalue.md)
</td><td>
Returns the newValue if defined, else the old value.
</td></tr>
<tr><td>
[fpNoOp(\_args)](./rc-js-util.fpnoop.md)
</td><td>
Does nothing (intentionally...).
</td></tr>
<tr><td>
[fpNormalizeToNull(value)](./rc-js-util.fpnormalizetonull.md)
</td><td>
Normalizes `undefined` input to `null`<!-- -->.
</td></tr>
<tr><td>
[fpNormalizeToUndefined(value)](./rc-js-util.fpnormalizetoundefined.md)
</td><td>
Normalizes `null` input to `undefined`<!-- -->.
</td></tr>
<tr><td>
[fpOnce(initialize)](./rc-js-util.fponce.md)
</td><td>
Creates a function that can be called many times but will run at most once.
</td></tr>
<tr><td>
[fpRunWithin(wrapperFunctions, callback)](./rc-js-util.fprunwithin.md)
</td><td>
Runs the `callback` within the `wrapperFunctions`<!-- -->. This is useful for "positional" attributes, like debug labels, lifecycle block scopes etc.
</td></tr>
<tr><td>
[fpValueOrNull(predicate, value)](./rc-js-util.fpvalueornull.md)
</td><td>
Returns the value if the predicate is true, else null.
</td></tr>
<tr><td>
[getEmscriptenTestModuleOptions(overrides)](./rc-js-util.getemscriptentestmoduleoptions.md)
</td><td>
Provides "sensible" options for a [SanitizedEmscriptenTestModule](./rc-js-util.sanitizedemscriptentestmodule.md)<!-- -->.
</td></tr>
<tr><td>
[getEmscriptenWrapper(memory, emscriptenModuleFactory, lifecycleStrategy, options, extension)](./rc-js-util.getemscriptenwrapper.md)
</td><td>
Factory for creating wrapped emscripten module.
</td></tr>
<tr><td>
[getNestedErrorCtor(config)](./rc-js-util.getnestederrorctor.md)
</td><td>
Factory for creating a localized `NestedError` class, see [INestedError](./rc-js-util.inestederror.md)<!-- -->. This should be used to create a base class, from which you can create extensions to represent specific error cases.
</td></tr>
<tr><td>
[getNumberIdentifier(ctor)](./rc-js-util.getnumberidentifier.md)
</td><td>
Given a typed array constructor, get the identifier which matches up with ENumberIdentifier in `RTTI.hpp`<!-- -->.
</td></tr>
<tr><td>
[getNumberSpecialization(ctor)](./rc-js-util.getnumberspecialization.md)
</td><td>
Given a Typed array constructor, get back the associated [StableId](./rc-js-util.stableid.md)<!-- -->.
</td></tr>
<tr><td>
[iteratorConsumeAll(iterator)](./rc-js-util.iteratorconsumeall.md)
</td><td>
Iterate over an iterator until it's done, discarding the results.
</td></tr>
<tr><td>
[mapAddToSet(map, key, value)](./rc-js-util.mapaddtoset.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be added to that set, otherwise a new set will be created containing the value.
</td></tr>
<tr><td>
[mapAddToSet(map, key, value)](./rc-js-util.mapaddtoset_1.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be added to that set, otherwise a new set will be created containing the value.
</td></tr>
<tr><td>
[mapArrayMap(map, callback)](./rc-js-util.maparraymap.md)
</td><td>
Like `Array.map` but with a `Map` input. Outputs an `Array`<!-- -->.
</td></tr>
<tr><td>
[mapClearingDeleteFromSet(map, key, value)](./rc-js-util.mapclearingdeletefromset.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be removed from that set, if it is empty after removal, then the set is deleted.
</td></tr>
<tr><td>
[mapClearingDeleteFromSet(map, key, value)](./rc-js-util.mapclearingdeletefromset_1.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be removed from that set.
</td></tr>
<tr><td>
[mapConcat(map, key, values)](./rc-js-util.mapconcat.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the values will be appended to that array, otherwise a copy of values array will be inserted.
</td></tr>
<tr><td>
[mapConcat(map, key, values)](./rc-js-util.mapconcat_1.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the values will be appended to that array, otherwise a copy of values array will be inserted.
</td></tr>
<tr><td>
[mapDeleteFromSet(map, key, value)](./rc-js-util.mapdeletefromset.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be removed from that set.
</td></tr>
<tr><td>
[mapDeleteFromSet(map, key, value)](./rc-js-util.mapdeletefromset_1.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be removed from that set.
</td></tr>
<tr><td>
[mapDeleteGet(map, key)](./rc-js-util.mapdeleteget.md)
</td><td>
Get the stored value if present, then delete the key.
</td></tr>
<tr><td>
[mapDeleteGet(map, key)](./rc-js-util.mapdeleteget_1.md)
</td><td>
Get the stored value if present, then delete the key.
</td></tr>
<tr><td>
[mapEntriesToArray(map)](./rc-js-util.mapentriestoarray.md)
</td><td>
Converts a `Map` into an `Array` of its key value pairs.
</td></tr>
<tr><td>
[mapFirstKey(map)](./rc-js-util.mapfirstkey.md)
</td><td>
Gets the first inserted key in a `Map`<!-- -->.
</td></tr>
<tr><td>
[mapFirstValue(map)](./rc-js-util.mapfirstvalue.md)
</td><td>
Gets the first inserted value in a `Map`<!-- -->.
</td></tr>
<tr><td>
[mapInitializeGet(map, key, getValue)](./rc-js-util.mapinitializeget.md)
</td><td>
Gets the value from a `Map` for a given key, where the value is `undefined` or hasn't been set, the callback's return will be inserted into the `Map` and returned.
</td></tr>
<tr><td>
[mapInitializeGet(map, key, getValue)](./rc-js-util.mapinitializeget_1.md)
</td><td>
Gets the value from a `Map` for a given key, where the value is `undefined` or hasn't been set, the callback's return will be inserted into the `Map` and returned.
</td></tr>
<tr><td>
[mapIntersect(a, b)](./rc-js-util.mapintersect.md)
</td><td>
Does not check value equality, only key. Takes items from A.
See [mapIntersect()](./rc-js-util.mapintersect.md)<!-- -->.
</td></tr>
<tr><td>
[mapKeysToArray(map)](./rc-js-util.mapkeystoarray.md)
</td><td>
Converts a `Map` into an `Array` of its keys.
</td></tr>
<tr><td>
[mapPush(map, key, value)](./rc-js-util.mappush.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the value will be appended to that array, otherwise a new array will be created containing the value.
</td></tr>
<tr><td>
[mapPush(map, key, value)](./rc-js-util.mappush_1.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the value will be appended to that array, otherwise a new array will be created containing the value.
</td></tr>
<tr><td>
[mapRemoveManyFromArray(map, key, itemsToRemove)](./rc-js-util.mapremovemanyfromarray.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the values will be removed from that array.
</td></tr>
<tr><td>
[mapRemoveManyFromArray(map, key, itemsToRemove)](./rc-js-util.mapremovemanyfromarray_1.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the values will be removed from that array.
</td></tr>
<tr><td>
[mapRemoveOneFromArray(map, key, value)](./rc-js-util.mapremoveonefromarray.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the value will be removed from that array.
</td></tr>
<tr><td>
[mapRemoveOneFromArray(map, key, value)](./rc-js-util.mapremoveonefromarray_1.md)
</td><td>
Used with maps that store arrays. Where an array exists for a given key the value will be removed from that array.
</td></tr>
<tr><td>
[mapReportingAddToSet(map, key, value)](./rc-js-util.mapreportingaddtoset.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be added to that set, otherwise a new set will be created containing the value.
</td></tr>
<tr><td>
[mapReportingAddToSet(map, key, value)](./rc-js-util.mapreportingaddtoset_1.md)
</td><td>
Used with maps that store sets. Where a set exists for a given key the value will be added to that set, otherwise a new set will be created containing the value.
</td></tr>
<tr><td>
[mapSetDifference(a, b)](./rc-js-util.mapsetdifference.md)
</td><td>
returns items in A not in B.
</td></tr>
<tr><td>
[mapSymmetricDifference(a, b)](./rc-js-util.mapsymmetricdifference.md)
</td><td>
Returns a map with keys in A not in B, and keys in B not in A.
</td></tr>
<tr><td>
[mapUnion(a, b)](./rc-js-util.mapunion.md)
</td><td>
Returns a map with keys from both A and B. If both A and B have the same key the value from B will be used.
</td></tr>
<tr><td>
[mapValuesToArray(map)](./rc-js-util.mapvaluestoarray.md)
</td><td>
Converts a `Map` into an `Array` of its values.
</td></tr>
<tr><td>
[mathBound(value, min, max)](./rc-js-util.mathbound.md)
</td><td>
Bound a value in to a range.
</td></tr>
<tr><td>
[mathBoundRandom(min, max)](./rc-js-util.mathboundrandom.md)
</td><td>
Create a random value between min and max.
</td></tr>
<tr><td>
[mathHypot2(a, b)](./rc-js-util.mathhypot2.md)
</td><td>
As per Math.hypot, expect with 2 args.
</td></tr>
<tr><td>
[mathMax(a, b)](./rc-js-util.mathmax.md)
</td><td>
Returns the larger of the two parameters `a` and `b`<!-- -->.
</td></tr>
<tr><td>
[mathMin(a, b)](./rc-js-util.mathmin.md)
</td><td>
Returns the smaller of the two parameters `a` and `b`<!-- -->.
</td></tr>
<tr><td>
[numberGetHexString(value)](./rc-js-util.numbergethexstring.md)
</td><td>
Returns the hex representation of the number. If it's not a number it returns "NaN".
</td></tr>
<tr><td>
[Once(target, key, descriptor)](./rc-js-util.once.md)
</td><td>
Method decorator. The target will be called only once, subsequent calls will return the first return.
</td></tr>
<tr><td>
[pathJoin(start, end, separator)](./rc-js-util.pathjoin.md)
</td><td>
Joins two strings `start` and `end` with a `separator`<!-- -->.
</td></tr>
<tr><td>
[promiseDelay(resolveWith, delay)](./rc-js-util.promisedelay.md)
</td><td>
Returns a `Promise` which will resolve to `resolveWith` after a delay of `delay` (in milliseconds).
</td></tr>
<tr><td>
[promisePoll(predicate, pollInterval, maxTicks)](./rc-js-util.promisepoll.md)
</td><td>
</td></tr>
<tr><td>
[promiseRejectFalse(value, error)](./rc-js-util.promiserejectfalse.md)
</td><td>
Returns a Promise of rejection with the supplied error if the `value` is false.
</td></tr>
<tr><td>
[promiseRejectFalsey(value, error)](./rc-js-util.promiserejectfalsey.md)
</td><td>
Returns a Promise of rejection with the supplied error if the `value` is falsy.
</td></tr>
<tr><td>
[promiseRejectNull(value, error)](./rc-js-util.promiserejectnull.md)
</td><td>
Returns a Promise of rejection with the supplied error if the value is `null` or `undefined`<!-- -->.
</td></tr>
<tr><td>
[regexEscapeRegex(value)](./rc-js-util.regexescaperegex.md)
</td><td>
Escapes RegExp special characters in strings.
</td></tr>
<tr><td>
[setIsSetEqual(a, b)](./rc-js-util.setissetequal.md)
</td><td>
Tests to see if all of the members of a set are the same.
</td></tr>
<tr><td>
[setSetDifference(a, b)](./rc-js-util.setsetdifference.md)
</td><td>
returns items in A not in B.
</td></tr>
<tr><td>
[setSymmetricDifference(a, b)](./rc-js-util.setsymmetricdifference.md)
</td><td>
Returns those items in A not in B, and those items in B not in A.
</td></tr>
<tr><td>
[setValuesToArray(set)](./rc-js-util.setvaluestoarray.md)
</td><td>
Converts a set into an array of its values.
</td></tr>
<tr><td>
[stringConcat2(a, b, sep)](./rc-js-util.stringconcat2.md)
</td><td>
Like concat but for only 2 parameters (yes it's dumb, but it can be a lot faster for lots of small joins).
</td></tr>
<tr><td>
[stringNormalizeEmptyToUndefined(input)](./rc-js-util.stringnormalizeemptytoundefined.md)
</td><td>
Replaces length 0 strings with `undefined`<!-- -->.
</td></tr>
<tr><td>
[stringNormalizeNullUndefinedToEmpty(input)](./rc-js-util.stringnormalizenullundefinedtoempty.md)
</td><td>
Replaces `null` / `undefined` with an empty `string`<!-- -->.
</td></tr>
<tr><td>
[Test\_resetLifeCycle()](./rc-js-util.test_resetlifecycle.md)
</td><td>
</td></tr>
<tr><td>
[Test\_setDefaultFlags()](./rc-js-util.test_setdefaultflags.md)
</td><td>
</td></tr>
<tr><td>
[treeCollect(node, collected, callback)](./rc-js-util.treecollect.md)
</td><td>
Similar to a reducer, but without the return requirement. It otherwise behaves like [treeIterate()](./rc-js-util.treeiterate.md)<!-- -->.
</td></tr>
<tr><td>
[treeIterate(node, callback)](./rc-js-util.treeiterate.md)
</td><td>
Iterates over the whole tree, in a depth first fashion.
</td></tr>
</tbody></table>
## Interfaces
<table><thead><tr><th>
Interface
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[IBroadcastChannel](./rc-js-util.ibroadcastchannel.md)
</td><td>
Simple one to many communication channel. Proxies the arguments of emit to each listener.
</td></tr>
<tr><td>
[IBuffer](./rc-js-util.ibuffer.md)
</td><td>
Wraps a buffer of some sort, providing a typed array view and some other metadata useful for interop.
</td></tr>
<tr><td>
[ICleanupRegistry](./rc-js-util.icleanupregistry.md)
</td><td>
Represents a store that allows adding, removing, and executing cleanup callbacks.
</td></tr>
<tr><td>
[IContextlessFn](./rc-js-util.icontextlessfn.md)
</td><td>
A function that will be called in a way which makes using `this` unsafe. Doesn't affect lambdas.
</td></tr>
<tr><td>
[IDebugBindings](./rc-js-util.idebugbindings.md)
</td><td>
Emscripten bindings related to debugging.
</td></tr>
<tr><td>
[IDebugProtectedViewFactory](./rc-js-util.idebugprotectedviewfactory.md)
</td><td>
Factory for creating proxy objects that can be invalidated later. Once invalidated any property read that wasn't explicitly marked safe will cause a debug error. Available in debug contexts only.
</td></tr>
<tr><td>
[IDictionary](./rc-js-util.idictionary.md)
</td><td>
</td></tr>
<tr><td>
[IDirtyCheckedUniqueCollection](./rc-js-util.idirtycheckeduniquecollection.md)
</td><td>
Provides a unique array with O(1) add & remove, with dirty checking on `getArray`<!-- -->.
</td></tr>
<tr><td>
[IEmscriptenBinder](./rc-js-util.iemscriptenbinder.md)
</td><td>
</td></tr>
<tr><td>
[IEmscriptenBindings](./rc-js-util.iemscriptenbindings.md)
</td><td>
Emscripten library bindings used by util.
</td></tr>
<tr><td>
[IEmscriptenDebugUtils](./rc-js-util.iemscriptendebugutils.md)
</td><td>
</td></tr>
<tr><td>
[IEmscriptenWrapper](./rc-js-util.iemscriptenwrapper.md)
</td><td>
</td></tr>
<tr><td>
[IErrorExclusions](./rc-js-util.ierrorexclusions.md)
</td><td>
Errors which should be ignored in tests.
</td></tr>
<tr><td>
[IErrorSummary](./rc-js-util.ierrorsummary.md)
</td><td>
A flattened [INestedError](./rc-js-util.inestederror.md)<!-- -->, ready to be localized and shown to the user.
</td></tr>
<tr><td>
[IFIFOStack](./rc-js-util.ififostack.md)
</td><td>
Circular first in first out stack.
</td></tr>
<tr><td>
[IIdentifierFactory](./rc-js-util.iidentifierfactory.md)
</td><td>
</td></tr>
<tr><td>
[IIncrementallyUpdatable](./rc-js-util.iincrementallyupdatable.md)
</td><td>
A provider that should return an iterator that represents a sequence of update operations. Useful for breaking up operations that would block the UI for an unacceptably long time.
</td></tr>
<tr><td>
[IIncrementalUpdater](./rc-js-util.iincrementalupdater.md)
</td><td>
Performs update operations once every `waitPeriod` until the iterator returned by [IIncrementallyUpdatable](./rc-js-util.iincrementallyupdatable.md) is exhausted.
</td></tr>
<tr><td>
[IInteropBindings](./rc-js-util.iinteropbindings.md)
</td><td>
</td></tr>
<tr><td>
[IJsUtilBindings](./rc-js-util.ijsutilbindings.md)
</td><td>
</td></tr>
<tr><td>
[ILifecycleStrategy](./rc-js-util.ilifecyclestrategy.md)
</td><td>
Defines the rules for how [IManagedObject](./rc-js-util.imanagedobject.md)<!-- -->s should be cleaned up.
</td></tr>
<tr><td>
[IManagedObject](./rc-js-util.imanagedobject.md)
</td><td>
An object which is backed by some sort of shared resource, holds a handle to a [IManagedResourceNode](./rc-js-util.imanagedresourcenode.md)<!-- -->.
</td></tr>
<tr><td>
[IManagedResourceLinks](./rc-js-util.imanagedresourcelinks.md)
</td><td>
Provides a mechanism for reference counted objects to link to each other, respecting their lifecycles.
</td></tr>
<tr><td>
[IManagedResourceNode](./rc-js-util.imanagedresourcenode.md)
</td><td>
Represents a resource that must be manually released. Each node (excluding the root node, provided by the wrapper) should have one or more owners. When the owner is finished with the resource, they should unlink it; in the case that all owners have dropped the reference, the resource is destroyed.
You can create a node using [ILifecycleStrategy.createNode()](./rc-js-util.ilifecyclestrategy.createnode.md) (found on [IEmscriptenWrapper](./rc-js-util.iemscriptenwrapper.md)<!-- -->.
</td></tr>
<tr><td>
[IMargin2dCtor](./rc-js-util.imargin2dctor.md)
</td><td>
Constructor for [Margin2d](./rc-js-util.margin2d.md)<!-- -->.
</td></tr>
<tr><td>
[IMat2Ctor](./rc-js-util.imat2ctor.md)
</td><td>
Constructor for [Mat2](./rc-js-util.mat2.md)<!-- -->.
</td></tr>
<tr><td>
[IMat3Ctor](./rc-js-util.imat3ctor.md)
</td><td>
Constructor for [Mat3](./rc-js-util.mat3.md)<!-- -->.
</td></tr>
<tr><td>
[IMat4Ctor](./rc-js-util.imat4ctor.md)
</td><td>
Constructor for [Mat4](./rc-js-util.mat4.md)<!-- -->.
</td></tr>
<tr><td>
[IMemoryUtilBindings](./rc-js-util.imemoryutilbindings.md)
</td><td>
</td></tr>
<tr><td>
[INestedError](./rc-js-util.inestederror.md)
</td><td>
An error which can have a chain of causes.
</td></tr>
<tr><td>
[INestedErrorCtor](./rc-js-util.inestederrorctor.md)
</td><td>
Constructor to [INestedError](./rc-js-util.inestederror.md)<!-- -->.
</td></tr>
<tr><td>
[INestedErrorCtorConfig](./rc-js-util.inestederrorctorconfig.md)
</td><td>
The config used to create `NestedError` constructors, used by [getNestedErrorCtor()](./rc-js-util.getnestederrorctor.md)<!-- -->.
</td></tr>
<tr><td>
[INonblockingPoll](./rc-js-util.inonblockingpoll.md)
</td><td>
Provides a way to poll without busy waiting. Useful for synchronization with workers, particularly with shared memory.
</td></tr>
<tr><td>
[INormalizedDataView](./rc-js-util.inormalizeddataview.md)
</td><td>
Provides a way to set a value on a `DataView` without needing to know the types at the point of setting. Use [NormalizedDataViewProvider](./rc-js-util.normalizeddataviewprovider.md) to get an instance.
</td></tr>
<tr><td>
[INumericKeyedDictionary](./rc-js-util.inumerickeyeddictionary.md)
</td><td>
</td></tr>
<tr><td>
[IOnFreeListener](./rc-js-util.ionfreelistener.md)
</td><td>
A listener for [IManagedResourceNode](./rc-js-util.imanagedresourcenode.md)<!-- -->.
</td></tr>
<tr><td>
[IOnMemoryResize](./rc-js-util.ionmemoryresize.md)
</td><td>
</td></tr>
<tr><td>
[IPointer](./rc-js-util.ipointer.md)
</td><td>
An object which has a pointer to some shared memory location.
</td></tr>
<tr><td>
[IRandomNumberGenerator](./rc-js-util.irandomnumbergenerator.md)
</td><td>
</td></tr>
<tr><td>
[IRange1dCtor](./rc-js-util.irange1dctor.md)
</td><td>
Constructor for [Range1d](./rc-js-util.range1d.md)<!-- -->.
</td></tr>
<tr><td>
[IRange2dCtor](./rc-js-util.irange2dctor.md)
</td><td>
Constructor for [Range2d](./rc-js-util.range2d.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyDictionary](./rc-js-util.ireadonlydictionary.md)
</td><td>
</td></tr>
<tr><td>
[IReadonlyMargin2d](./rc-js-util.ireadonlymargin2d.md)
</td><td>
[Margin2d](./rc-js-util.margin2d.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyMat2](./rc-js-util.ireadonlymat2.md)
</td><td>
[Mat2](./rc-js-util.mat2.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyMat3](./rc-js-util.ireadonlymat3.md)
</td><td>
[Mat3](./rc-js-util.mat3.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyMat4](./rc-js-util.ireadonlymat4.md)
</td><td>
[Mat4](./rc-js-util.mat4.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyRange1d](./rc-js-util.ireadonlyrange1d.md)
</td><td>
[Range1d](./rc-js-util.range1d.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyRange2d](./rc-js-util.ireadonlyrange2d.md)
</td><td>
[Range2d](./rc-js-util.range2d.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlySetLike](./rc-js-util.ireadonlysetlike.md)
</td><td>
</td></tr>
<tr><td>
[IReadonlyVec2](./rc-js-util.ireadonlyvec2.md)
</td><td>
[Vec2](./rc-js-util.vec2.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyVec3](./rc-js-util.ireadonlyvec3.md)
</td><td>
[Vec3](./rc-js-util.vec3.md)<!-- -->.
</td></tr>
<tr><td>
[IReadonlyVec4](./rc-js-util.ireadonlyvec4.md)
</td><td>
[Vec4](./rc-js-util.vec4.md)<!-- -->.
</td></tr>
<tr><td>
[IResizableArrayBindings](./rc-js-util.iresizablearraybindings.md)
</td><td>
</td></tr>
<tr><td>
[ISanitizedTestModuleOptions](./rc-js-util.isanitizedtestmoduleoptions.md)
</td><td>
Options for [SanitizedEmscriptenTestModule](./rc-js-util.sanitizedemscriptentestmodule.md)<!-- -->.
</td></tr>
<tr><td>
[ISetLike](./rc-js-util.isetlike.md)
</td><td>
</td></tr>
<tr><td>
[ISharedArray](./rc-js-util.isharedarray.md)
</td><td>
Typed array representing a contiguous block of memory in wasm.
</td></tr>
<tr><td>
[ISharedArrayBindings](./rc-js-util.isharedarraybindings.md)
</td><td>
</td></tr>
<tr><td>
[ISharedBufferView](./rc-js-util.isharedbufferview.md)
</td><td>
Provides a view into shared memory, which avoids the need to keep recreating shared arrays. The view is NOT owning.
</td></tr>
<tr><td>
[ISharedMemoryBlock](./rc-js-util.isharedmemoryblock.md)
</td><td>
Provides a reference counted wrapper to a pointer `malloc`<!-- -->'d from JS and is `free`<!-- -->'d on reference count hitting 0.
</td></tr>
<tr><td>
[ISharedTypedArrayTuple](./rc-js-util.isharedtypedarraytuple.md)
</td><td>
Wrapper of block of memory that is the same size as `TArray`<!-- -->. Provides utility functions with stronger typing than [ISharedMemoryBlock](./rc-js-util.isharedmemoryblock.md)<!-- -->.
</td></tr>
<tr><td>
[ISharedVectorBindings](./rc-js-util.isharedvectorbindings.md)
</td><td>
</td></tr>
<tr><td>
[IStableStore](./rc-js-util.istablestore.md)
</td><td>
Provides the number which matches up with the C++ end, given a [StableId](./rc-js-util.stableid.md)<!-- -->.
</td></tr>
<tr><td>
[ITreeNodeLike](./rc-js-util.itreenodelike.md)
</td><td>
</td></tr>
<tr><td>
[ITypedArrayCtor](./rc-js-util.itypedarrayctor.md)
</td><td>
</td></tr>
<tr><td>
[ITypedArrayExtensions](./rc-js-util.itypedarrayextensions.md)
</td><td>
</td></tr>
<tr><td>
[ITypedArrayTuple](./rc-js-util.itypedarraytuple.md)
</td><td>
</td></tr>
<tr><td>
[ITypedArrayTupleFactory](./rc-js-util.itypedarraytuplefactory.md)
</td><td>
Defines utility methods for creating typed array tuples.
</td></tr>
<tr><td>
[IVec2Ctor](./rc-js-util.ivec2ctor.md)
</td><td>
Constructor for [Vec2](./rc-js-util.vec2.md)<!-- -->.
</td></tr>
<tr><td>
[IVec3Ctor](./rc-js-util.ivec3ctor.md)
</td><td>
Constructor for [Vec3](./rc-js-util.vec3.md)<!-- -->.
</td></tr>
<tr><td>
[IVec4Ctor](./rc-js-util.ivec4ctor.md)
</td><td>
Constructor for [Vec4](./rc-js-util.vec4.md)<!-- -->.
</td></tr>
<tr><td>
[IWebAssemblyMemoryMemory](./rc-js-util.iwebassemblymemorymemory.md)
</td><td>
Copied from lib.dom.d.ts to avoid portability issues.
</td></tr>
<tr><td>
[IWorkerPool](./rc-js-util.iworkerpool.md)
</td><td>
A shared pool of web workers to run jobs off the main thread.
</td></tr>
<tr><td>
[IWorkerPoolBindings](./rc-js-util.iworkerpoolbindings.md)
</td><td>
</td></tr>
<tr><td>
[IWorkerPoolConfig](./rc-js-util.iworkerpoolconfig.md)
</td><td>
Configuration for a [IWorkerPool](./rc-js-util.iworkerpool.md)<!-- -->.
</td></tr>
</tbody></table>
## Namespaces
<table><thead><tr><th>
Namespace
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[Emscripten](./rc-js-util.emscripten.md)
</td><td>
External lib.
</td></tr>
</tbody></table>
## Variables
<table><thead><tr><th>
Variable
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[arrayEmptyArray](./rc-js-util.arrayemptyarray.md)
</td><td>
An empty readonly array, useful to avoid GC pressure.
</td></tr>
<tr><td>
[bufferCategory](./rc-js-util.buffercategory.md)
</td><td>
A buffer that can be shared with C++.
</td></tr>
<tr><td>
[isLittleEndian](./rc-js-util.islittleendian.md)
</td><td>
</td></tr>
<tr><td>
[iteratorEmptyIterator](./rc-js-util.iteratoremptyiterator.md)
</td><td>
An iterator that is done.
</td></tr>
<tr><td>
[NestedError](./rc-js-util.nestederror.md)
</td><td>
A non-localized [INestedError](./rc-js-util.inestederror.md)<!-- -->.
</td></tr>
<tr><td>
[nullPtr](./rc-js-util.nullptr.md)
</td><td>
</td></tr>
<tr><td>
[numberCategory](./rc-js-util.numbercategory.md)
</td><td>
Supported types of number across C++ and JavaScript.
</td></tr>
<tr><td>
[numberSpecializations](./rc-js-util.numberspecializations.md)
</td><td>
[IdSpecialization](./rc-js-util.idspecialization.md) for all supported number types.
</td></tr>
<tr><td>
[resizableArraySpecialization](./rc-js-util.resizablearrayspecialization.md)
</td><td>
</td></tr>
<tr><td>
[sharedArraySpecialization](./rc-js-util.sharedarrayspecialization.md)
</td><td>
</td></tr>
</tbody></table>
## Type Aliases
<table><thead><tr><th>
Type Alias
</th><th>
Description
</th></tr></thead>
<tbody><tr><td>
[TDebouncedFn](./rc-js-util.tdebouncedfn.md)
</td><td>
</td></tr>
<tr><td>
[TDebugListener](./rc-js-util.tdebuglistener.md)
</td><td>
</td></tr>
<tr><td>
[TDecayedTypedArrayTuple](./rc-js-util.tdecayedtypedarrayt