Update checked-in dependencies
This commit is contained in:
parent
4fad06f438
commit
40a500c743
4168 changed files with 298222 additions and 374905 deletions
45
node_modules/ava/lib/like-selector.js
generated
vendored
45
node_modules/ava/lib/like-selector.js
generated
vendored
|
|
@ -1,29 +1,40 @@
|
|||
const isPrimitive = value => value === null || typeof value !== 'object';
|
||||
|
||||
export function isLikeSelector(selector) {
|
||||
return selector !== null
|
||||
&& typeof selector === 'object'
|
||||
&& Reflect.getPrototypeOf(selector) === Object.prototype
|
||||
&& Reflect.ownKeys(selector).length > 0;
|
||||
// Require selector to be an array or plain object.
|
||||
if (
|
||||
isPrimitive(selector)
|
||||
|| (!Array.isArray(selector) && Reflect.getPrototypeOf(selector) !== Object.prototype)
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Also require at least one enumerable property.
|
||||
const descriptors = Object.getOwnPropertyDescriptors(selector);
|
||||
return Reflect.ownKeys(descriptors).some(key => descriptors[key].enumerable === true);
|
||||
}
|
||||
|
||||
export const CIRCULAR_SELECTOR = new Error('Encountered a circular selector');
|
||||
|
||||
export function selectComparable(lhs, selector, circular = new Set()) {
|
||||
if (circular.has(selector)) {
|
||||
throw CIRCULAR_SELECTOR;
|
||||
export function selectComparable(actual, selector, circular = [selector]) {
|
||||
if (isPrimitive(actual)) {
|
||||
return actual;
|
||||
}
|
||||
|
||||
circular.add(selector);
|
||||
const comparable = Array.isArray(selector) ? [] : {};
|
||||
const enumerableKeys = Reflect.ownKeys(selector).filter(key => Reflect.getOwnPropertyDescriptor(selector, key).enumerable);
|
||||
for (const key of enumerableKeys) {
|
||||
const subselector = Reflect.get(selector, key);
|
||||
if (isLikeSelector(subselector)) {
|
||||
if (circular.includes(subselector)) {
|
||||
throw CIRCULAR_SELECTOR;
|
||||
}
|
||||
|
||||
if (lhs === null || typeof lhs !== 'object') {
|
||||
return lhs;
|
||||
}
|
||||
|
||||
const comparable = {};
|
||||
for (const [key, rhs] of Object.entries(selector)) {
|
||||
if (isLikeSelector(rhs)) {
|
||||
comparable[key] = selectComparable(Reflect.get(lhs, key), rhs, circular);
|
||||
circular.push(subselector);
|
||||
comparable[key] = selectComparable(Reflect.get(actual, key), subselector, circular);
|
||||
circular.pop();
|
||||
} else {
|
||||
comparable[key] = Reflect.get(lhs, key);
|
||||
comparable[key] = Reflect.get(actual, key);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue