{"id":27437294,"url":"https://github.com/stdlib-js/utils-named-typed-tuple","last_synced_at":"2025-04-14T20:19:56.348Z","repository":{"id":41453657,"uuid":"377258022","full_name":"stdlib-js/utils-named-typed-tuple","owner":"stdlib-js","description":"Named typed tuple.","archived":false,"fork":false,"pushed_at":"2025-02-10T00:52:51.000Z","size":1836,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-14T20:19:47.820Z","etag":null,"topics":["array","collection","data","data-structure","data-structures","javascript","list","named","node","node-js","nodejs","stdlib","structure","tuple","typed","typed-array","util","utilities","utility","utils"],"latest_commit_sha":null,"homepage":"https://github.com/stdlib-js/stdlib","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stdlib-js.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["stdlib-js"],"open_collective":"stdlib","tidelift":"npm/@stdlib/stdlib"}},"created_at":"2021-06-15T18:23:25.000Z","updated_at":"2025-02-10T00:40:37.000Z","dependencies_parsed_at":"2024-04-12T02:28:07.633Z","dependency_job_id":"ff01b6c7-4078-4cbe-a240-8577d1391753","html_url":"https://github.com/stdlib-js/utils-named-typed-tuple","commit_stats":{"total_commits":40,"total_committers":1,"mean_commits":40.0,"dds":0.0,"last_synced_commit":"a388456b2cf0ce5f6f2a236e74c2636cc4d87ff0"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Futils-named-typed-tuple","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Futils-named-typed-tuple/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Futils-named-typed-tuple/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Futils-named-typed-tuple/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stdlib-js","download_url":"https://codeload.github.com/stdlib-js/utils-named-typed-tuple/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248952355,"owners_count":21188427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["array","collection","data","data-structure","data-structures","javascript","list","named","node","node-js","nodejs","stdlib","structure","tuple","typed","typed-array","util","utilities","utility","utils"],"created_at":"2025-04-14T20:19:55.204Z","updated_at":"2025-04-14T20:19:56.333Z","avatar_url":"https://github.com/stdlib-js.png","language":"JavaScript","readme":"\u003c!--\n\n@license Apache-2.0\n\nCopyright (c) 2018 The Stdlib Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n--\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    About stdlib...\n  \u003c/summary\u003e\n  \u003cp\u003eWe believe in a future in which the web is a preferred environment for numerical computation. To help realize this future, we've built stdlib. stdlib is a standard library, with an emphasis on numerical and scientific computation, written in JavaScript (and C) for execution in browsers and in Node.js.\u003c/p\u003e\n  \u003cp\u003eThe library is fully decomposable, being architected in such a way that you can swap out and mix and match APIs and functionality to cater to your exact preferences and use cases.\u003c/p\u003e\n  \u003cp\u003eWhen you use stdlib, you can be absolutely certain that you are using the most thorough, rigorous, well-written, studied, documented, tested, measured, and high-quality code out there.\u003c/p\u003e\n  \u003cp\u003eTo join us in bringing numerical computing to the web, get started by checking us out on \u003ca href=\"https://github.com/stdlib-js/stdlib\"\u003eGitHub\u003c/a\u003e, and please consider \u003ca href=\"https://opencollective.com/stdlib\"\u003efinancially supporting stdlib\u003c/a\u003e. We greatly appreciate your continued support!\u003c/p\u003e\n\u003c/details\u003e\n\n# Named Typed Tuple\n\n[![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] \u003c!-- [![dependencies][dependencies-image]][dependencies-url] --\u003e\n\n\u003e Create a factory for generating named typed tuples.\n\n\u003c!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"intro\"\u003e\n\nNamed tuples assign a property name, and thus a meaning, to each position in a tuple and allow for more readable, self-documenting code.\n\nNamed typed tuples can be used wherever [typed arrays][@stdlib/array/typed] are used, with the added benefit that they allow accessing fields by both field name and position index.\n\n\u003c/section\u003e\n\n\u003c!-- /.intro --\u003e\n\n\u003c!-- Package usage documentation. --\u003e\n\n\u003csection class=\"installation\"\u003e\n\n## Installation\n\n```bash\nnpm install @stdlib/utils-named-typed-tuple\n```\n\nAlternatively,\n\n-   To load the package in a website via a `script` tag without installation and bundlers, use the [ES Module][es-module] available on the [`esm`][esm-url] branch (see [README][esm-readme]).\n-   If you are using Deno, visit the [`deno`][deno-url] branch (see [README][deno-readme] for usage intructions).\n-   For use in Observable, or in browser/node environments, use the [Universal Module Definition (UMD)][umd] build available on the [`umd`][umd-url] branch (see [README][umd-readme]).\n\nThe [branches.md][branches-url] file summarizes the available branches and displays a diagram illustrating their relationships.\n\nTo view installation and usage instructions specific to each branch build, be sure to explicitly navigate to the respective README files on each branch, as linked to above.\n\n\u003c/section\u003e\n\n\u003csection class=\"usage\"\u003e\n\n## Usage\n\n```javascript\nvar namedtypedtuple = require( '@stdlib/utils-named-typed-tuple' );\n```\n\n\u003ca name=\"main\"\u003e\u003c/a\u003e\n\n#### namedtypedtuple( fields\\[, options] )\n\nReturns a named typed tuple factory.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar x = tuple.x;\n// returns 1.0\n\nx = tuple[ 0 ];\n// returns 1.0\n\nvar y = tuple.y;\n// returns -1.0\n\ny = tuple[ 1 ];\n// returns -1.0\n```\n\nThe function accepts the following `options`:\n\n-   **dtype**: default tuple data type. If a data type is not provided to a named typed tuple factory, this option specifies the underlying tuple data type. The following data types are supported:\n\n    -   `float64`: double-precision floating-point numbers (IEEE 754).\n    -   `float32`: single-precision floating-point numbers (IEEE 754).\n    -   `int32`: 32-bit two's complement signed integers.\n    -   `uint32`: 32-bit unsigned integers.\n    -   `int16`: 16-bit two's complement signed integers.\n    -   `uint16`: 16-bit unsigned integers.\n    -   `int8`: 8-bit two's complement signed integers.\n    -   `uint8`: 8-bit unsigned integers.\n    -   `uint8c`: 8-bit unsigned integers clamped to 0-255.\n\n    Default: `'float64'`.\n\n-   **name**: tuple name. Default: `'tuple'`.\n\n* * *\n\n### Tuple Factory\n\n\u003ca name=\"factory\"\u003e\u003c/a\u003e\n\n#### factory()\n\nReturns a named typed tuple of the default data type.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory();\n\nvar x = tuple.x;\n// returns 0.0\n\nx = tuple[ 0 ];\n// returns 0.0\n\nvar y = tuple.y;\n// returns 0.0\n\ny = tuple[ 1 ];\n// returns 0.0\n```\n\n#### factory( dtype )\n\nReturns a named typed tuple of the specified data type.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( 'int32' );\n\nvar x = tuple.x;\n// returns 0\n\nx = tuple[ 0 ];\n// returns 0\n\nvar y = tuple.y;\n// returns 0\n\ny = tuple[ 1 ];\n// returns 0\n```\n\n#### factory( typedarray\\[, dtype] )\n\nReturns a named typed tuple from a [typed array][@stdlib/array/typed].\n\n```javascript\nvar Float64Array = require( '@stdlib/array-float64' );\n\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( new Float64Array( [ 1.0, -1.0 ] ) );\n\nvar x = tuple.x;\n// returns 1.0\n\nx = tuple[ 0 ];\n// returns 1.0\n\nvar y = tuple.y;\n// returns -1.0\n\ny = tuple[ 1 ];\n// returns -1.0\n```\n\nTo override the default tuple data type (and potentially cast [typed array][@stdlib/array/typed] values to another data type), provide a `dtype`.\n\n```javascript\nvar Float64Array = require( '@stdlib/array-float64' );\n\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\n// Cast double-precision floating-point numbers to signed 32-bit integers:\nvar tuple = factory( new Float64Array( [ 1.0, -1.0 ] ), 'int32' );\n\nvar x = tuple.x;\n// returns 1\n\nx = tuple[ 0 ];\n// returns 1\n\nvar y = tuple.y;\n// returns -1\n\ny = tuple[ 1 ];\n// returns -1\n```\n\n#### factory( obj\\[, dtype] )\n\nReturns a named typed tuple from an array-like object or iterable.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar x = tuple.x;\n// returns 1.0\n\nx = tuple[ 0 ];\n// returns 1.0\n\nvar y = tuple.y;\n// returns -1.0\n\ny = tuple[ 1 ];\n// returns -1.0\n```\n\nTo override the default tuple data type, provide a `dtype`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ], 'int32' );\n\nvar x = tuple.x;\n// returns 1\n\nx = tuple[ 0 ];\n// returns 1\n\nvar y = tuple.y;\n// returns -1\n\ny = tuple[ 1 ];\n// returns -1\n```\n\n#### factory( buffer\\[, byteOffset]\\[, dtype] )\n\nReturns a named typed tuple view of an [`ArrayBuffer`][@stdlib/array/buffer] where the view length equals the number of tuple fields.\n\n```javascript\nvar ArrayBuffer = require( '@stdlib/array-buffer' );\n\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar buf = new ArrayBuffer( 32 );\n\n// Create a tuple view of the first 16 bytes (8 bytes per double):\nvar tuple = factory( buf );\n\nvar x = tuple.x;\n// returns 0.0\n\nx = tuple[ 0 ];\n// returns 0.0\n\nvar y = tuple.y;\n// returns 0.0\n\ny = tuple[ 1 ];\n// returns 0.0\n\n// Create a tuple view of the last 16 bytes:\ntuple = factory( buf, 16 );\n\nx = tuple.x;\n// returns 0.0\n\nx = tuple[ 0 ];\n// returns 0.0\n\ny = tuple.y;\n// returns 0.0\n\ny = tuple[ 1 ];\n// returns 0.0\n```\n\nTo override the default tuple data type, provide a `dtype`.\n\n```javascript\nvar ArrayBuffer = require( '@stdlib/array-buffer' );\n\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar buf = new ArrayBuffer( 16 );\n\n// Create a tuple view of the first 8 bytes (4 bytes per float):\nvar tuple = factory( buf, 'float32' );\n\nvar x = tuple.x;\n// returns 0.0\n\nx = tuple[ 0 ];\n// returns 0.0\n\nvar y = tuple.y;\n// returns 0.0\n\ny = tuple[ 1 ];\n// returns 0.0\n\n// Create a tuple view of the last 8 bytes:\ntuple = factory( buf, 8, 'float32' );\n\nx = tuple.x;\n// returns 0.0\n\nx = tuple[ 0 ];\n// returns 0.0\n\ny = tuple.y;\n// returns 0.0\n\ny = tuple[ 1 ];\n// returns 0.0\n```\n\n\u003ca name=\"static-method-from\"\u003e\u003c/a\u003e\n\n#### factory.from( src\\[, map\\[, thisArg]] )\n\nCreates a new named typed tuple from an array-like `object` or an iterable.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory.from( [ 1.0, -1.0 ] );\n\nvar x = tuple.x;\n// returns 1.0\n\nx = tuple[ 0 ];\n// returns 1.0\n\nvar y = tuple.y;\n// returns -1.0\n\ny = tuple[ 1 ];\n// returns -1.0\n```\n\nTo invoke a function for each `src` value, provide a callback function.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nfunction mapFcn( v ) {\n    return v * 2.0;\n}\n\nvar tuple = factory.from( [ 1.0, -1.0 ], mapFcn );\n\nvar x = tuple.x;\n// returns 2.0\n\nx = tuple[ 0 ];\n// returns 2.0\n\nvar y = tuple.y;\n// returns -2.0\n\ny = tuple[ 1 ];\n// returns -2.0\n```\n\nA callback function is provided three arguments:\n\n-   `value`: source value.\n-   `index`: source index.\n-   `field`: tuple field.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nfunction mapFcn( v ) {\n    this.count += 1;\n    return v * 2.0;\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar tuple = factory.from( [ 1.0, -1.0 ], mapFcn, ctx );\n\nvar n = ctx.count;\n// returns 2\n```\n\n\u003ca name=\"static-method-from-object\"\u003e\u003c/a\u003e\n\n#### factory.fromObject( obj\\[, map\\[, thisArg]] )\n\nCreates a new named typed tuple from an `object` containing tuple fields.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar obj = {\n    'x': 1.0,\n    'y': -1.0\n};\n\nvar tuple = factory.fromObject( obj );\n\nvar x = tuple.x;\n// returns 1.0\n\nx = tuple[ 0 ];\n// returns 1.0\n\nvar y = tuple.y;\n// returns -1.0\n\ny = tuple[ 1 ];\n// returns -1.0\n```\n\nTo invoke a function for each `src` object tuple field, provide a callback function.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nfunction mapFcn( v ) {\n    return v * 2.0;\n}\n\nvar obj = {\n    'x': 1.0,\n    'y': -1.0\n};\n\nvar tuple = factory.fromObject( obj, mapFcn );\n\nvar x = tuple.x;\n// returns 2.0\n\nx = tuple[ 0 ];\n// returns 2.0\n\nvar y = tuple.y;\n// returns -2.0\n\ny = tuple[ 1 ];\n// returns -2.0\n```\n\nA callback function is provided two arguments:\n\n-   `value`: source object tuple field value.\n-   `field`: source object tuple field name.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nfunction mapFcn( v ) {\n    this.count += 1;\n    return v * 2.0;\n}\n\nvar obj = {\n    'x': 1.0,\n    'y': -1.0\n};\n\nvar ctx = {\n    'count': 0\n};\n\nvar tuple = factory.fromObject( obj, mapFcn, ctx );\n\nvar n = ctx.count;\n// returns 2\n```\n\n\u003ca name=\"static-method-of\"\u003e\u003c/a\u003e\n\n#### factory.of( element0\\[, element1\\[, ...elementN]] )\n\nCreates a new named typed tuple from a variable number of arguments.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory.of( 1.0, -1.0 );\n\nvar x = tuple.x;\n// returns 1.0\n\nx = tuple[ 0 ];\n// returns 1.0\n\nvar y = tuple.y;\n// returns -1.0\n\ny = tuple[ 1 ];\n// returns -1.0\n```\n\n* * *\n\n### Tuple\n\n\u003ca name=\"prop-bytes-per-element\"\u003e\u003c/a\u003e\n\n#### tuple.BYTES_PER_ELEMENT\n\nSize (in bytes) of each tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar nbytes = tuple.BYTES_PER_ELEMENT;\n// returns 8\n```\n\n\u003ca name=\"prop-buffer\"\u003e\u003c/a\u003e\n\n#### tuple.buffer\n\nPointer to the underlying data buffer.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar buf = tuple.buffer;\n// returns \u003cArrayBuffer\u003e\n```\n\n\u003ca name=\"prop-byte-length\"\u003e\u003c/a\u003e\n\n#### tuple.byteLength\n\nLength (in bytes) of the tuple.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar nbytes = tuple.byteLength;\n// returns 16\n```\n\n\u003ca name=\"prop-byte-offset\"\u003e\u003c/a\u003e\n\n#### tuple.byteOffset\n\nOffset (in bytes) of a tuple from the start of its underlying [`ArrayBuffer`][@stdlib/array/buffer].\n\n```javascript\nvar ArrayBuffer = require( '@stdlib/array-buffer' );\n\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar offset = tuple.byteOffset;\n// returns 0\n\nvar buf = new ArrayBuffer( 64 );\ntuple = factory( buf, 32 );\n\noffset = tuple.byteOffset;\n// returns 32\n```\n\n\u003ca name=\"prop-length\"\u003e\u003c/a\u003e\n\n#### tuple.length\n\nNumber of tuple elements.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar len = tuple.length;\n// returns 2\n```\n\n\u003ca name=\"prop-name\"\u003e\u003c/a\u003e\n\n#### tuple.name\n\nTuple name.\n\n```javascript\n// Create a tuple factory which generates tuples having the default tuple name:\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar n = tuple.name;\n// returns 'tuple'\n\n// Create a tuple factory which generates tuples having a custom tuple name:\nvar opts = {\n    'name': 'Point'\n};\nfactory = namedtypedtuple( [ 'x', 'y' ], opts );\n\ntuple = factory( [ 1.0, -1.0 ] );\n\nn = tuple.name;\n// returns 'Point'\n```\n\n\u003ca name=\"prop-fields\"\u003e\u003c/a\u003e\n\n#### tuple.fields\n\nReturns the list of tuple fields.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nvar fields = tuple.fields;\n// returns [ 'x', 'y' ]\n```\n\n\u003ca name=\"prop-ordered-fields\"\u003e\u003c/a\u003e\n\n#### tuple.orderedFields\n\nReturns the list of tuple fields in index order.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\n// Sort tuple elements in ascending order:\ntuple.sort();\n\n// Get the list of tuple fields:\nvar fields = tuple.fields;\n// returns [ 'x', 'y' ]\n\n// Get the list of tuple fields in index order:\nfields = tuple.orderedFields;\n// returns [ 'y', 'x' ]\n```\n\n\u003ca name=\"method-copy-within\"\u003e\u003c/a\u003e\n\n#### tuple.copyWithin( target, start\\[, end] )\n\nCopies a sequence of elements within the tuple starting at `start` and ending at `end` (non-inclusive) to the position starting at `target`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n\nvar x = tuple.x;\n// returns 2.0\n\nvar y = tuple.y;\n// returns -2.0\n\n// Copy the last two elements to the first two elements:\ntuple.copyWithin( 0, 3 );\n\nx = tuple.x;\n// returns -1.0\n\ny = tuple.y;\n// returns 1.0\n```\n\nBy default, `end` equals the number of tuple elements (i.e., one more than the last tuple index). To limit the sequence length, provide an `end` argument.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n\nvar w = tuple.w;\n// returns -1.0\n\nvar v = tuple.v;\n// returns 1.0\n\n// Copy the first two elements to the last two elements:\ntuple.copyWithin( 3, 0, 2 );\n\nw = tuple.w;\n// returns 2.0\n\nv = tuple.v;\n// returns -2.0\n```\n\nWhen a `target`, `start`, and/or `end` index is negative, the respective index is determined relative to the last tuple element. The following example achieves the same behavior as the previous example:\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 2.0, -2.0, 1.0, -1.0, 1.0 ] );\n\nvar w = tuple.w;\n// returns -1.0\n\nvar v = tuple.v;\n// returns 1.0\n\n// Copy the first two elements to the last two elements:\ntuple.copyWithin( -2, -5, -3 );\n\nw = tuple.w;\n// returns 2.0\n\nv = tuple.v;\n// returns -2.0\n```\n\n\u003ca name=\"method-entries\"\u003e\u003c/a\u003e\n\n#### tuple.entries()\n\nReturns an iterator for iterating over tuple key-value pairs.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\n// Create an iterator:\nvar it = tuple.entries();\n\n// Iterate over key-value pairs...\nvar v = it.next().value;\n// returns [ 0, 'x', 1.0 ]\n\nv = it.next().value;\n// returns [ 1, 'y', -1.0 ]\n\nvar bool = it.next().done;\n// returns true\n```\n\n\u003ca name=\"method-every\"\u003e\u003c/a\u003e\n\n#### tuple.every( predicate\\[, thisArg] )\n\nTests whether all tuple elements pass a test implemented by a `predicate` function.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003e= 0.0 );\n}\n\nvar bool = tuple.every( predicate );\n// returns false\n```\n\nA `predicate` function is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, 1.0 ] );\n\nfunction predicate( v ) {\n    this.count += 1;\n    return ( v \u003e= 0.0 );\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar bool = tuple.every( predicate, ctx );\n// returns true\n\nvar n = ctx.count;\n// returns 2\n```\n\n\u003ca name=\"method-field-of\"\u003e\u003c/a\u003e\n\n#### tuple.fieldOf( searchElement\\[, fromIndex] )\n\nReturns the field of the first tuple element strictly equal to a search element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar field = tuple.fieldOf( -1.0 );\n// returns 'z'\n\nfield = tuple.fieldOf( 2.0 );\n// returns undefined\n```\n\nBy default, the method searches the entire tuple (`fromIndex = 0`). To begin searching from a specific tuple index, provide a `fromIndex`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar field = tuple.fieldOf( 1.0, 1 );\n// returns undefined\n```\n\nWhen a `fromIndex` is negative, the starting index is resolved relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar field = tuple.fieldOf( 1.0, -2 );\n// returns undefined\n```\n\nThe method does **not** distinguish between signed and unsigned zero.\n\n\u003ca name=\"method-fill\"\u003e\u003c/a\u003e\n\n#### tuple.fill( value\\[, start\\[, end]] )\n\nFills a tuple from a `start` index to an `end` index (non-inclusive) with a provided `value`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory();\n\n// Set all tuple elements to the same value:\ntuple.fill( 2.0 );\n\nvar x = tuple.x;\n// returns 2.0\n\nvar y = tuple.y;\n// returns 2.0\n\n// Set all tuple elements starting from the first index to the same value:\ntuple.fill( 3.0, 1 );\n\nx = tuple.x;\n// returns 2.0\n\ny = tuple.y;\n// returns 3.0\n\n// Set all tuple elements, except the last element, to the same value:\ntuple.fill( 4.0, 0, tuple.length-1 );\n\nx = tuple.x;\n// returns 4.0\n\ny = tuple.y;\n// returns 3.0\n```\n\nWhen a `start` and/or `end` index is negative, the respective index is determined relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory();\n\n// Set all tuple elements, except the last element, to the same value:\ntuple.fill( 2.0, -tuple.length, -1 );\n\nvar x = tuple.x;\n// returns 2.0\n\nvar y = tuple.y;\n// returns 0.0\n```\n\n\u003ca name=\"method-filter\"\u003e\u003c/a\u003e\n\n#### tuple.filter( predicate\\[, thisArg] )\n\nCreates a new tuple (of the same data type as the host tuple) which includes those elements for which a `predicate` function returns a truthy value.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003e= 0.0 );\n}\n\nvar p2 = p1.filter( predicate );\n\nvar f = p2.fields;\n// returns [ 'x', 'y' ]\n```\n\nIf a `predicate` function does not return a truthy value for any tuple element, the method returns `null`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003e= 10.0 );\n}\n\nvar p2 = p1.filter( predicate );\n// returns null\n```\n\nA `predicate` function is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    this.count += 1;\n    return ( v \u003e= 0.0 );\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar p2 = p1.filter( predicate, ctx );\n\nvar n = ctx.count;\n// returns 3\n```\n\n\u003ca name=\"method-find\"\u003e\u003c/a\u003e\n\n#### tuple.find( predicate\\[, thisArg] )\n\nReturns the first tuple element for which a provided `predicate` function returns a truthy value.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c 0.0 );\n}\n\nvar v = tuple.find( predicate );\n// returns -1.0\n```\n\nIf a `predicate` function does not return a truthy value for any tuple element, the method returns `undefined`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c -10.0 );\n}\n\nvar v = tuple.find( predicate );\n// returns undefined\n```\n\nA `predicate` function is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    this.count += 1;\n    return ( v \u003c 0.0 );\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar v = tuple.find( predicate, ctx );\n// returns -1.0\n\nvar n = ctx.count;\n// returns 3\n```\n\n\u003ca name=\"method-find-field\"\u003e\u003c/a\u003e\n\n#### tuple.findField( predicate\\[, thisArg] )\n\nReturns the field of the first tuple element for which a provided `predicate` function returns a truthy value.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c 0.0 );\n}\n\nvar field = tuple.findField( predicate );\n// returns 'z'\n```\n\nIf a `predicate` function does not return a truthy value for any tuple element, the method returns `undefined`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c -10.0 );\n}\n\nvar field = tuple.findField( predicate );\n// returns undefined\n```\n\nA `predicate` function is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    this.count += 1;\n    return ( v \u003c 0.0 );\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar field = tuple.findField( predicate, ctx );\n// returns 'z'\n\nvar n = ctx.count;\n// returns 3\n```\n\n\u003ca name=\"method-find-index\"\u003e\u003c/a\u003e\n\n#### tuple.findIndex( predicate\\[, thisArg] )\n\nReturns the index of the first tuple element for which a provided `predicate` function returns a truthy value.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c 0.0 );\n}\n\nvar idx = tuple.findIndex( predicate );\n// returns 2\n```\n\nIf a `predicate` function does not return a truthy value for any tuple element, the method returns `-1`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c -10.0 );\n}\n\nvar idx = tuple.findIndex( predicate );\n// returns -1\n```\n\nA `predicate` function is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction predicate( v ) {\n    this.count += 1;\n    return ( v \u003c 0.0 );\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar idx = tuple.findIndex( predicate, ctx );\n// returns 2\n\nvar n = ctx.count;\n// returns 3\n```\n\n\u003ca name=\"method-for-each\"\u003e\u003c/a\u003e\n\n#### tuple.forEach( fcn\\[, thisArg] )\n\nInvokes a callback for each tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nvar str = '';\n\nfunction fcn( v, i, f ) {\n    str += f + '=' + v;\n    if ( i \u003c tuple.length-1 ) {\n        str += ' ';\n    }\n}\n\ntuple.forEach( fcn );\n\nconsole.log( str );\n// =\u003e 'x=1 y=0 z=-1'\n```\n\nThe callback is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nfunction fcn() {\n    this.count += 1;\n}\n\nvar ctx = {\n    'count': 0\n};\n\ntuple.forEach( fcn, ctx );\n\nvar n = ctx.count;\n// returns 3\n```\n\n\u003ca name=\"method-includes\"\u003e\u003c/a\u003e\n\n#### tuple.includes( searchElement\\[, fromIndex] )\n\nReturns a `boolean` indicating whether a tuple includes a search element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar bool = tuple.includes( -1.0 );\n// returns true\n\nbool = tuple.includes( 2.0 );\n// returns false\n```\n\nBy default, the method searches the entire tuple (`fromIndex = 0`). To begin searching from a specific tuple index, provide a `fromIndex`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar bool = tuple.includes( 1.0, 1 );\n// returns false\n```\n\nWhen a `fromIndex` is negative, the starting index is resolved relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar bool = tuple.includes( 1.0, -2 );\n// returns false\n```\n\nThe method does **not** distinguish between signed and unsigned zero.\n\n\u003ca name=\"method-index-of\"\u003e\u003c/a\u003e\n\n#### tuple.indexOf( searchElement\\[, fromIndex] )\n\nReturns the index of the first tuple element strictly equal to a search element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar idx = tuple.indexOf( -1.0 );\n// returns 2\n\nidx = tuple.indexOf( 2.0 );\n// returns -1\n```\n\nBy default, the method searches the entire tuple (`fromIndex = 0`). To begin searching from a specific tuple index, provide a `fromIndex`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar idx = tuple.indexOf( 1.0, 1 );\n// returns -1\n```\n\nWhen a `fromIndex` is negative, the starting index is resolved relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar idx = tuple.indexOf( 1.0, -2 );\n// returns -1\n```\n\nThe method does **not** distinguish between signed and unsigned zero.\n\n\u003ca name=\"method-ind2key\"\u003e\u003c/a\u003e\n\n#### tuple.ind2key( ind )\n\nConverts a tuple index to a field name.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar field = tuple.ind2key( 1 );\n// returns 'y'\n\nfield = tuple.ind2key( 100 );\n// returns undefined\n```\n\nIf provided a negative index, the method resolves the index relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar field = tuple.ind2key( -2 );\n// returns 'y'\n```\n\n\u003ca name=\"method-join\"\u003e\u003c/a\u003e\n\n#### tuple.join( \\[separator] )\n\nSerializes a tuple by joining all tuple elements as a string.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nvar str = tuple.join();\n// returns '1,0,-1'\n```\n\nBy default, the method delineates tuple elements using a comma `,`. To specify a custom separator, provide a `separator` string.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nvar str = tuple.join( '|' );\n// returns '1|0|-1'\n```\n\n\u003ca name=\"method-keys\"\u003e\u003c/a\u003e\n\n#### tuple.keys()\n\nReturns an iterator for iterating over tuple keys.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\n// Create an iterator:\nvar it = tuple.keys();\n\n// Iterate over keys...\nvar v = it.next().value;\n// returns [ 0, 'x' ]\n\nv = it.next().value;\n// returns [ 1, 'y' ]\n\nvar bool = it.next().done;\n// returns true\n```\n\n\u003ca name=\"method-key2ind\"\u003e\u003c/a\u003e\n\n#### tuple.key2ind( field )\n\nConverts a field name to a tuple index.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar idx = tuple.key2ind( 'y' );\n// returns 1\n\nidx = tuple.key2ind( 'foo' );\n// returns -1\n```\n\n\u003ca name=\"method-last-field-of\"\u003e\u003c/a\u003e\n\n#### tuple.lastFieldOf( searchElement\\[, fromIndex] )\n\nReturns the field of the last tuple element strictly equal to a search element, iterating from right to left.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n\nvar field = tuple.lastFieldOf( 0.0 );\n// returns 'w'\n\nfield = tuple.lastFieldOf( 2.0 );\n// returns undefined\n```\n\nBy default, the method searches the entire tuple (`fromIndex = -1`). To begin searching from a specific tuple index, provide a `fromIndex`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n\nvar field = tuple.lastFieldOf( 0.0, 2 );\n// returns 'y'\n```\n\nWhen a `fromIndex` is negative, the starting index is resolved relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n\nvar field = tuple.lastFieldOf( 0.0, -3 );\n// returns 'y'\n```\n\nThe method does **not** distinguish between signed and unsigned zero.\n\n\u003ca name=\"method-last-index-of\"\u003e\u003c/a\u003e\n\n#### tuple.lastIndexOf( searchElement\\[, fromIndex] )\n\nReturns the index of the last tuple element strictly equal to a search element, iterating from right to left.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n\nvar idx = tuple.lastIndexOf( 0.0 );\n// returns 3\n\nidx = tuple.lastIndexOf( 2.0 );\n// returns -1\n```\n\nBy default, the method searches the entire tuple (`fromIndex = -1`). To begin searching from a specific tuple index, provide a `fromIndex`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n\nvar idx = tuple.lastIndexOf( 0.0, 2 );\n// returns 1\n```\n\nWhen a `fromIndex` is negative, the starting index is resolved relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z', 'w', 'v' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0, 0.0, 1.0 ] );\n\nvar idx = tuple.lastIndexOf( 0.0, -3 );\n// returns 1\n```\n\nThe method does **not** distinguish between signed and unsigned zero.\n\n\u003ca name=\"method-map\"\u003e\u003c/a\u003e\n\n#### tuple.map( fcn\\[, thisArg] )\n\nMaps each tuple element to an element in a new tuple having the same data type as the host tuple.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction fcn( v ) {\n    return v * 2.0;\n}\n\nvar p2 = p1.map( fcn );\n\nvar x = p2.x;\n// returns 2.0\n\nvar y = p2.y;\n// returns 0.0\n\nvar z = p2.z;\n// returns -2.0\n```\n\nA callback is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nfunction fcn( v ) {\n    this.count += 1;\n    return v * 2.0;\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar p2 = p1.map( fcn, ctx );\n\nvar n = ctx.count;\n// returns 3\n```\n\n\u003ca name=\"method-reduce\"\u003e\u003c/a\u003e\n\n#### tuple.reduce( fcn\\[, initialValue] )\n\nApplies a function against an accumulator and each element in a tuple and returns the accumulated result.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, 0.0, -3.0 ] );\n\nfunction fcn( acc, v ) {\n    return acc + ( v*v );\n}\n\nvar v = tuple.reduce( fcn );\n// returns 11.0\n```\n\nIf not provided an initial value, the method invokes a provided function with the first tuple element as the first argument and the second tuple element as the second argument.\n\nIf provided an initial value, the method invokes a provided function with the initial value as the first argument and the first tuple element as the second argument.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, 0.0, -3.0 ] );\n\nfunction fcn( acc, v ) {\n    return acc + ( v*v );\n}\n\nvar v = tuple.reduce( fcn, 0.0 );\n// returns 13.0\n```\n\nA callback is provided five arguments:\n\n-   `acc`: accumulated result.\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\n\u003ca name=\"method-reduce-right\"\u003e\u003c/a\u003e\n\n#### tuple.reduceRight( fcn\\[, initialValue] )\n\nApplies a function against an accumulator and each element in a tuple and returns the accumulated result, iterating from right to left.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, 0.0, -3.0 ] );\n\nfunction fcn( acc, v ) {\n    return acc + ( v*v );\n}\n\nvar v = tuple.reduceRight( fcn );\n// returns 1.0\n```\n\nIf not provided an initial value, the method invokes a provided function with the last tuple element as the first argument and the second-to-last tuple element as the second argument.\n\nIf provided an initial value, the method invokes a provided function with the initial value as the first argument and the last tuple element as the second argument.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, 0.0, -3.0 ] );\n\nfunction fcn( acc, v ) {\n    return acc + ( v*v );\n}\n\nvar v = tuple.reduceRight( fcn, 0.0 );\n// returns 13.0\n```\n\nA callback is provided five arguments:\n\n-   `acc`: accumulated result.\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\n\u003ca name=\"method-reverse\"\u003e\u003c/a\u003e\n\n#### tuple.reverse()\n\nReverses a tuple **in-place** (thus mutating the tuple on which the method is invoked).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, 0.0, -3.0 ] );\n\nvar x = tuple[ 0 ];\n// returns 2.0\n\nx = tuple.x;\n// returns 2.0\n\n// Reverse the tuple:\ntuple.reverse();\n\nvar fields = tuple.orderedFields;\n// returns [ 'z', 'y', 'x' ]\n\nvar z = tuple[ 0 ];\n// returns -3.0\n\n// Tuple field assignments do NOT change:\nx = tuple.x;\n// returns 2.0\n```\n\nInvoking this method does **not** affect tuple field assignments.\n\n\u003ca name=\"method-set\"\u003e\u003c/a\u003e\n\n#### tuple.set( arr\\[, offset] )\n\nSets tuple elements.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar y = tuple[ 1 ];\n// returns 0.0\n\ny = tuple.y;\n// returns 0.0\n\n// Set the first two tuple elements:\ntuple.set( [ -2.0, 2.0 ] );\n\nvar x = tuple[ 0 ];\n// returns -2.0\n\nx = tuple.x;\n// returns -2.0\n\ny = tuple[ 1 ];\n// returns 2.0\n\ny = tuple.y;\n// returns 2.0\n```\n\nBy default, the method starts writing values at the first tuple index. To specify an alternative index, provide an index `offset`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar y = tuple[ 1 ];\n// returns 0.0\n\ny = tuple.y;\n// returns 0.0\n\n// Set the last two tuple elements:\ntuple.set( [ -2.0, 2.0 ], 1 );\n\nvar x = tuple[ 0 ];\n// returns 1.0\n\nx = tuple.x;\n// returns 1.0\n\ny = tuple[ 1 ];\n// returns -2.0\n\ny = tuple.y;\n// returns -2.0\n\nvar z = tuple[ 2 ];\n// returns 2.0\n\nz = tuple.z;\n// returns 2.0\n```\n\n\u003ca name=\"method-slice\"\u003e\u003c/a\u003e\n\n#### tuple.slice( \\[begin\\[, end]] )\n\nCopies tuple elements to a new tuple with the same underlying data type as the host tuple.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.slice();\n\nvar bool = ( p1 === p2 );\n// returns false\n\nbool = ( p1.buffer === p2.buffer );\n// returns false\n\nvar x = p2.x;\n// returns 1.0\n\nvar y = p2.y;\n// returns 0.0\n\nvar z = p2.z;\n// returns -1.0\n```\n\nBy default, the method copies elements beginning with the first tuple element. To specify an alternative tuple index at which to begin copying, provide a `begin` index (inclusive).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.slice( 1 );\n\nvar fields = p2.fields;\n// returns [ 'y', 'z' ]\n\nvar y = p2.y;\n// returns 0.0\n\nvar z = p2.z;\n// returns -1.0\n```\n\nBy default, the method copies all tuple elements after `begin`. To specify an alternative tuple index at which to end copying, provide an `end` index (exclusive).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.slice( 0, 2 );\n\nvar fields = p2.fields;\n// returns [ 'x', 'y' ]\n\nvar x = p2.x;\n// returns 1.0\n\nvar y = p2.y;\n// returns 0.0\n```\n\nWhen a `begin` and/or `end` index is negative, the respective index is determined relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.slice( -p1.length, -1 );\n\nvar fields = p2.fields;\n// returns [ 'x', 'y' ]\n\nvar x = p2.x;\n// returns 1.0\n\nvar y = p2.y;\n// returns 0.0\n```\n\n\u003ca name=\"method-some\"\u003e\u003c/a\u003e\n\n#### tuple.some( predicate\\[, thisArg] )\n\nTests whether at least one tuple element passes a test implemented by a `predicate` function.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\nfunction predicate( v ) {\n    return ( v \u003c 0.0 );\n}\n\nvar bool = tuple.some( predicate );\n// returns true\n```\n\nA `predicate` function is provided four arguments:\n\n-   `value`: tuple element.\n-   `index`: tuple index.\n-   `field`: tuple field name.\n-   `tuple`: tuple on which the method is invoked.\n\nTo set the callback execution context, provide a `thisArg`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, 1.0 ] );\n\nfunction predicate( v ) {\n    this.count += 1;\n    return ( v \u003c 0.0 );\n}\n\nvar ctx = {\n    'count': 0\n};\n\nvar bool = tuple.some( predicate, ctx );\n// returns false\n\nvar n = ctx.count;\n// returns 2\n```\n\n\u003ca name=\"method-sort\"\u003e\u003c/a\u003e\n\n#### tuple.sort( \\[compareFunction] )\n\nSorts a tuple **in-place** (thus mutating the tuple on which the method is invoked).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, -3.0, 0.0 ] );\n\nvar x = tuple[ 0 ];\n// returns 2.0\n\nx = tuple.x;\n// returns 2.0\n\n// Sort the tuple (in ascending order):\ntuple.sort();\n\nvar fields = tuple.orderedFields;\n// returns [ 'y', 'z', 'x' ]\n\nvar y = tuple[ 0 ];\n// returns -3.0\n\n// Tuple field assignments do NOT change:\nx = tuple.x;\n// returns 0.0\n```\n\nBy default, the method sorts tuple elements in ascending order. To impose a custom order, provide a `compareFunction`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 2.0, -3.0, 0.0 ] );\n\nvar x = tuple[ 0 ];\n// returns 2.0\n\nx = tuple.x;\n// returns 2.0\n\nfunction descending( a, b ) {\n    return b - a;\n}\n\n// Sort the tuple (in descending order):\ntuple.sort( descending );\n\nvar fields = tuple.orderedFields;\n// returns [ 'x', 'z', 'y' ]\n\nvar z = tuple[ 1 ];\n// returns 0.0\n\n// Tuple field assignments do NOT change:\nvar y = tuple.y;\n// returns -3.0\n```\n\nThe comparison function is provided two tuple elements, `a` and `b`, per invocation, and its return value determines the sort order as follows:\n\n-   If the comparison function returns a value **less** than zero, then the method sorts `a` to an index lower than `b` (i.e., `a` should come **before** `b`).\n-   If the comparison function returns a value **greater** than zero, then the method sorts `a` to an index higher than `b` (i.e., `b` should come **before** `a`).\n-   If the comparison function returns **zero**, then the relative order of `a` and `b` _should_ remain unchanged.\n\nInvoking this method does **not** affect tuple field assignments.\n\n\u003ca name=\"method-subarray\"\u003e\u003c/a\u003e\n\n#### tuple.subarray( \\[begin\\[, end]] )\n\nCreates a new [typed array][@stdlib/array/typed] over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host tuple.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar arr = tuple.subarray();\n// returns \u003cFloat64Array\u003e[ 1.0, 0.0, -1.0 ]\n```\n\nBy default, the method creates a [typed array][@stdlib/array/typed] view beginning with the first tuple element. To specify an alternative tuple index at which to begin, provide a `begin` index (inclusive).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar arr = tuple.subarray( 1 );\n// returns \u003cFloat64Array\u003e[ 0.0, -1.0 ]\n```\n\nBy default, the method creates a [typed array][@stdlib/array/typed] view which includes all tuple elements after `begin`. To limit the number of tuple elements after `begin`, provide an `end` index (exclusive).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar arr = tuple.subarray( 0, 2 );\n// returns \u003cFloat64Array\u003e[ 1.0, 0.0 ]\n```\n\nWhen a `begin` and/or `end` index is negative, the respective index is determined relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar arr = tuple.subarray( -tuple.length, -1 );\n// returns \u003cFloat64Array\u003e[ 1.0, 0.0 ]\n```\n\nIf the method is unable to resolve indices to a non-empty tuple subsequence, the method returns an empty [typed array][@stdlib/array/typed].\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar arr = tuple.subarray( 10, -1 );\n// returns \u003cFloat64Array\u003e[]\n```\n\n\u003ca name=\"method-subtuple\"\u003e\u003c/a\u003e\n\n#### tuple.subtuple( \\[begin\\[, end]] )\n\nCreates a new named typed tuple over the same underlying [`ArrayBuffer`][@stdlib/array/buffer] and with the same underlying data type as the host tuple.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.subtuple();\n\nvar bool = ( p1 === p2 );\n// returns false\n\nbool = ( p1.buffer === p2.buffer );\n// returns true\n\nvar len = p2.length;\n// returns 3\n\nvar x = p2.x;\n// returns 1.0\n\nvar y = p2.y;\n// returns 0.0\n\nvar z = p2.z;\n// returns -1.0\n```\n\nBy default, the method creates a new tuple beginning with the first tuple element. To specify an alternative tuple index at which to begin, provide a `begin` index (inclusive).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.subtuple( 1 );\n\nvar len = p2.length;\n// returns 2\n\nvar fields = p2.fields;\n// returns [ 'y', 'z' ]\n\nvar y = p2.y;\n// returns 0.0\n\nvar z = p2.z;\n// returns -1.0\n```\n\nBy default, the method creates a new tuple which includes all tuple elements after `begin`. To limit the number of tuple elements after `begin`, provide an `end` index (exclusive).\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.subtuple( 0, 2 );\n\nvar len = p2.length;\n// returns 2\n\nvar fields = p2.fields;\n// returns [ 'x', 'y' ]\n\nvar x = p2.x;\n// returns 1.0\n\nvar y = p2.y;\n// returns 0.0\n```\n\nWhen a `begin` and/or `end` index is negative, the respective index is determined relative to the last tuple element.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.subtuple( -p1.length, -1 );\n\nvar len = p2.length;\n// returns 2\n\nvar fields = p2.fields;\n// returns [ 'x', 'y' ]\n\nvar x = p2.x;\n// returns 1.0\n\nvar y = p2.y;\n// returns 0.0\n```\n\nIf the method is unable to resolve indices to a non-empty tuple subsequence, the method returns `null`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar p1 = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar p2 = p1.subtuple( 10, -1 );\n// returns null\n```\n\n\u003ca name=\"method-to-json\"\u003e\u003c/a\u003e\n\n#### tuple.toJSON()\n\nSerializes a tuple as [JSON][json].\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ] );\n\nvar obj = tuple.toJSON();\n// returns { 'x': 1.0, 'y': 0.0, 'z': -1.0 }\n```\n\n\u003ca name=\"method-to-locale-string\"\u003e\u003c/a\u003e\n\n#### tuple.toLocaleString( \\[locales\\[, options]] )\n\nSerializes a tuple as a locale-specific `string`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nvar str = tuple.toLocaleString();\n// returns '1,0,-1'\n```\n\n\u003ca name=\"method-to-string\"\u003e\u003c/a\u003e\n\n#### tuple.toString()\n\nSerializes a tuple as a `string`.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ] );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nvar str = tuple.toString();\n// returns 'tuple(x=1, y=0, z=-1)'\n```\n\nThe returned `string` uses the tuple `name` as specified when creating a tuple factory.\n\n```javascript\nvar opts = {\n    'name': 'Point'\n};\n\nvar factory = namedtypedtuple( [ 'x', 'y', 'z' ], opts );\n\nvar tuple = factory( [ 1.0, 0.0, -1.0 ], 'int32' );\n\nvar str = tuple.toString();\n// returns 'Point(x=1, y=0, z=-1)'\n```\n\n\u003ca name=\"method-values\"\u003e\u003c/a\u003e\n\n#### tuple.values()\n\nReturns an iterator for iterating over tuple elements.\n\n```javascript\nvar factory = namedtypedtuple( [ 'x', 'y' ] );\n\nvar tuple = factory( [ 1.0, -1.0 ] );\n\n// Create an iterator:\nvar it = tuple.values();\n\n// Iterate over tuple elements...\nvar v = it.next().value;\n// returns 1.0\n\nv = it.next().value;\n// returns -1.0\n\nvar bool = it.next().done;\n// returns true\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.usage --\u003e\n\n\u003c!-- Package usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"notes\"\u003e\n\n* * *\n\n## Notes\n\n-   Named typed tuples are **not** immutable. In order to create immutable named typed tuples, invoke `Object.freeze()` on returned tuples.\n\n    \u003c!-- TODO: use stdlib `Object.freeze` package --\u003e\n\n    ```javascript\n    var factory = namedtypedtuple( [ 'x', 'y' ] );\n\n    var tuple = factory( [ 1.0, -1.0 ] );\n\n    // Make the tuple immutable:\n    tuple = Object.freeze( tuple );\n    ```\n\n-   Tuple fields are **non-enumerable**. To return the list of tuple fields, use [`tuple.fields`](#prop-fields).\n\n\u003c/section\u003e\n\n\u003c!-- /.notes --\u003e\n\n\u003c!-- Package usage examples. --\u003e\n\n\u003csection class=\"examples\"\u003e\n\n* * *\n\n## Examples\n\n\u003c!-- eslint no-undef: \"error\" --\u003e\n\n```javascript\nvar namedtypedtuple = require( '@stdlib/utils-named-typed-tuple' );\n\nvar fields = [ 'x', 'y' ];\nvar opts = {\n    'name': 'Point'\n};\n\nvar Point = namedtypedtuple( fields, opts );\n\nvar p = new Point( [ 1.0, -1.0 ] );\n\n// Tuple elements can be accessed by index or name:\nvar x = p[ 0 ];\n// returns 1.0\n\nx = p.x;\n// returns 1.0\n\nvar y = p[ 1 ];\n// returns -1.0\n\ny = p.y;\n// returns -1.0\n\n// Sort tuple elements while retaining name access:\np.sort();\nconsole.log( 'p[0]=%d, p[1]=%d, x=%d, y=%d', p[ 0 ], p[ 1 ], p.x, p.y );\n\n// Retrieve the tuple fields in index order:\nconsole.log( p.orderedFields );\n// =\u003e [ 'y', 'x' ]\n\n// Serialize the tuple as a string:\nconsole.log( p.toString() );\n\n// Serialize the tuple a JSON string:\nconsole.log( JSON.stringify( p ) );\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.examples --\u003e\n\n\u003c!-- Section to include cited references. If references are included, add a horizontal rule *before* the section. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"references\"\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.references --\u003e\n\n\u003c!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. --\u003e\n\n\u003csection class=\"related\"\u003e\n\n* * *\n\n## See Also\n\n-   \u003cspan class=\"package-name\"\u003e[`@stdlib/array-typed`][@stdlib/array/typed]\u003c/span\u003e\u003cspan class=\"delimiter\"\u003e: \u003c/span\u003e\u003cspan class=\"description\"\u003ecreate a typed array.\u003c/span\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.related --\u003e\n\n\u003c!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\n\u003csection class=\"main-repo\" \u003e\n\n* * *\n\n## Notice\n\nThis package is part of [stdlib][stdlib], a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.\n\nFor more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib].\n\n#### Community\n\n[![Chat][chat-image]][chat-url]\n\n---\n\n## License\n\nSee [LICENSE][stdlib-license].\n\n\n## Copyright\n\nCopyright \u0026copy; 2016-2025. The Stdlib [Authors][stdlib-authors].\n\n\u003c/section\u003e\n\n\u003c!-- /.stdlib --\u003e\n\n\u003c!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"links\"\u003e\n\n[npm-image]: http://img.shields.io/npm/v/@stdlib/utils-named-typed-tuple.svg\n[npm-url]: https://npmjs.org/package/@stdlib/utils-named-typed-tuple\n\n[test-image]: https://github.com/stdlib-js/utils-named-typed-tuple/actions/workflows/test.yml/badge.svg?branch=main\n[test-url]: https://github.com/stdlib-js/utils-named-typed-tuple/actions/workflows/test.yml?query=branch:main\n\n[coverage-image]: https://img.shields.io/codecov/c/github/stdlib-js/utils-named-typed-tuple/main.svg\n[coverage-url]: https://codecov.io/github/stdlib-js/utils-named-typed-tuple?branch=main\n\n\u003c!--\n\n[dependencies-image]: https://img.shields.io/david/stdlib-js/utils-named-typed-tuple.svg\n[dependencies-url]: https://david-dm.org/stdlib-js/utils-named-typed-tuple/main\n\n--\u003e\n\n[chat-image]: https://img.shields.io/gitter/room/stdlib-js/stdlib.svg\n[chat-url]: https://app.gitter.im/#/room/#stdlib-js_stdlib:gitter.im\n\n[stdlib]: https://github.com/stdlib-js/stdlib\n\n[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors\n\n[umd]: https://github.com/umdjs/umd\n[es-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules\n\n[deno-url]: https://github.com/stdlib-js/utils-named-typed-tuple/tree/deno\n[deno-readme]: https://github.com/stdlib-js/utils-named-typed-tuple/blob/deno/README.md\n[umd-url]: https://github.com/stdlib-js/utils-named-typed-tuple/tree/umd\n[umd-readme]: https://github.com/stdlib-js/utils-named-typed-tuple/blob/umd/README.md\n[esm-url]: https://github.com/stdlib-js/utils-named-typed-tuple/tree/esm\n[esm-readme]: https://github.com/stdlib-js/utils-named-typed-tuple/blob/esm/README.md\n[branches-url]: https://github.com/stdlib-js/utils-named-typed-tuple/blob/main/branches.md\n\n[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/utils-named-typed-tuple/main/LICENSE\n\n[@stdlib/array/buffer]: https://github.com/stdlib-js/array-buffer\n\n[json]: http://www.json.org/\n\n\u003c!-- \u003crelated-links\u003e --\u003e\n\n[@stdlib/array/typed]: https://github.com/stdlib-js/array-typed\n\n\u003c!-- \u003c/related-links\u003e --\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.links --\u003e\n","funding_links":["https://github.com/sponsors/stdlib-js","https://opencollective.com/stdlib","https://tidelift.com/funding/github/npm/@stdlib/stdlib"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdlib-js%2Futils-named-typed-tuple","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstdlib-js%2Futils-named-typed-tuple","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdlib-js%2Futils-named-typed-tuple/lists"}