diff --git a/.github/.keepalive b/.github/.keepalive new file mode 100644 index 0000000..96503de --- /dev/null +++ b/.github/.keepalive @@ -0,0 +1 @@ +2023-11-01T01:05:15.639Z diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b17435b..0037bdb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -182,7 +182,11 @@ jobs: fi # Trim leading and trailing whitespace: dep=$(echo "$dep" | xargs) - version="^$(npm view $dep version)" + version="$(npm view $dep version)" + if [[ -z "$version" ]]; then + continue + fi + version="^$version" jq -r --arg dep "$dep" --arg version "$version" '.dependencies[$dep] = $version' package.json > package.json.tmp mv package.json.tmp package.json done @@ -192,7 +196,11 @@ jobs: fi # Trim leading and trailing whitespace: dep=$(echo "$dep" | xargs) - version="^$(npm view $dep version)" + version="$(npm view $dep version)" + if [[ -z "$version" ]]; then + continue + fi + version="^$version" jq -r --arg dep "$dep" --arg version "$version" '.devDependencies[$dep] = $version' package.json > package.json.tmp mv package.json.tmp package.json done diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 93c4bde..0dae4fe 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -37,3 +37,4 @@ Stephannie Jiménez Gacha Yernar Yergaziyev orimiles5 <97595296+orimiles5@users.noreply.github.com> rei2hu +Robert Gislason diff --git a/package.json b/package.json index 9fbf975..e4efda0 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "devDependencies": { "@stdlib/assert-is-nan": "^0.1.1", "@stdlib/bench": "^0.1.0", - "@stdlib/math-base-special-ceil": "^0.1.0", + "@stdlib/math-base-special-ceil": "^0.1.1", "@stdlib/random-base-randu": "^0.1.0", "@stdlib/string-repeat": "^0.1.0", "@stdlib/utils-noop": "^0.1.1", diff --git a/test/dist/test.js b/test/dist/test.js index d658bf5..a8a9c60 100644 --- a/test/dist/test.js +++ b/test/dist/test.js @@ -1,7 +1,7 @@ /** * @license Apache-2.0 * -* Copyright (c) 2018 The Stdlib Authors. +* 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. @@ -21,396 +21,13 @@ // MODULES // var tape = require( 'tape' ); -var noop = require( '@stdlib/utils-noop' ); -var ifthenAsync = require( './../../dist' ); +var main = require( './../../dist' ); // TESTS // -tape( 'main export is a function', function test( t ) { +tape( 'main export is defined', function test( t ) { t.ok( true, __filename ); - t.strictEqual( typeof ifthenAsync, 'function', 'main export is a function' ); + t.strictEqual( main !== void 0, true, 'main export is defined' ); t.end(); }); - -tape( 'the function throws an error if provided a first argument which is not a function', function test( t ) { - var values; - var i; - - values = [ - '5', - 5, - NaN, - true, - false, - null, - void 0, - [], - {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - ifthenAsync( value, noop, noop, noop ); - }; - } -}); - -tape( 'the function throws an error if provided a second argument which is not a function', function test( t ) { - var values; - var i; - - values = [ - '5', - 5, - NaN, - true, - false, - null, - void 0, - [], - {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - ifthenAsync( noop, value, noop, noop ); - }; - } -}); - -tape( 'the function throws an error if provided a third argument which is not a function', function test( t ) { - var values; - var i; - - values = [ - '5', - 5, - NaN, - true, - false, - null, - void 0, - [], - {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - ifthenAsync( noop, noop, value, noop ); - }; - } -}); - -tape( 'the function throws an error if provided a last argument which is not a function', function test( t ) { - var values; - var i; - - values = [ - '5', - 5, - NaN, - true, - false, - null, - void 0, - [], - {} - ]; - - for ( i = 0; i < values.length; i++ ) { - t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] ); - } - t.end(); - - function badValue( value ) { - return function badValue() { - ifthenAsync( noop, noop, noop, value ); - }; - } -}); - -tape( 'if a predicate function returns a truthy value, the function invokes the second argument', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, true ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'beep' ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'boop' ); - } - } - - function done( error, result ) { - if ( error ) { - t.fail( error.message ); - } else { - t.strictEqual( result, 'beep', 'returns expected value' ); - } - t.end(); - } -}); - -tape( 'if a predicate function returns a falsy value, the function invokes the third argument', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, false ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'beep' ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'boop' ); - } - } - - function done( error, result ) { - if ( error ) { - t.fail( error.message ); - } else { - t.strictEqual( result, 'boop', 'returns expected value' ); - } - t.end(); - } -}); - -tape( 'if a predicate function returns an error, the function returns the error', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( new Error( 'beep' ) ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'beep' ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'boop' ); - } - } - - function done( error ) { - if ( error ) { - t.pass( error.message ); - } else { - t.fail( 'should return an error' ); - } - t.end(); - } -}); - -tape( 'if an invoked function returns an error, the function returns the error (truthy)', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, true ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( new Error( 'beep' ) ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'boop' ); - } - } - - function done( error ) { - if ( error ) { - t.pass( error.message ); - } else { - t.fail( 'should return an error' ); - } - t.end(); - } -}); - -tape( 'if an invoked function returns an error, the function returns the error (falsy)', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, false ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 'beep' ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( new Error( 'boop' ) ); - } - } - - function done( error ) { - if ( error ) { - t.pass( error.message ); - } else { - t.fail( 'should return an error' ); - } - t.end(); - } -}); - -tape( 'the function supports providing multiple return values (truthy)', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, true ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 1, 2, 3 ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 4, 5, 6 ); - } - } - - function done( error, a, b, c ) { - if ( error ) { - t.fail( error.message ); - } else { - t.strictEqual( a, 1, 'returns expected value' ); - t.strictEqual( b, 2, 'returns expected value' ); - t.strictEqual( c, 3, 'returns expected value' ); - } - t.end(); - } -}); - -tape( 'the function supports providing multiple return values (falsy)', function test( t ) { - ifthenAsync( predicate, x, y, done ); - - function predicate( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, false ); - } - } - - function x( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 1, 2, 3 ); - } - } - - function y( clbk ) { - setTimeout( onTimeout, 0 ); - function onTimeout() { - clbk( null, 4, 5, 6 ); - } - } - - function done( error, a, b, c ) { - if ( error ) { - t.fail( error.message ); - } else { - t.strictEqual( a, 4, 'returns expected value' ); - t.strictEqual( b, 5, 'returns expected value' ); - t.strictEqual( c, 6, 'returns expected value' ); - } - t.end(); - } -}); - -tape( 'the function does not guarantee asynchronous execution', function test( t ) { - var i = 0; - ifthenAsync( predicate, x, y, done ); - i = 1; - - function predicate( clbk ) { - clbk( null, true ); - } - - function x( clbk ) { - clbk( null, 'beep' ); - } - - function y( clbk ) { - clbk( null, 'boop' ); - } - - function done( error, result ) { - if ( error ) { - t.fail( error.message ); - } else { - t.strictEqual( result, 'beep', 'returns expected value' ); - } - t.strictEqual( i, 0, 'releases the zalgo' ); - t.end(); - } -});