UNPKG

@react-awesome-query-builder/core

Version:
616 lines (606 loc) 26.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof3 = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.applyToJS = applyToJS; exports.cleanJSX = void 0; Object.defineProperty(exports, "clone", { enumerable: true, get: function get() { return _clone["default"]; } }); exports.logger = exports.isTypeOf = exports.isTruthy = exports.isSafeKeyForObject = exports.isObjectOrArray = exports.isObject = exports.isJsonLogic = exports.isJsonCompatible = exports.isJSX = exports.isImmutableList = exports.isImmutable = exports.isDirtyJSX = exports.hasSafeOwnProperty = exports.getOpCardinality = exports.getLogger = exports.getFirstDefined = exports.escapeRegExp = exports.deepFreeze = exports.deepEqual = void 0; exports.mergeArraysSmart = mergeArraysSmart; exports.mergeIn = exports.mergeCustomizerNoArrays = void 0; Object.defineProperty(exports, "moment", { enumerable: true, get: function get() { return _moment["default"]; } }); exports.shallowEqual = exports.shallowCopy = exports.setIn = exports.opDefKeysToOmit = exports.omit = void 0; exports.sleep = sleep; exports.toImmutableList = toImmutableList; exports.typeOf = void 0; Object.defineProperty(exports, "uuid", { enumerable: true, get: function get() { return _uuid["default"]; } }); exports.widgetDefKeysToOmit = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _immutable = _interopRequireWildcard(require("immutable")); var _uuid = _interopRequireDefault(require("./uuid")); var _clone = _interopRequireDefault(require("clone")); var _moment = _interopRequireDefault(require("moment")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var widgetDefKeysToOmit = exports.widgetDefKeysToOmit = ["formatValue", "mongoFormatValue", "sqlFormatValue", "jsonLogic", "elasticSearchFormatValue", "spelFormatValue", "spelImportFuncs", "spelImportValue"]; var opDefKeysToOmit = exports.opDefKeysToOmit = ["formatOp", "mongoFormatOp", "sqlFormatOp", "jsonLogic", "spelFormatOp"]; var isObject = exports.isObject = function isObject(v) { return (0, _typeof2["default"])(v) === "object" && v !== null && Object.prototype.toString.call(v) === "[object Object]"; }; // export const isObject = (v) => (typeof v == "object" && v !== null && !Array.isArray(v)); var isObjectOrArray = exports.isObjectOrArray = function isObjectOrArray(v) { return (0, _typeof2["default"])(v) === "object" && v !== null; }; var typeOf = exports.typeOf = function typeOf(v) { var t = (0, _typeof2["default"])(v); if (t && v !== null && Array.isArray(v)) return "array";else return t; }; var isTypeOf = exports.isTypeOf = function isTypeOf(v, type) { if (typeOf(v) === type) return true; if (type === "number" && !isNaN(v)) return true; //can be casted return false; }; var isTruthy = exports.isTruthy = function isTruthy(value) { return !!value; }; var shallowCopy = exports.shallowCopy = function shallowCopy(v) { if ((0, _typeof2["default"])(v) === "object" && v !== null) { if (Array.isArray(v)) { return (0, _toConsumableArray2["default"])(v); } else if (isObject(v)) { return _objectSpread({}, v); } } return v; }; var isSafeKeyForObject = exports.isSafeKeyForObject = function isSafeKeyForObject(k) { return !["__proto__", "constructor", "prototype"].includes(k); }; var hasSafeOwnProperty = exports.hasSafeOwnProperty = function hasSafeOwnProperty(obj, k) { return Object.prototype.hasOwnProperty.call(obj, k) && isSafeKeyForObject(k); }; var setIn = exports.setIn = function setIn(obj, path, newValue, opts) { var defaultOpts = { canCreate: false, canIgnore: false, canChangeType: false }; opts = _objectSpread(_objectSpread({}, defaultOpts), opts !== null && opts !== void 0 ? opts : {}); var _opts = opts, canCreate = _opts.canCreate, canIgnore = _opts.canIgnore, canChangeType = _opts.canChangeType; if (!Array.isArray(path)) { throw new Error("path is not an array"); } if (!path.length) { throw new Error("path is empty"); } var expectedObjType = typeof path[0] === "number" ? "array" : "object"; if (!isTypeOf(obj, expectedObjType)) { throw new Error("obj is not of type ".concat(expectedObjType)); } var newObj = shallowCopy(obj); var target = newObj; var pathToTarget = (0, _toConsumableArray2["default"])(path); var targetKey = pathToTarget.pop(); var goodPath = []; var _iterator = _createForOfIteratorHelper(pathToTarget), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var k = _step.value; if (!isSafeKeyForObject(k)) { throw new Error("path contains unsafe ".concat(k)); } var nextKey = path[goodPath.length]; var expectedType = typeof nextKey === "number" ? "array" : "object"; if (!isTypeOf(target[k], expectedType)) { // value at path has another type if (target[k] ? canChangeType : canCreate) { target[k] = expectedType === "array" ? [] : {}; } else if (canIgnore) { target = undefined; newObj = obj; // return initial obj as-is break; } else { throw new Error("Value by path ".concat(goodPath.join("."), " should have type ").concat(expectedType, " but got ").concat(typeOf(target[k]))); } } goodPath.push(k); target[k] = shallowCopy(target[k]); target = target[k]; } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } if (target) { if (newValue === undefined) { delete target[targetKey]; } else { var oldValue = target[targetKey]; if (typeof newValue === "function") { target[targetKey] = newValue(oldValue); } else { target[targetKey] = newValue; } } } return newObj; }; var mergeIn = exports.mergeIn = function mergeIn(obj, mixin, opts) { var defaultOpts = { canCreate: true, canChangeType: true, deepCopyObj: false, deepCopyMixin: false, arrayMergeMode: "merge", // "merge" | "join" | "joinMissing" | "joinRespectOrder" | "overwrite" circularRefs: false, specialSymbols: true }; opts = _objectSpread(_objectSpread({}, defaultOpts), opts !== null && opts !== void 0 ? opts : {}); var _opts2 = opts, deepCopyObj = _opts2.deepCopyObj, deepCopyMixin = _opts2.deepCopyMixin, circularRefs = _opts2.circularRefs, specialSymbols = _opts2.specialSymbols; if (!isTypeOf(obj, "object")) { throw new Error("obj is not an object"); } if (!isTypeOf(mixin, "object")) { throw new Error("mixin is not an object"); } // symbols var $v = Symbol["for"]("_v"); var $type = Symbol["for"]("_type"); var $canCreate = Symbol["for"]("_canCreate"); var $canChangeType = Symbol["for"]("_canChangeType"); var $arrayMergeMode = Symbol["for"]("_arrayMergeMode"); var newObj = deepCopyObj ? (0, _clone["default"])(obj, circularRefs) : shallowCopy(obj); var newObjChanged = false; var _process2 = function _process(path, targetMix, target) { var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, isMixingArray = _ref.isMixingArray, isMixingRealArray = _ref.isMixingRealArray; var indexDelta = 0; var _loop = function _loop() { if (!isSafeKeyForObject(mk)) { throw new Error("mixin contains unsafe key ".concat(mk)); // newObjChanged = false; // break; } if (!hasSafeOwnProperty(targetMix, mk)) { return 0; // continue } var k = isMixingArray ? Number(mk) + indexDelta : mk; var useSymbols = specialSymbols && isObjectOrArray(targetMix[mk]); var canCreate = opts.canCreate, canChangeType = opts.canChangeType, arrayMergeMode = opts.arrayMergeMode; var targetMixValue = targetMix[mk]; var isMixValueExplicit = false; var expectedType = typeOf(targetMixValue); if (useSymbols) { var _targetMix$mk, _targetMix$mk$$canCre, _targetMix$mk2, _targetMix$mk$$canCha, _targetMix$mk3, _targetMix$mk$$arrayM, _targetMix$mk4; if ($v in targetMix[mk]) { isMixValueExplicit = true; targetMixValue = targetMix[mk][$v]; } expectedType = ((_targetMix$mk = targetMix[mk]) === null || _targetMix$mk === void 0 ? void 0 : _targetMix$mk[$type]) || typeOf(targetMixValue); canCreate = (_targetMix$mk$$canCre = (_targetMix$mk2 = targetMix[mk]) === null || _targetMix$mk2 === void 0 ? void 0 : _targetMix$mk2[$canCreate]) !== null && _targetMix$mk$$canCre !== void 0 ? _targetMix$mk$$canCre : canCreate; canChangeType = (_targetMix$mk$$canCha = (_targetMix$mk3 = targetMix[mk]) === null || _targetMix$mk3 === void 0 ? void 0 : _targetMix$mk3[$canChangeType]) !== null && _targetMix$mk$$canCha !== void 0 ? _targetMix$mk$$canCha : canChangeType; arrayMergeMode = (_targetMix$mk$$arrayM = (_targetMix$mk4 = targetMix[mk]) === null || _targetMix$mk4 === void 0 ? void 0 : _targetMix$mk4[$arrayMergeMode]) !== null && _targetMix$mk$$arrayM !== void 0 ? _targetMix$mk$$arrayM : arrayMergeMode; if (expectedType === "array" && arrayMergeMode === "overwrite") { isMixValueExplicit = true; } } if (expectedType !== "array") { arrayMergeMode = undefined; } if (!isTypeOf(target[k], expectedType)) { // value at path has another type if (target[k] ? canChangeType : canCreate) { if (expectedType === "array" || expectedType === "object") { target[k] = expectedType === "array" ? [] : {}; newObjChanged = true; } else { // primitive } } else { return 0; // continue } } if (expectedType === "array" || expectedType === "object") { if (isMixValueExplicit) { // deep copy from mix to target newObjChanged = true; target[k] = deepCopyMixin ? (0, _clone["default"])(targetMixValue, circularRefs) : shallowCopy(targetMixValue); } else { if (arrayMergeMode && ["join", "joinMissing", "joinRespectOrder"].includes(arrayMergeMode)) { // join 2 arrays newObjChanged = true; var left = deepCopyObj ? target[k] : (0, _clone["default"])(target[k], circularRefs); var right = deepCopyMixin ? (0, _clone["default"])(targetMixValue, circularRefs) : targetMixValue; if (arrayMergeMode === "joinRespectOrder") { target[k] = mergeArraysSmart(left, right); } else { if (arrayMergeMode === "joinMissing") { right = right.filter(function (v) { return !left.includes(v); }); } target[k] = [].concat((0, _toConsumableArray2["default"])(left), (0, _toConsumableArray2["default"])(right)); } } else { var _targetMix$mk5; // recursive merge if (!deepCopyObj) { target[k] = shallowCopy(target[k]); } _process2([].concat((0, _toConsumableArray2["default"])(path), [mk]), targetMixValue, target[k], { isMixingArray: expectedType === "array", isMixingRealArray: expectedType === "array" && !((_targetMix$mk5 = targetMix[mk]) !== null && _targetMix$mk5 !== void 0 && _targetMix$mk5[$type]) }); } } } else { var needDelete = targetMixValue === undefined && !isMixingRealArray && !isMixValueExplicit; var valueExists = k in target; if (needDelete) { if (valueExists) { newObjChanged = true; if (Array.isArray(target)) { target.splice(k, 1); indexDelta--; } else { delete target[k]; } } } else { newObjChanged = true; target[k] = targetMixValue; } } }, _ret; for (var mk in targetMix) { _ret = _loop(); if (_ret === 0) continue; } }; _process2([], mixin, newObj); return newObjChanged ? newObj : obj; }; var omit = exports.omit = function omit(obj, keys) { return Object.fromEntries(Object.entries(obj).filter(function (_ref2) { var _ref3 = (0, _slicedToArray2["default"])(_ref2, 1), k = _ref3[0]; return !keys.includes(k); })); }; // RegExp.quote = function (str) { // return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); // }; var getOpCardinality = exports.getOpCardinality = function getOpCardinality(opDef) { var _opDef$cardinality; return (_opDef$cardinality = opDef === null || opDef === void 0 ? void 0 : opDef.cardinality) !== null && _opDef$cardinality !== void 0 ? _opDef$cardinality : 1; }; // const immutableEqual = function(v1, v2) { // if (v1 === v2) { // return true; // } else { // return v1.equals(v2); // } // }; var deepEqual = exports.deepEqual = function deepEqual(v1, v2) { if (v1 === v2) { return true; } else if (_immutable.Map.isMap(v1)) { return v1.equals(v2); } else { return JSON.stringify(v1) == JSON.stringify(v2); } }; // //Do sets have same values? // const eqSet = function (as, bs) { // if (as.size !== bs.size) return false; // for (var a of as) if (!bs.has(a)) return false; // return true; // }; // //Do arrays have same values? // const eqArrSet = function (arr1, arr2) { // return eqSet(new Set(arr1), new Set(arr2)); // }; var shallowEqual = exports.shallowEqual = function shallowEqual(a, b) { var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (a === b) { return true; } else if (Array.isArray(a)) return shallowEqualArrays(a, b, deep);else if (_immutable.Map.isMap(a)) return a.equals(b);else if ((0, _typeof2["default"])(a) == "object") return shallowEqualObjects(a, b, deep);else return a === b; }; function shallowEqualArrays(arrA, arrB) { var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (arrA === arrB) { return true; } if (!arrA || !arrB) { return false; } var len = arrA.length; if (arrB.length !== len) { return false; } for (var i = 0; i < len; i++) { var isEqual = deep ? shallowEqual(arrA[i], arrB[i], deep) : arrA[i] === arrB[i]; if (!isEqual) { return false; } } return true; } function shallowEqualObjects(objA, objB) { var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (objA === objB) { return true; } if (!objA || !objB) { return false; } var aKeys = Object.keys(objA); var bKeys = Object.keys(objB); var len = aKeys.length; if (bKeys.length !== len) { return false; } for (var i = 0; i < len; i++) { var key = aKeys[i]; var isEqual = deep ? shallowEqual(objA[key], objB[key], deep) : objA[key] === objB[key]; if (!isEqual) { return false; } } return true; } var isImmutable = exports.isImmutable = function isImmutable(v) { return (0, _typeof2["default"])(v) === "object" && v !== null && typeof v.toJS === "function"; }; var isImmutableList = exports.isImmutableList = function isImmutableList(v) { return isImmutable(v) && _immutable["default"].isList(v); // Immutable.isIndexed(v) }; function toImmutableList(v) { return isImmutableList(v) ? v : new _immutable["default"].List(v); } function applyToJS(v) { return isImmutable(v) ? v.toJS() : v; } var escapeRegExp = exports.escapeRegExp = function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\/]/g, "\\$&"); // $& means the whole matched string }; var mergeCustomizerNoArrays = exports.mergeCustomizerNoArrays = function mergeCustomizerNoArrays(objValue, srcValue, _key, _object, _source, _stack) { if (Array.isArray(objValue)) { return srcValue; } }; var _cleanJSX = exports.cleanJSX = function cleanJSX(jsx) { var jsxKeys = ["$$typeof", "_owner", "_store", "ref", "key"]; var getName = function getName(val) { if (typeof val === "string") { return val; } else if (typeof val === "function") { return val.name; } return val; }; if (jsx instanceof Array) { return jsx.map(function (el, _i) { return _cleanJSX(el); }); } else if ((0, _typeof2["default"])(jsx) === "object" && jsx !== null) { if (isDirtyJSX(jsx)) { var _cleaned$props; var cleaned = omit(jsx, jsxKeys); if (cleaned.type) { cleaned.type = getName(cleaned.type); } if (cleaned !== null && cleaned !== void 0 && (_cleaned$props = cleaned.props) !== null && _cleaned$props !== void 0 && _cleaned$props.children) { cleaned.props.children = _cleanJSX(cleaned.props.children); } return cleaned; } } return jsx; }; var isDirtyJSX = exports.isDirtyJSX = function isDirtyJSX(jsx) { return (0, _typeof2["default"])(jsx) === "object" && jsx !== null && !Array.isArray(jsx) && Object.keys(jsx).includes("type") && Object.keys(jsx).includes("props") // even if {} && Object.keys(jsx).includes("key") // even if null && Object.keys(jsx).includes("ref") // even if null && Object.keys(jsx).includes("$$typeof"); // Symbol(react.element) }; var isJSX = exports.isJSX = function isJSX(jsx) { return (0, _typeof2["default"])(jsx) === "object" && jsx !== null && !Array.isArray(jsx) && typeof jsx["type"] === "string" && Object.keys(jsx).includes("props"); }; var isJsonLogic = exports.isJsonLogic = function isJsonLogic(logic) { var isJL = (0, _typeof2["default"])(logic) === "object" // An object && logic !== null // but not null && !Array.isArray(logic) // and not an array && Object.keys(logic).length === 1; // with exactly one key if (isJL) { // additional checks ? } return isJL; }; function sleep(delay) { return new Promise(function (resolve) { setTimeout(resolve, delay); }); } // [1, 4, 9] + [1, 5, 9] => [1, 4, 5, 9] // Used for merging arrays of operators for different widgets of 1 type function mergeArraysSmart(arr1, arr2) { if (!arr1) arr1 = []; if (!arr2) arr2 = []; return arr2.map(function (op) { return [op, arr1.indexOf(op)]; }).map(function (_ref4, i, orig) { var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2), op = _ref5[0], ind = _ref5[1]; if (ind == -1) { var next = orig.slice(i + 1); var prevs = orig.slice(0, i); var after = (0, _toConsumableArray2["default"])(prevs).reverse().find(function (_ref6) { var _ref7 = (0, _slicedToArray2["default"])(_ref6, 2), _cop = _ref7[0], ci = _ref7[1]; return ci != -1; }); var prev = prevs[prevs.length - 1]; var before = next.find(function (_ref8) { var _ref9 = (0, _slicedToArray2["default"])(_ref8, 2), _cop = _ref9[0], ci = _ref9[1]; return ci != -1; }); var isAfterDirectly = after && after === prevs[prevs.length - 1]; var isBeforeDirectly = before && next === next[0]; if (isAfterDirectly) { return [op, "after", after[0]]; } else if (isBeforeDirectly) { return [op, "before", before[0]]; } else if (after) { if (prev) { return [op, "after", prev[0]]; } return [op, "after", after[0]]; } else if (before) { return [op, "before", before[0]]; } else { return [op, "append", null]; } } else { // already exists return null; } }).filter(function (x) { return x !== null; }).reduce(function (acc, _ref10) { var _ref11 = (0, _slicedToArray2["default"])(_ref10, 3), newOp = _ref11[0], rel = _ref11[1], relOp = _ref11[2]; var ind = acc.indexOf(relOp); if (acc.indexOf(newOp) === -1) { if (ind > -1) { // insert after or before var offset = rel === "after" ? 1 : 0; acc.splice(ind + offset, 0, newOp); } else { // insert to end or start acc.splice(rel === "append" ? Infinity : 0, 0, newOp); } } return acc; }, arr1.slice()); } var _deepFreeze = exports.deepFreeze = function deepFreeze(obj) { if ((0, _typeof2["default"])(obj) === "object" && obj !== null && !isDirtyJSX(obj)) { Object.keys(obj).forEach(function (prop) { if (prop !== "__cache") { _deepFreeze(obj[prop]); } }); Object.freeze(obj); } }; var _isJsonCompatible = exports.isJsonCompatible = function isJsonCompatible(tpl, obj) { var bag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : []; if (isObject(tpl)) { if (tpl["var"]) { bag[tpl["var"]] = obj; return true; } if (!isObject(obj)) return false; for (var k in tpl) { var tv = tpl[k]; var ov = obj[k]; if (!_isJsonCompatible(tv, ov, bag, [].concat((0, _toConsumableArray2["default"])(path), [k]))) return false; } return true; } else if (Array.isArray(tpl)) { if (!Array.isArray(obj)) return false; for (var i = 0; i < tpl.length; i++) { var _tv = tpl[i]; var _ov = obj[i]; if (!_isJsonCompatible(_tv, _ov, bag, [].concat((0, _toConsumableArray2["default"])(path), [i]))) return false; } return true; } else { return tpl === obj; } }; var isDev = function isDev() { var _process3; return typeof process !== "undefined" && ((_process3 = process) === null || _process3 === void 0 || (_process3 = _process3.env) === null || _process3 === void 0 ? void 0 : _process3.NODE_ENV) == "development"; }; var isTest = function isTest() { var _process4; return typeof process !== "undefined" && ((_process4 = process) === null || _process4 === void 0 || (_process4 = _process4.env) === null || _process4 === void 0 ? void 0 : _process4.NODE_ENV_TEST) == "true"; }; var getLogger = exports.getLogger = function getLogger(devMode) { if (isTest()) { return _objectSpread(_objectSpread({}, console), {}, { log: function log() {}, debug: function debug() {}, info: function info() {} }); } var verbose = devMode != undefined ? devMode : isDev(); return verbose ? console : { error: function error() {}, log: function log() {}, warn: function warn() {}, debug: function debug() {}, info: function info() {} }; }; var getFirstDefined = exports.getFirstDefined = function getFirstDefined() { var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var ret; for (var i = 0; i < arr.length; i++) { var v = arr[i]; if (v !== undefined) { ret = v; break; } } return ret; }; var logger = exports.logger = getLogger();