Skip to content

Commit f25302c

Browse files
committed
feat(any-by): add in-flight status object for observability
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: na - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: passed - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: na - task: lint_c_examples status: na - task: lint_c_benchmarks status: na - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: passed - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 7b4c923 commit f25302c

1 file changed

Lines changed: 14 additions & 38 deletions

File tree

  • lib/node_modules/@stdlib/utils/async/any-by/lib

lib/node_modules/@stdlib/utils/async/any-by/lib/factory.js

Lines changed: 14 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
// MODULES //
2222

2323
var isFunction = require( '@stdlib/assert/is-function' );
24+
var isCollection = require( '@stdlib/assert/is-collection' );
2425
var format = require( '@stdlib/string/format' );
2526
var PINF = require( '@stdlib/constants/float64/pinf' );
2627
var validate = require( './validate.js' );
2728
var limit = require( './limit.js' );
28-
var createTimer = require( './../internal/instrument.js' );
2929

3030

3131
// MAIN //
@@ -49,19 +49,10 @@ var createTimer = require( './../internal/instrument.js' );
4949
* @returns {Function} function which invokes the predicate function once for each element in a collection
5050
*
5151
* @example
52-
* var readFile = require( '@stdlib/fs/read-file' );
53-
*
54-
* function predicate( file, next ) {
55-
* var opts = {
56-
* 'encoding': 'utf8'
57-
* };
58-
* readFile( file, opts, onFile );
59-
*
60-
* function onFile( error ) {
61-
* if ( error ) {
62-
* return next( null, false );
63-
* }
64-
* next( null, true );
52+
* function predicate( value, index, next ) {
53+
* setTimeout( onTimeout, value );
54+
* function onTimeout() {
55+
* next( null, false );
6556
* }
6657
* }
6758
*
@@ -73,25 +64,22 @@ var createTimer = require( './../internal/instrument.js' );
7364
* var anyByAsync = factory( opts, predicate );
7465
*
7566
* // Create a collection over which to iterate:
76-
* var files = [
77-
* './beep.js',
78-
* './boop.js'
79-
* ];
67+
* var arr = [ 3000, 2500, 1000 ];
8068
*
8169
* // Define a callback which handles results:
8270
* function done( error, bool ) {
8371
* if ( error ) {
8472
* throw error;
8573
* }
8674
* if ( bool ) {
87-
* console.log( 'Successfully read at least one file.' );
75+
* console.log( 'At least one element passed.' );
8876
* } else {
89-
* console.log( 'Unable to read any files.' );
77+
* console.log( 'No elements passed.' );
9078
* }
9179
* }
9280
*
93-
* // Try to read each element in `files`:
94-
* anyByAsync( files, done );
81+
* // Try to invoke the predicate for each element in `arr`:
82+
* anyByAsync( arr, done );
9583
*/
9684
function factory( options, predicate ) {
9785
var opts;
@@ -129,19 +117,14 @@ function factory( options, predicate ) {
129117
* @returns {void}
130118
*/
131119
function anyByAsync( collection, done ) {
132-
<<<<<<< HEAD
133-
var timer = createTimer();
120+
var status;
134121

135122
if ( !isCollection( collection ) ) {
136123
throw new TypeError( format( 'invalid argument. First argument must be a collection. Value: `%s`.', collection ) );
137124
}
138125
if ( !isFunction( done ) ) {
139126
throw new TypeError( format( 'invalid argument. Last argument must be a function. Value: `%s`.', done ) );
140127
}
141-
return limit( collection, opts, f, clbk );
142-
=======
143-
var status;
144-
145128
status = {
146129
'status': 'pending',
147130
'ndone': 0,
@@ -152,18 +135,18 @@ function factory( options, predicate ) {
152135
limit( collection, opts, wrapper, clbk );
153136

154137
return status;
155-
>>>>>>> f1a651cded5 (feat(any-by): add in-flight status object for observability)
156138

157139
/**
158140
* Wraps the predicate function to track the number of completed invocations.
159141
*
160142
* @private
161143
* @param {*} value - collection element
144+
* @param {NonNegativeInteger} index - element index
162145
* @param {Callback} next - callback to invoke upon predicate completion
163146
* @returns {void}
164147
*/
165-
function wrapper( value, next ) {
166-
f( value, onResult );
148+
function wrapper( value, index, next ) {
149+
f( value, index, onResult );
167150

168151
/**
169152
* Callback invoked upon predicate completion.
@@ -188,19 +171,12 @@ function factory( options, predicate ) {
188171
* @returns {void}
189172
*/
190173
function clbk( error, bool ) {
191-
var duration = timer();
192174
if ( error ) {
193-
<<<<<<< HEAD
194-
return done( error, false, duration );
195-
}
196-
done( null, bool, duration );
197-
=======
198175
status.status = 'fail';
199176
return done( error, false );
200177
}
201178
status.status = 'ok';
202179
done( null, bool );
203-
>>>>>>> f1a651cded5 (feat(any-by): add in-flight status object for observability)
204180
}
205181
}
206182
}

0 commit comments

Comments
 (0)