Socket
Socket
Sign inDemoInstall

async-selector

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-selector - npm Package Compare versions

Comparing version 1.0.12 to 1.0.13

package-lock.json

76

__tests__/index.test.js

@@ -848,2 +848,76 @@ import createAsyncSelector from '../src/index';

}, 200);
});
});
test('debounces only memoized version', done => {
let state = {employees: ['Mark Metzger'], maxAge: 15};
let result = null
const throttle = f => _.debounce(f, 150);
const ages = createAsyncSelector(
{...params2, throttle},
s => s.employees,
s => s.maxAge);
const expected1 = {
value: [],
previous: undefined,
isWaiting: true,
isResolved: false,
isRejected: false,
}
const expected2 = {
value: [12],
previous: [12],
isWaiting: false,
isResolved: true,
isRejected: false,
}
const result1 = ages(state);
console.log({result1});
expect(deepEqual(result1, expected1)).toBe(true);
setTimeout(() => {
const result2 = ages(state);
console.log({result2});
expect(deepEqual(result2, expected1)).toBe(true);
setTimeout(() => {
const result3 = ages(state);
console.log({result3});
expect(deepEqual(result3, expected1)).toBe(true);
setTimeout(() => {
const result4 = ages(state);
console.log({result4});
expect(deepEqual(result4, expected2)).toBe(true);
setTimeout(() => {
const result5 = ages(state);
console.log({result5});
expect(deepEqual(result5, expected2)).toBe(true);
done();
}, 100);
}, 100);
}, 100);
}, 100);
});
test('sync by default returns undefined', done => {
let state = {employees: ['Mark Metzger'], maxAge: 15};
const ages = createAsyncSelector(
{...params2, sync: null},
s => s.employees,
s => s.maxAge);
const expected1 = {
value: undefined,
previous: undefined,
isWaiting: true,
isResolved: false,
isRejected: false,
}
const result = ages(state);
expect(deepEqual(result, expected1)).toBe(true);
done();
});

22

dist/index.js

@@ -15,5 +15,2 @@ 'use strict';

}
if (typeof params.sync !== 'function') {
throw new Error('Looking for a function called "sync". This function is called to before the promise resolves');
}
if (typeof params.async !== 'function') {

@@ -59,2 +56,3 @@ throw new Error('Looking for a function called "async". This function returns a promise which handles asynchronous code');

sync = typeof sync === 'function' ? sync : emptyFunction;
onReject = typeof onReject === 'function' ? onReject : emptyFunction;

@@ -66,3 +64,3 @@ onResolve = typeof onResolve === 'function' ? onResolve : emptyFunction;

};
omitStatus = omitStatus === undefined ? false : omitStatus;
omitStatus = omitStatus === void 0 ? false : omitStatus;
throttle = typeof throttle === 'function' ? throttle : null;

@@ -74,3 +72,3 @@

var oldInputs = null;
var previousResolution = undefined;
var previousResolution = void 0;
var f = null;

@@ -89,3 +87,3 @@

if (f !== null && internal === false) {
f(state, forceUpdate);
f(state, props, forceUpdate);
memoizedResult = createResultObject(sync.apply(undefined, _toConsumableArray(mapped)), previousResolution, true, false, false, omitStatus);

@@ -127,5 +125,15 @@ return memoizedResult;

if (throttle !== null && f === null) {
f = throttle(function (state, props) {
var throttled = throttle(function (state, props) {
return func(state, props, true, true);
});
var old = null;
f = function f(state, props) {
var New = selectors.map(function (s) {
return s(state, props);
});
if (hasChanged(old, New)) {
old = New;
throttled(state, props);
}
};
}

@@ -132,0 +140,0 @@ func.forceUpdate = function (state, props) {

{
"name": "async-selector",
"version": "1.0.12",
"version": "1.0.13",
"description": "Select values from databases using asynchronous selectors.",

@@ -5,0 +5,0 @@ "main": "./dist/index.js",

@@ -190,3 +190,3 @@ A simple, lightweight library inspired by [reselect](https://github.com/reduxjs/reselect) which allows you select data out of a remote database almost as easily as you would from local state. This library will normally be used in conjunction with redux and reselect but it has no dependencies.

params is an object
### params.sync (Required)
### params.sync (Optional)
```js

@@ -193,0 +193,0 @@ function sync(...selectorResults) -> any

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc