@bbn/bbn 1.0.437 → 1.0.439
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 +39 -0
- package/dist/date.js +339 -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 -8
- 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
|
@@ -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,7 +70,7 @@ 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 (
|
|
73
|
+
for (let i = 0; i < arr.length; i++) {
|
|
76
74
|
if (prop(arr[i], i)) {
|
|
77
75
|
res.push(arr[i]);
|
|
78
76
|
}
|
|
@@ -81,7 +79,7 @@ export default function filter(arr, prop, val, operator) {
|
|
|
81
79
|
else {
|
|
82
80
|
cfg = filterToConditions(cfg, operator);
|
|
83
81
|
if (cfg.conditions && cfg.logic) {
|
|
84
|
-
for (
|
|
82
|
+
for (let i = 0; i < arr.length; i++) {
|
|
85
83
|
if (compareConditions(arr[i], cfg)) {
|
|
86
84
|
res.push(arr[i]);
|
|
87
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);
|
|
@@ -20,8 +20,8 @@ import numProperties from './numProperties.js';
|
|
|
20
20
|
export default function removeEmpty(arr) {
|
|
21
21
|
var tmp = [];
|
|
22
22
|
if (isArray(arr)) {
|
|
23
|
-
for (
|
|
24
|
-
|
|
23
|
+
for (let i = 0; i < arr.length; i++) {
|
|
24
|
+
let ok = false;
|
|
25
25
|
if (arr[i]) {
|
|
26
26
|
if (isArray(arr[i])) {
|
|
27
27
|
if (arr[i].length) {
|
|
@@ -21,9 +21,8 @@ import substr from '../string/substr.js';
|
|
|
21
21
|
* @param {Boolean} deep If true the function will be reapplied on object properties
|
|
22
22
|
* @returns {Object} A new object without only the _public_ properties.
|
|
23
23
|
*/
|
|
24
|
-
export default function removePrivateProp(obj, deep) {
|
|
25
|
-
|
|
26
|
-
var r = null;
|
|
24
|
+
export default function removePrivateProp(obj, deep = false) {
|
|
25
|
+
let r = null;
|
|
27
26
|
if (typeof obj === 'object') {
|
|
28
27
|
r = {};
|
|
29
28
|
for (var n in obj) {
|
package/dist/fn/object/search.js
CHANGED
|
@@ -101,23 +101,19 @@ import isArray from '../type/isArray.js';
|
|
|
101
101
|
* @param {Number} startFrom The index from which the search should start
|
|
102
102
|
* @returns {Number} The index if found, otherwise -1
|
|
103
103
|
*/
|
|
104
|
-
export default function search(arr, prop, val, operator, startFrom, backward) {
|
|
105
|
-
if (val === void 0) { val = null; }
|
|
106
|
-
if (operator === void 0) { operator = '='; }
|
|
107
|
-
if (startFrom === void 0) { startFrom = 0; }
|
|
108
|
-
if (backward === void 0) { backward = false; }
|
|
104
|
+
export default function search(arr, prop, val = null, operator = '=', startFrom = 0, backward = false) {
|
|
109
105
|
if (!isIterable(arr)) {
|
|
110
106
|
throw new Error(bbn._('The first argument for a search should be iterable') + ' ' + typeof arr + ' ' + bbn._('given'));
|
|
111
107
|
}
|
|
112
108
|
if (!arr.length) {
|
|
113
109
|
return -1;
|
|
114
110
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
111
|
+
let filter;
|
|
112
|
+
let isFn = false;
|
|
113
|
+
let fn;
|
|
118
114
|
if (!prop) {
|
|
119
115
|
isFn = true;
|
|
120
|
-
fn =
|
|
116
|
+
fn = a => {
|
|
121
117
|
return compareConditions({ value: a }, filterToConditions({
|
|
122
118
|
logic: 'AND',
|
|
123
119
|
conditions: [
|
|
@@ -156,8 +152,8 @@ export default function search(arr, prop, val, operator, startFrom, backward) {
|
|
|
156
152
|
};
|
|
157
153
|
}
|
|
158
154
|
else if (!('conditions' in prop)) {
|
|
159
|
-
|
|
160
|
-
for (
|
|
155
|
+
const conditions = [];
|
|
156
|
+
for (let p in prop) {
|
|
161
157
|
conditions.push({
|
|
162
158
|
field: p,
|
|
163
159
|
value: prop[p],
|
|
@@ -165,7 +161,7 @@ export default function search(arr, prop, val, operator, startFrom, backward) {
|
|
|
165
161
|
});
|
|
166
162
|
}
|
|
167
163
|
filter = {
|
|
168
|
-
conditions
|
|
164
|
+
conditions,
|
|
169
165
|
logic: 'AND'
|
|
170
166
|
};
|
|
171
167
|
}
|
|
@@ -180,17 +176,17 @@ export default function search(arr, prop, val, operator, startFrom, backward) {
|
|
|
180
176
|
};
|
|
181
177
|
}
|
|
182
178
|
}
|
|
183
|
-
|
|
179
|
+
let res = -1;
|
|
184
180
|
if (isFn || filter) {
|
|
185
181
|
if (typeof startFrom !== 'number') {
|
|
186
182
|
startFrom = backward ? arr.length - 1 : 0;
|
|
187
183
|
}
|
|
188
184
|
if (!fn) {
|
|
189
|
-
|
|
190
|
-
fn =
|
|
185
|
+
const subfilter = filterToConditions(filter);
|
|
186
|
+
fn = (ele) => compareConditions(ele, subfilter);
|
|
191
187
|
}
|
|
192
188
|
if (backward) {
|
|
193
|
-
for (
|
|
189
|
+
for (let i = startFrom; i >= 0; i--) {
|
|
194
190
|
bbn.env._enumerated.push(true);
|
|
195
191
|
if (fn(arr[i])) {
|
|
196
192
|
bbn.env._enumerated.pop();
|
|
@@ -201,7 +197,7 @@ export default function search(arr, prop, val, operator, startFrom, backward) {
|
|
|
201
197
|
}
|
|
202
198
|
}
|
|
203
199
|
else {
|
|
204
|
-
for (
|
|
200
|
+
for (let i = startFrom; i < arr.length; i++) {
|
|
205
201
|
bbn.env._enumerated.push(true);
|
|
206
202
|
if (fn(arr[i])) {
|
|
207
203
|
bbn.env._enumerated.pop();
|