@braze/web-sdk
Version:
Braze SDK for web sites and other JS platforms.
101 lines (100 loc) • 2.67 kB
JavaScript
import { logger as N } from "../../shared-lib/index.js";
export function values(t) {
const e = [];
let r;
for (const n in t)
(r = n),
Object.prototype.hasOwnProperty.call(t, r) &&
void 0 !== t[r] &&
e.push(t[r]);
return e;
}
export function validateValueIsFromEnum(t, e, r, n) {
const o = values(t);
return (
-1 !== o.indexOf(e) ||
(N.error(`${r} Valid values from ${n} are "${o.join('"/"')}".`), !1)
);
}
export function isArray(t) {
return Array.isArray
? Array.isArray(t)
: "[object Array]" === Object.prototype.toString.call(t);
}
export function isDate(t) {
return "[object Date]" === Object.prototype.toString.call(t);
}
export function isObject(t) {
return "[object Object]" === Object.prototype.toString.call(t);
}
export function intersection(t, ...e) {
null == t && (t = []);
const r = [],
n = arguments.length;
for (let e = 0, o = t.length; e < o; e++) {
const o = t[e];
if (-1 !== r.indexOf(o)) continue;
let c = 1;
for (c = 1; c < n && -1 !== arguments[c].indexOf(o); c++);
c === n && r.push(o);
}
return r;
}
export function keys(t) {
const e = [];
for (const r in t) Object.prototype.hasOwnProperty.call(t, r) && e.push(r);
return e;
}
export function isEqual(t, e) {
if (t === e) return 0 !== t || 1 / t == 1 / e;
if (null == t || null == e) return t === e;
const r = t.toString();
if (r !== e.toString()) return !1;
switch (r) {
case "[object RegExp]":
case "[object String]":
return "" + t == "" + e;
case "[object Number]":
return +t != +t ? +e != +e : 0 == +t ? 1 / +t == 1 / e : +t == +e;
case "[object Date]":
case "[object Boolean]":
return +t == +e;
}
const n = "[object Array]" === r;
if (!n) {
if ("object" != typeof t || "object" != typeof e) return !1;
const r = t.constructor,
n = e.constructor;
if (
r !== n &&
!(
"function" == typeof r &&
r instanceof r &&
"function" == typeof n &&
n instanceof n
) &&
"constructor" in t &&
"constructor" in e
)
return !1;
}
const o = [],
c = [];
let i = o.length;
for (; i--; ) if (o[i] === t) return c[i] === e;
if ((o.push(t), c.push(e), n)) {
if (((i = t.length), i !== e.length)) return !1;
for (; i--; ) if (!isEqual(t[i], e[i])) return !1;
} else {
const r = keys(t);
let n;
if (((i = r.length), keys(e).length !== i)) return !1;
for (; i--; )
if (
((n = r[i]),
!Object.prototype.hasOwnProperty.call(e, n) || !isEqual(t[n], e[n]))
)
return !1;
}
return o.pop(), c.pop(), !0;
}