All files / src/internal/client/dev equality.js

79.72% Statements 59/74
69.23% Branches 9/13
83.33% Functions 5/6
78.87% Lines 56/71

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 722x 2x 2x 2x 2x 4x 4x 4x 4x 4x 813464x 813464x 302908x     302908x 813464x 4x 4x 4x 4x 4x 37754x 37754x 6x     6x 37754x 4x 4x 4x 4x 4x 1067922x 1067922x 545493x     545493x 1067922x 4x 4x 2x 2x 2x 2x 2x 2x 2x 8x 8x     8x 8x 8x 2x 2x 2x 2x 2x 2x 2x                
import { DEV } from 'esm-env';
import * as w from '../warnings.js';
import { raw } from '../proxy';
 
export function init_array_prototype_warnings() {
	const array_prototype = Array.prototype;
 
	const original_index_of = array_prototype.indexOf;
 
	array_prototype.indexOf = function (search_element, from_index) {
		const index = original_index_of.call(this, search_element, from_index);
		if (index === -1) {
			if (original_index_of.call(raw(this), search_element, from_index) !== -1) {
				w.state_proxy_equality_mismatch('Array.indexOf');
			}
		}
		return index;
	};
 
	const original_last_index_of = array_prototype.lastIndexOf;
 
	array_prototype.lastIndexOf = function (search_element, from_index) {
		const index = original_last_index_of.call(this, search_element, from_index);
		if (index === -1) {
			if (original_last_index_of.call(raw(this), search_element, from_index) !== -1) {
				w.state_proxy_equality_mismatch('Array.lastIndexOf');
			}
		}
		return index;
	};
 
	const original_includes = array_prototype.includes;
 
	array_prototype.includes = function (search_element, from_index) {
		const has = original_includes.call(this, search_element, from_index);
		if (!has) {
			if (original_includes.call(raw(this), search_element, from_index)) {
				w.state_proxy_equality_mismatch('Array.includes');
			}
		}
		return has;
	};
}
 
/**
 * @param {any} a
 * @param {any} b
 * @returns {boolean}
 */
export function strict_equals(a, b) {
	if (DEV) {
		if (a !== b && raw(a) === raw(b)) {
			w.state_proxy_equality_mismatch('=== operator');
		}
	}
	return a === b;
}
 
/**
 * @param {any} a
 * @param {any} b
 * @returns {boolean}
 */
export function equals(a, b) {
	if (DEV) {
		if (a != b && raw(a) == raw(b)) {
			w.state_proxy_equality_mismatch('== operator');
		}
	}
	return a == b;
}