@bbn/bbn 1.0.436 → 1.0.438
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_.js +7 -11
- package/dist/bbn.js +1 -1
- package/dist/bbn.js.map +1 -1
- package/dist/date.d.ts +26 -0
- package/dist/date.js +190 -0
- package/dist/db.js +107 -124
- package/dist/fn/ajax/_addLoader.js +6 -6
- package/dist/fn/ajax/_deleteLoader.js +11 -13
- package/dist/fn/ajax/abort.js +1 -1
- package/dist/fn/ajax/abortURL.js +1 -1
- package/dist/fn/ajax/ajax.js +25 -30
- package/dist/fn/ajax/callback.js +10 -14
- package/dist/fn/ajax/download.js +7 -9
- package/dist/fn/ajax/downloadContent.js +5 -6
- package/dist/fn/ajax/getLoader.js +1 -1
- package/dist/fn/ajax/getRequestId.js +2 -2
- package/dist/fn/ajax/link.js +9 -13
- package/dist/fn/ajax/post.js +3 -7
- package/dist/fn/ajax/postOut.js +2 -4
- package/dist/fn/ajax/setNavigationVars.js +5 -7
- package/dist/fn/ajax/stream.js +21 -22
- package/dist/fn/ajax/treatAjaxArguments.js +3 -3
- package/dist/fn/ajax/upload.js +6 -9
- package/dist/fn/browser/copy.js +9 -12
- package/dist/fn/browser/error.js +2 -2
- package/dist/fn/browser/executeSlowly.js +11 -55
- package/dist/fn/browser/getBrowserName.js +1 -1
- package/dist/fn/browser/getBrowserVersion.js +1 -1
- package/dist/fn/browser/getCookie.js +5 -5
- package/dist/fn/browser/getDeviceType.js +1 -1
- package/dist/fn/browser/getEventData.js +30 -30
- package/dist/fn/browser/happy.js +1 -5
- package/dist/fn/browser/info.js +1 -5
- package/dist/fn/browser/isActiveInterface.js +2 -3
- package/dist/fn/browser/isFocused.js +1 -2
- package/dist/fn/browser/log.js +8 -12
- package/dist/fn/browser/replaceSelection.js +5 -5
- package/dist/fn/browser/selectElementText.js +4 -5
- package/dist/fn/browser/setCookie.js +3 -3
- package/dist/fn/browser/warning.js +2 -2
- package/dist/fn/browser/yieldToBrowser.js +7 -43
- package/dist/fn/convert/arrayBuffer2String.js +1 -1
- package/dist/fn/convert/canvasToImage.js +1 -1
- package/dist/fn/convert/colorToHex.js +1 -1
- package/dist/fn/convert/fromXml.js +7 -13
- package/dist/fn/convert/hex2rgb.js +1 -1
- package/dist/fn/convert/imageToCanvas.js +1 -1
- package/dist/fn/convert/imgToBase64.js +2 -3
- package/dist/fn/convert/toCSV.js +7 -10
- package/dist/fn/datetime/calendar.js +4 -5
- package/dist/fn/datetime/date.js +1 -1
- package/dist/fn/datetime/dateSQL.js +1 -1
- package/dist/fn/datetime/daysInMonth.js +1 -1
- package/dist/fn/datetime/fdate.js +2 -3
- package/dist/fn/datetime/fdatetime.js +2 -3
- package/dist/fn/datetime/ftime.js +1 -1
- package/dist/fn/datetime/getChrono.js +2 -3
- package/dist/fn/datetime/getDay.js +3 -3
- package/dist/fn/datetime/startChrono.js +1 -1
- package/dist/fn/datetime/stopChrono.js +2 -2
- package/dist/fn/datetime/timestamp.js +2 -3
- package/dist/fn/default/defaultAjaxAbortFunction.js +1 -2
- package/dist/fn/default/defaultAjaxErrorFunction.js +1 -3
- package/dist/fn/default/defaultAlertFunction.js +1 -2
- package/dist/fn/default/defaultConfirmFunction.js +2 -3
- package/dist/fn/default/defaultEndLoadingFunction.js +1 -3
- package/dist/fn/default/defaultPostLinkFunction.js +1 -2
- package/dist/fn/default/defaultPreLinkFunction.js +1 -3
- package/dist/fn/form/addInputs.js +10 -12
- package/dist/fn/form/fieldValue.js +1 -1
- package/dist/fn/form/formdata.js +24 -24
- package/dist/fn/form/objectToFormData.js +5 -8
- package/dist/fn/form/submit.js +4 -4
- package/dist/fn/html/adjustHeight.js +1 -1
- package/dist/fn/html/adjustSize.js +5 -5
- package/dist/fn/html/adjustWidth.js +1 -1
- package/dist/fn/html/getAllTags.js +1 -1
- package/dist/fn/html/getAncestors.js +2 -3
- package/dist/fn/html/getAttributes.js +2 -2
- package/dist/fn/html/getHTMLOfSelection.js +4 -4
- package/dist/fn/html/getHtml.js +2 -3
- package/dist/fn/html/getIndex.js +3 -4
- package/dist/fn/html/getPath.js +12 -17
- package/dist/fn/html/html2text.js +1 -1
- package/dist/fn/html/isInViewport.js +4 -5
- package/dist/fn/html/isInside.js +5 -5
- package/dist/fn/html/makeReactive.js +22 -26
- package/dist/fn/init.js +18 -18
- package/dist/fn/loop/each.js +2 -2
- package/dist/fn/loop/fori.js +3 -5
- package/dist/fn/loop/forir.js +3 -5
- package/dist/fn/loop/iterate.js +3 -6
- package/dist/fn/loop/riterate.js +1 -2
- package/dist/fn/misc/analyzeFunction.js +36 -36
- package/dist/fn/misc/money.js +4 -4
- package/dist/fn/misc/translate.js +2 -2
- package/dist/fn/object/_compareValues.js +2 -3
- package/dist/fn/object/_filter.js +7 -10
- package/dist/fn/object/arrayFromProp.js +2 -2
- package/dist/fn/object/checkProps.js +1 -2
- package/dist/fn/object/checkPropsDetails.js +8 -9
- package/dist/fn/object/checkPropsOrDie.js +2 -3
- package/dist/fn/object/circularReplacer.js +2 -2
- package/dist/fn/object/clone.js +2 -2
- package/dist/fn/object/compareConditions.js +6 -6
- package/dist/fn/object/count.js +1 -3
- package/dist/fn/object/createObject.js +3 -16
- package/dist/fn/object/deepPath.js +6 -7
- package/dist/fn/object/diffObj.js +11 -13
- package/dist/fn/object/extend.js +10 -14
- package/dist/fn/object/extendOut.js +4 -9
- package/dist/fn/object/filter.js +6 -12
- package/dist/fn/object/filterToConditions.js +6 -7
- package/dist/fn/object/findAll.js +4 -5
- package/dist/fn/object/getField.js +2 -8
- package/dist/fn/object/getFieldValues.js +2 -2
- package/dist/fn/object/getProperty.js +5 -9
- package/dist/fn/object/getRow.js +2 -7
- package/dist/fn/object/getSortingMoves.js +28 -28
- package/dist/fn/object/isWritable.js +1 -1
- package/dist/fn/object/map.js +2 -3
- package/dist/fn/object/move.js +1 -1
- package/dist/fn/object/multiorder.js +5 -6
- package/dist/fn/object/mutateArray.js +8 -9
- package/dist/fn/object/mutateObject.js +3 -3
- package/dist/fn/object/order.js +1 -2
- package/dist/fn/object/removeEmpty.js +2 -2
- package/dist/fn/object/removePrivateProp.js +2 -3
- package/dist/fn/object/search.js +13 -17
- package/dist/fn/object/setProp.js +1 -3
- package/dist/fn/object/setProperty.js +8 -8
- package/dist/fn/object/shortenObj.js +3 -4
- package/dist/fn/object/shuffle.js +2 -3
- package/dist/fn/object/sum.js +3 -3
- package/dist/fn/object/unique.js +1 -1
- package/dist/fn/phone/fphone.js +22 -22
- package/dist/fn/string/baseName.js +3 -3
- package/dist/fn/string/correctCase.js +1 -1
- package/dist/fn/string/crc32.js +7 -7
- package/dist/fn/string/data2Html.js +4 -5
- package/dist/fn/string/dirName.js +1 -1
- package/dist/fn/string/escapeUrl.js +6 -6
- package/dist/fn/string/fileExt.js +1 -1
- package/dist/fn/string/firstVarElement.js +2 -2
- package/dist/fn/string/format.js +4 -4
- package/dist/fn/string/formatBytes.js +2 -3
- package/dist/fn/string/hash.js +4 -8
- package/dist/fn/string/randomString.js +5 -5
- package/dist/fn/string/replaceAll.js +1 -2
- package/dist/fn/string/sanitize.js +6 -7
- package/dist/fn/string/simpleHash.js +2 -2
- package/dist/fn/string/simpleHash1.js +3 -3
- package/dist/fn/string/simpleHash2.js +3 -3
- package/dist/fn/string/treatForHash.js +6 -10
- package/dist/fn/string/trim.js +1 -2
- package/dist/fn/string/uniqString.js +7 -14
- package/dist/fn/style/addColors.js +14 -14
- package/dist/fn/style/addStyle.js +1 -1
- package/dist/fn/style/animateCss.js +1 -1
- package/dist/fn/style/center.js +1 -1
- package/dist/fn/style/cssExists.js +5 -5
- package/dist/fn/style/getCssVar.js +1 -1
- package/dist/fn/style/getScrollBarSize.js +5 -5
- package/dist/fn/style/lightenDarkenHex.js +2 -2
- package/dist/fn/style/outerHeight.js +2 -2
- package/dist/fn/style/outerWidth.js +2 -2
- package/dist/fn/style/resize.js +14 -14
- package/dist/fn/type/checkType.js +5 -9
- package/dist/fn/type/isArray.js +2 -7
- package/dist/fn/type/isBlob.js +2 -7
- package/dist/fn/type/isBoolean.js +2 -7
- package/dist/fn/type/isCanvas.js +2 -7
- package/dist/fn/type/isColor.js +2 -7
- package/dist/fn/type/isComment.js +2 -7
- package/dist/fn/type/isCp.js +3 -8
- package/dist/fn/type/isDataURL.js +2 -7
- package/dist/fn/type/isDate.js +2 -7
- package/dist/fn/type/isDimension.js +2 -7
- package/dist/fn/type/isDom.js +2 -7
- package/dist/fn/type/isEmail.js +3 -8
- package/dist/fn/type/isEvent.js +2 -7
- package/dist/fn/type/isFunction.js +2 -7
- package/dist/fn/type/isHostname.js +2 -7
- package/dist/fn/type/isIP.js +2 -7
- package/dist/fn/type/isInt.js +2 -7
- package/dist/fn/type/isIterable.js +2 -7
- package/dist/fn/type/isNotObject.js +2 -7
- package/dist/fn/type/isNull.js +2 -7
- package/dist/fn/type/isNumber.js +2 -7
- package/dist/fn/type/isObject.js +2 -7
- package/dist/fn/type/isPercent.js +2 -7
- package/dist/fn/type/isPrimitive.js +2 -7
- package/dist/fn/type/isPromise.js +2 -7
- package/dist/fn/type/isPropSize.js +2 -2
- package/dist/fn/type/isSQLDate.js +2 -7
- package/dist/fn/type/isSame.js +12 -12
- package/dist/fn/type/isString.js +2 -7
- package/dist/fn/type/isSymbol.js +2 -7
- package/dist/fn/type/isURL.js +2 -7
- package/dist/fn/type/isUid.js +2 -7
- package/dist/fn/type/isValidDimension.js +2 -2
- package/dist/fn/type/isValidName.js +2 -7
- package/dist/fn/type/isVue.js +4 -11
- package/dist/fn.js +247 -247
- package/dist/index.js +9 -7
- package/package.json +1 -1
|
@@ -50,19 +50,19 @@ export default function compareConditions(data, filter) {
|
|
|
50
50
|
if (!filter.conditions || !filter.logic || !isArray(filter.conditions)) {
|
|
51
51
|
throw new Error("Error in compareConditions: the filter should an abject with conditions and logic properties and conditions should be an array of objects");
|
|
52
52
|
}
|
|
53
|
-
|
|
54
|
-
each(filter.conditions,
|
|
55
|
-
|
|
53
|
+
let ok = filter.logic === "AND" ? true : false;
|
|
54
|
+
each(filter.conditions, (a) => {
|
|
55
|
+
let comparator;
|
|
56
56
|
if (a.conditions && isArray(a.conditions)) {
|
|
57
57
|
comparator = compareConditions(data, a);
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
60
60
|
comparator = compare(getProperty(data, a.field), a.value, a.operator);
|
|
61
61
|
if (comparator) {
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
let bits = a.field.split(".");
|
|
63
|
+
let prop = bits.pop();
|
|
64
64
|
if (bits.length) {
|
|
65
|
-
each(bits,
|
|
65
|
+
each(bits, (b) => (data = data[b]));
|
|
66
66
|
}
|
|
67
67
|
// Case where both are undefined: value and prop which doesn't exist; they are not the same!
|
|
68
68
|
if (getProperty(data, prop) === undefined && a.value !== undefined) {
|
package/dist/fn/object/count.js
CHANGED
|
@@ -53,9 +53,7 @@ import filter from './filter.js';
|
|
|
53
53
|
* @param {String} operator The operator to use for comparison with the value as used in bbn.fn.compare
|
|
54
54
|
* @returns {Number} The number of items
|
|
55
55
|
*/
|
|
56
|
-
export default function count(arr, prop, val, operator) {
|
|
57
|
-
if (val === void 0) { val = null; }
|
|
58
|
-
if (operator === void 0) { operator = '='; }
|
|
56
|
+
export default function count(arr, prop, val = null, operator = '=') {
|
|
59
57
|
return filter(arr, prop, val, operator).length || 0;
|
|
60
58
|
}
|
|
61
59
|
;
|
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
2
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
3
|
-
if (ar || !(i in from)) {
|
|
4
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
5
|
-
ar[i] = from[i];
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
|
-
};
|
|
10
1
|
import extend from './extend.js';
|
|
11
|
-
export default function createObject() {
|
|
12
|
-
|
|
13
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
14
|
-
args[_i] = arguments[_i];
|
|
15
|
-
}
|
|
16
|
-
var obj = Object.create(null);
|
|
2
|
+
export default function createObject(...args) {
|
|
3
|
+
const obj = Object.create(null);
|
|
17
4
|
if (args.length) {
|
|
18
|
-
extend
|
|
5
|
+
extend(obj, ...args);
|
|
19
6
|
}
|
|
20
7
|
return obj;
|
|
21
8
|
}
|
|
@@ -56,19 +56,18 @@ import isArray from '../type/isArray.js';
|
|
|
56
56
|
* @param {String} operator The operator to use for comparison with the value as used in bbn.fn.compare
|
|
57
57
|
* @returns {Number} The number of items
|
|
58
58
|
*/
|
|
59
|
-
export default function deepPath(arr, filter, deepProperty, res) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
var start = 0;
|
|
59
|
+
export default function deepPath(arr, filter, deepProperty, res = []) {
|
|
60
|
+
let idx;
|
|
61
|
+
let start = 0;
|
|
63
62
|
if ((idx = search(arr, filter, start)) > -1) {
|
|
64
63
|
res.push(idx);
|
|
65
64
|
return res;
|
|
66
65
|
}
|
|
67
|
-
each(arr,
|
|
66
|
+
each(arr, (it, i) => {
|
|
68
67
|
if (isArray(it[deepProperty])) {
|
|
69
|
-
|
|
68
|
+
let r = res.slice();
|
|
70
69
|
r.push(i);
|
|
71
|
-
|
|
70
|
+
let tmp = deepPath(it[deepProperty], filter, deepProperty, r);
|
|
72
71
|
if (tmp !== false) {
|
|
73
72
|
return tmp;
|
|
74
73
|
}
|
|
@@ -4,7 +4,7 @@ import isFunction from '../type/isFunction.js';
|
|
|
4
4
|
import isNotObject from '../type/isNotObject.js';
|
|
5
5
|
import isDom from '../type/isDom.js';
|
|
6
6
|
import numProperties from './numProperties.js';
|
|
7
|
-
|
|
7
|
+
let diffObjProcessed = [];
|
|
8
8
|
/**
|
|
9
9
|
* Returns an object describing the differences for transforming the first given object into the second.
|
|
10
10
|
*
|
|
@@ -82,13 +82,11 @@ var diffObjProcessed = [];
|
|
|
82
82
|
* @param {Boolean} notRoot
|
|
83
83
|
* @returns {Object}
|
|
84
84
|
*/
|
|
85
|
-
export default function diffObj(obj1, obj2, unchanged, notRoot) {
|
|
86
|
-
if (unchanged === void 0) { unchanged = false; }
|
|
87
|
-
if (notRoot === void 0) { notRoot = false; }
|
|
85
|
+
export default function diffObj(obj1, obj2, unchanged = false, notRoot = false) {
|
|
88
86
|
if (!notRoot) {
|
|
89
87
|
diffObjProcessed = [];
|
|
90
88
|
}
|
|
91
|
-
|
|
89
|
+
let VALUE_CREATED = 'created', VALUE_UPDATED = 'updated', VALUE_DELETED = 'deleted', VALUE_UNCHANGED = 'unchanged', _compareValues = function (value1, value2) {
|
|
92
90
|
if (value1 === value2) {
|
|
93
91
|
return VALUE_UNCHANGED;
|
|
94
92
|
}
|
|
@@ -106,12 +104,12 @@ export default function diffObj(obj1, obj2, unchanged, notRoot) {
|
|
|
106
104
|
if (notRoot === undefined) {
|
|
107
105
|
notRoot = false;
|
|
108
106
|
}
|
|
109
|
-
|
|
107
|
+
let diff = createObject();
|
|
110
108
|
if (!isFunction(obj1) && !isFunction(obj2)) {
|
|
111
109
|
if (isNotObject(obj1) || isNotObject(obj2)) {
|
|
112
|
-
|
|
110
|
+
let res = _compareValues(obj1, obj2);
|
|
113
111
|
if (unchanged || res !== VALUE_UNCHANGED) {
|
|
114
|
-
|
|
112
|
+
let ret = createObject();
|
|
115
113
|
Object.defineProperty(ret, 'type', {
|
|
116
114
|
value: res,
|
|
117
115
|
enumerable: false,
|
|
@@ -142,24 +140,24 @@ export default function diffObj(obj1, obj2, unchanged, notRoot) {
|
|
|
142
140
|
return false;
|
|
143
141
|
}
|
|
144
142
|
diffObjProcessed.push(obj1, obj2);
|
|
145
|
-
for (
|
|
143
|
+
for (let key in obj1) {
|
|
146
144
|
if (isFunction(obj1[key])) {
|
|
147
145
|
continue;
|
|
148
146
|
}
|
|
149
|
-
|
|
147
|
+
let value2 = undefined;
|
|
150
148
|
if ('undefined' != typeof obj2[key]) {
|
|
151
149
|
value2 = obj2[key];
|
|
152
150
|
}
|
|
153
|
-
|
|
151
|
+
let res = diffObj(obj1[key], value2, unchanged, true);
|
|
154
152
|
if (res) {
|
|
155
153
|
diff[key] = res;
|
|
156
154
|
}
|
|
157
155
|
}
|
|
158
|
-
for (
|
|
156
|
+
for (let key in obj2) {
|
|
159
157
|
if (isFunction(obj2[key]) || 'undefined' != typeof obj1[key]) {
|
|
160
158
|
continue;
|
|
161
159
|
}
|
|
162
|
-
|
|
160
|
+
let res = diffObj(undefined, obj2[key], unchanged, true);
|
|
163
161
|
if (res) {
|
|
164
162
|
diff[key] = res;
|
|
165
163
|
}
|
package/dist/fn/object/extend.js
CHANGED
|
@@ -87,14 +87,10 @@ import isObject from '../type/isObject.js';
|
|
|
87
87
|
* @memberof bbn.fn
|
|
88
88
|
* @returns {Object} The first object argument, merged with the other objects given
|
|
89
89
|
*/
|
|
90
|
-
export default function extend() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
var deep = false;
|
|
96
|
-
var args = [];
|
|
97
|
-
for (var i = 0; i < originalArgs.length; i++) {
|
|
90
|
+
export default function extend(...originalArgs) {
|
|
91
|
+
let deep = false;
|
|
92
|
+
let args = [];
|
|
93
|
+
for (let i = 0; i < originalArgs.length; i++) {
|
|
98
94
|
if (originalArgs[i] === true) {
|
|
99
95
|
deep = true;
|
|
100
96
|
}
|
|
@@ -111,16 +107,16 @@ export default function extend() {
|
|
|
111
107
|
if (!args.length) {
|
|
112
108
|
throw new Error("No argument given");
|
|
113
109
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
for (
|
|
117
|
-
iterate(args[i],
|
|
110
|
+
let out = args[0];
|
|
111
|
+
let hasNoData;
|
|
112
|
+
for (let i = 1; i < args.length; i++) {
|
|
113
|
+
iterate(args[i], (a, key) => {
|
|
118
114
|
if (deep) {
|
|
119
115
|
if (isArray(a)) {
|
|
120
116
|
out[key] = isArray(out[key]) ? out[key] : [];
|
|
121
|
-
each(a,
|
|
117
|
+
each(a, (b, i) => {
|
|
122
118
|
if (b && typeof b === "object") {
|
|
123
|
-
|
|
119
|
+
let tmp = out[key][i];
|
|
124
120
|
if (isArray(b)) {
|
|
125
121
|
if (!isArray(tmp)) {
|
|
126
122
|
tmp = [];
|
|
@@ -15,14 +15,9 @@ import isObject from '../type/isObject.js';
|
|
|
15
15
|
* @memberof bbn.fn
|
|
16
16
|
* @returns {Object}
|
|
17
17
|
*/
|
|
18
|
-
export default function extendOut() {
|
|
19
|
-
|
|
20
|
-
for (
|
|
21
|
-
args[_i] = arguments[_i];
|
|
22
|
-
}
|
|
23
|
-
var r = null;
|
|
24
|
-
for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
|
|
25
|
-
var a = args_1[_a];
|
|
18
|
+
export default function extendOut(...args) {
|
|
19
|
+
let r = null;
|
|
20
|
+
for (let a of args) {
|
|
26
21
|
if (!isObject(a)) {
|
|
27
22
|
throw new Error("Each argument for extendOut must be an object, " + typeof a + " given");
|
|
28
23
|
}
|
|
@@ -30,7 +25,7 @@ export default function extendOut() {
|
|
|
30
25
|
r = a;
|
|
31
26
|
}
|
|
32
27
|
else {
|
|
33
|
-
for (
|
|
28
|
+
for (let n in a) {
|
|
34
29
|
if (isObject(r[n], a[n])) {
|
|
35
30
|
extendOut(r[n], a[n]);
|
|
36
31
|
}
|
package/dist/fn/object/filter.js
CHANGED
|
@@ -48,16 +48,14 @@ import compareConditions from './compareConditions.js';
|
|
|
48
48
|
* @param {String} operator The operator to use for comparison with the value as used in bbn.fn.compare
|
|
49
49
|
* @returns {Array} A new filtered array
|
|
50
50
|
*/
|
|
51
|
-
export default function filter(arr, prop, val, operator) {
|
|
52
|
-
if (val === void 0) { val = null; }
|
|
53
|
-
if (operator === void 0) { operator = '='; }
|
|
51
|
+
export default function filter(arr, prop, val = null, operator = '=') {
|
|
54
52
|
if (!isArray(arr)) {
|
|
55
53
|
bbn.fn.log("NOT ARRAY", arr);
|
|
56
54
|
throw new Error('Error in filter: The first argument must be an array');
|
|
57
55
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
let cfg = {};
|
|
57
|
+
const res = [];
|
|
58
|
+
const isFn = typeof (prop) === 'function';
|
|
61
59
|
if (!prop || !arr.length) {
|
|
62
60
|
return arr;
|
|
63
61
|
}
|
|
@@ -72,20 +70,16 @@ export default function filter(arr, prop, val, operator) {
|
|
|
72
70
|
throw new Error('Search function error: The prop argument should be a string or an object');
|
|
73
71
|
}
|
|
74
72
|
if (typeof (prop) === 'function') {
|
|
75
|
-
for (
|
|
76
|
-
bbn.env._enumerated.push(true);
|
|
73
|
+
for (let i = 0; i < arr.length; i++) {
|
|
77
74
|
if (prop(arr[i], i)) {
|
|
78
|
-
bbn.env._enumerated.pop();
|
|
79
75
|
res.push(arr[i]);
|
|
80
|
-
bbn.env._enumerated.push(true);
|
|
81
76
|
}
|
|
82
|
-
bbn.env._enumerated.pop();
|
|
83
77
|
}
|
|
84
78
|
}
|
|
85
79
|
else {
|
|
86
80
|
cfg = filterToConditions(cfg, operator);
|
|
87
81
|
if (cfg.conditions && cfg.logic) {
|
|
88
|
-
for (
|
|
82
|
+
for (let i = 0; i < arr.length; i++) {
|
|
89
83
|
if (compareConditions(arr[i], cfg)) {
|
|
90
84
|
res.push(arr[i]);
|
|
91
85
|
}
|
|
@@ -38,19 +38,18 @@ import iterate from '../loop/iterate.js';
|
|
|
38
38
|
* @param {String} operator
|
|
39
39
|
* @returns {Object}
|
|
40
40
|
*/
|
|
41
|
-
export default function filterToConditions(filter, operator) {
|
|
42
|
-
if (operator === void 0) { operator = "="; }
|
|
41
|
+
export default function filterToConditions(filter, operator = "=") {
|
|
43
42
|
if (!isObject(filter)) {
|
|
44
43
|
throw new Error("Error in filterToCondition: filter must be an object");
|
|
45
44
|
}
|
|
46
45
|
if (!filter.conditions || !isArray(filter.conditions)) {
|
|
47
|
-
|
|
48
|
-
iterate(filter,
|
|
46
|
+
let tmp = [];
|
|
47
|
+
iterate(filter, (a, n) => {
|
|
49
48
|
if (isObject(a) && typeof a.conditions === "object") {
|
|
50
|
-
|
|
49
|
+
tmp.push(filterToConditions(a));
|
|
51
50
|
}
|
|
52
51
|
else {
|
|
53
|
-
|
|
52
|
+
tmp.push({
|
|
54
53
|
field: n,
|
|
55
54
|
operator: operator,
|
|
56
55
|
value: a,
|
|
@@ -58,7 +57,7 @@ export default function filterToConditions(filter, operator) {
|
|
|
58
57
|
}
|
|
59
58
|
});
|
|
60
59
|
filter = {
|
|
61
|
-
conditions:
|
|
60
|
+
conditions: tmp,
|
|
62
61
|
};
|
|
63
62
|
}
|
|
64
63
|
if (!filter.logic) {
|
|
@@ -56,15 +56,14 @@ import isArray from '../type/isArray.js';
|
|
|
56
56
|
* @param {String} operator The operator to use for comparison with the value as used in bbn.fn.compare
|
|
57
57
|
* @returns {Number} The number of items
|
|
58
58
|
*/
|
|
59
|
-
export default function findAll(arr, filter, deepProperty, res) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
var start = 0;
|
|
59
|
+
export default function findAll(arr, filter, deepProperty, res = []) {
|
|
60
|
+
let idx;
|
|
61
|
+
let start = 0;
|
|
63
62
|
while ((idx = search(arr, filter, start)) > -1) {
|
|
64
63
|
res.push(arr[idx]);
|
|
65
64
|
start = idx + 1;
|
|
66
65
|
}
|
|
67
|
-
each(arr,
|
|
66
|
+
each(arr, (it) => {
|
|
68
67
|
if (isArray(it[deepProperty])) {
|
|
69
68
|
findAll(it[deepProperty], filter, deepProperty, res);
|
|
70
69
|
}
|
|
@@ -29,14 +29,8 @@ import getRow from './getRow.js';
|
|
|
29
29
|
* @param {Boolean} backward Searches backward
|
|
30
30
|
* @returns {*}
|
|
31
31
|
*/
|
|
32
|
-
export default function getField(arr, field, prop, val, operator, from, backward, notFound) {
|
|
33
|
-
|
|
34
|
-
if (val === void 0) { val = null; }
|
|
35
|
-
if (operator === void 0) { operator = '='; }
|
|
36
|
-
if (from === void 0) { from = 0; }
|
|
37
|
-
if (backward === void 0) { backward = false; }
|
|
38
|
-
if (notFound === void 0) { notFound = undefined; }
|
|
39
|
-
var r;
|
|
32
|
+
export default function getField(arr, field, prop = '', val = null, operator = '=', from = 0, backward = false, notFound = undefined) {
|
|
33
|
+
let r;
|
|
40
34
|
if (prop && ['object', 'function'].includes(typeof prop) && (6 in arguments)) {
|
|
41
35
|
notFound = backward;
|
|
42
36
|
}
|
|
@@ -34,8 +34,8 @@ export default function getFieldValues(arr, field, prop, val, operator) {
|
|
|
34
34
|
if (prop) {
|
|
35
35
|
arr = _filter(arr, prop, val, operator);
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
each(arr,
|
|
37
|
+
let res = [];
|
|
38
|
+
each(arr, (a) => (res.indexOf(a[field]) === -1 ? res.push(a[field]) : null));
|
|
39
39
|
return res;
|
|
40
40
|
}
|
|
41
41
|
;
|
|
@@ -26,20 +26,16 @@
|
|
|
26
26
|
* @param {String} props
|
|
27
27
|
* @returns {*} The property's value or undefined
|
|
28
28
|
*/
|
|
29
|
-
export default function getProperty(obj) {
|
|
30
|
-
var props = [];
|
|
31
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
32
|
-
props[_i - 1] = arguments[_i];
|
|
33
|
-
}
|
|
29
|
+
export default function getProperty(obj, ...props) {
|
|
34
30
|
if (typeof obj === 'object') {
|
|
35
|
-
|
|
31
|
+
const arr = [];
|
|
36
32
|
if (props.length === 1 && typeof props[0] === 'string') {
|
|
37
|
-
arr.push
|
|
33
|
+
arr.push(...props[0].split('.'));
|
|
38
34
|
}
|
|
39
35
|
else {
|
|
40
|
-
arr.push
|
|
36
|
+
arr.push(...props);
|
|
41
37
|
}
|
|
42
|
-
return arr.reduce(
|
|
38
|
+
return arr.reduce((o, i) => {
|
|
43
39
|
if (o) {
|
|
44
40
|
return o[o instanceof Array ? parseInt(i) : i];
|
|
45
41
|
}
|
package/dist/fn/object/getRow.js
CHANGED
|
@@ -42,13 +42,8 @@ import search from './search.js';
|
|
|
42
42
|
* @param {*} notFound Value to return when not found
|
|
43
43
|
* @returns {*} The item if found, false otherwise
|
|
44
44
|
*/
|
|
45
|
-
export default function getRow(arr, prop, val, operator, from, backward, notFound) {
|
|
46
|
-
|
|
47
|
-
if (operator === void 0) { operator = '='; }
|
|
48
|
-
if (from === void 0) { from = 0; }
|
|
49
|
-
if (backward === void 0) { backward = false; }
|
|
50
|
-
if (notFound === void 0) { notFound = false; }
|
|
51
|
-
var idx = search(arr, prop, val, operator, from, backward);
|
|
45
|
+
export default function getRow(arr, prop, val = null, operator = '=', from = 0, backward = false, notFound = false) {
|
|
46
|
+
let idx = search(arr, prop, val, operator, from, backward);
|
|
52
47
|
if (idx > -1) {
|
|
53
48
|
return arr[idx];
|
|
54
49
|
}
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
* @returns {Array} The same array, with elements repositionned.
|
|
20
20
|
*/
|
|
21
21
|
// LIS indices on `pos` (strictly increasing)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
for (
|
|
25
|
-
|
|
22
|
+
const lisIndices = (arr) => {
|
|
23
|
+
const n = arr.length, tails = [], prev = Array(n).fill(-1);
|
|
24
|
+
for (let i = 0; i < n; i++) {
|
|
25
|
+
let x = arr[i], lo = 0, hi = tails.length;
|
|
26
26
|
while (lo < hi) {
|
|
27
|
-
|
|
27
|
+
const mid = (lo + hi) >> 1;
|
|
28
28
|
if (arr[tails[mid]] < x)
|
|
29
29
|
lo = mid + 1;
|
|
30
30
|
else
|
|
@@ -34,8 +34,8 @@ var lisIndices = function (arr) {
|
|
|
34
34
|
prev[i] = tails[lo - 1];
|
|
35
35
|
tails[lo] = i;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
for (
|
|
37
|
+
const res = [];
|
|
38
|
+
for (let k = tails.length ? tails[tails.length - 1] : -1; k !== -1; k = prev[k])
|
|
39
39
|
res.push(k);
|
|
40
40
|
return res.reverse();
|
|
41
41
|
};
|
|
@@ -43,53 +43,53 @@ export default function getSortingMoves(src, dst) {
|
|
|
43
43
|
if (src.length !== dst.length)
|
|
44
44
|
throw new Error("Lengths must match.");
|
|
45
45
|
// Validate same unique set
|
|
46
|
-
|
|
46
|
+
const setDst = new Set(dst);
|
|
47
47
|
if (setDst.size !== dst.length)
|
|
48
48
|
throw new Error("dst has duplicates.");
|
|
49
|
-
|
|
49
|
+
const setSrc = new Set(src);
|
|
50
50
|
if (setSrc.size !== src.length)
|
|
51
51
|
throw new Error("src has duplicates.");
|
|
52
|
-
if (src.length !== setDst.size || Array.from(setSrc).some(
|
|
52
|
+
if (src.length !== setDst.size || Array.from(setSrc).some(v => !setDst.has(v))) {
|
|
53
53
|
throw new Error("Arrays must contain the same unique values.");
|
|
54
54
|
}
|
|
55
55
|
// Map each value to its index in dst
|
|
56
|
-
|
|
56
|
+
const posInDst = new Map(dst.map((v, i) => [v, i]));
|
|
57
57
|
// Convert src into positions-in-dst
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
const pos = src.map(v => posInDst.get(v));
|
|
59
|
+
const lisIdx = lisIndices(pos);
|
|
60
|
+
const keepSet = new Set(lisIdx.map(i => src[i])); // values we won't move
|
|
61
61
|
// Next kept anchor to the right for each dst index
|
|
62
|
-
|
|
63
|
-
for (
|
|
62
|
+
const nextKeptAfter = Array(dst.length).fill(-1);
|
|
63
|
+
for (let i = dst.length - 2; i >= 0; i--) {
|
|
64
64
|
nextKeptAfter[i] = nextKeptAfter[i + 1];
|
|
65
65
|
if (keepSet.has(dst[i + 1]))
|
|
66
66
|
nextKeptAfter[i] = i + 1;
|
|
67
67
|
}
|
|
68
68
|
// Simulate moves on a working copy
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
for (
|
|
73
|
-
|
|
69
|
+
const work = src.slice();
|
|
70
|
+
const indexOf = new Map(work.map((v, i) => [v, i]));
|
|
71
|
+
const moves = [];
|
|
72
|
+
for (let i = 0; i < dst.length; i++) {
|
|
73
|
+
const v = dst[i];
|
|
74
74
|
if (keepSet.has(v))
|
|
75
75
|
continue; // leave in place
|
|
76
|
-
|
|
76
|
+
const from = indexOf.get(v);
|
|
77
77
|
if (from === undefined) {
|
|
78
78
|
throw new Error("Inconsistent state");
|
|
79
79
|
}
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
const j = nextKeptAfter[i];
|
|
81
|
+
const to = (j !== -1) ? indexOf.get(dst[j]) : work.length;
|
|
82
82
|
if (to === undefined) {
|
|
83
83
|
throw new Error("Inconsistent state");
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
const adjustedTo = from < to ? to - 1 : to;
|
|
86
86
|
if (from !== adjustedTo) {
|
|
87
|
-
|
|
87
|
+
const [moved] = work.splice(from, 1);
|
|
88
88
|
work.splice(adjustedTo, 0, moved);
|
|
89
|
-
moves.push({ from
|
|
89
|
+
moves.push({ from, to: adjustedTo, value: v });
|
|
90
90
|
// refresh indices (simple & reliable)
|
|
91
91
|
indexOf.clear();
|
|
92
|
-
for (
|
|
92
|
+
for (let p = 0; p < work.length; p++)
|
|
93
93
|
indexOf.set(work[p], p);
|
|
94
94
|
}
|
|
95
95
|
}
|
package/dist/fn/object/map.js
CHANGED
|
@@ -71,9 +71,8 @@ import isArray from '../type/isArray.js';
|
|
|
71
71
|
* @param {Number} level
|
|
72
72
|
* @returns {Array}
|
|
73
73
|
*/
|
|
74
|
-
export default function map(arr, fn, deepProp, level) {
|
|
75
|
-
|
|
76
|
-
return arr.map(function (a, i) {
|
|
74
|
+
export default function map(arr, fn, deepProp, level = 0) {
|
|
75
|
+
return arr.map((a, i) => {
|
|
77
76
|
a = fn(a, i, level);
|
|
78
77
|
if (deepProp && a[deepProp] && isArray(a[deepProp])) {
|
|
79
78
|
a[deepProp] = map(a[deepProp], fn, deepProp, level + 1);
|
package/dist/fn/object/move.js
CHANGED
|
@@ -41,7 +41,7 @@ export default function multiorder(arr, orders) {
|
|
|
41
41
|
if (!orders) {
|
|
42
42
|
return arr;
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
let currentOrders;
|
|
45
45
|
if (!Array.isArray(orders) && typeof orders === 'object') {
|
|
46
46
|
currentOrders = [];
|
|
47
47
|
for (var n in orders) {
|
|
@@ -54,11 +54,10 @@ export default function multiorder(arr, orders) {
|
|
|
54
54
|
if (!Array.isArray(currentOrders)) {
|
|
55
55
|
throw new Error('The orders argument must be an array');
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
return r.sort(
|
|
59
|
-
|
|
60
|
-
for (
|
|
61
|
-
var order = currentOrders_1[_i];
|
|
57
|
+
let r = arr.slice();
|
|
58
|
+
return r.sort((a, b) => {
|
|
59
|
+
let res;
|
|
60
|
+
for (let order of currentOrders) {
|
|
62
61
|
res = _compareValues(a, b, order.field, order.dir);
|
|
63
62
|
if (res !== 0) {
|
|
64
63
|
return res;
|
|
@@ -3,8 +3,7 @@ import hash from '../string/hash.js';
|
|
|
3
3
|
import isSame from '../type/isSame.js';
|
|
4
4
|
import search from './search.js';
|
|
5
5
|
import checkType from '../type/checkType.js';
|
|
6
|
-
export default function mutateArray(a1, a2, hashFn) {
|
|
7
|
-
if (hashFn === void 0) { hashFn = null; }
|
|
6
|
+
export default function mutateArray(a1, a2, hashFn = null) {
|
|
8
7
|
if (!isArray(a1, a2)) {
|
|
9
8
|
throw new TypeError('mutateArray can only be called with arrays');
|
|
10
9
|
}
|
|
@@ -14,27 +13,27 @@ export default function mutateArray(a1, a2, hashFn) {
|
|
|
14
13
|
else {
|
|
15
14
|
checkType(hashFn, 'function', 'The hash function must be a function');
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const mapA2 = new Map(a2.map(item => [hashFn(item), item]));
|
|
17
|
+
let a1Ordered = [];
|
|
19
18
|
// Build a1Ordered to have the same order and contents as a2
|
|
20
|
-
a2.forEach(
|
|
19
|
+
a2.forEach(item => {
|
|
21
20
|
a1Ordered.push(item);
|
|
22
21
|
});
|
|
23
22
|
// Remove items from a1 that are not in a2
|
|
24
|
-
|
|
23
|
+
let i = a1.length;
|
|
25
24
|
while (i--) {
|
|
26
25
|
if (!mapA2.has(hashFn(a1[i]))) {
|
|
27
26
|
a1.splice(i, 1);
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
29
|
// Insert or move items to match the order of a2
|
|
31
|
-
for (
|
|
30
|
+
for (let j = 0; j < a1Ordered.length; j++) {
|
|
32
31
|
if ((j >= a1.length) || !isSame(a1[j], a1Ordered[j])) {
|
|
33
32
|
// Find the index of the item in a1, if it exists
|
|
34
|
-
|
|
33
|
+
const indexInA1 = search(a1, a1Ordered[j]);
|
|
35
34
|
if (indexInA1 !== -1) {
|
|
36
35
|
// Move the item to the correct position if it already exists in a1
|
|
37
|
-
|
|
36
|
+
const [itemToMove] = a1.splice(indexInA1, 1);
|
|
38
37
|
a1.splice(j, 0, itemToMove);
|
|
39
38
|
}
|
|
40
39
|
else {
|
|
@@ -12,14 +12,14 @@ export default function mutateObject(a1, a2, hashFn) {
|
|
|
12
12
|
else {
|
|
13
13
|
hashFn = hash;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
const mapA2 = Object.keys(a2);
|
|
16
16
|
// Remove items from a1 that are not in a2
|
|
17
|
-
for (
|
|
17
|
+
for (let n in a1) {
|
|
18
18
|
if (!mapA2.includes(n)) {
|
|
19
19
|
delete a1[n];
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
mapA2.forEach(
|
|
22
|
+
mapA2.forEach(n => {
|
|
23
23
|
if (!isSame(a1[n], a2[n])) {
|
|
24
24
|
a1[n] = a2[n];
|
|
25
25
|
}
|
package/dist/fn/object/order.js
CHANGED
|
@@ -25,8 +25,7 @@ import _compareValues from './_compareValues.js';
|
|
|
25
25
|
* @param {String} [dir=asc] The direction of the order (desc or asc by default)
|
|
26
26
|
* @returns {Array}
|
|
27
27
|
*/
|
|
28
|
-
export default function order(arr, prop, dir) {
|
|
29
|
-
if (dir === void 0) { dir = 'asc'; }
|
|
28
|
+
export default function order(arr, prop, dir = 'asc') {
|
|
30
29
|
if (arr) {
|
|
31
30
|
return arr.sort(function (a, b) {
|
|
32
31
|
return _compareValues(a, b, prop, dir);
|