From 1898455a47805dc846bdd02a6a879cf90f326244 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 7 Apr 2024 01:45:22 +0000 Subject: [PATCH 01/84] Transform error messages --- lib/main.js | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/main.js b/lib/main.js index 14be486..9cf458e 100644 --- a/lib/main.js +++ b/lib/main.js @@ -22,7 +22,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // @@ -80,10 +80,10 @@ function arrayWith( x, index, value ) { if ( index < 0 ) { index += x.length; if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } } else if ( index >= x.length ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } out = slice( x, 0, x.length ); set = resolveSetter( out ); diff --git a/package.json b/package.json index aac61ec..dbf6273 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { "@stdlib/array-base-resolve-setter": "^0.2.1", "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/string-format": "^0.2.1", + "@stdlib/error-tools-fmtprodmsg": "^0.2.1", "@stdlib/types": "^0.3.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.1" }, From 1ec09dbf8056fb4e63e44eb5d081362fd1fb994a Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 7 Apr 2024 01:46:30 +0000 Subject: [PATCH 02/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 49 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 797 ---- .github/workflows/publish.yml | 249 -- .github/workflows/test.yml | 100 - .github/workflows/test_bundles.yml | 189 - .github/workflows/test_coverage.yml | 132 - .github/workflows/test_install.yml | 86 - .gitignore | 188 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 5 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 37 +- SECURITY.md | 5 - benchmark/benchmark.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 5 - dist/index.js.map | 7 - docs/repl.txt | 47 - docs/types/test.ts | 68 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/index.js | 45 - lib/main.js | 97 - package.json | 69 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.js | 401 -- 42 files changed, 4864 insertions(+), 4159 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (96%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 10a16e6..0000000 --- a/.gitattributes +++ /dev/null @@ -1,49 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/deps/** linguist-vendored=false -/lib/node_modules/** linguist-vendored=false linguist-generated=false -test/fixtures/** linguist-vendored=false -tools/** linguist-vendored=false - -# Override what is considered "documentation" by GitHub's linguist: -examples/** linguist-documentation=false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index ec90164..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,797 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - steps: ${{ toJson(steps) }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -178,7 +169,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 4a85280..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import withArray from '../docs/types/index'; -export = withArray; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 38c082d..0000000 --- a/dist/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";var s=function(t,r){return function(){return r||t((r={exports:{}}).exports,r),r.exports}};var i=s(function(m,o){ -var f=require('@stdlib/array-base-slice/dist'),h=require('@stdlib/array-base-resolve-setter/dist'),n=require('@stdlib/error-tools-fmtprodmsg/dist');function g(t,r){return typeof t[r]=="function"}function l(t,r,u){var e,a;if(g(t,"with"))return t.with(r,u);if(r<0){if(r+=t.length,r<0)throw new RangeError(n('1sT2M',r))}else if(r>=t.length)throw new RangeError(n('1sT2M',r));return e=f(t,0,t.length),a=h(e),a(e,r,u),e}o.exports=l -});var v=i();module.exports=v; -/** @license Apache-2.0 */ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index b90a8ff..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../lib/main.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar slice = require( '@stdlib/array-base-slice' );\nvar resolveSetter = require( '@stdlib/array-base-resolve-setter' );\nvar format = require( '@stdlib/string-format' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAE7B,GAAKD,EAAQ,GAEZ,GADAA,GAASD,EAAE,OACNC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,UAE/FA,GAASD,EAAE,OACtB,MAAM,IAAI,WAAYL,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMV,EAAOO,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMV,EAAeS,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAX,EAAO,QAAUO,ICzDjB,IAAIM,EAAO,IAKX,OAAO,QAAUA", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 730214e..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,47 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 03e3700..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 96% rename from docs/types/index.d.ts rename to index.d.ts index ff05073..395f8cd 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..49d1679 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; +//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map new file mode 100644 index 0000000..351fc9e --- /dev/null +++ b/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index d1ca0e9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 9cf458e..0000000 --- a/lib/main.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - if ( index < 0 ) { - index += x.length; - if ( index < 0 ) { - throw new RangeError( format( 'null2M', index ) ); - } - } else if ( index >= x.length ) { - throw new RangeError( format( 'null2M', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index dbf6273..83094f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.0.0", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,47 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-resolve-setter": "^0.2.1", - "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1", - "@stdlib/types": "^0.3.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.1", - "@stdlib/array-base-ones": "^0.2.1", - "@stdlib/array-complex128": "^0.2.1", - "@stdlib/array-float64": "^0.2.1", - "@stdlib/array-int32": "^0.2.1", - "@stdlib/assert-is-array": "^0.2.1", - "@stdlib/assert-is-complex128array": "^0.2.1", - "@stdlib/assert-is-float64array": "^0.2.1", - "@stdlib/assert-is-int32array": "^0.2.1", - "@stdlib/assert-is-same-complex128array": "^0.2.1", - "@stdlib/complex-float64": "^0.2.1", - "@stdlib/math-base-special-pow": "^0.2.1", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -89,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..e047fa2 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 0d21a47..0000000 --- a/test/test.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 8d4799fb09cb1927719892aa3d339d5570f5142a Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 7 Apr 2024 01:46:56 +0000 Subject: [PATCH 03/84] Update README.md for ESM bundle v0.0.0 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d4028be..72f7020 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ limitations under the License. ## Usage ```javascript -import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.0.0-esm/index.mjs'; ``` #### arrayWith( x, index, value ) @@ -115,7 +115,7 @@ The function accepts the following arguments: - - - - From c86ec3df3223d8bea63b31a9ab322e7aef1fb270 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 7 Apr 2024 05:47:30 +0000 Subject: [PATCH 07/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 49 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 797 ---- .github/workflows/publish.yml | 249 -- .github/workflows/test.yml | 100 - .github/workflows/test_bundles.yml | 189 - .github/workflows/test_coverage.yml | 132 - .github/workflows/test_install.yml | 86 - .gitignore | 188 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 5 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 37 +- SECURITY.md | 5 - benchmark/benchmark.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 5 - dist/index.js.map | 7 - docs/repl.txt | 47 - docs/types/test.ts | 68 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/index.js | 45 - lib/main.js | 97 - package.json | 69 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.js | 401 -- 42 files changed, 4864 insertions(+), 4159 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (96%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 10a16e6..0000000 --- a/.gitattributes +++ /dev/null @@ -1,49 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/deps/** linguist-vendored=false -/lib/node_modules/** linguist-vendored=false linguist-generated=false -test/fixtures/** linguist-vendored=false -tools/** linguist-vendored=false - -# Override what is considered "documentation" by GitHub's linguist: -examples/** linguist-documentation=false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index ec90164..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,797 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - steps: ${{ toJson(steps) }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -178,7 +169,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 4a85280..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import withArray from '../docs/types/index'; -export = withArray; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 38c082d..0000000 --- a/dist/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";var s=function(t,r){return function(){return r||t((r={exports:{}}).exports,r),r.exports}};var i=s(function(m,o){ -var f=require('@stdlib/array-base-slice/dist'),h=require('@stdlib/array-base-resolve-setter/dist'),n=require('@stdlib/error-tools-fmtprodmsg/dist');function g(t,r){return typeof t[r]=="function"}function l(t,r,u){var e,a;if(g(t,"with"))return t.with(r,u);if(r<0){if(r+=t.length,r<0)throw new RangeError(n('1sT2M',r))}else if(r>=t.length)throw new RangeError(n('1sT2M',r));return e=f(t,0,t.length),a=h(e),a(e,r,u),e}o.exports=l -});var v=i();module.exports=v; -/** @license Apache-2.0 */ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index c306254..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../lib/main.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar slice = require( '@stdlib/array-base-slice' );\nvar resolveSetter = require( '@stdlib/array-base-resolve-setter' );\nvar format = require( '@stdlib/string-format' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAE7B,GAAKD,EAAQ,GAEZ,GADAA,GAASD,EAAE,OACNC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,UAE/FA,GAASD,EAAE,OACtB,MAAM,IAAI,WAAYL,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMV,EAAOO,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMV,EAAeS,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAX,EAAO,QAAUO,ICzDjB,IAAIM,EAAO,IAKX,OAAO,QAAUA", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 730214e..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,47 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 03e3700..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 96% rename from docs/types/index.d.ts rename to index.d.ts index ff05073..395f8cd 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..49d1679 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; +//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map new file mode 100644 index 0000000..3ee2733 --- /dev/null +++ b/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index d1ca0e9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 2bead24..0000000 --- a/lib/main.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - if ( index < 0 ) { - index += x.length; - if ( index < 0 ) { - throw new RangeError( format( 'null2M', index ) ); - } - } else if ( index >= x.length ) { - throw new RangeError( format( 'null2M', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index dbf6273..83094f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.0.0", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,47 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-resolve-setter": "^0.2.1", - "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1", - "@stdlib/types": "^0.3.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.1", - "@stdlib/array-base-ones": "^0.2.1", - "@stdlib/array-complex128": "^0.2.1", - "@stdlib/array-float64": "^0.2.1", - "@stdlib/array-int32": "^0.2.1", - "@stdlib/assert-is-array": "^0.2.1", - "@stdlib/assert-is-complex128array": "^0.2.1", - "@stdlib/assert-is-float64array": "^0.2.1", - "@stdlib/assert-is-int32array": "^0.2.1", - "@stdlib/assert-is-same-complex128array": "^0.2.1", - "@stdlib/complex-float64": "^0.2.1", - "@stdlib/math-base-special-pow": "^0.2.1", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -89,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..4dd7725 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 0d21a47..0000000 --- a/test/test.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From f67777c771019b988b3b4f51dd7c1e02cef6bfc1 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Fri, 12 Apr 2024 04:37:30 +0000 Subject: [PATCH 08/84] Transform error messages --- lib/main.js | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/main.js b/lib/main.js index dd8eb71..2bead24 100644 --- a/lib/main.js +++ b/lib/main.js @@ -22,7 +22,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // @@ -80,10 +80,10 @@ function arrayWith( x, index, value ) { if ( index < 0 ) { index += x.length; if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } } else if ( index >= x.length ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } out = slice( x, 0, x.length ); set = resolveSetter( out ); diff --git a/package.json b/package.json index aac61ec..dbf6273 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { "@stdlib/array-base-resolve-setter": "^0.2.1", "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/string-format": "^0.2.1", + "@stdlib/error-tools-fmtprodmsg": "^0.2.1", "@stdlib/types": "^0.3.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.1" }, From 475d4dae785b68f61771f9bd4c963eaec87d0faf Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Fri, 12 Apr 2024 10:19:17 +0000 Subject: [PATCH 09/84] Remove files --- index.d.ts | 88 - index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 4935 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 395f8cd..0000000 --- a/index.d.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var Complex128Array = require( '@stdlib/array-complex128' ); -* var Complex128 = require( '@stdlib/complex-float64' ); -* -* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); -* -* var out = withArray( x, 0, new Complex128( 7.0, 8.0 ) ); -* // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] -*/ -declare function withArray( x: T, index: number, value: ComplexLike ): T; - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); -* -* var out = withArray( x, 0, 5.0 ); -* // returns [ 5.0, 2.0, 3.0 ] -*/ -declare function withArray( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = withArray( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = withArray( x, 2, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -*/ -declare function withArray( x: Collection, index: number, value: T ): Array; - - -// EXPORTS // - -export = withArray; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 49d1679..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; -//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map deleted file mode 100644 index 3ee2733..0000000 --- a/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 4dd7725..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From a903335f2550c5d3c3fe73971025dbe68474f700 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Fri, 12 Apr 2024 10:19:37 +0000 Subject: [PATCH 10/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 49 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 797 ---- .github/workflows/publish.yml | 249 -- .github/workflows/test.yml | 100 - .github/workflows/test_bundles.yml | 189 - .github/workflows/test_coverage.yml | 134 - .github/workflows/test_install.yml | 86 - .gitignore | 188 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 5 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 37 +- SECURITY.md | 5 - benchmark/benchmark.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 5 - dist/index.js.map | 7 - docs/repl.txt | 47 - docs/types/test.ts | 68 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/index.js | 45 - lib/main.js | 97 - package.json | 69 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.js | 401 -- 42 files changed, 4864 insertions(+), 4161 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (96%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 10a16e6..0000000 --- a/.gitattributes +++ /dev/null @@ -1,49 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/deps/** linguist-vendored=false -/lib/node_modules/** linguist-vendored=false linguist-generated=false -test/fixtures/** linguist-vendored=false -tools/** linguist-vendored=false - -# Override what is considered "documentation" by GitHub's linguist: -examples/** linguist-documentation=false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index ec90164..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,797 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - steps: ${{ toJson(steps) }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -178,7 +169,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 4a85280..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import withArray from '../docs/types/index'; -export = withArray; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 38c082d..0000000 --- a/dist/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";var s=function(t,r){return function(){return r||t((r={exports:{}}).exports,r),r.exports}};var i=s(function(m,o){ -var f=require('@stdlib/array-base-slice/dist'),h=require('@stdlib/array-base-resolve-setter/dist'),n=require('@stdlib/error-tools-fmtprodmsg/dist');function g(t,r){return typeof t[r]=="function"}function l(t,r,u){var e,a;if(g(t,"with"))return t.with(r,u);if(r<0){if(r+=t.length,r<0)throw new RangeError(n('1sT2M',r))}else if(r>=t.length)throw new RangeError(n('1sT2M',r));return e=f(t,0,t.length),a=h(e),a(e,r,u),e}o.exports=l -});var v=i();module.exports=v; -/** @license Apache-2.0 */ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index c306254..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../lib/main.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar slice = require( '@stdlib/array-base-slice' );\nvar resolveSetter = require( '@stdlib/array-base-resolve-setter' );\nvar format = require( '@stdlib/string-format' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAE7B,GAAKD,EAAQ,GAEZ,GADAA,GAASD,EAAE,OACNC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,UAE/FA,GAASD,EAAE,OACtB,MAAM,IAAI,WAAYL,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMV,EAAOO,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMV,EAAeS,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAX,EAAO,QAAUO,ICzDjB,IAAIM,EAAO,IAKX,OAAO,QAAUA", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 730214e..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,47 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 03e3700..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 96% rename from docs/types/index.d.ts rename to index.d.ts index ff05073..395f8cd 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..49d1679 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; +//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map new file mode 100644 index 0000000..3ee2733 --- /dev/null +++ b/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index d1ca0e9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 2bead24..0000000 --- a/lib/main.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - if ( index < 0 ) { - index += x.length; - if ( index < 0 ) { - throw new RangeError( format( 'null2M', index ) ); - } - } else if ( index >= x.length ) { - throw new RangeError( format( 'null2M', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index dbf6273..83094f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.0.0", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,47 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-resolve-setter": "^0.2.1", - "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1", - "@stdlib/types": "^0.3.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.1", - "@stdlib/array-base-ones": "^0.2.1", - "@stdlib/array-complex128": "^0.2.1", - "@stdlib/array-float64": "^0.2.1", - "@stdlib/array-int32": "^0.2.1", - "@stdlib/assert-is-array": "^0.2.1", - "@stdlib/assert-is-complex128array": "^0.2.1", - "@stdlib/assert-is-float64array": "^0.2.1", - "@stdlib/assert-is-int32array": "^0.2.1", - "@stdlib/assert-is-same-complex128array": "^0.2.1", - "@stdlib/complex-float64": "^0.2.1", - "@stdlib/math-base-special-pow": "^0.2.1", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -89,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..4dd7725 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 0d21a47..0000000 --- a/test/test.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 48b321b4a1125d0704e48c58fda35edbb64969c2 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 13 Apr 2024 01:54:23 +0000 Subject: [PATCH 11/84] Transform error messages --- lib/main.js | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/main.js b/lib/main.js index dd8eb71..2bead24 100644 --- a/lib/main.js +++ b/lib/main.js @@ -22,7 +22,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // @@ -80,10 +80,10 @@ function arrayWith( x, index, value ) { if ( index < 0 ) { index += x.length; if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } } else if ( index >= x.length ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } out = slice( x, 0, x.length ); set = resolveSetter( out ); diff --git a/package.json b/package.json index 2f20551..abbb0c0 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { "@stdlib/array-base-resolve-setter": "^0.2.1", "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/string-format": "^0.2.1", + "@stdlib/error-tools-fmtprodmsg": "^0.2.1", "@stdlib/types": "^0.3.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.1" }, From fce39aa56fa5b4ae272c6d5b027b5e8c06a66b98 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 13 Apr 2024 02:20:17 +0000 Subject: [PATCH 12/84] Remove files --- index.d.ts | 88 - index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 4935 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 395f8cd..0000000 --- a/index.d.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var Complex128Array = require( '@stdlib/array-complex128' ); -* var Complex128 = require( '@stdlib/complex-float64' ); -* -* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); -* -* var out = withArray( x, 0, new Complex128( 7.0, 8.0 ) ); -* // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] -*/ -declare function withArray( x: T, index: number, value: ComplexLike ): T; - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); -* -* var out = withArray( x, 0, 5.0 ); -* // returns [ 5.0, 2.0, 3.0 ] -*/ -declare function withArray( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = withArray( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = withArray( x, 2, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -*/ -declare function withArray( x: Collection, index: number, value: T ): Array; - - -// EXPORTS // - -export = withArray; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 49d1679..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; -//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map deleted file mode 100644 index 3ee2733..0000000 --- a/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 4dd7725..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 12a493cdaac44359d231137ab72779bf092d93bf Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 13 Apr 2024 02:20:43 +0000 Subject: [PATCH 13/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 49 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 ---- .github/workflows/publish.yml | 248 -- .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .gitignore | 188 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 5 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 37 +- SECURITY.md | 5 - benchmark/benchmark.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 5 - dist/index.js.map | 7 - docs/repl.txt | 47 - docs/types/test.ts | 68 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/index.js | 45 - lib/main.js | 97 - package.json | 69 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.js | 401 -- 42 files changed, 4864 insertions(+), 4151 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (96%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 10a16e6..0000000 --- a/.gitattributes +++ /dev/null @@ -1,49 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/deps/** linguist-vendored=false -/lib/node_modules/** linguist-vendored=false linguist-generated=false -test/fixtures/** linguist-vendored=false -tools/** linguist-vendored=false - -# Override what is considered "documentation" by GitHub's linguist: -examples/** linguist-documentation=false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f92a6c5..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -178,7 +169,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 4a85280..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import withArray from '../docs/types/index'; -export = withArray; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 38c082d..0000000 --- a/dist/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";var s=function(t,r){return function(){return r||t((r={exports:{}}).exports,r),r.exports}};var i=s(function(m,o){ -var f=require('@stdlib/array-base-slice/dist'),h=require('@stdlib/array-base-resolve-setter/dist'),n=require('@stdlib/error-tools-fmtprodmsg/dist');function g(t,r){return typeof t[r]=="function"}function l(t,r,u){var e,a;if(g(t,"with"))return t.with(r,u);if(r<0){if(r+=t.length,r<0)throw new RangeError(n('1sT2M',r))}else if(r>=t.length)throw new RangeError(n('1sT2M',r));return e=f(t,0,t.length),a=h(e),a(e,r,u),e}o.exports=l -});var v=i();module.exports=v; -/** @license Apache-2.0 */ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index c306254..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../lib/main.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar slice = require( '@stdlib/array-base-slice' );\nvar resolveSetter = require( '@stdlib/array-base-resolve-setter' );\nvar format = require( '@stdlib/string-format' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAE7B,GAAKD,EAAQ,GAEZ,GADAA,GAASD,EAAE,OACNC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,UAE/FA,GAASD,EAAE,OACtB,MAAM,IAAI,WAAYL,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMV,EAAOO,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMV,EAAeS,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAX,EAAO,QAAUO,ICzDjB,IAAIM,EAAO,IAKX,OAAO,QAAUA", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 730214e..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,47 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 03e3700..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 96% rename from docs/types/index.d.ts rename to index.d.ts index ff05073..395f8cd 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..49d1679 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; +//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map new file mode 100644 index 0000000..3ee2733 --- /dev/null +++ b/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index d1ca0e9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 2bead24..0000000 --- a/lib/main.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - if ( index < 0 ) { - index += x.length; - if ( index < 0 ) { - throw new RangeError( format( 'null2M', index ) ); - } - } else if ( index >= x.length ) { - throw new RangeError( format( 'null2M', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index abbb0c0..4c670fe 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.0", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,47 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-resolve-setter": "^0.2.1", - "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1", - "@stdlib/types": "^0.3.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.1", - "@stdlib/array-base-ones": "^0.2.1", - "@stdlib/array-complex128": "^0.2.1", - "@stdlib/array-float64": "^0.2.1", - "@stdlib/array-int32": "^0.2.1", - "@stdlib/assert-is-array": "^0.2.1", - "@stdlib/assert-is-complex128array": "^0.2.1", - "@stdlib/assert-is-float64array": "^0.2.1", - "@stdlib/assert-is-int32array": "^0.2.1", - "@stdlib/assert-is-same-complex128array": "^0.2.1", - "@stdlib/complex-float64": "^0.2.1", - "@stdlib/math-base-special-pow": "^0.2.1", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -89,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..4dd7725 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 0d21a47..0000000 --- a/test/test.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 8cb5fadbd9ebfc51d8f5a78d6d4617499096fdca Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 13 Apr 2024 02:24:52 +0000 Subject: [PATCH 14/84] Update README.md for ESM bundle v0.1.0 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 971a2ce..8a7a3b7 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ limitations under the License. ## Usage ```javascript -import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.1.0-esm/index.mjs'; ``` #### arrayWith( x, index, value ) @@ -115,7 +115,7 @@ The function accepts the following arguments: - - - - From bddd6516c033004d8a0a657253a69281a5265b0b Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 25 May 2024 08:58:44 +0000 Subject: [PATCH 18/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 ---- .github/workflows/publish.yml | 248 -- .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .gitignore | 188 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 5 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 37 +- SECURITY.md | 5 - benchmark/benchmark.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 5 - dist/index.js.map | 7 - docs/repl.txt | 47 - docs/types/test.ts | 68 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/index.js | 45 - lib/main.js | 97 - package.json | 69 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.js | 401 -- 42 files changed, 4864 insertions(+), 4168 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (96%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f92a6c5..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure git: - - name: 'Configure git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -178,7 +169,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 4a85280..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import withArray from '../docs/types/index'; -export = withArray; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 38c082d..0000000 --- a/dist/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";var s=function(t,r){return function(){return r||t((r={exports:{}}).exports,r),r.exports}};var i=s(function(m,o){ -var f=require('@stdlib/array-base-slice/dist'),h=require('@stdlib/array-base-resolve-setter/dist'),n=require('@stdlib/error-tools-fmtprodmsg/dist');function g(t,r){return typeof t[r]=="function"}function l(t,r,u){var e,a;if(g(t,"with"))return t.with(r,u);if(r<0){if(r+=t.length,r<0)throw new RangeError(n('1sT2M',r))}else if(r>=t.length)throw new RangeError(n('1sT2M',r));return e=f(t,0,t.length),a=h(e),a(e,r,u),e}o.exports=l -});var v=i();module.exports=v; -/** @license Apache-2.0 */ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index c306254..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../lib/main.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar slice = require( '@stdlib/array-base-slice' );\nvar resolveSetter = require( '@stdlib/array-base-resolve-setter' );\nvar format = require( '@stdlib/string-format' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAE7B,GAAKD,EAAQ,GAEZ,GADAA,GAASD,EAAE,OACNC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,UAE/FA,GAASD,EAAE,OACtB,MAAM,IAAI,WAAYL,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMV,EAAOO,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMV,EAAeS,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAX,EAAO,QAAUO,ICzDjB,IAAIM,EAAO,IAKX,OAAO,QAAUA", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 730214e..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,47 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 03e3700..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 96% rename from docs/types/index.d.ts rename to index.d.ts index 0fbb2a0..6a4542a 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..49d1679 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; +//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map new file mode 100644 index 0000000..3ee2733 --- /dev/null +++ b/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index d1ca0e9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 2bead24..0000000 --- a/lib/main.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - if ( index < 0 ) { - index += x.length; - if ( index < 0 ) { - throw new RangeError( format( 'null2M', index ) ); - } - } else if ( index >= x.length ) { - throw new RangeError( format( 'null2M', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 218244d..4c670fe 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.0", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,47 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-resolve-setter": "^0.2.1", - "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1", - "@stdlib/types": "^0.3.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.1" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.1", - "@stdlib/array-base-ones": "^0.2.1", - "@stdlib/array-complex128": "^0.2.1", - "@stdlib/array-float64": "^0.2.1", - "@stdlib/array-int32": "^0.2.1", - "@stdlib/assert-is-array": "^0.2.1", - "@stdlib/assert-is-complex128array": "^0.2.1", - "@stdlib/assert-is-float64array": "^0.2.1", - "@stdlib/assert-is-int32array": "^0.2.1", - "@stdlib/assert-is-same-complex128array": "^0.2.1", - "@stdlib/complex-float64-ctor": "github:stdlib-js/complex-float64-ctor#main", - "@stdlib/math-base-special-pow": "^0.2.1", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -89,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..4dd7725 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 7b0e3b603cf91c5d20822f265785ac3c2be08098 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 29 Jul 2024 11:53:06 +0000 Subject: [PATCH 19/84] Transform error messages --- lib/main.js | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/main.js b/lib/main.js index dd8eb71..2bead24 100644 --- a/lib/main.js +++ b/lib/main.js @@ -22,7 +22,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // @@ -80,10 +80,10 @@ function arrayWith( x, index, value ) { if ( index < 0 ) { index += x.length; if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } } else if ( index >= x.length ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) ); + throw new RangeError( format( 'null2M', index ) ); } out = slice( x, 0, x.length ); set = resolveSetter( out ); diff --git a/package.json b/package.json index 29c0c36..f347721 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { "@stdlib/array-base-resolve-setter": "^0.2.2", "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.3.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" }, From f25184c88ff1a53df9614c9fcb414f8181792aca Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 29 Jul 2024 11:54:28 +0000 Subject: [PATCH 20/84] Remove files --- index.d.ts | 88 - index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 4935 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 6a4542a..0000000 --- a/index.d.ts +++ /dev/null @@ -1,88 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var Complex128Array = require( '@stdlib/array-complex128' ); -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* -* var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); -* -* var out = withArray( x, 0, new Complex128( 7.0, 8.0 ) ); -* // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] -*/ -declare function withArray( x: T, index: number, value: ComplexLike ): T; - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); -* -* var out = withArray( x, 0, 5.0 ); -* // returns [ 5.0, 2.0, 3.0 ] -*/ -declare function withArray( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = withArray( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = withArray( x, 2, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -*/ -declare function withArray( x: Collection, index: number, value: T ): Array; - - -// EXPORTS // - -export = withArray; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 49d1679..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.1-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; -//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map deleted file mode 100644 index 3ee2733..0000000 --- a/index.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 4dd7725..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From ad46737bba95e69dec1a5176070ec7f92f9af02e Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 29 Jul 2024 11:54:48 +0000 Subject: [PATCH 21/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 ---- .github/workflows/publish.yml | 252 -- .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .gitignore | 190 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 99 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 37 +- SECURITY.md | 5 - benchmark/benchmark.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 5 - dist/index.js.map | 7 - docs/repl.txt | 47 - docs/types/test.ts | 68 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/index.js | 45 - lib/main.js | 97 - package.json | 69 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.js | 401 -- 42 files changed, 4864 insertions(+), 4268 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (96%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -178,7 +169,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.js b/benchmark/benchmark.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 4a85280..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import withArray from '../docs/types/index'; -export = withArray; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 38c082d..0000000 --- a/dist/index.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict";var s=function(t,r){return function(){return r||t((r={exports:{}}).exports,r),r.exports}};var i=s(function(m,o){ -var f=require('@stdlib/array-base-slice/dist'),h=require('@stdlib/array-base-resolve-setter/dist'),n=require('@stdlib/error-tools-fmtprodmsg/dist');function g(t,r){return typeof t[r]=="function"}function l(t,r,u){var e,a;if(g(t,"with"))return t.with(r,u);if(r<0){if(r+=t.length,r<0)throw new RangeError(n('1sT2M',r))}else if(r>=t.length)throw new RangeError(n('1sT2M',r));return e=f(t,0,t.length),a=h(e),a(e,r,u),e}o.exports=l -});var v=i();module.exports=v; -/** @license Apache-2.0 */ -//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index c306254..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../lib/main.js", "../lib/index.js"], - "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar slice = require( '@stdlib/array-base-slice' );\nvar resolveSetter = require( '@stdlib/array-base-resolve-setter' );\nvar format = require( '@stdlib/string-format' );\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%u`.', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = arrayWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAE7B,GAAKD,EAAQ,GAEZ,GADAA,GAASD,EAAE,OACNC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,UAE/FA,GAASD,EAAE,OACtB,MAAM,IAAI,WAAYL,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMV,EAAOO,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMV,EAAeS,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAX,EAAO,QAAUO,ICzDjB,IAAIM,EAAO,IAKX,OAAO,QAAUA", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "main"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 730214e..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,47 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 03e3700..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,68 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 96% rename from docs/types/index.d.ts rename to index.d.ts index 0fbb2a0..6a4542a 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..abf54ec --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.1-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";function s(s,n,i){var o;if("function"==typeof s["with"])return s.with(n,i);if(n<0){if((n+=s.length)<0)throw new RangeError(t("null2M",n))}else if(n>=s.length)throw new RangeError(t("null2M",n));return o=e(s,0,s.length),r(o)(o,n,i),o}export{s as default}; +//# sourceMappingURL=index.mjs.map diff --git a/index.mjs.map b/index.mjs.map new file mode 100644 index 0000000..3ee2733 --- /dev/null +++ b/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":["../lib/main.js"],"sourcesContent":["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nimport slice from '@stdlib/array-base-slice';\nimport resolveSetter from '@stdlib/array-base-resolve-setter';\nimport format from '@stdlib/error-tools-fmtprodmsg';\n\n\n// FUNCTIONS //\n\n/**\n* Tests whether an object has a specified method.\n*\n* @private\n* @param {Object} obj - input object\n* @param {string} method - method name\n* @returns {boolean} boolean indicating whether an object has a specified method\n*\n* @example\n* var bool = hasMethod( [], 'map' );\n* // returns true\n*\n* @example\n* var bool = hasMethod( [], 'beep' );\n* // returns false\n*/\nfunction hasMethod( obj, method ) {\n\treturn ( typeof obj[ method ] === 'function' );\n}\n\n\n// MAIN //\n\n/**\n* Returns a new array with the element at the specified index replaced with a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, 1, 6 );\n* // returns [ 1, 6, 3, 4 ]\n*\n* v = arrayWith( x, -2, 7 );\n* // returns [ 1, 2, 7, 4 ]\n*/\nfunction arrayWith( x, index, value ) {\n\tvar out;\n\tvar set;\n\tif ( hasMethod( x, 'with' ) ) {\n\t\treturn x.with( index, value );\n\t}\n\tif ( index < 0 ) {\n\t\tindex += x.length;\n\t\tif ( index < 0 ) {\n\t\t\tthrow new RangeError( format( 'null2M', index ) );\n\t\t}\n\t} else if ( index >= x.length ) {\n\t\tthrow new RangeError( format( 'null2M', index ) );\n\t}\n\tout = slice( x, 0, x.length );\n\tset = resolveSetter( out );\n\tset( out, index, value );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default arrayWith;\n"],"names":["arrayWith","x","index","value","out","with","length","RangeError","format","slice","resolveSetter","set"],"mappings":";;gSAyEA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAEvB,GAAKD,EAAQ,GAEZ,IADAA,GAASD,EAAEK,QACE,EACZ,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,SAEnC,GAAKA,GAASD,EAAEK,OACtB,MAAM,IAAIC,WAAYC,EAAQ,SAAUN,IAKzC,OAHAE,EAAMK,EAAOR,EAAG,EAAGA,EAAEK,QACfI,EAAeN,EACrBO,CAAKP,EAAKF,EAAOC,GACVC,CACR"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index d1ca0e9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,45 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -*/ - -// MODULES // - -var main = require( './main.js' ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 2bead24..0000000 --- a/lib/main.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - if ( index < 0 ) { - index += x.length; - if ( index < 0 ) { - throw new RangeError( format( 'null2M', index ) ); - } - } else if ( index >= x.length ) { - throw new RangeError( format( 'null2M', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f347721..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,47 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.1", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.3.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.1", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.1", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -89,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..0b97943 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 59782b033998a91f32210a5bb36439384c16e338 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 29 Jul 2024 11:55:06 +0000 Subject: [PATCH 22/84] Update README.md for ESM bundle v0.1.1 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ca43dfe..1a7773b 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ limitations under the License. ## Usage ```javascript -import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.1.1-esm/index.mjs'; ``` #### arrayWith( x, index, value ) @@ -115,7 +115,7 @@ The function accepts the following arguments: - - - - From 880044875ca50d64910a4edee74be3a18b4c6569 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 17 Aug 2024 03:17:58 +0000 Subject: [PATCH 26/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 ---- .github/workflows/publish.yml | 252 -- .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .gitignore | 190 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 144 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 225 - lib/index.js | 64 - lib/main.js | 94 - package.json | 84 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 457 -- test/test.js | 41 - test/test.main.js | 401 -- 46 files changed, 4870 insertions(+), 5311 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index ecee574..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z("invalid argument. Index argument is out-of-bounds. Value: `%d`.",r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAyBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC7KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..0ed90ee --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index d3fc8aa..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,225 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f4b1908..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,62 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.3.2", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -104,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..9d604d4 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index 9b26764..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,457 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From d631ea8fe44673c496ec3257adeb6eec4c6a52ae Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 17 Aug 2024 09:19:13 +0000 Subject: [PATCH 27/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 10726a2..d3fc8aa 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index 0a0b810..7fb497a 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.0", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From 1695d9db74bc910a3f696a28412454f7f425e768 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 17 Aug 2024 09:21:49 +0000 Subject: [PATCH 28/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 0ed90ee..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 9d604d4..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From db3b7f50da21ee7d752deca0750623d6c186c8c2 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 17 Aug 2024 09:22:36 +0000 Subject: [PATCH 29/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 ---- .github/workflows/publish.yml | 252 -- .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .gitignore | 190 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 146 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 --- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 225 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 +++++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 --- test/test.js | 41 - test/test.main.js | 401 -- 46 files changed, 4870 insertions(+), 5349 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index ecee574..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z("invalid argument. Index argument is out-of-bounds. Value: `%d`.",r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAyBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC7KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..0ed90ee --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index d3fc8aa..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,225 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 7fb497a..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.0", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-booleanarray": "^0.1.0", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..9d604d4 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index 7a58309..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isSameBooleanArray = require( '@stdlib/assert-is-same-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 611f7219c6b303b8e2f4a2963ed267c98ed31df6 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 16 Dec 2024 01:45:45 +0000 Subject: [PATCH 30/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 10726a2..d3fc8aa 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index a1db8b3..6943c23 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From 5d034ae429ae2f85f780c23b16afbf4df616eee5 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 16 Dec 2024 01:47:22 +0000 Subject: [PATCH 31/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 0ed90ee..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 9d604d4..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 1e9a0c8284c40f54d1b3153146537c7db67c3f68 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 16 Dec 2024 01:47:44 +0000 Subject: [PATCH 32/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 66 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 190 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 146 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 225 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5455 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 60d743f..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = false - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index b6d1354..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2024-12-16T01:45:06.102Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAyBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC7KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..0ed90ee --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index d3fc8aa..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,225 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 6943c23..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-booleanarray": "^0.1.0", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..9d604d4 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index 7a58309..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isSameBooleanArray = require( '@stdlib/assert-is-same-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From ff27cabf7b7b52d3ff02629cd7d88c99af17ce84 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 30 Dec 2024 02:01:56 +0000 Subject: [PATCH 33/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 10726a2..d3fc8aa 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index a1db8b3..6943c23 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From e8069b750f233c87af3fea9478f68ca326f48dfc Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 30 Dec 2024 02:24:45 +0000 Subject: [PATCH 34/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 0ed90ee..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 9d604d4..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From b81003ccc99e4ff8f6dabee02ed3040b90e38747 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 30 Dec 2024 02:25:11 +0000 Subject: [PATCH 35/84] Auto-generated commit --- .editorconfig | 181 - .eslintrc.js | 1 - .gitattributes | 66 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 190 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 146 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 225 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5455 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 0779e8a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,181 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 -insert_final_newline = false - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 4c0e7a7..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2024-12-30T01:55:07.318Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 016ec69..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAyBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC7KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..0ed90ee --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index d3fc8aa..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,225 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 6943c23..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-booleanarray": "^0.1.0", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..9d604d4 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index 7a58309..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isSameBooleanArray = require( '@stdlib/assert-is-same-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From fee9a8a0317020f27b5f393d770fec83ccd357b3 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 29 Apr 2025 02:57:34 +0000 Subject: [PATCH 36/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index a1db8b3..6943c23 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From 5bddda86b227600ef19dad32fa9b722341517aa9 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 29 Apr 2025 02:59:27 +0000 Subject: [PATCH 37/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index 0ed90ee..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2024 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAqHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IApHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAiGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CCjKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index 9d604d4..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From b696992fe29b322c8855d4d0acfc0ab7cfb215d0 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 29 Apr 2025 02:59:50 +0000 Subject: [PATCH 38/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 194 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 148 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5458 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..f9ae74f --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 6943c23..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-booleanarray": "^0.1.0", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..eb54a6e --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index 7a58309..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isSameBooleanArray = require( '@stdlib/assert-is-same-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 863a1f3c10a20f29af1ab0d16037635710b61280 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 19 May 2025 09:20:36 +0000 Subject: [PATCH 39/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index b2e8a61..0f711ac 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From df570cb0e9e04072f4d3e7c414e654cb589fcc2d Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 19 May 2025 09:20:53 +0000 Subject: [PATCH 40/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index f9ae74f..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index eb54a6e..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 486e5303072e9d516cce059a7583db8340794d51 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 19 May 2025 09:21:31 +0000 Subject: [PATCH 41/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 194 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 149 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5459 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..f9ae74f --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 0f711ac..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-equal-booleanarray": "github:stdlib-js/assert-is-equal-booleanarray#main", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..eb54a6e --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 8cd66c04375fa8576ab45cb5c0723a2b80c19a78 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 16 Jun 2025 00:30:56 +0000 Subject: [PATCH 42/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index b2e8a61..0f711ac 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From bb3107646e8fd1b1e00221defaaab9689fd69f24 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 16 Jun 2025 00:31:20 +0000 Subject: [PATCH 43/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index f9ae74f..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index eb54a6e..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 90edf95b250973dff291fc9806446d24c1e303fd Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 16 Jun 2025 00:31:58 +0000 Subject: [PATCH 44/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 194 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 149 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5460 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index b926b38..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2025-06-16T00:30:29.666Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..f9ae74f --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 0f711ac..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-equal-booleanarray": "github:stdlib-js/assert-is-equal-booleanarray#main", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..eb54a6e --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 7511db1afb723c7fd8739902bde15538b4a8b11d Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 30 Jun 2025 01:12:39 +0000 Subject: [PATCH 45/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index b2e8a61..0f711ac 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From 302922d2bab0809d4e69b698541e1d4751385d2a Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 30 Jun 2025 01:36:49 +0000 Subject: [PATCH 46/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index f9ae74f..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index eb54a6e..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From d87f3a8acdc72065d698526d45723ba69ec9cb91 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 30 Jun 2025 01:37:13 +0000 Subject: [PATCH 47/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 194 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 149 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5460 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 7e8367c..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2025-06-30T01:02:48.092Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index 01c614d..a46ebde 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..f9ae74f --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 0f711ac..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-equal-booleanarray": "github:stdlib-js/assert-is-equal-booleanarray#main", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..eb54a6e --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 7d9c0efa3e174896c70921f99c7ca582e71312b7 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 14 Sep 2025 02:35:37 +0000 Subject: [PATCH 48/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 5eaa172..5cd3d92 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index b2e8a61..0f711ac 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From 190b4f8638190d5142c3136649dd52383ae5fde2 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 14 Sep 2025 02:35:59 +0000 Subject: [PATCH 49/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index a46ebde..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out[ 0 ]; - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index f9ae74f..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index eb54a6e..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From eceda242bded8ac0dd367ca0cfb93606f17e163b Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 14 Sep 2025 02:37:00 +0000 Subject: [PATCH 50/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 199 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 150 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5465 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..f9ae74f --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 5cd3d92..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 0f711ac..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-equal-booleanarray": "github:stdlib-js/assert-is-equal-booleanarray#main", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..eb54a6e --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 376983ba6eaf791d041c694ff92e50f6a3df7526 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 15 Sep 2025 04:05:17 +0000 Subject: [PATCH 51/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index b2e8a61..0f711ac 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From e08272efe5b7bdef5c8e89bb856a847dd727a809 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 15 Sep 2025 04:05:37 +0000 Subject: [PATCH 52/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index f9ae74f..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index eb54a6e..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From bc1f0bf13c7cd65506848143728f4c97bb3e3d35 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 15 Sep 2025 04:05:58 +0000 Subject: [PATCH 53/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 794 --- .github/workflows/publish.yml | 252 - .github/workflows/test.yml | 99 - .github/workflows/test_bundles.yml | 186 - .github/workflows/test_coverage.yml | 133 - .github/workflows/test_install.yml | 85 - .github/workflows/test_published_package.yml | 105 - .gitignore | 199 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 152 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 86 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5467 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index f4575e9..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,794 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send status to Slack channel if job fails: - - name: 'Send status to Slack channel in case of failure' - # Pin action to full length commit SHA - uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 - with: - status: ${{ job.status }} - channel: '#npm-ci' - if: failure() - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..f9ae74f --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 0f711ac..a6bb824 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.1.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.0", - "@stdlib/array-complex128": "^0.3.0", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-equal-booleanarray": "github:stdlib-js/assert-is-equal-booleanarray#main", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.0.3", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", @@ -106,7 +25,6 @@ "setter", "copy" ], - "__stdlib__": {}, "funding": { "type": "opencollective", "url": "https://opencollective.com/stdlib" diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..c7aca07 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 7c6c8b0ecc845af2dd47ba0442e44387d7016800 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 31 Jan 2026 06:36:43 +0000 Subject: [PATCH 54/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index cca3ca4..ecae9ca 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.2", "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/string-format": "^0.2.2", + "@stdlib/error-tools-fmtprodmsg": "^0.2.2", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", "@stdlib/error-tools-fmtprodmsg": "^0.2.2" From c256355db1eedeefb9f4940376aba74d0ad2dd75 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 31 Jan 2026 07:37:52 +0000 Subject: [PATCH 55/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index f9ae74f..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2025 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index c7aca07..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 19f0f159c949588cbb0c98a8a9fadf309c68f6d5 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 31 Jan 2026 07:38:09 +0000 Subject: [PATCH 56/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 108 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 199 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 152 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5566 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..6139c8b --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.1-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.2.2-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.2-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.2-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.2-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.1-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.1-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.2-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.2-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.1-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.2-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.2-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.1-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.1-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index ecae9ca..250ab15 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.0", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.1", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.1", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.1", - "@stdlib/array-base-resolve-setter": "^0.2.2", - "@stdlib/array-base-slice": "^0.2.2", - "@stdlib/assert-is-complex-like": "^0.2.2", - "@stdlib/boolean-ctor": "^0.2.2", - "@stdlib/complex-float64-imag": "^0.1.1", - "@stdlib/complex-float64-real": "^0.1.1", - "@stdlib/ndarray-base-normalize-index": "^0.2.2", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.2", - "@stdlib/strided-base-reinterpret-complex": "^0.1.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.2", - "@stdlib/error-tools-fmtprodmsg": "^0.2.2" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.2", - "@stdlib/array-base-zeros": "^0.2.2", - "@stdlib/array-bool": "^0.1.1", - "@stdlib/array-complex128": "^0.3.1", - "@stdlib/array-float64": "^0.2.2", - "@stdlib/array-int32": "^0.2.2", - "@stdlib/array-zeros": "^0.2.2", - "@stdlib/assert-has-own-property": "^0.2.2", - "@stdlib/assert-is-array": "^0.2.2", - "@stdlib/assert-is-complex128array": "^0.2.2", - "@stdlib/assert-is-equal-booleanarray": "github:stdlib-js/assert-is-equal-booleanarray#main", - "@stdlib/assert-is-float64array": "^0.2.2", - "@stdlib/assert-is-int32array": "^0.2.2", - "@stdlib/assert-is-method": "^0.2.2", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.1.0", - "@stdlib/math-base-special-pow": "^0.3.0", - "@stdlib/random-array-discrete-uniform": "^0.2.1", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..c7aca07 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 507a880ad762e72a1df31605209335c5689a3f3a Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sat, 31 Jan 2026 08:07:28 +0000 Subject: [PATCH 57/84] Update README.md for ESM bundle v0.2.0 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e67bada..1ee909b 100644 --- a/README.md +++ b/README.md @@ -52,13 +52,13 @@ limitations under the License. ## Usage ```javascript -import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.2.0-esm/index.mjs'; ``` You can also import the following named exports from the package: ```javascript -import { assign } from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import { assign } from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.2.0-esm/index.mjs'; ``` #### arrayWith( x, index, value ) @@ -144,7 +144,7 @@ The function accepts the following arguments: - - - - From 62ae4d491e78e8ea3634c3479d9d05b25b726125 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 8 Feb 2026 23:56:24 +0000 Subject: [PATCH 61/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 199 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 162 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5569 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index 8d8ecfe..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.2", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.0", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.2", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From c1f1ec95540b34a91cedc17ef74b1f70bd3921e2 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 9 Feb 2026 00:23:45 +0000 Subject: [PATCH 62/84] Update README.md for ESM bundle v0.2.1 --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c304bd7..fadde2d 100644 --- a/README.md +++ b/README.md @@ -52,13 +52,13 @@ limitations under the License. ## Usage ```javascript -import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import arrayWith from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.2.1-esm/index.mjs'; ``` You can also import the following named exports from the package: ```javascript -import { assign } from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@esm/index.mjs'; +import { assign } from 'https://cdn.jsdelivr.net/gh/stdlib-js/array-base-with@v0.2.1-esm/index.mjs'; ``` #### arrayWith( x, index, value ) @@ -144,7 +144,7 @@ The function accepts the following arguments: - - - - From 53b98abd67597f2780ed00808df84d4c63fcfffa Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 2 Mar 2026 04:34:31 +0000 Subject: [PATCH 66/84] Auto-generated commit --- .editorconfig | 180 - .eslintrc.js | 1 - .gitattributes | 66 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 199 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 162 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5570 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index dab5d2a..0000000 --- a/.editorconfig +++ /dev/null @@ -1,180 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1c88e69..0000000 --- a/.gitattributes +++ /dev/null @@ -1,66 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 1a03e59..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-03-02T01:56:22.283Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f87cd0d..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From b8cfc63a43ee54a4a0a6211f26e4da456628c4c4 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Thu, 9 Apr 2026 03:31:42 +0000 Subject: [PATCH 67/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index d05b3a4..f87cd0d 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.3", "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/string-format": "^0.2.3", + "@stdlib/error-tools-fmtprodmsg": "^0.2.3", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", "@stdlib/error-tools-fmtprodmsg": "^0.2.3" From fa41c55494d6532367b070b19ac9e2f0784cb400 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Thu, 9 Apr 2026 03:50:37 +0000 Subject: [PATCH 68/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index fd36de7..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index cdd05f7..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From da0fd8344be5754d841730e3ec19ff3f5d9ce982 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Thu, 9 Apr 2026 03:50:54 +0000 Subject: [PATCH 69/84] Auto-generated commit --- .editorconfig | 189 - .eslintrc.js | 1 - .gitattributes | 68 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 199 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 162 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5581 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 6ced08a..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-04-09T03:25:20.922Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f87cd0d..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 8167a3670167cdbdd0d3c0ed1418652c10caed15 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 17 May 2026 03:33:55 +0000 Subject: [PATCH 70/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index d05b3a4..f87cd0d 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.3", "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/string-format": "^0.2.3", + "@stdlib/error-tools-fmtprodmsg": "^0.2.3", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", "@stdlib/error-tools-fmtprodmsg": "^0.2.3" From de265ed8062758ac5b9573101e3f603252f672e7 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 17 May 2026 03:46:10 +0000 Subject: [PATCH 71/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index fd36de7..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index cdd05f7..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 34bb9a093826dc8ac85b51ab03544527bad4b29d Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Sun, 17 May 2026 03:46:30 +0000 Subject: [PATCH 72/84] Auto-generated commit --- .editorconfig | 189 - .eslintrc.js | 1 - .gitattributes | 68 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 204 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 162 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 98 - benchmark/benchmark.length.js | 96 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5586 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index f31d0e5..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-05-17T03:29:57.614Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index f28621e..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,98 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':assign:dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index cd9a089..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,96 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( pkg+':dtype=generic,len='+len, f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f87cd0d..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 3650ad07380b9a9a6a815b74d4fefbd8f9d1fdff Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 18 May 2026 12:02:10 +0000 Subject: [PATCH 73/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index d05b3a4..f87cd0d 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.3", "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/string-format": "^0.2.3", + "@stdlib/error-tools-fmtprodmsg": "^0.2.3", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", "@stdlib/error-tools-fmtprodmsg": "^0.2.3" From 2f9520a76e90e71c37301687b45444fb72ef0456 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 18 May 2026 12:18:35 +0000 Subject: [PATCH 74/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index fd36de7..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index cdd05f7..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From fba2ff687433af5a0b30129f342c219c7cd30677 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Mon, 18 May 2026 12:18:52 +0000 Subject: [PATCH 75/84] Auto-generated commit --- .editorconfig | 189 - .eslintrc.js | 1 - .gitattributes | 68 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 204 - .npmignore | 229 - .npmrc | 31 - CHANGELOG.md | 197 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 99 - benchmark/benchmark.length.js | 97 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 47 files changed, 4870 insertions(+), 5622 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index d3d5cb5..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,99 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:assign:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index 8e24961..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f87cd0d..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From fe6d9113846a8f7bbcc1a046b858c2a8cf8236c8 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Wed, 20 May 2026 03:35:13 +0000 Subject: [PATCH 76/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index d05b3a4..f87cd0d 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.3", "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/string-format": "^0.2.3", + "@stdlib/error-tools-fmtprodmsg": "^0.2.3", "@stdlib/types": "^0.4.3", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", "@stdlib/error-tools-fmtprodmsg": "^0.2.3" From e65941524c32508a2bf45cba7b71b5a949c0c58b Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Wed, 20 May 2026 03:54:26 +0000 Subject: [PATCH 77/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index fd36de7..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index cdd05f7..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From a73738450c442a3eb2f6e36feb686543bb9ac496 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Wed, 20 May 2026 03:54:44 +0000 Subject: [PATCH 78/84] Auto-generated commit --- .editorconfig | 189 - .eslintrc.js | 1 - .gitattributes | 68 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 204 - .npmignore | 229 - .npmrc | 44 - CHANGELOG.md | 197 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 99 - benchmark/benchmark.length.js | 97 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5636 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 1cf03c6..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-05-20T03:29:29.466Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index d3d5cb5..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,99 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:assign:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index 8e24961..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index e13289c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){return r||a((r={exports:{}}).exports,r),r.exports}};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,o){var e,n;if(C(a,"with"))return a.with(r,o);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),n=j(e),n(e,r,o),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,o,e,n,v){var t,i;for(t=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "uGAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index f87cd0d..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.4.3", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From dbffbb65859f16f07c7d63d68d7cdc0af91d61d5 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 30 Jun 2026 03:41:05 +0000 Subject: [PATCH 79/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index 5fd1c65..a0cabb3 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.3", "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/string-format": "^0.2.3", + "@stdlib/error-tools-fmtprodmsg": "^0.2.3", "@stdlib/types": "^0.5.1", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", "@stdlib/error-tools-fmtprodmsg": "^0.2.3" From a5bd4250a87c8bed9744db2a01ea2779a8e25b73 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 30 Jun 2026 03:53:30 +0000 Subject: [PATCH 80/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index fd36de7..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index cdd05f7..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From c5c1e96afb85cded50daee50cf74391ed8ca0095 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 30 Jun 2026 03:53:55 +0000 Subject: [PATCH 81/84] Auto-generated commit --- .editorconfig | 189 - .eslintrc.js | 1 - .gitattributes | 68 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 204 - .npmignore | 229 - .npmrc | 44 - CHANGELOG.md | 197 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 99 - benchmark/benchmark.length.js | 97 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5636 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 9b6c0fb..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-06-30T03:33:22.760Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index d3d5cb5..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,99 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:assign:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index 8e24961..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 8a7c649..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){try{return r||a((r={exports:{}}).exports,r),r.exports}catch(n){throw (r=0, n)}};};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,n){var e,t;if(C(a,"with"))return a.with(r,n);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),t=j(e),t(e,r,n),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,n,e,t,v){var o,i;for(o=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "iIAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index a0cabb3..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.5.1", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); From 681f1ce4dd216e02ac588960003b243fd82a1759 Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 18 Aug 2026 03:33:16 +0000 Subject: [PATCH 82/84] Transform error messages --- lib/assign.js | 2 +- lib/main.js | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/assign.js b/lib/assign.js index 589515a..e163316 100644 --- a/lib/assign.js +++ b/lib/assign.js @@ -30,7 +30,7 @@ var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); var real = require( '@stdlib/complex-float64-real' ); var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/lib/main.js b/lib/main.js index 357e19b..65503b1 100644 --- a/lib/main.js +++ b/lib/main.js @@ -23,7 +23,7 @@ var slice = require( '@stdlib/array-base-slice' ); var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/string-format' ); +var format = require( '@stdlib/error-tools-fmtprodmsg' ); // FUNCTIONS // diff --git a/package.json b/package.json index 5fd1c65..a0cabb3 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@stdlib/ndarray-base-normalize-index": "^0.2.3", "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/string-format": "^0.2.3", + "@stdlib/error-tools-fmtprodmsg": "^0.2.3", "@stdlib/types": "^0.5.1", "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", "@stdlib/error-tools-fmtprodmsg": "^0.2.3" From cec235da05369ece34733647d640ea8451a583ab Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 18 Aug 2026 03:52:54 +0000 Subject: [PATCH 83/84] Remove files --- index.d.ts | 251 --- index.mjs | 4 - index.mjs.map | 1 - stats.html | 4842 ------------------------------------------------- 4 files changed, 5098 deletions(-) delete mode 100644 index.d.ts delete mode 100644 index.mjs delete mode 100644 index.mjs.map delete mode 100644 stats.html diff --git a/index.d.ts b/index.d.ts deleted file mode 100644 index 707701e..0000000 --- a/index.d.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -// TypeScript Version: 4.1 - -/// - -import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; -import { ComplexLike } from '@stdlib/types/complex'; - -/** -* Interface describing `arrayWith`. -*/ -interface ArrayWith { - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - */ - ( x: T, index: number, value: ComplexLike ): T; - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - * - * var out = arrayWith( x, 0, 5.0 ); - * // returns [ 5.0, 2.0, 3.0 ] - */ - ( x: T, index: number, value: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Returns a new array with the element at the specified index replaced with a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @returns output array - * - * @example - * var x = [ 1, 2, 3 ]; - * - * var out = arrayWith( x, 0, 7 ); - * // returns [ 7, 2, 3 ] - * - * @example - * var x = [ 1, 2, 3, 4, 5, 6 ]; - * - * var out = arrayWith( x, 1, 8 ); - * // returns [ 1, 8, 3, 4, 5, 6 ] - */ - ( x: Collection, index: number, value: T ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Float64Array = require( '@stdlib/array-float64' ); - * - * var x = [ 1, 2, 3, 4 ]; - * - * var out = new Float64Array( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: number, out: T, stride: number, offset: number ): T; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var Complex128Array = require( '@stdlib/array-complex128' ); - * var Complex128 = require( '@stdlib/complex-float64-ctor' ); - * - * var x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - * - * var out = new Complex128Array( x.length ); - * var arr = arrayWith.assign( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - * // returns [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: ComplexLike, out: T, stride: number, offset: number ): T; // eslint-disable-line @typescript-eslint/unified-signatures - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Array, stride: number, offset: number ): Array; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); - * - * var x = toAccessorArray( [ 1, 2, 3, 4 ] ); - * - * var out = toAccessorArray( [ 0, 0, 0, 0 ] ); - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * - * var v = out.get( 0 ); - * // returns 5 - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: AccessorArrayLike, stride: number, offset: number ): AccessorArrayLike; - - /** - * Copies elements from one array to another array and sets the element at the specified index to a provided value. - * - * @param x - input array - * @param index - index at which to set a provided value - * @param value - replacement value - * @param out - output array - * @param stride - output array stride - * @param offset - output array offset - * @returns output array - * - * @example - * var x = [ 1, 2, 3, 4 ]; - * - * var out = [ 0, 0, 0, 0 ]; - * var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); - * // returns [ 5, 2, 3, 4 ] - * - * var bool = ( arr === out ); - * // returns true - */ - assign( x: Collection | AccessorArrayLike, index: number, value: U, out: Collection, stride: number, offset: number ): Collection; -} - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param x - input array -* @param index - index at which to set a provided value -* @param value - replacement value -* @returns output array -* -* @example -* var x = [ 1, 2, 3 ]; -* -* var out = arrayWith( x, 0, 7 ); -* // returns [ 7, 2, 3 ] -* -* @example -* var x = [ 1, 2, 3, 4, 5, 6 ]; -* -* var out = arrayWith( x, 1, 8 ); -* // returns [ 1, 8, 3, 4, 5, 6 ] -* -* @example -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = new Float64Array( [ 0, 0, 0, 0 ] ); -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -declare var arrayWith: ArrayWith; - - -// EXPORTS // - -export = arrayWith; diff --git a/index.mjs b/index.mjs deleted file mode 100644 index fd36de7..0000000 --- a/index.mjs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 -/// -import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/stats.html b/stats.html deleted file mode 100644 index cdd05f7..0000000 --- a/stats.html +++ /dev/null @@ -1,4842 +0,0 @@ - - - - - - - - Rollup Visualizer - - - -
- - - - - From 72815fb5ae93587d8205b1a3e27bbba8c7495fab Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Tue, 18 Aug 2026 03:53:26 +0000 Subject: [PATCH 84/84] Auto-generated commit --- .editorconfig | 189 - .eslintrc.js | 1 - .gitattributes | 68 - .github/.keepalive | 1 - .github/PULL_REQUEST_TEMPLATE.md | 7 - .github/workflows/benchmark.yml | 64 - .github/workflows/cancel.yml | 57 - .github/workflows/close_pull_requests.yml | 54 - .github/workflows/examples.yml | 64 - .github/workflows/npm_downloads.yml | 112 - .github/workflows/productionize.yml | 821 --- .github/workflows/publish.yml | 261 - .github/workflows/test.yml | 101 - .github/workflows/test_bundles.yml | 213 - .github/workflows/test_coverage.yml | 142 - .github/workflows/test_install.yml | 94 - .github/workflows/test_published_package.yml | 115 - .gitignore | 205 - .npmignore | 229 - .npmrc | 44 - CHANGELOG.md | 197 - CITATION.cff | 30 - CODE_OF_CONDUCT.md | 3 - CONTRIBUTING.md | 3 - Makefile | 534 -- README.md | 43 +- SECURITY.md | 5 - benchmark/benchmark.assign.length.js | 99 - benchmark/benchmark.length.js | 97 - branches.md | 56 - dist/index.d.ts | 3 - dist/index.js | 7 - dist/index.js.map | 7 - docs/repl.txt | 89 - docs/types/test.ts | 170 - examples/index.js | 40 - docs/types/index.d.ts => index.d.ts | 2 +- index.mjs | 4 + index.mjs.map | 1 + lib/assign.js | 224 - lib/index.js | 64 - lib/main.js | 94 - package.json | 85 +- stats.html | 4842 ++++++++++++++++++ test/dist/test.js | 33 - test/test.assign.js | 491 -- test/test.js | 41 - test/test.main.js | 401 -- 48 files changed, 4870 insertions(+), 5637 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.js delete mode 100644 .gitattributes delete mode 100644 .github/.keepalive delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/benchmark.yml delete mode 100644 .github/workflows/cancel.yml delete mode 100644 .github/workflows/close_pull_requests.yml delete mode 100644 .github/workflows/examples.yml delete mode 100644 .github/workflows/npm_downloads.yml delete mode 100644 .github/workflows/productionize.yml delete mode 100644 .github/workflows/publish.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/test_bundles.yml delete mode 100644 .github/workflows/test_coverage.yml delete mode 100644 .github/workflows/test_install.yml delete mode 100644 .github/workflows/test_published_package.yml delete mode 100644 .gitignore delete mode 100644 .npmignore delete mode 100644 .npmrc delete mode 100644 CHANGELOG.md delete mode 100644 CITATION.cff delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 CONTRIBUTING.md delete mode 100644 Makefile delete mode 100644 SECURITY.md delete mode 100644 benchmark/benchmark.assign.length.js delete mode 100644 benchmark/benchmark.length.js delete mode 100644 branches.md delete mode 100644 dist/index.d.ts delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 docs/repl.txt delete mode 100644 docs/types/test.ts delete mode 100644 examples/index.js rename docs/types/index.d.ts => index.d.ts (98%) create mode 100644 index.mjs create mode 100644 index.mjs.map delete mode 100644 lib/assign.js delete mode 100644 lib/index.js delete mode 100644 lib/main.js create mode 100644 stats.html delete mode 100644 test/dist/test.js delete mode 100644 test/test.assign.js delete mode 100644 test/test.js delete mode 100644 test/test.main.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 80f3fca..0000000 --- a/.editorconfig +++ /dev/null @@ -1,189 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# EditorConfig configuration file (see ). - -# Indicate that this file is a root-level configuration file: -root = true - -# Set properties for all files: -[*] -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -# Set properties for JavaScript files: -[*.{js,js.txt}] -indent_style = tab - -# Set properties for JavaScript ES module files: -[*.{mjs,mjs.txt}] -indent_style = tab - -# Set properties for JavaScript CommonJS files: -[*.{cjs,cjs.txt}] -indent_style = tab - -# Set properties for JSON files: -[*.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `cli_opts.json` files: -[cli_opts.json] -indent_style = tab - -# Set properties for TypeScript files: -[*.ts] -indent_style = tab - -# Set properties for Python files: -[*.{py,py.txt}] -indent_style = space -indent_size = 4 - -# Set properties for Julia files: -[*.{jl,jl.txt}] -indent_style = tab - -# Set properties for R files: -[*.{R,R.txt}] -indent_style = tab - -# Set properties for C files: -[*.{c,c.txt}] -indent_style = tab - -# Set properties for C header files: -[*.{h,h.txt}] -indent_style = tab - -# Set properties for C++ files: -[*.{cpp,cpp.txt}] -indent_style = tab - -# Set properties for C++ header files: -[*.{hpp,hpp.txt}] -indent_style = tab - -# Set properties for Fortran files: -[*.{f,f.txt}] -indent_style = space -indent_size = 2 - -# Set properties for shell files: -[*.{sh,sh.txt}] -indent_style = tab - -# Set properties for AWK files: -[*.{awk,awk.txt}] -indent_style = tab - -# Set properties for HTML files: -[*.{html,html.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for XML files: -[*.{xml,xml.txt}] -indent_style = tab -tab_width = 2 - -# Set properties for CSS files: -[*.{css,css.txt}] -indent_style = tab - -# Set properties for Makefiles: -[Makefile] -indent_style = tab - -[*.{mk,mk.txt}] -indent_style = tab - -# Set properties for Markdown files: -[*.{md,md.txt}] -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true # Note: this disables using two spaces to force a hard line break, which is permitted in Markdown. As we don't typically follow that practice (TMK), we should be safe to automatically trim. - -# Set properties for `usage.txt` files: -[usage.txt] -indent_style = space -indent_size = 2 - -# Set properties for `repl.txt` files: -[repl.txt] -indent_style = space -indent_size = 4 - -# Set properties for `package.json` files: -[package.{json,json.txt}] -indent_style = space -indent_size = 2 - -# Set properties for `datapackage.json` files: -[datapackage.json] -indent_style = space -indent_size = 2 - -# Set properties for `manifest.json` files: -[manifest.json] -indent_style = space -indent_size = 2 - -# Set properties for `tsconfig.json` files: -[tsconfig.json] -indent_style = space -indent_size = 2 - -# Set properties for LaTeX files: -[*.{tex,tex.txt}] -indent_style = tab - -# Set properties for LaTeX Bibliography files: -[*.{bib,bib.txt}] -indent_style = tab - -# Set properties for YAML files: -[*.{yml,yml.txt}] -indent_style = space -indent_size = 2 - -# Ignore generated lock files for GitHub Agentic Workflows: -[*.lock.yml] -charset = unset -end_of_line = unset -indent_style = unset -indent_size = unset -trim_trailing_whitespace = unset -insert_final_newline = unset - -# Set properties for GYP files: -[binding.gyp] -indent_style = space -indent_size = 2 - -[*.gypi] -indent_style = space -indent_size = 2 - -# Set properties for citation files: -[*.{cff,cff.txt}] -indent_style = space -indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index 5f30286..0000000 --- a/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -/* For the `eslint` rules of this project, consult the main repository at https://github.com/stdlib-js/stdlib */ diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 24b327f..0000000 --- a/.gitattributes +++ /dev/null @@ -1,68 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2017 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Configuration file which assigns attributes to pathnames. -# -# [1]: https://git-scm.com/docs/gitattributes - -# Automatically normalize the line endings of any committed text files: -* text=auto - -# Override line endings for certain files on checkout: -*.crlf.csv text eol=crlf - -# Denote that certain files are binary and should not be modified: -*.png binary -*.jpg binary -*.jpeg binary -*.gif binary -*.ico binary -*.gz binary -*.zip binary -*.7z binary -*.mp3 binary -*.mp4 binary -*.mov binary - -# Override what is considered "vendored" by GitHub's linguist: -/lib/node_modules/** -linguist-vendored -linguist-generated - -# Configure directories which should *not* be included in GitHub language statistics: -/deps/** linguist-vendored -/dist/** linguist-generated -/workshops/** linguist-vendored - -benchmark/** linguist-vendored -docs/* linguist-documentation -etc/** linguist-vendored -examples/** linguist-documentation -scripts/** linguist-vendored -test/** linguist-vendored -tools/** linguist-vendored - -# Configure files which should *not* be included in GitHub language statistics: -Makefile linguist-vendored -*.mk linguist-vendored -*.jl linguist-vendored -*.py linguist-vendored -*.R linguist-vendored - -# Configure files which should be included in GitHub language statistics: -docs/types/*.d.ts -linguist-documentation - -.github/workflows/*.lock.yml linguist-generated=true merge=ours diff --git a/.github/.keepalive b/.github/.keepalive deleted file mode 100644 index 1be844d..0000000 --- a/.github/.keepalive +++ /dev/null @@ -1 +0,0 @@ -2026-08-18T03:22:32.836Z diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b2fd13a..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ - - -We are excited about your pull request, but unfortunately we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. - -If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. You may also consult the [development guide](https://github.com/stdlib-js/stdlib/blob/develop/docs/contributing/development.md) for help on developing stdlib. - -We look forward to receiving your contribution! :smiley: \ No newline at end of file diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index e4f10fe..0000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: benchmark - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run benchmarks: - benchmark: - - # Define a display name: - name: 'Run benchmarks' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run benchmarks: - - name: 'Run benchmarks' - run: | - npm run benchmark diff --git a/.github/workflows/cancel.yml b/.github/workflows/cancel.yml deleted file mode 100644 index b5291db..0000000 --- a/.github/workflows/cancel.yml +++ /dev/null @@ -1,57 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: cancel - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to cancel existing workflow runs: - cancel: - - # Define a display name: - name: 'Cancel workflow runs' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Time limit: - timeout-minutes: 3 - - # Define the sequence of job steps... - steps: - - # Cancel existing workflow runs: - - name: 'Cancel existing workflow runs' - # Pin action to full length commit SHA - uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # v0.12.1 - with: - workflow_id: >- - benchmark.yml, - examples.yml, - test.yml, - test_coverage.yml, - test_install.yml, - publish.yml - access_token: ${{ github.token }} diff --git a/.github/workflows/close_pull_requests.yml b/.github/workflows/close_pull_requests.yml deleted file mode 100644 index bce4396..0000000 --- a/.github/workflows/close_pull_requests.yml +++ /dev/null @@ -1,54 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: close_pull_requests - -# Workflow triggers: -on: - pull_request_target: - types: [opened] - -# Workflow jobs: -jobs: - - # Define job to close all pull requests: - run: - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Close pull request - - name: 'Close pull request' - # Pin action to full length commit SHA corresponding to v3.1.2 - uses: superbrothers/close-pull-request@9c18513d320d7b2c7185fb93396d0c664d5d8448 - with: - comment: | - Thank you for submitting a pull request. :raised_hands: - - We greatly appreciate your willingness to submit a contribution. However, we are not accepting pull requests against this repository, as all development happens on the [main project repository](https://github.com/stdlib-js/stdlib). - - We kindly request that you submit this pull request against the [respective directory](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with) of the main repository where we’ll review and provide feedback. If this is your first stdlib contribution, be sure to read the [contributing guide](https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md) which provides guidelines and instructions for submitting contributions. - - Thank you again, and we look forward to receiving your contribution! :smiley: - - Best, - The stdlib team \ No newline at end of file diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml deleted file mode 100644 index 2984901..0000000 --- a/.github/workflows/examples.yml +++ /dev/null @@ -1,64 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2021 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: examples - -# Workflow triggers: -on: - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job to run the package examples... - examples: - - # Define display name: - name: 'Run examples' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - - # Checkout repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Run examples: - - name: 'Run examples' - run: | - npm run examples diff --git a/.github/workflows/npm_downloads.yml b/.github/workflows/npm_downloads.yml deleted file mode 100644 index 25951b7..0000000 --- a/.github/workflows/npm_downloads.yml +++ /dev/null @@ -1,112 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: npm_downloads - -# Workflow triggers: -on: - # Run this workflow weekly: - schedule: - # cron: ' ' - - cron: '34 22 * * 6' - - # Allow the workflow to be manually run: - workflow_dispatch: - -# Workflow jobs: -jobs: - - # Define a job for retrieving npm download counts... - npm_downloads: - - # Define display name: - name: 'Retrieve npm download counts' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - timeout-minutes: 10 - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Resolve package name: - - name: 'Resolve package name' - id: package_name - run: | - name=`node -e 'console.log(require("./package.json").name)' | tr -d '\n'` - echo "package_name=$name" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Fetch download data: - - name: 'Fetch data' - id: download_data - run: | - url="https://api.npmjs.org/downloads/range/$(date --date='1 year ago' '+%Y-%m-%d'):$(date '+%Y-%m-%d')/${{ steps.package_name.outputs.package_name }}" - echo "$url" - data=$(curl "$url") - mkdir ./tmp - echo "$data" > ./tmp/npm_downloads.json - echo "data=$data" >> $GITHUB_OUTPUT - timeout-minutes: 5 - - # Print summary of download data: - - name: 'Print summary' - run: | - echo "| Date | Downloads |" >> $GITHUB_STEP_SUMMARY - echo "|------|------------|" >> $GITHUB_STEP_SUMMARY - cat ./tmp/npm_downloads.json | jq -r ".downloads | .[-14:] | to_entries | map(\"| \(.value.day) | \(.value.downloads) |\") |.[]" >> $GITHUB_STEP_SUMMARY - - # Upload the download data: - - name: 'Upload data' - # Pin action to full length commit SHA - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - with: - # Define a name for the uploaded artifact (ensuring a unique name for each job): - name: npm_downloads - - # Specify the path to the file to upload: - path: ./tmp/npm_downloads.json - - # Specify the number of days to retain the artifact (default is 90 days): - retention-days: 90 - timeout-minutes: 10 - if: success() - - # Send data to events server: - - name: 'Post data' - # Pin action to full length commit SHA - uses: distributhor/workflow-webhook@48a40b380ce4593b6a6676528cd005986ae56629 # v3.0.3 - env: - webhook_url: ${{ secrets.STDLIB_NPM_DOWNLOADS_URL }} - webhook_secret: ${{ secrets.STDLIB_WEBHOOK_SECRET }} - data: '{ "downloads": ${{ steps.download_data.outputs.data }} }' - timeout-minutes: 5 - if: success() diff --git a/.github/workflows/productionize.yml b/.github/workflows/productionize.yml deleted file mode 100644 index 83d50c4..0000000 --- a/.github/workflows/productionize.yml +++ /dev/null @@ -1,821 +0,0 @@ -#/ -# @license Apache-2.0 -# -# Copyright (c) 2022 The Stdlib Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -#/ - -# Workflow name: -name: productionize - -# Workflow triggers: -on: - # Run workflow when a new commit is pushed to the main branch: - push: - branches: - - main - - # Allow the workflow to be manually run: - workflow_dispatch: - inputs: - require-passing-tests: - description: 'Require passing tests for creating bundles' - type: boolean - default: true - - # Run workflow upon completion of `publish` workflow run: - workflow_run: - workflows: ["publish"] - types: [completed] - - -# Concurrency group to prevent multiple concurrent executions: -concurrency: - group: productionize - cancel-in-progress: true - -# Workflow jobs: -jobs: - - # Define a job to create a production build... - productionize: - - # Define display name: - name: 'Productionize' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Define the sequence of job steps... - steps: - # Checkout main branch of repository: - - name: 'Checkout main branch' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - ref: main - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Create production branch: - - name: 'Create production branch' - run: | - git checkout -b production - - # Transform error messages: - - name: 'Transform error messages' - id: transform-error-messages - uses: stdlib-js/transform-errors-action@main - - # Change `@stdlib/string-format` to `@stdlib/error-tools-fmtprodmsg` in package.json if the former is a dependency, otherwise insert it as a dependency: - - name: 'Update dependencies in package.json' - run: | - PKG_VERSION=$(npm view @stdlib/error-tools-fmtprodmsg version) - if grep -q '"@stdlib/string-format"' package.json; then - sed -i "s/\"@stdlib\/string-format\": \"^.*\"/\"@stdlib\/error-tools-fmtprodmsg\": \"^$PKG_VERSION\"/g" package.json - else - node -e "var pkg = require( './package.json' ); pkg.dependencies[ '@stdlib/error-tools-fmtprodmsg' ] = '^$PKG_VERSION'; require( 'fs' ).writeFileSync( 'package.json', JSON.stringify( pkg, null, 2 ) );" - fi - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Transform error messages" - - # Push changes: - - name: 'Push changes' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" production --force - - # Define a job for running tests of the productionized code... - test: - - # Define a display name: - name: 'Run Tests' - - # Define the type of virtual host machine: - runs-on: 'ubuntu-latest' - - # Indicate that this job depends on the prior job finishing: - needs: productionize - - # Run this job regardless of the outcome of the prior job: - if: always() - - # Define the sequence of job steps... - steps: - - # Checkout the repository: - - name: 'Checkout repository' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - with: - # Use the `production` branch: - ref: production - - # Install Node.js: - - name: 'Install Node.js' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Build native add-on if present: - - name: 'Build native add-on (if present)' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - run: | - if [ -f "binding.gyp" ]; then - npm install node-gyp --no-save && ./node_modules/.bin/node-gyp rebuild - fi - - # Run tests: - - name: 'Run tests' - if: ${{ github.event.inputs.require-passing-tests == 'true' }} - id: tests - run: | - npm test || npm test || npm test - - # Define job to create a bundle for use in Deno... - deno: - - # Define display name: - name: 'Create Deno bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `deno` branch exists: - - name: 'Check if remote `deno` branch exists' - id: deno-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin deno - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `deno` exists, delete everything in branch and merge `production` into it - - name: 'If `deno` exists, delete everything in branch and merge `production` into it' - if: steps.deno-branch-exists.outputs.remote-exists - run: | - git checkout -b deno origin/deno - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `deno` does not exist, create `deno` branch: - - name: 'If `deno` does not exist, create `deno` branch' - if: ${{ steps.deno-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b deno - - # Copy files to deno directory: - - name: 'Copy files to deno directory' - run: | - mkdir -p deno - cp README.md LICENSE CONTRIBUTORS NOTICE ./deno - - # Copy TypeScript definitions to deno directory: - if [ -d index.d.ts ]; then - cp index.d.ts ./deno/index.d.ts - fi - if [ -e ./docs/types/index.d.ts ]; then - cp ./docs/types/index.d.ts ./deno/mod.d.ts - fi - - # Install Node.js: - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: Install production and development dependencies - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Bundle package for use in Deno: - - name: 'Bundle package for Deno' - id: deno-bundle - uses: stdlib-js/bundle-action@main - with: - target: 'deno' - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - # Replace links to other packages with links to the deno branch: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/deno/"; - - # Replace reference to `@stdlib/types` with CDN link: - find ./deno -type f -name '*.ts' -print0 | xargs -0 -r sed -Ei "s/\/\/\/ /\/\/\/ /g" - - # Change wording of project description to avoid reference to JavaScript and Node.js: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "s/a standard library for JavaScript and Node.js, /a standard library /g" - - # Rewrite all `require()`s to use jsDelivr links: - find ./deno -type f -name '*.md' -print0 | xargs -0 sed -Ei "/require\( '@stdlib\// { - s/(var|let|const)\s+([a-z0-9_]+)\s+=\s*require\( '([^']+)' \);/import \2 from \'\3\';/i - s/@stdlib/https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js/ - s/';/@deno\/mod.js';/ - }" - - # Rewrite first `import` to show importing of named exports if available: - exports=$(cat lib/index.js | \ - grep -E 'setReadOnly\(.*,.*,.*\)' | \ - sed -E 's/setReadOnly\((.*),(.*),(.*)\);/\2/' | \ - sed -E "s/'//g" | \ - sort) - if [ -n "$exports" ]; then - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\nimport\s+([a-zA-Z0-9_]+)\s+from\s*'([^']+)';\n\`\`\`/\`\`\`javascript\nimport \1 from '\2';\n\`\`\`\n\nYou can also import the following named exports from the package:\n\n\`\`\`javascript\nimport { $(echo $exports | sed -E 's/ /, /g') } from '\2';\n\`\`\`/" - fi - - # Remove `installation`, `cli`, and `c` sections: - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./deno -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Create package.json file for deno branch: - jq --indent 2 '{"name": .name, "version": .version, "description": .description, "license": .license, "type": "module", "main": "./mod.js", "homepage": .homepage, "repository": .repository, "bugs": .bugs, "keywords": .keywords, "funding": .funding}' package.json > ./deno/package.json - - # Delete everything in current directory aside from deno folder: - - name: 'Delete everything in current directory aside from deno folder' - run: | - find . -type 'f' | grep -v -e "deno" -e ".git/" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e "deno" -e ".git" | xargs -r rm -rf - - # Move deno directory to root: - - name: 'Move deno directory to root' - run: | - mv ./deno/* . - rmdir ./deno - - # Commit changes: - - name: 'Commit changes' - run: | - git add -A - git commit -m "Auto-generated commit" - - # Push changes to `deno` branch: - - name: 'Push changes to `deno` branch' - run: | - SLUG=${{ github.repository }} - echo "Pushing changes to $SLUG..." - git push "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/$SLUG.git" deno - - # Send notification to Zulip if job fails: - - name: 'Send notification to Zulip in case of failure' - # Pin action to full length commit SHA - uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5 # v1.0.2 - if: failure() - with: - api-key: ${{ secrets.ZULIP_API_KEY }} - email: 'github-actions-bot@stdlib.zulipchat.com' - organization-url: 'https://stdlib.zulipchat.com' - to: 'workflows-standalone' - type: 'stream' - topic: ${{ github.event.repository.name }} - content: | - :cross_mark: **${{ github.workflow }}** workflow failed - - **Repository:** [${{ github.repository }}](${{ github.server_url }}/${{ github.repository }}) - **Run:** [View workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) - - # Define job to create a UMD bundle... - umd: - - # Define display name: - name: 'Create UMD bundle' - - # Define the type of virtual host machine on which to run the job: - runs-on: ubuntu-latest - - # Indicate that this job depends on the test job finishing: - needs: test - - # Define the sequence of job steps... - steps: - # Checkout the repository: - - name: 'Checkout repository' - # Pin action to full length commit SHA - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - # Configure Git: - - name: 'Configure Git' - run: | - git config --local user.email "noreply@stdlib.io" - git config --local user.name "stdlib-bot" - - # Check if remote `umd` branch exists: - - name: 'Check if remote `umd` branch exists' - id: umd-branch-exists - continue-on-error: true - run: | - git fetch --all - git ls-remote --exit-code --heads origin umd - if [ $? -eq 0 ]; then - echo "remote-exists=true" >> $GITHUB_OUTPUT - else - echo "remote-exists=false" >> $GITHUB_OUTPUT - fi - - # If `umd` exists, delete everything in branch and merge `production` into it - - name: 'If `umd` exists, delete everything in branch and merge `production` into it' - if: steps.umd-branch-exists.outputs.remote-exists - run: | - git checkout -b umd origin/umd - - find . -type 'f' | grep -v -e ".git/" -e "package.json" -e "README.md" -e "LICENSE" -e "CONTRIBUTORS" -e "NOTICE" | xargs -r rm - find . -mindepth 1 -type 'd' | grep -v -e ".git" | xargs -r rm -rf - - git add -A - git commit -m "Remove files" --allow-empty - - git config merge.theirs.name 'simulate `-s theirs`' - git config merge.theirs.driver 'cat %B > %A' - GIT_CONFIG_PARAMETERS="'merge.default=theirs'" git merge origin/production --allow-unrelated-histories - - # Copy files from `production` branch if necessary: - git checkout origin/production -- . - if [ -n "$(git status --porcelain)" ]; then - git add -A - git commit -m "Auto-generated commit" - fi - - # If `umd` does not exist, create `umd` branch: - - name: 'If `umd` does not exist, create `umd` branch' - if: ${{ steps.umd-branch-exists.outputs.remote-exists == false }} - run: | - git checkout production - git checkout -b umd - - # Copy files to umd directory: - - name: 'Copy files to umd directory' - run: | - mkdir -p umd - cp README.md LICENSE CONTRIBUTORS NOTICE ./umd - - # Install Node.js - - name: 'Install Node.js' - # Pin action to full length commit SHA - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 - with: - node-version: 20 - timeout-minutes: 5 - - # Install dependencies: - - name: 'Install production and development dependencies' - id: install - run: | - npm install || npm install || npm install - timeout-minutes: 15 - - # Extract alias: - - name: 'Extract alias' - id: extract-alias - run: | - alias=$(grep -E 'require\(' README.md | head -n 1 | sed -E 's/^var ([a-zA-Z0-9_]+) = .+/\1/') - echo "alias=${alias}" >> $GITHUB_OUTPUT - - # Create Universal Module Definition (UMD) Node.js bundle: - - name: 'Create Universal Module Definition (UMD) Node.js bundle' - id: umd-bundle-node - uses: stdlib-js/bundle-action@main - with: - target: 'umd-node' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Create Universal Module Definition (UMD) browser bundle: - - name: 'Create Universal Module Definition (UMD) browser bundle' - id: umd-bundle-browser - uses: stdlib-js/bundle-action@main - with: - target: 'umd-browser' - alias: ${{ steps.extract-alias.outputs.alias }} - - # Rewrite file contents: - - name: 'Rewrite file contents' - run: | - - # Replace links to other packages with links to the umd branch: - find ./umd -type f -name '*.md' -print0 | xargs -0 sed -Ei "/\/tree\/main/b; /^\[@stdlib[^:]+: https:\/\/github.com\/stdlib-js\// s/(.*)/\\1\/tree\/umd/"; - - # Remove `installation`, `cli`, and `c` sections: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/
[^<]+<\/section>//g;" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.cli \-\->//g" - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/(\* \* \*\n+)?
[\s\S]+<\!\-\- \/.c \-\->//g" - - # Rewrite first `require()` to show consumption of the UMD bundle in Observable and via a `script` tag: - find ./umd -type f -name '*.md' -print0 | xargs -0 perl -0777 -i -pe "s/\`\`\`javascript\n(var|let|const)\s+([a-zA-Z0-9_]+)\s+=\s*require\( '\@stdlib\/([^']+)' \);\n\`\`\`/To use in Observable,\n\n\`\`\`javascript\n\2 = require\( 'https:\/\/cdn.jsdelivr.net\/gh\/stdlib-js\/\3\@umd\/browser.js' \)\n\`\`\`\n\nTo vendor stdlib functionality and avoid installing dependency trees for Node.js, you can use the UMD server build:\n\n\`\`\`javascript\nvar \2 = require\( 'path\/to\/vendor\/umd\/\3\/index.js' \)\n\`\`\`\n\nTo include the bundle in a webpage,\n\n\`\`\`html\n + + ```
@@ -201,7 +198,7 @@ for ( i = 0; i < indices.length; i++ ) { ## Notice -This 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. +This package is part of [stdlib][stdlib], a standard library 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. For 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]. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 9702d4c..0000000 --- a/SECURITY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Security - -> Policy for reporting security vulnerabilities. - -See the security policy [in the main project repository](https://github.com/stdlib-js/stdlib/security). diff --git a/benchmark/benchmark.assign.length.js b/benchmark/benchmark.assign.length.js deleted file mode 100644 index d3d5cb5..0000000 --- a/benchmark/benchmark.assign.length.js +++ /dev/null @@ -1,99 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var zeros = require( '@stdlib/array-base-zeros' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var out = zeros( len ); - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var v; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - v = arrayWith.assign( x, i%len, i, out, 1, 0 ); - if ( typeof v !== 'object' ) { - b.fail( 'should return an array' ); - } - } - b.toc(); - if ( !isArray( v ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:assign:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/benchmark/benchmark.length.js b/benchmark/benchmark.length.js deleted file mode 100644 index 8e24961..0000000 --- a/benchmark/benchmark.length.js +++ /dev/null @@ -1,97 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var bench = require( '@stdlib/bench-harness' ); -var pow = require( '@stdlib/math-base-special-pow' ); -var isArray = require( '@stdlib/assert-is-array' ); -var ones = require( '@stdlib/array-base-ones' ); -var format = require( '@stdlib/string-format' ); -var pkg = require( './../package.json' ).name; -var arrayWith = require( './../lib' ); - - -// FUNCTIONS // - -/** -* Creates a benchmark function. -* -* @private -* @param {PositiveInteger} len - array length -* @returns {Function} benchmark function -*/ -function createBenchmark( len ) { - var x = ones( len ); - return benchmark; - - /** - * Benchmark function. - * - * @private - * @param {Benchmark} b - benchmark instance - */ - function benchmark( b ) { - var out; - var i; - - b.tic(); - for ( i = 0; i < b.iterations; i++ ) { - out = arrayWith( x, i%len, i ); - if ( out.length !== len ) { - b.fail( 'unexpected length' ); - } - } - b.toc(); - if ( !isArray( out ) ) { - b.fail( 'should return an array' ); - } - b.pass( 'benchmark finished' ); - b.end(); - } -} - - -// MAIN // - -/** -* Main execution sequence. -* -* @private -*/ -function main() { - var len; - var min; - var max; - var f; - var i; - - min = 1; // 10^min - max = 6; // 10^max - - for ( i = min; i <= max; i++ ) { - len = pow( 10, i ); - - f = createBenchmark( len ); - bench( format( '%s:dtype=generic,len=%d', pkg, len ), f ); - } -} - -main(); diff --git a/branches.md b/branches.md deleted file mode 100644 index 4472979..0000000 --- a/branches.md +++ /dev/null @@ -1,56 +0,0 @@ - - -# Branches - -This repository has the following branches: - -- **main**: default branch generated from the [stdlib project][stdlib-url], where all development takes place. -- **production**: [production build][production-url] of the package (e.g., reformatted error messages to reduce bundle sizes and thus the number of bytes transmitted over a network). -- **esm**: [ES Module][esm-url] branch for use via a `script` tag without the need for installation and bundlers (see [README][esm-readme]). -- **deno**: [Deno][deno-url] branch for use in Deno (see [README][deno-readme]). -- **umd**: [UMD][umd-url] branch for use in Observable, or in dual browser/Node.js environments (see [README][umd-readme]). - -The following diagram illustrates the relationships among the above branches: - -```mermaid -graph TD; -A[stdlib]-->|generate standalone package|B; -B[main] -->|productionize| C[production]; -C -->|bundle| D[esm]; -C -->|bundle| E[deno]; -C -->|bundle| F[umd]; - -%% click A href "https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with" -%% click B href "https://github.com/stdlib-js/array-base-with/tree/main" -%% click C href "https://github.com/stdlib-js/array-base-with/tree/production" -%% click D href "https://github.com/stdlib-js/array-base-with/tree/esm" -%% click E href "https://github.com/stdlib-js/array-base-with/tree/deno" -%% click F href "https://github.com/stdlib-js/array-base-with/tree/umd" -``` - -[stdlib-url]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/array/base/with -[production-url]: https://github.com/stdlib-js/array-base-with/tree/production -[deno-url]: https://github.com/stdlib-js/array-base-with/tree/deno -[deno-readme]: https://github.com/stdlib-js/array-base-with/blob/deno/README.md -[umd-url]: https://github.com/stdlib-js/array-base-with/tree/umd -[umd-readme]: https://github.com/stdlib-js/array-base-with/blob/umd/README.md -[esm-url]: https://github.com/stdlib-js/array-base-with/tree/esm -[esm-readme]: https://github.com/stdlib-js/array-base-with/blob/esm/README.md \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index 2be668f..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import arrayWith from '../docs/types/index'; -export = arrayWith; \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 8a7c649..0000000 --- a/dist/index.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict";var q=function(a,r){return function(){try{return r||a((r={exports:{}}).exports,r),r.exports}catch(n){throw (r=0, n)}};};var p=q(function(H,g){ -var R=require('@stdlib/array-base-slice/dist'),j=require('@stdlib/array-base-resolve-setter/dist'),k=require('@stdlib/ndarray-base-normalize-index/dist'),z=require('@stdlib/error-tools-fmtprodmsg/dist');function C(a,r){return typeof a[r]=="function"}function D(a,r,n){var e,t;if(C(a,"with"))return a.with(r,n);if(r=k(r,a.length-1),r<0)throw new RangeError(z('1sTGg',r));return e=R(a,0,a.length),t=j(e),t(e,r,n),e}g.exports=D -});var b=q(function(J,I){ -var h=require('@stdlib/array-base-assert-is-complex-floating-point-data-type/dist'),m=require('@stdlib/array-base-assert-is-boolean-data-type/dist'),E=require('@stdlib/assert-is-complex-like/dist'),P=require('@stdlib/boolean-ctor/dist'),y=require('@stdlib/array-base-arraylike2object/dist'),f=require('@stdlib/strided-base-reinterpret-complex/dist'),w=require('@stdlib/strided-base-reinterpret-boolean/dist'),T=require('@stdlib/ndarray-base-normalize-index/dist'),V=require('@stdlib/complex-float64-real/dist'),L=require('@stdlib/complex-float64-imag/dist'),M=require('@stdlib/error-tools-fmtprodmsg/dist');function d(a,r,n,e,t,v){var o,i;for(o=v,i=0;i[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = assign;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* var arrayWith = require( '@stdlib/array-base-with' );\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' );\nvar main = require( './main.js' );\nvar assign = require( './assign.js' );\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n"], - "mappings": "iIAAA,IAAAA,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAQ,QAAS,0BAA2B,EAC5CC,EAAgB,QAAS,mCAAoC,EAC7DC,EAAiB,QAAS,sCAAuC,EACjEC,EAAS,QAAS,uBAAwB,EAqB9C,SAASC,EAAWC,EAAKC,EAAS,CACjC,OAAS,OAAOD,EAAKC,CAAO,GAAM,UACnC,CA0BA,SAASC,EAAWC,EAAGC,EAAOC,EAAQ,CACrC,IAAIC,EACAC,EACJ,GAAKR,EAAWI,EAAG,MAAO,EACzB,OAAOA,EAAE,KAAMC,EAAOC,CAAM,EAG7B,GADAD,EAAQP,EAAgBO,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYN,EAAQ,kEAAmEM,CAAM,CAAE,EAE1G,OAAAE,EAAMX,EAAOQ,EAAG,EAAGA,EAAE,MAAO,EAC5BI,EAAMX,EAAeU,CAAI,EACzBC,EAAKD,EAAKF,EAAOC,CAAM,EAChBC,CACR,CAKAZ,EAAO,QAAUQ,IC7FjB,IAAAM,EAAAC,EAAA,SAAAC,EAAAC,EAAA,cAsBA,IAAIC,EAAoB,QAAS,+DAAgE,EAC7FC,EAAoB,QAAS,gDAAiD,EAC9EC,EAAgB,QAAS,gCAAiC,EAC1DC,EAAU,QAAS,sBAAuB,EAC1CC,EAAmB,QAAS,qCAAsC,EAClEC,EAAc,QAAS,0CAA2C,EAClEC,EAAqB,QAAS,0CAA2C,EACzEC,EAAiB,QAAS,sCAAuC,EACjEC,EAAO,QAAS,8BAA+B,EAC/CC,EAAO,QAAS,8BAA+B,EAC/CC,EAAS,QAAS,uBAAwB,EA2B9C,SAASC,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIC,EACA,EAGJ,IADAA,EAAKD,EACC,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAC1BG,EAAKG,CAAG,EAAIN,EAAG,CAAE,EACjBM,GAAMF,EAEP,OAAAD,EAAKE,EAAQJ,EAAMG,CAAQ,EAAIF,EACxBC,CACR,CA0BA,SAASI,EAAWP,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CAC1D,IAAIG,EACAC,EACAC,EACAC,EACAL,EACAM,EASJ,IAPAJ,EAAQR,EAAE,KACVS,EAAQN,EAAI,KAEZO,EAAOV,EAAE,UAAW,CAAE,EACtBW,EAAOR,EAAI,UAAW,CAAE,EAExBG,EAAKD,EACCO,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IAC9BD,EAAMF,EAAOH,EAAII,EAAMF,EAAOI,CAAE,CAAE,EAClCN,GAAMF,EAEP,OAAAO,EAAMF,EAAOJ,EAAQJ,EAAMG,EAASF,CAAM,EACnCO,CACR,CAwBA,SAASI,EAASb,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACxD,IAAIS,EACAR,EACAM,EACAG,EAIJ,IAFAD,EAAKV,EAAS,EACdE,EAAKD,EAAS,EACRO,EAAI,EAAGA,EAAIZ,EAAE,OAAO,EAAGY,IAC5BG,EAAIH,EAAI,EACRT,EAAKG,CAAG,EAAIN,EAAGe,CAAE,EACjBZ,EAAKG,EAAG,CAAE,EAAIN,EAAGe,EAAE,CAAE,EACrBT,GAAMQ,EAEP,OAAAR,GAAOD,EAAQJ,EAAMG,GAAY,EACjCD,EAAKG,CAAG,EAAIV,EAAMM,CAAM,EACxBC,EAAKG,EAAG,CAAE,EAAIT,EAAMK,CAAM,EACnBC,CACR,CA2BA,SAASa,EAAQhB,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,EAAS,CACvD,IAAIY,EACAC,EAGJ,GADAjB,EAAQN,EAAgBM,EAAOD,EAAE,OAAO,CAAE,EACrCC,EAAQ,EACZ,MAAM,IAAI,WAAYH,EAAQ,kEAAmEG,CAAM,CAAE,EAI1G,OAFAgB,EAAKzB,EAAkBQ,CAAE,EACzBkB,EAAK1B,EAAkBW,CAAI,EACtBc,EAAG,kBAAoBC,EAAG,iBAG7B9B,EAAmB6B,EAAG,KAAM,GAC5B7B,EAAmB8B,EAAG,KAAM,GAC5B5B,EAAeY,CAAM,GAErBW,EAASpB,EAAaO,EAAG,CAAE,EAAGC,EAAOC,EAAOT,EAAaU,EAAK,CAAE,EAAGC,EAAQC,CAAO,EAC3EF,GAGPd,EAAmB4B,EAAG,KAAM,GAC5B5B,EAAmB6B,EAAG,KAAM,GAE5BnB,EAASL,EAAoBM,EAAG,CAAE,EAAGC,EAAOV,EAASW,CAAM,EAAGR,EAAoBS,EAAK,CAAE,EAAGC,EAAQC,CAAO,EACpGF,IAERI,EAAWU,EAAIhB,EAAOC,EAAOgB,EAAId,EAAQC,CAAO,EACzCF,IAERJ,EAASC,EAAGC,EAAOC,EAAOC,EAAKC,EAAQC,CAAO,EACvCF,EACR,CAKAhB,EAAO,QAAU6B,IC5KjB,IAAIG,EAAc,QAAS,uDAAwD,EAC/EC,EAAO,IACPC,EAAS,IAKbF,EAAaC,EAAM,SAAUC,CAAO,EAKpC,OAAO,QAAUD", - "names": ["require_main", "__commonJSMin", "exports", "module", "slice", "resolveSetter", "normalizeIndex", "format", "hasMethod", "obj", "method", "arrayWith", "x", "index", "value", "out", "set", "require_assign", "__commonJSMin", "exports", "module", "isComplexDataType", "isBooleanDataType", "isComplexLike", "Boolean", "arraylike2object", "reinterpret", "reinterpretBoolean", "normalizeIndex", "real", "imag", "format", "indexed", "x", "index", "value", "out", "stride", "offset", "io", "accessors", "xdata", "odata", "xget", "oset", "i", "complex", "so", "j", "assign", "xo", "oo", "setReadOnly", "main", "assign"] -} diff --git a/docs/repl.txt b/docs/repl.txt deleted file mode 100644 index 2002a55..0000000 --- a/docs/repl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -{{alias}}( x, index, value ) - Returns a new array with the element at the specified index replaced with a - provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - If provided an array-like object having a `with` method , the function - defers execution to that method and assumes that the method has the - following signature: - - x.with( index, value ) - - If provided an array-like object without a `with` method, the function - shallow copies input array data to a new generic array, normalizes a - provided index, and sets a specified element. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > {{alias}}( x, 0, 5 ) - [ 5, 2, 3, 4 ] - > {{alias}}( x, -1, 6 ) - [ 1, 2, 3, 6 ] - > x - [ 1, 2, 3, 4 ] - - -{{alias}}.assign( x, index, value, out, stride, offset ) - Copies elements from one array to another array and sets the element at the - specified index to a provided value. - - Negative indices are resolved relative to the last array element, with the - last element corresponding to `-1`. - - Parameters - ---------- - x: ArrayLikeObject - Input array. - - index: integer - Index of the element to be replaced. - - value: any - Replacement value. - - out: ArrayLikeObject - Output array. - - stride: integer - Output array stride. - - offset: integer - Output array offset. - - Returns - ------- - out: ArrayLikeObject - Output array. - - Examples - -------- - > var x = [ 1, 2, 3, 4 ]; - > var out = [ 0, 0, 0, 0 ]; - > var arr = {{alias}}.assign( x, 0, 5, out, 1, 0 ) - [ 5, 2, 3, 4 ] - > var bool = ( arr === out ) - true - - See Also - -------- - diff --git a/docs/types/test.ts b/docs/types/test.ts deleted file mode 100644 index 05cb2c7..0000000 --- a/docs/types/test.ts +++ /dev/null @@ -1,170 +0,0 @@ -/* -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -import Complex128Array = require( '@stdlib/array-complex128' ); -import Complex64Array = require( '@stdlib/array-complex64' ); -import toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -import arrayWith = require( './index' ); - - -// TESTS // - -// The function returns an updated array... -{ - arrayWith( [ 1, 2, 3, 4 ], 0, 5 ); // $ExpectType number[] - arrayWith( new Complex128Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex128Array - arrayWith( new Complex64Array( 5 ), 0, { 're': 1.0, 'im': 1.0 } ); // $ExpectType Complex64Array - arrayWith( toAccessorArray( [ 1, 2, 3, 4 ] ), 0, 5 ); // $ExpectType number[] -} - -// The compiler throws an error if the function is provided a first argument which is not a collection... -{ - arrayWith( 5, 0, 5 ); // $ExpectError - arrayWith( true, 0, 5 ); // $ExpectError - arrayWith( false, 0, 5 ); // $ExpectError - arrayWith( null, 0, 5 ); // $ExpectError - arrayWith( void 0, 0, 5 ); // $ExpectError - arrayWith( {}, 0, 5 ); // $ExpectError - arrayWith( ( x: number ): number => x, 0, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith( x, 'abc', 5 ); // $ExpectError - arrayWith( x, true, 5 ); // $ExpectError - arrayWith( x, false, 5 ); // $ExpectError - arrayWith( x, null, 5 ); // $ExpectError - arrayWith( x, void 0, 5 ); // $ExpectError - arrayWith( x, [ '1' ], 5 ); // $ExpectError - arrayWith( x, {}, 5 ); // $ExpectError - arrayWith( x, ( x: number ): number => x, 5 ); // $ExpectError -} - -// The compiler throws an error if the function is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith(); // $ExpectError - arrayWith( x ); // $ExpectError - arrayWith( x, 0 ); // $ExpectError - arrayWith( x, 0, 0, 5 ); // $ExpectError -} - -// Attached to the main export is an `assign` method which returns a collection... -{ - const x = [ 1, 2, 3, 4 ]; - const y = new Complex128Array( 4 ); - - arrayWith.assign( x, 0, 5, [ 0, 0, 0, 0 ], 1, 0 ); // $ExpectType number[] - arrayWith.assign( x, 0, 5, new Float64Array( 4 ), 1, 0 ); // $ExpectType Float64Array - arrayWith.assign( x, 0, 5, new Float32Array( 4 ), 1, 0 ); // $ExpectType Float32Array - arrayWith.assign( x, 0, 5, new Int32Array( 4 ), 1, 0 ); // $ExpectType Int32Array - arrayWith.assign( x, 0, 5, new Int16Array( 4 ), 1, 0 ); // $ExpectType Int16Array - arrayWith.assign( x, 0, 5, new Int8Array( 4 ), 1, 0 ); // $ExpectType Int8Array - arrayWith.assign( x, 0, 5, new Uint32Array( 4 ), 1, 0 ); // $ExpectType Uint32Array - arrayWith.assign( x, 0, 5, new Uint16Array( 4 ), 1, 0 ); // $ExpectType Uint16Array - arrayWith.assign( x, 0, 5, new Uint8Array( 4 ), 1, 0 ); // $ExpectType Uint8Array - arrayWith.assign( x, 0, 5, new Uint8ClampedArray( 4 ), 1, 0 ); // $ExpectType Uint8ClampedArray - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex128Array( 4 ), 1, 0 ); // $ExpectType Complex128Array - arrayWith.assign( y, 0, { 're': 1.0, 'im': 1.0 }, new Complex64Array( 4 ), 1, 0 ); // $ExpectType Complex64Array -} - -// The compiler throws an error if the `assign` method is provided a first argument which is not an array-like object... -{ - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( 1, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( true, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( false, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( null, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( void 0, 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( {}, 0, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a second argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, '1', 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, true, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, false, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, null, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, void 0, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, [], 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, {}, 5, out, 1, 0 ); // $ExpectError - arrayWith.assign( x, ( x: number ): number => x, 5, out, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fourth argument which is not an array-like object... -{ - const x = [ 1, 2, 3, 4 ]; - - arrayWith.assign( x, 0, 5, 1, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, true, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, false, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, null, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, void 0, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, {}, 1, 0 ); // $ExpectError - arrayWith.assign( x, 0, 5, ( x: number ): number => x, 1, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, '1', 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, true, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, false, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, null, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, void 0, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, [], 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, {}, 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, ( x: number ): number => x, 0 ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided a sixth argument which is not a number... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign( x, 0, 1, out, 1, '1' ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, true ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, false ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, null ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, void 0 ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, [] ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, {} ); // $ExpectError - arrayWith.assign( x, 0, 1, out, 1, ( x: number ): number => x ); // $ExpectError -} - -// The compiler throws an error if the `assign` method is provided an unsupported number of arguments... -{ - const x = [ 1, 2, 3, 4 ]; - const out = [ 0, 0, 0, 0 ]; - - arrayWith.assign(); // $ExpectError - arrayWith.assign( x ); // $ExpectError - arrayWith.assign( x, 0 ); // $ExpectError - arrayWith.assign( x, 0, 0, out ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1 ); // $ExpectError - arrayWith.assign( x, 0, 0, out, 1, 0, {} ); // $ExpectError -} diff --git a/examples/index.js b/examples/index.js deleted file mode 100644 index 3f9d6f6..0000000 --- a/examples/index.js +++ /dev/null @@ -1,40 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -var discreteUniform = require( '@stdlib/random-array-discrete-uniform' ); -var arrayWith = require( './../lib' ); - -// Define an array: -var opts = { - 'dtype': 'generic' -}; -var x = discreteUniform( 5, -100, 100, opts ); - -// Define an array containing random index values: -var indices = discreteUniform( 100, -x.length, x.length-1, opts ); - -// Define an array with random values to set: -var values = discreteUniform( indices.length, -10000, 10000, opts ); - -// Randomly set elements in the input array: -var i; -for ( i = 0; i < indices.length; i++ ) { - console.log( 'x = [%s]', arrayWith( x, indices[ i ], values[ i ] ).join( ',' ) ); -} diff --git a/docs/types/index.d.ts b/index.d.ts similarity index 98% rename from docs/types/index.d.ts rename to index.d.ts index e329e98..707701e 100644 --- a/docs/types/index.d.ts +++ b/index.d.ts @@ -18,7 +18,7 @@ // TypeScript Version: 4.1 -/// +/// import { Collection, RealTypedArray, ComplexTypedArray, AccessorArrayLike } from '@stdlib/types/array'; import { ComplexLike } from '@stdlib/types/complex'; diff --git a/index.mjs b/index.mjs new file mode 100644 index 0000000..fd36de7 --- /dev/null +++ b/index.mjs @@ -0,0 +1,4 @@ +// Copyright (c) 2026 The Stdlib Authors. License is Apache-2.0: http://www.apache.org/licenses/LICENSE-2.0 +/// +import e from"https://cdn.jsdelivr.net/gh/stdlib-js/utils-define-nonenumerable-read-only-property@v0.2.3-esm/index.mjs";import t from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-slice@v0.3.1-esm/index.mjs";import s from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-resolve-setter@v0.2.3-esm/index.mjs";import r from"https://cdn.jsdelivr.net/gh/stdlib-js/ndarray-base-normalize-index@v0.2.3-esm/index.mjs";import n from"https://cdn.jsdelivr.net/gh/stdlib-js/error-tools-fmtprodmsg@v0.2.3-esm/index.mjs";import i from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-complex-floating-point-data-type@v0.2.2-esm/index.mjs";import o from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-assert-is-boolean-data-type@v0.0.2-esm/index.mjs";import d from"https://cdn.jsdelivr.net/gh/stdlib-js/assert-is-complex-like@v0.2.4-esm/index.mjs";import m from"https://cdn.jsdelivr.net/gh/stdlib-js/boolean-ctor@v0.2.3-esm/index.mjs";import a from"https://cdn.jsdelivr.net/gh/stdlib-js/array-base-arraylike2object@v0.2.2-esm/index.mjs";import l from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-complex@v0.1.3-esm/index.mjs";import p from"https://cdn.jsdelivr.net/gh/stdlib-js/strided-base-reinterpret-boolean@v0.0.3-esm/index.mjs";import j from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-real@v0.1.2-esm/index.mjs";import c from"https://cdn.jsdelivr.net/gh/stdlib-js/complex-float64-imag@v0.1.2-esm/index.mjs";function h(e,i,o){var d;if("function"==typeof e["with"])return e.with(i,o);if((i=r(i,e.length-1))<0)throw new RangeError(n("invalid argument. Index argument is out-of-bounds. Value: `%d`.",i));return d=t(e,0,e.length),s(d)(d,i,o),d}function v(e,t,s,r,n,i){var o,d;for(o=i,d=0;d[ 5.0, 6.0, 3.0, 4.0 ]\n*/\nfunction complex( x, index, value, out, stride, offset ) {\n\tvar so;\n\tvar io;\n\tvar i;\n\tvar j;\n\n\tso = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components\n\tio = offset * 2;\n\tfor ( i = 0; i < x.length/2; i++ ) {\n\t\tj = i * 2;\n\t\tout[ io ] = x[ j ];\n\t\tout[ io+1 ] = x[ j+1 ];\n\t\tio += so;\n\t}\n\tio = ( offset+(index*stride) ) * 2;\n\tout[ io ] = real( value );\n\tout[ io+1 ] = imag( value );\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Copies elements from one array to another array and sets the element at the specified index to a provided value.\n*\n* @param {Collection} x - input array\n* @param {integer} index - element index\n* @param {*} value - replacement value\n* @param {Collection} out - output array\n* @param {integer} stride - output array stride\n* @param {NonNegativeInteger} offset - output array offset\n* @throws {RangeError} second argument must not exceed array bounds\n* @returns {Collection} output array\n*\n* @example\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\nfunction assign( x, index, value, out, stride, offset ) {\n\tvar xo;\n\tvar oo;\n\n\tindex = normalizeIndex( index, x.length-1 );\n\tif ( index < 0 ) {\n\t\tthrow new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) );\n\t}\n\txo = arraylike2object( x );\n\too = arraylike2object( out );\n\tif ( xo.accessorProtocol || oo.accessorProtocol ) {\n\t\t// Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland...\n\t\tif (\n\t\t\tisComplexDataType( xo.dtype ) &&\n\t\t\tisComplexDataType( oo.dtype ) &&\n\t\t\tisComplexLike( value )\n\t\t) {\n\t\t\tcomplex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\tif (\n\t\t\tisBooleanDataType( xo.dtype ) &&\n\t\t\tisBooleanDataType( oo.dtype )\n\t\t) {\n\t\t\tindexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len\n\t\t\treturn out;\n\t\t}\n\t\taccessors( xo, index, value, oo, stride, offset );\n\t\treturn out;\n\t}\n\tindexed( x, index, value, out, stride, offset );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nexport default assign;\n","/**\n* @license Apache-2.0\n*\n* Copyright (c) 2024 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a new array with the element at the specified index replaced with a provided value.\n*\n* @module @stdlib/array-base-with\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var v = arrayWith( x, 0, 5 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* v = arrayWith( x, -2, -1 );\n* // returns [ 1, 2, -1, 4 ]\n*\n* @example\n* import arrayWith from '@stdlib/array-base-with';\n*\n* var x = [ 1, 2, 3, 4 ];\n*\n* var out = [ 0, 0, 0, 0 ];\n* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 );\n* // returns [ 5, 2, 3, 4 ]\n*\n* var bool = ( arr === out );\n* // returns true\n*/\n\n// MODULES //\n\nimport setReadOnly from '@stdlib/utils-define-nonenumerable-read-only-property';\nimport main from './main.js';\nimport assign from './assign.js';\n\n\n// MAIN //\n\nsetReadOnly( main, 'assign', assign );\n\n\n// EXPORTS //\n\nexport default main;\n"],"names":["arrayWith","x","index","value","out","with","normalizeIndex","length","RangeError","format","slice","resolveSetter","set","indexed","stride","offset","io","i","assign","xo","oo","arraylike2object","accessorProtocol","isComplexDataType","dtype","isComplexLike","so","j","real","imag","complex","reinterpret","isBooleanDataType","reinterpretBoolean","Boolean","xdata","odata","xget","oset","data","accessors","setReadOnly","main"],"mappings":";;k6CA0EA,SAASA,EAAWC,EAAGC,EAAOC,GAC7B,IAAIC,EAEJ,GA9BkC,mBA8BlBH,EAAG,QAClB,OAAOA,EAAEI,KAAMH,EAAOC,GAGvB,IADAD,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAKlG,OAHAE,EAAMM,EAAOT,EAAG,EAAGA,EAAEM,QACfI,EAAeP,EACrBQ,CAAKR,EAAKF,EAAOC,GACVC,CACR,CC7BA,SAASS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIC,EACAC,EAGJ,IADAD,EAAKD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAQU,IAC1Bb,EAAKY,GAAOf,EAAGgB,GACfD,GAAMF,EAGP,OADAV,EAAKW,EAAQb,EAAMY,GAAYX,EACxBC,CACR,CAoHA,SAASc,EAAQjB,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC9C,IAAII,EACAC,EAGJ,IADAlB,EAAQI,EAAgBJ,EAAOD,EAAEM,OAAO,IAC3B,EACZ,MAAM,IAAIC,WAAYC,EAAQ,kEAAmEP,IAIlG,OAFAiB,EAAKE,EAAkBpB,GACvBmB,EAAKC,EAAkBjB,GAClBe,EAAGG,kBAAoBF,EAAGE,iBAG7BC,EAAmBJ,EAAGK,QACtBD,EAAmBH,EAAGI,QACtBC,EAAetB,IA5DlB,SAAkBF,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAC/C,IAAIW,EACAV,EACAC,EACAU,EAIJ,IAFAD,EAAc,EAATZ,EACLE,EAAc,EAATD,EACCE,EAAI,EAAGA,EAAIhB,EAAEM,OAAO,EAAGU,IAC5BU,EAAQ,EAAJV,EACJb,EAAKY,GAAOf,EAAG0B,GACfvB,EAAKY,EAAG,GAAMf,EAAG0B,EAAE,GACnBX,GAAMU,EAGPtB,EADAY,EAAiC,GAA1BD,EAAQb,EAAMY,IACTc,EAAMzB,GAClBC,EAAKY,EAAG,GAAMa,EAAM1B,EAErB,CA4CG2B,CAASC,EAAa9B,EAAG,GAAKC,EAAOC,EAAO4B,EAAa3B,EAAK,GAAKU,EAAQC,GACpEX,GAGP4B,EAAmBb,EAAGK,QACtBQ,EAAmBZ,EAAGI,QAEtBX,EAASoB,EAAoBhC,EAAG,GAAKC,EAAOgC,EAAS/B,GAAS8B,EAAoB7B,EAAK,GAAKU,EAAQC,GAC7FX,IAnHV,SAAoBH,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GACjD,IAAIoB,EACAC,EACAC,EACAC,EACAtB,EACAC,EASJ,IAPAkB,EAAQlC,EAAEsC,KACVH,EAAQhC,EAAImC,KAEZF,EAAOpC,EAAEuC,UAAW,GACpBF,EAAOlC,EAAIoC,UAAW,GAEtBxB,EAAKD,EACCE,EAAI,EAAGA,EAAIkB,EAAM5B,OAAQU,IAC9BqB,EAAMF,EAAOpB,EAAIqB,EAAMF,EAAOlB,IAC9BD,GAAMF,EAEPwB,EAAMF,EAAOrB,EAAQb,EAAMY,EAASX,EAErC,CAgGEqC,CAAWrB,EAAIjB,EAAOC,EAAOiB,EAAIN,EAAQC,GAClCX,IAERS,EAASZ,EAAGC,EAAOC,EAAOC,EAAKU,EAAQC,GAChCX,EACR,CChKAqC,EAAAC,EAAA,SAAAxB"} \ No newline at end of file diff --git a/lib/assign.js b/lib/assign.js deleted file mode 100644 index e163316..0000000 --- a/lib/assign.js +++ /dev/null @@ -1,224 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var isComplexDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); -var isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); -var isComplexLike = require( '@stdlib/assert-is-complex-like' ); -var Boolean = require( '@stdlib/boolean-ctor' ); -var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -var reinterpret = require( '@stdlib/strided-base-reinterpret-complex' ); -var reinterpretBoolean = require( '@stdlib/strided-base-reinterpret-boolean' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var real = require( '@stdlib/complex-float64-real' ); -var imag = require( '@stdlib/complex-float64-imag' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = indexed( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function indexed( x, index, value, out, stride, offset ) { - var io; - var i; - - io = offset; - for ( i = 0; i < x.length; i++ ) { - out[ io ] = x[ i ]; - io += stride; - } - out[ offset+(index*stride) ] = value; - return out; -} - -/** -* Copies elements from one accessor array to another accessor array and sets the element at the specified index to a provided value. -* -* @private -* @param {Object} x - input array object -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Object} out - output array object -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array -* -* @example -* var toAccessorArray = require( '@stdlib/array-base-to-accessor-array' ); -* var arraylike2object = require( '@stdlib/array-base-arraylike2object' ); -* -* var x = toAccessorArray( [ 1, 2, 3, 4 ] ); -* -* var out = toAccessorArray( [ 0, 0, 0, 0 ] ); -* var arr = accessors( arraylike2object( x ), 0, 5, arraylike2object( out ), 1, 0 ); -* -* var v = arr.get( 0 ); -* // returns 5 -*/ -function accessors( x, index, value, out, stride, offset ) { - var xdata; - var odata; - var xget; - var oset; - var io; - var i; - - xdata = x.data; - odata = out.data; - - xget = x.accessors[ 0 ]; - oset = out.accessors[ 1 ]; - - io = offset; - for ( i = 0; i < xdata.length; i++ ) { - oset( odata, io, xget( xdata, i ) ); - io += stride; - } - oset( odata, offset+(index*stride), value ); - return odata; -} - -/** -* Copies elements from one complex array to another complex array and sets the element at the specified index to a provided value. -* -* @private -* @param {Collection} x - real-valued floating-point input array view -* @param {integer} index - element index -* @param {ComplexLike} value - replacement value -* @param {Collection} out - real-valued floating-point output array view -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @returns {Collection} output array view -* -* @example -* var Complex128 = require( '@stdlib/complex-float64-ctor' ); -* var Float64Array = require( '@stdlib/array-float64' ); -* -* var x = new Float64Array( [ 1.0, 2.0, 3.0, 4.0 ] ); -* -* var out = new Float64Array( 4 ); -* var arr = complex( x, 0, new Complex128( 5.0, 6.0 ), out, 1, 0 ); -* // returns [ 5.0, 6.0, 3.0, 4.0 ] -*/ -function complex( x, index, value, out, stride, offset ) { - var so; - var io; - var i; - var j; - - so = stride * 2; // multiply by 2, as real-valued array consists of interleaved real and imaginary components - io = offset * 2; - for ( i = 0; i < x.length/2; i++ ) { - j = i * 2; - out[ io ] = x[ j ]; - out[ io+1 ] = x[ j+1 ]; - io += so; - } - io = ( offset+(index*stride) ) * 2; - out[ io ] = real( value ); - out[ io+1 ] = imag( value ); - return out; -} - - -// MAIN // - -/** -* Copies elements from one array to another array and sets the element at the specified index to a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @param {Collection} out - output array -* @param {integer} stride - output array stride -* @param {NonNegativeInteger} offset - output array offset -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ -function assign( x, index, value, out, stride, offset ) { - var xo; - var oo; - - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - xo = arraylike2object( x ); - oo = arraylike2object( out ); - if ( xo.accessorProtocol || oo.accessorProtocol ) { - // Note: we only explicitly support a limited set of dtype-to-dtype pairs, as this function should not be concerned with casting rules, etc. That is left to userland... - if ( - isComplexDataType( xo.dtype ) && - isComplexDataType( oo.dtype ) && - isComplexLike( value ) - ) { - complex( reinterpret( x, 0 ), index, value, reinterpret( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - if ( - isBooleanDataType( xo.dtype ) && - isBooleanDataType( oo.dtype ) - ) { - indexed( reinterpretBoolean( x, 0 ), index, Boolean( value ), reinterpretBoolean( out, 0 ), stride, offset ); // eslint-disable-line max-len - return out; - } - accessors( xo, index, value, oo, stride, offset ); - return out; - } - indexed( x, index, value, out, stride, offset ); - return out; -} - - -// EXPORTS // - -module.exports = assign; diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 0467f3b..0000000 --- a/lib/index.js +++ /dev/null @@ -1,64 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -/** -* Return a new array with the element at the specified index replaced with a provided value. -* -* @module @stdlib/array-base-with -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, -2, -1 ); -* // returns [ 1, 2, -1, 4 ] -* -* @example -* var arrayWith = require( '@stdlib/array-base-with' ); -* -* var x = [ 1, 2, 3, 4 ]; -* -* var out = [ 0, 0, 0, 0 ]; -* var arr = arrayWith.assign( x, 0, 5, out, 1, 0 ); -* // returns [ 5, 2, 3, 4 ] -* -* var bool = ( arr === out ); -* // returns true -*/ - -// MODULES // - -var setReadOnly = require( '@stdlib/utils-define-nonenumerable-read-only-property' ); -var main = require( './main.js' ); -var assign = require( './assign.js' ); - - -// MAIN // - -setReadOnly( main, 'assign', assign ); - - -// EXPORTS // - -module.exports = main; diff --git a/lib/main.js b/lib/main.js deleted file mode 100644 index 65503b1..0000000 --- a/lib/main.js +++ /dev/null @@ -1,94 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var slice = require( '@stdlib/array-base-slice' ); -var resolveSetter = require( '@stdlib/array-base-resolve-setter' ); -var normalizeIndex = require( '@stdlib/ndarray-base-normalize-index' ); -var format = require( '@stdlib/error-tools-fmtprodmsg' ); - - -// FUNCTIONS // - -/** -* Tests whether an object has a specified method. -* -* @private -* @param {Object} obj - input object -* @param {string} method - method name -* @returns {boolean} boolean indicating whether an object has a specified method -* -* @example -* var bool = hasMethod( [], 'map' ); -* // returns true -* -* @example -* var bool = hasMethod( [], 'beep' ); -* // returns false -*/ -function hasMethod( obj, method ) { - return ( typeof obj[ method ] === 'function' ); -} - - -// MAIN // - -/** -* Returns a new array with the element at the specified index replaced with a provided value. -* -* @param {Collection} x - input array -* @param {integer} index - element index -* @param {*} value - replacement value -* @throws {RangeError} second argument must not exceed array bounds -* @returns {Collection} output array -* -* @example -* var x = [ 1, 2, 3, 4 ]; -* -* var v = arrayWith( x, 0, 5 ); -* // returns [ 5, 2, 3, 4 ] -* -* v = arrayWith( x, 1, 6 ); -* // returns [ 1, 6, 3, 4 ] -* -* v = arrayWith( x, -2, 7 ); -* // returns [ 1, 2, 7, 4 ] -*/ -function arrayWith( x, index, value ) { - var out; - var set; - if ( hasMethod( x, 'with' ) ) { - return x.with( index, value ); - } - index = normalizeIndex( index, x.length-1 ); - if ( index < 0 ) { - throw new RangeError( format( 'invalid argument. Index argument is out-of-bounds. Value: `%d`.', index ) ); - } - out = slice( x, 0, x.length ); - set = resolveSetter( out ); - set( out, index, value ); - return out; -} - - -// EXPORTS // - -module.exports = arrayWith; diff --git a/package.json b/package.json index a0cabb3..e9a77f9 100644 --- a/package.json +++ b/package.json @@ -3,31 +3,8 @@ "version": "0.2.1", "description": "Return a new array with the element at the specified index replaced with a provided value.", "license": "Apache-2.0", - "author": { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - }, - "contributors": [ - { - "name": "The Stdlib Authors", - "url": "https://github.com/stdlib-js/stdlib/graphs/contributors" - } - ], - "main": "./lib", - "directories": { - "benchmark": "./benchmark", - "doc": "./docs", - "example": "./examples", - "lib": "./lib", - "test": "./test" - }, - "types": "./docs/types", - "scripts": { - "test": "make test", - "test-cov": "make test-cov", - "examples": "make examples", - "benchmark": "make benchmark" - }, + "type": "module", + "main": "./index.mjs", "homepage": "https://stdlib.io", "repository": { "type": "git", @@ -36,64 +13,6 @@ "bugs": { "url": "https://github.com/stdlib-js/stdlib/issues" }, - "dependencies": { - "@stdlib/array-base-arraylike2object": "^0.2.2", - "@stdlib/array-base-assert-is-boolean-data-type": "^0.0.2", - "@stdlib/array-base-assert-is-complex-floating-point-data-type": "^0.2.2", - "@stdlib/array-base-resolve-setter": "^0.2.3", - "@stdlib/array-base-slice": "^0.3.1", - "@stdlib/assert-is-complex-like": "^0.2.4", - "@stdlib/boolean-ctor": "^0.2.3", - "@stdlib/complex-float64-imag": "^0.1.2", - "@stdlib/complex-float64-real": "^0.1.2", - "@stdlib/ndarray-base-normalize-index": "^0.2.3", - "@stdlib/strided-base-reinterpret-boolean": "^0.0.3", - "@stdlib/strided-base-reinterpret-complex": "^0.1.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3", - "@stdlib/types": "^0.5.1", - "@stdlib/utils-define-nonenumerable-read-only-property": "^0.2.3", - "@stdlib/error-tools-fmtprodmsg": "^0.2.3" - }, - "devDependencies": { - "@stdlib/array-base-accessor": "^0.2.3", - "@stdlib/array-base-ones": "^0.2.3", - "@stdlib/array-base-zeros": "^0.2.3", - "@stdlib/array-bool": "^0.1.2", - "@stdlib/array-complex128": "^0.3.2", - "@stdlib/array-float64": "^0.2.3", - "@stdlib/array-int32": "^0.2.3", - "@stdlib/array-zeros": "^0.2.3", - "@stdlib/assert-has-own-property": "^0.2.3", - "@stdlib/assert-is-array": "^0.2.3", - "@stdlib/assert-is-complex128array": "^0.2.3", - "@stdlib/assert-is-equal-booleanarray": "^0.1.1", - "@stdlib/assert-is-float64array": "^0.2.3", - "@stdlib/assert-is-int32array": "^0.2.3", - "@stdlib/assert-is-method": "^0.2.3", - "@stdlib/assert-is-same-complex128array": "^0.2.3", - "@stdlib/complex-float64-ctor": "^0.1.2", - "@stdlib/math-base-special-pow": "^0.3.1", - "@stdlib/random-array-discrete-uniform": "^0.2.2", - "tape": "git+https://github.com/kgryte/tape.git#fix/globby", - "istanbul": "^0.4.1", - "tap-min": "git+https://github.com/Planeshifter/tap-min.git", - "@stdlib/bench-harness": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0", - "npm": ">2.7.0" - }, - "os": [ - "aix", - "darwin", - "freebsd", - "linux", - "macos", - "openbsd", - "sunos", - "win32", - "windows" - ], "keywords": [ "stdlib", "base", diff --git a/stats.html b/stats.html new file mode 100644 index 0000000..cdd05f7 --- /dev/null +++ b/stats.html @@ -0,0 +1,4842 @@ + + + + + + + + Rollup Visualizer + + + +
+ + + + + diff --git a/test/dist/test.js b/test/dist/test.js deleted file mode 100644 index a8a9c60..0000000 --- a/test/dist/test.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2023 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var main = require( './../../dist' ); - - -// TESTS // - -tape( 'main export is defined', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( main !== void 0, true, 'main export is defined' ); - t.end(); -}); diff --git a/test/test.assign.js b/test/test.assign.js deleted file mode 100644 index acf8672..0000000 --- a/test/test.assign.js +++ /dev/null @@ -1,491 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var BooleanArray = require( '@stdlib/array-bool' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isEqualBooleanArray = require( '@stdlib/assert-is-equal-booleanarray' ); -var zeros = require( '@stdlib/array-zeros' ); -var arrayWith = require( './../lib/assign.js' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var out; - var x; - var i; - - x = [ 1, 2, 3 ]; - out = zeros( x.length, 'generic' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - out = zeros( x.length, 'float64' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - out = zeros( x.length, 'int32' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - out = zeros( x.length, 'complex128' ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ), out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var out; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - out = new AccessorArray( zeros( x.length, 'generic' ) ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var out; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0, out, 1, 0 ); - }; - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (generic)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = [ 1, 2, 3 ]; - - out = zeros( x.length, 'generic' ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'generic' ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (float64)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - out = zeros( x.length, 'float64' ); - expected = new Float64Array( [ 5.0, 2.0, 3.0 ] ); - actual = arrayWith( x, 0, 5.0, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 1.0, 0.0, 5.0, 0.0, 3.0, 0.0 ] ); - actual = arrayWith( x, 1, 5.0, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'float64' ); - expected = new Float64Array( [ 0.0, 5.0, 0.0, 2.0, 0.0, 1.0 ] ); - actual = arrayWith( x, 2, 5.0, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (int32)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - out = zeros( x.length, 'int32' ); - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 1, 0, 5, 0, 3, 0 ] ); - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - out = zeros( x.length*2, 'int32' ); - expected = new Int32Array( [ 0, 5, 0, 2, 0, 1 ] ); - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (complex128)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - out = zeros( x.length, 'complex128' ); - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ), out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 1.0, 2.0, 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 5.0, 6.0, 0.0, 0.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ), out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - out = zeros( x.length*2, 'complex128' ); - expected = new Complex128Array( [ 0.0, 0.0, 7.0, 8.0, 0.0, 0.0, 3.0, 4.0, 0.0, 0.0, 1.0, 2.0 ] ); // eslint-disable-line max-len - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ), out, -2, out.length-1 ); // eslint-disable-line max-len - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (bool)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new BooleanArray( [ 0, 0, 1, 1 ] ); - - out = new BooleanArray( x.length ); - expected = new BooleanArray( [ 1, 0, 1, 1 ] ); - actual = arrayWith( x, 0, true, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 0, 1, 0, 1, 0, 1, 0 ] ); - actual = arrayWith( x, 1, true, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - out = new BooleanArray( x.length*2 ); - expected = new BooleanArray( [ 0, 1, 0, 0, 0, 0, 0, 0 ] ); - actual = arrayWith( x, 2, false, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - t.strictEqual( isEqualBooleanArray( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (accessors)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - out = new AccessorArray( zeros( x.length, 'generic' ) ); - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = new AccessorArray( zeros( x.length*2, 'generic' ) ); - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual.get( i ), expected[ i ], 'returns expected value' ); - } - } -}); - -tape( 'the function copies elements to another array and sets an element at a specified index to a provided value (array-like)', function test( t ) { - var expected; - var actual; - var out; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - out = { - 'length': 3, - '0': 0, - '1': 0, - '2': 0 - }; - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5, out, 1, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 1, 0, 5, 0, 3, 0 ]; - actual = arrayWith( x, 1, 5, out, 2, 0 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - out = { - 'length': 6, - '0': 0, - '1': 0, - '2': 0, - '3': 0, - '4': 0, - '5': 0 - }; - expected = [ 0, 5, 0, 2, 0, 1 ]; - actual = arrayWith( x, 2, 5, out, -2, out.length-1 ); - - t.strictEqual( actual, out, 'returns expected value' ); - isEqual( actual, expected ); - - t.end(); - - function isEqual( actual, expected ) { - var i; - for ( i = 0; i < expected.length; i++ ) { - t.strictEqual( actual[ i ], expected[ i ], 'returns expected value' ); - } - } -}); diff --git a/test/test.js b/test/test.js deleted file mode 100644 index 9620e2b..0000000 --- a/test/test.js +++ /dev/null @@ -1,41 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var hasOwnProp = require( '@stdlib/assert-has-own-property' ); -var hasMethod = require( '@stdlib/assert-is-method' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'attached to the main export is an `assign` method', function test( t ) { - t.strictEqual( hasOwnProp( arrayWith, 'assign' ), true, 'returns expected value' ); - t.strictEqual( hasMethod( arrayWith, 'assign' ), true, 'returns expected value' ); - t.end(); -}); diff --git a/test/test.main.js b/test/test.main.js deleted file mode 100644 index bc197d7..0000000 --- a/test/test.main.js +++ /dev/null @@ -1,401 +0,0 @@ -/** -* @license Apache-2.0 -* -* Copyright (c) 2024 The Stdlib Authors. -* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an "AS IS" BASIS, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -'use strict'; - -// MODULES // - -var tape = require( 'tape' ); -var Int32Array = require( '@stdlib/array-int32' ); -var Float64Array = require( '@stdlib/array-float64' ); -var Complex128Array = require( '@stdlib/array-complex128' ); -var AccessorArray = require( '@stdlib/array-base-accessor' ); -var Complex128 = require( '@stdlib/complex-float64-ctor' ); -var isSameComplex128Array = require( '@stdlib/assert-is-same-complex128array' ); -var isArray = require( '@stdlib/assert-is-array' ); -var isFloat64Array = require( '@stdlib/assert-is-float64array' ); -var isInt32Array = require( '@stdlib/assert-is-int32array' ); -var isComplex128Array = require( '@stdlib/assert-is-complex128array' ); -var arrayWith = require( './../lib' ); - - -// TESTS // - -tape( 'main export is a function', function test( t ) { - t.ok( true, __filename ); - t.strictEqual( typeof arrayWith, 'function', 'main export is a function' ); - t.end(); -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (generic)', function test( t ) { - var values; - var x; - var i; - - x = [ 1, 2, 3 ]; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (float64)', function test( t ) { - var values; - var x; - var i; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0.0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (int32)', function test( t ) { - var values; - var x; - var i; - - x = new Int32Array( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (complex128)', function test( t ) { - var values; - var x; - var i; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, new Complex128( 0.0, 0.0 ) ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (accessors)', function test( t ) { - var values; - var x; - var i; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is out-of-bounds (array-like)', function test( t ) { - var values; - var x; - var i; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - values = [ - 10, - 100, - 1000, - -10, - -100, - -1000 - ]; - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[ i ] ), RangeError, 'throws an error when provided ' + values[ i ] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - arrayWith( x, value, 0 ); - }; - } -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (generic)', function test( t ) { - var expected; - var actual; - var x; - - x = [ 1, 2, 3 ]; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (float64)', function test( t ) { - var expected; - var actual; - var x; - - x = new Float64Array( [ 1.0, 2.0, 3.0 ] ); - - expected = [ 5.0, 2.0, 3.0 ]; - actual = arrayWith( x, 0, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 5.0, 3.0 ]; - actual = arrayWith( x, 1, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1.0, 2.0, 5.0 ]; - actual = arrayWith( x, 2, 5.0 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isFloat64Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (int32)', function test( t ) { - var expected; - var actual; - var x; - - x = new Int32Array( [ 1, 2, 3 ] ); - - expected = new Int32Array( [ 5, 2, 3 ] ); - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 5, 3 ] ); - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = new Int32Array( [ 1, 2, 5 ] ); - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isInt32Array( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (complex128)', function test( t ) { - var expected; - var actual; - var x; - - x = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] ); - - expected = new Complex128Array( [ 7.0, 8.0, 3.0, 4.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 0, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 7.0, 8.0, 5.0, 6.0 ] ); - actual = arrayWith( x, 1, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - expected = new Complex128Array( [ 1.0, 2.0, 3.0, 4.0, 7.0, 8.0 ] ); - actual = arrayWith( x, 2, new Complex128( 7.0, 8.0 ) ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isComplex128Array( actual ), true, 'returns expected value' ); - t.strictEqual( isSameComplex128Array( actual, expected ), true, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (accessors)', function test( t ) { - var expected; - var actual; - var x; - - x = new AccessorArray( [ 1, 2, 3 ] ); - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -}); - -tape( 'the function returns a new array with an element at a specified index containing a provided value (array-like)', function test( t ) { - var expected; - var actual; - var x; - - x = { - 'length': 3, - '0': 1, - '1': 2, - '2': 3 - }; - - expected = [ 5, 2, 3 ]; - actual = arrayWith( x, 0, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 5, 3 ]; - actual = arrayWith( x, 1, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - expected = [ 1, 2, 5 ]; - actual = arrayWith( x, 2, 5 ); - - t.notEqual( actual, x, 'returns different reference' ); - t.strictEqual( isArray( actual ), true, 'returns expected value' ); - t.deepEqual( actual, expected, 'returns expected value' ); - - t.end(); -});