diff --git a/.github/workflows/test_published_package.yml b/.github/workflows/test_published_package.yml new file mode 100644 index 0000000..4907365 --- /dev/null +++ b/.github/workflows/test_published_package.yml @@ -0,0 +1,105 @@ +#/ +# @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. +#/ + +# Workflow name: +name: test_published_package + +# Workflow triggers: +on: + # Run workflow on a weekly schedule: + schedule: + # * is a special character in YAML so you have to quote this string + - cron: '30 6 * * 1' + + # Run workflow upon completion of `publish` workflow run: + workflow_run: + workflows: ["publish"] + types: [completed] + + # Allow workflow to be manually run: + workflow_dispatch: + +# Workflow jobs: +jobs: + test-published: + # Define a display name: + name: 'Test running examples of published package' + + # Define the type of virtual host machine: + runs-on: ubuntu-latest + + # Define environment variables: + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + + # Run workflow job if `publish` workflow run is successful or when the workflow is manually run: + if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }} + + # Define the job's steps: + steps: + # Checkout the repository: + - name: 'Checkout repository' + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + + # Install Node.js: + - name: 'Install Node.js' + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 + with: + node-version: 20 + timeout-minutes: 5 + + # Create test directory and run examples: + - name: 'Create test directory and run examples' + run: | + cd .. + mkdir test-published + cd test-published + + # Copy example file: + cp $GITHUB_WORKSPACE/examples/index.js . + + # Create a minimal package.json + echo '{ + "name": "test-published", + "version": "1.0.0", + "main": "index.js", + "dependencies": {} + }' > package.json + + # Get package name and modify example file: + PACKAGE_NAME=$(jq -r '.name' $GITHUB_WORKSPACE/package.json) + ESCAPED_PACKAGE_NAME=$(echo "$PACKAGE_NAME" | sed 's/[\/&]/\\&/g') + + sed -i "s/require( '.\/..\/lib' )/require( '$ESCAPED_PACKAGE_NAME' )/g" index.js + + # Extract and install dependencies: + DEPS=$(grep -oP "require\(\s*'([^']+)'\s*\)" index.js | sed "s/require(\s*'//" | sed "s/'\s*)//" | grep -v "^\.") + for dep in $DEPS; do + npm install $dep --save + done + + # Run the example: + node index.js + + # Send Slack notification if job fails: + - name: 'Send notification to Slack in case of failure' + uses: 8398a7/action-slack@28ba43ae48961b90635b50953d216767a6bea486 # v3.16.2 + with: + status: ${{ job.status }} + channel: '#npm-ci' + if: failure() diff --git a/CHANGELOG.md b/CHANGELOG.md index a85c1cc..20ab2bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@
-## Unreleased (2024-10-08) +## Unreleased (2024-11-20)
@@ -20,6 +20,7 @@ ##### Features +- [`8b1548f`](https://github.com/stdlib-js/stdlib/commit/8b1548fb45c1ff131f5edac20cb984344a2d28ec) - update namespace TypeScript declarations [(#3190)](https://github.com/stdlib-js/stdlib/pull/3190) - [`43aa58f`](https://github.com/stdlib-js/stdlib/commit/43aa58f81dcad604f11a5715a1546c015b0a9623) - add `isByteOrder` to namespace - [`81b39fe`](https://github.com/stdlib-js/stdlib/commit/81b39fec06b8575149b2ab1b834a7577e6ac5e5d) - add `hasEqualValuesIndexed` to namespace - [`cc56538`](https://github.com/stdlib-js/stdlib/commit/cc5653806325fe7b63037dfa49108be8016de3fc) - add `hasEqualValues` to namespace @@ -28,6 +29,18 @@ +
+ +##### BREAKING CHANGES + +- [`8b1548f`](https://github.com/stdlib-js/stdlib/commit/8b1548fb45c1ff131f5edac20cb984344a2d28ec): update namespace declarations + + - To migrate, users should consult the corresponding packages containing the respective implementations to determine what is breaking. The primary breakages come from the `blas/*` namespace, where we recently refactored how top-level BLAS APIs operate on input arguments. + +
+ + +
@@ -104,6 +117,18 @@ +
+ +### BREAKING CHANGES + +- [`8b1548f`](https://github.com/stdlib-js/stdlib/commit/8b1548fb45c1ff131f5edac20cb984344a2d28ec): update namespace declarations + + - To migrate, users should consult the corresponding packages containing the respective implementations to determine what is breaking. The primary breakages come from the `blas/*` namespace, where we recently refactored how top-level BLAS APIs operate on input arguments. + +
+ + +
### Contributors @@ -124,6 +149,7 @@ A total of 3 people contributed to this release. Thank you to the following cont
+- [`8b1548f`](https://github.com/stdlib-js/stdlib/commit/8b1548fb45c1ff131f5edac20cb984344a2d28ec) - **feat:** update namespace TypeScript declarations [(#3190)](https://github.com/stdlib-js/stdlib/pull/3190) _(by stdlib-bot, Philipp Burckhardt)_ - [`c00f27a`](https://github.com/stdlib-js/stdlib/commit/c00f27afb4b1853a7f4377fbbab7aec1dab9e34c) - **docs:** improve examples of `array/base/assert` namespace _(by Soumajit Chatterjee, Philipp Burckhardt)_ - [`43aa58f`](https://github.com/stdlib-js/stdlib/commit/43aa58f81dcad604f11a5715a1546c015b0a9623) - **feat:** add `isByteOrder` to namespace _(by Athan Reines)_ - [`b18478e`](https://github.com/stdlib-js/stdlib/commit/b18478e236e9cb6991d5a0f952d217e043e46587) - **feat:** add `array/base/assert/is-byte-order` _(by Athan Reines)_ diff --git a/CONTRIBUTORS b/CONTRIBUTORS index d74d10f..f09b30e 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3,6 +3,7 @@ # Contributors listed in alphabetical order. Aayush Khanna +AbhijitRaut04 <121740684+AbhijitRaut04@users.noreply.github.com> Adarsh Palaskar Aditya Sapra AgPriyanshu18 <113460573+AgPriyanshu18@users.noreply.github.com> @@ -22,12 +23,14 @@ Dan Rose Daniel Killenberger Daniel Yu <40680511+Daniel777y@users.noreply.github.com> Debashis Maharana +Dominic Lim <46486515+domlimm@users.noreply.github.com> Dominik Moritz Dorrin Sotoudeh EuniceSim142 <77243938+EuniceSim142@users.noreply.github.com> Frank Kovacs Golden Kumar <103646877+AuenKr@users.noreply.github.com> Gunj Joshi +Gururaj Gurram <143020143+gururaj1512@users.noreply.github.com> HarshaNP <96897754+GittyHarsha@users.noreply.github.com> Harshita Kalani Hridyanshu <124202756+HRIDYANSHU054@users.noreply.github.com> @@ -44,6 +47,7 @@ Justin Dennison Kaif Mohd Karthik Prakash <116057817+skoriop@users.noreply.github.com> Khaldon +Kohantika Nath <145763549+kohantikanath@users.noreply.github.com> Krishnendu Das <86651039+itskdhere@users.noreply.github.com> Lovelin <100030865+lovelindhoni@users.noreply.github.com> Manik Sharma @@ -55,6 +59,7 @@ Mohammad Kaif <98884589+Kaif987@users.noreply.github.com> Momtchil Momtchev Muhammad Haris Naresh Jagadeesan +Neeraj Pathak NightKnight Nithin Katta <88046362+nithinkatta@users.noreply.github.com> Nourhan Hasan <109472010+TheNourhan@users.noreply.github.com> @@ -65,8 +70,10 @@ Prajwal Kulkarni Pranav Goswami Praneki <97080887+PraneGIT@users.noreply.github.com> Pratik <97464067+Pratik772846@users.noreply.github.com> +Pratyush Kumar Chouhan Priyansh <88396544+itsspriyansh@users.noreply.github.com> Pushpendra Chandravanshi +RISHAV <115060907+rishav2404@users.noreply.github.com> Raunak Kumar Gupta Rejoan Sardar <119718513+Rejoan-Sardar@users.noreply.github.com> Ricky Reusser @@ -74,9 +81,11 @@ Ridam Garg <67867319+RidamGarg@users.noreply.github.com> Robert Gislason Roman Stetsyk <25715951+romanstetsyk@users.noreply.github.com> Rutam <138517416+performant23@users.noreply.github.com> +Ruthwik Chikoti <145591715+ruthwikchikoti@users.noreply.github.com> Ryan Seal Sai Srikar Dumpeti <80447788+the-r3aper7@users.noreply.github.com> SarthakPaandey <145528240+SarthakPaandey@users.noreply.github.com> +Saurabh Singh Seyyed Parsa Neshaei Shashank Shekhar Singh Shivam <11shivam00@gmail.com> @@ -94,6 +103,7 @@ Tudor Pagu <104032457+tudor-pagu@users.noreply.github.com> Tufailahmed Bargir <142114244+Tufailahmed-Bargir@users.noreply.github.com> Utkarsh Utkarsh Raj +UtkershBasnet <119008923+UtkershBasnet@users.noreply.github.com> Vaibhav Patel <98279986+noobCoderVP@users.noreply.github.com> Varad Gupta Xiaochuan Ye diff --git a/docs/types/index.d.ts b/docs/types/index.d.ts index 0c01238..3fcbbb1 100644 --- a/docs/types/index.d.ts +++ b/docs/types/index.d.ts @@ -21,10 +21,13 @@ /* eslint-disable max-lines */ import contains = require( '@stdlib/array-base-assert-contains' ); +import hasEqualValues = require( '@stdlib/array-base-assert-has-equal-values' ); +import hasEqualValuesIndexed = require( '@stdlib/array-base-assert-has-equal-values-indexed' ); import hasSameValues = require( '@stdlib/array-base-assert-has-same-values' ); import isAccessorArray = require( '@stdlib/array-base-assert-is-accessor-array' ); import isBooleanDataType = require( '@stdlib/array-base-assert-is-boolean-data-type' ); import isBooleanArray = require( '@stdlib/array-base-assert-is-booleanarray' ); +import isByteOrder = require( '@stdlib/array-base-assert-is-byte-order' ); import isComplexFloatingPointDataType = require( '@stdlib/array-base-assert-is-complex-floating-point-data-type' ); import isComplexTypedArray = require( '@stdlib/array-base-assert-is-complex-typed-array' ); import isComplex64Array = require( '@stdlib/array-base-assert-is-complex64array' ); @@ -69,6 +72,46 @@ interface Namespace { */ contains: typeof contains; + /** + * Tests if two arrays have equal values. + * + * ## Notes + * + * - If provided arrays of unequal length, the function returns `false`. + * + * @param x - first input array + * @param y - second input array + * @returns boolean indicating whether both arrays have equal values + * + * @example + * var x = [ 0, 0, 1, 0 ]; + * var y = [ 0, 0, 1, 0 ]; + * + * var out = ns.hasEqualValues( x, y ); + * // returns true + */ + hasEqualValues: typeof hasEqualValues; + + /** + * Tests if two indexed arrays have equal values. + * + * ## Notes + * + * - If provided arrays of unequal length, the function returns `false`. + * + * @param x - first input array + * @param y - second input array + * @returns boolean indicating whether both arrays have equal values + * + * @example + * var x = [ 0, 0, 1, 0 ]; + * var y = [ 0, 0, 1, 0 ]; + * + * var out = ns.hasEqualValuesIndexed( x, y ); + * // returns true + */ + hasEqualValuesIndexed: typeof hasEqualValuesIndexed; + /** * Tests if two arrays have the same values. * @@ -178,6 +221,24 @@ interface Namespace { */ isBooleanArray: typeof isBooleanArray; + /** + * Tests whether an input value is a supported array byte order. + * + * @param v - value to test + * @returns boolean indicating whether an input value is a supported array byte order + * + * @example + * var bool = ns.isByteOrder( 'little-endian' ); + * // returns true + * + * bool = ns.isByteOrder( 'big-endian' ); + * // returns true + * + * bool = ns.isByteOrder( 'foo' ); + * // returns false + */ + isByteOrder: typeof isByteOrder; + /** * Tests whether an input value is a supported array complex-valued floating-point data type. *