@koine/utils 2.0.0-beta.80 → 2.0.0-beta.82
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/Defer.cjs.js +1 -10
- package/Defer.esm.js +1 -10
- package/Emitter.cjs.js +1 -19
- package/Emitter.d.ts +1 -1
- package/Emitter.esm.js +1 -19
- package/accentsSets.cjs.d.ts +2 -0
- package/accentsSets.cjs.default.js +1 -0
- package/accentsSets.cjs.js +8 -0
- package/accentsSets.cjs.mjs +2 -0
- package/accentsSets.esm.js +3 -0
- package/addOrReplaceAtIdx.cjs.js +1 -14
- package/addOrReplaceAtIdx.esm.js +1 -14
- package/areEqual.cjs.js +1 -43
- package/areEqual.esm.js +1 -43
- package/arrayFilterFalsy.cjs.js +1 -1
- package/arrayFilterFalsy.d.ts +1 -1
- package/arrayFilterFalsy.esm.js +1 -1
- package/arrayFindLastIndex.cjs.js +1 -8
- package/arrayFindLastIndex.d.ts +1 -1
- package/arrayFindLastIndex.esm.js +1 -8
- package/arrayOfAll.cjs.js +1 -1
- package/arrayOfAll.esm.js +1 -1
- package/arraySum.cjs.js +1 -1
- package/arraySum.esm.js +1 -1
- package/arrayToLookup.cjs.js +1 -4
- package/arrayToLookup.esm.js +1 -4
- package/arrayUniqueByProperties.cjs.js +1 -1
- package/arrayUniqueByProperties.esm.js +1 -1
- package/buildUrlQueryString.cjs.js +1 -17
- package/buildUrlQueryString.esm.js +1 -17
- package/capitalize.cjs.js +1 -2
- package/capitalize.d.ts +1 -1
- package/capitalize.esm.js +1 -2
- package/changeCaseCamel.cjs.js +1 -17
- package/changeCaseCamel.esm.js +1 -17
- package/changeCaseCapital.cjs.js +1 -10
- package/changeCaseCapital.esm.js +1 -10
- package/changeCaseConstant.cjs.js +1 -6
- package/changeCaseConstant.esm.js +1 -6
- package/changeCaseDot.cjs.js +1 -1
- package/changeCaseDot.esm.js +1 -1
- package/changeCaseHelpers.cjs.js +1 -71
- package/changeCaseHelpers.esm.js +1 -71
- package/changeCaseKebab.cjs.js +1 -1
- package/changeCaseKebab.esm.js +1 -1
- package/changeCaseNone.cjs.js +1 -6
- package/changeCaseNone.esm.js +1 -6
- package/changeCasePascal.cjs.js +1 -9
- package/changeCasePascal.esm.js +1 -9
- package/changeCasePascalSnake.cjs.js +1 -1
- package/changeCasePascalSnake.esm.js +1 -1
- package/changeCasePath.cjs.js +1 -1
- package/changeCasePath.esm.js +1 -1
- package/changeCaseSentence.cjs.js +1 -15
- package/changeCaseSentence.esm.js +2 -16
- package/changeCaseSnake.cjs.js +1 -1
- package/changeCaseSnake.esm.js +1 -1
- package/changeCaseTrain.cjs.js +1 -1
- package/changeCaseTrain.esm.js +1 -1
- package/chunkByChunks.cjs.js +1 -31
- package/chunkByChunks.esm.js +1 -31
- package/chunkBySize.cjs.js +1 -7
- package/chunkBySize.esm.js +1 -7
- package/clamp.cjs.js +1 -1
- package/clamp.esm.js +1 -1
- package/clsx.cjs.js +7 -39
- package/clsx.esm.js +7 -39
- package/convertRange.cjs.js +1 -1
- package/convertRange.esm.js +1 -1
- package/cookie.cjs.js +1 -1
- package/cookie.esm.js +1 -1
- package/createPalette.cjs.js +1 -11
- package/createPalette.esm.js +1 -11
- package/debounce.cjs.js +1 -17
- package/debounce.esm.js +1 -17
- package/debouncePromise.cjs.js +7 -51
- package/debouncePromise.esm.js +7 -51
- package/debounceRaf.cjs.js +7 -12
- package/debounceRaf.esm.js +7 -12
- package/decode.cjs.js +1 -1
- package/decode.esm.js +1 -1
- package/encode.cjs.js +1 -1
- package/encode.esm.js +1 -1
- package/ensureInt.cjs.js +1 -1
- package/ensureInt.esm.js +1 -1
- package/errorToString.cjs.js +1 -1
- package/errorToString.esm.js +1 -1
- package/escapeRegExp.cjs.js +1 -1
- package/escapeRegExp.esm.js +1 -1
- package/findDuplicatedIndexes.cjs.js +1 -10
- package/findDuplicatedIndexes.esm.js +1 -10
- package/forin.cjs.js +1 -5
- package/forin.esm.js +1 -5
- package/gbToBytes.cjs.js +1 -1
- package/gbToBytes.esm.js +1 -1
- package/getEmptyArray.cjs.js +1 -3
- package/getEmptyArray.esm.js +1 -3
- package/getKeys.cjs.js +1 -1
- package/getKeys.d.ts +1 -1
- package/getKeys.esm.js +1 -1
- package/getMediaQueryWidthResolvers.cjs.js +1 -41
- package/getMediaQueryWidthResolvers.esm.js +1 -41
- package/getMediaQueryWidthTailwindScreens.cjs.js +1 -25
- package/getMediaQueryWidthTailwindScreens.esm.js +1 -25
- package/getNonce.cjs.js +1 -1
- package/getNonce.esm.js +1 -1
- package/getParamAmong.cjs.js +1 -4
- package/getParamAmong.esm.js +1 -4
- package/getParamAsInt.cjs.js +1 -7
- package/getParamAsInt.esm.js +1 -7
- package/getParamAsString.cjs.js +1 -1
- package/getParamAsString.esm.js +1 -1
- package/getType.cjs.js +1 -1
- package/getType.esm.js +1 -1
- package/getUrlHashParams.cjs.js +1 -8
- package/getUrlHashParams.esm.js +1 -8
- package/getUrlHashPathname.cjs.js +1 -1
- package/getUrlHashPathname.esm.js +1 -1
- package/getUrlPathnameParts.cjs.js +1 -4
- package/getUrlPathnameParts.esm.js +1 -4
- package/getUrlQueryParams.cjs.js +1 -20
- package/getUrlQueryParams.esm.js +1 -20
- package/hashAny.cjs.d.ts +2 -0
- package/hashAny.cjs.default.js +1 -0
- package/hashAny.cjs.js +11 -0
- package/hashAny.cjs.mjs +2 -0
- package/hashAny.d.ts +2 -0
- package/hashAny.esm.js +6 -0
- package/imgEmptyPixel.cjs.js +1 -1
- package/imgEmptyPixel.esm.js +1 -1
- package/index.cjs.js +5 -3
- package/index.d.ts +2 -1
- package/index.esm.js +3 -2
- package/invariant.cjs.js +1 -16
- package/invariant.esm.js +1 -16
- package/isAbsoluteUrl.cjs.js +1 -2
- package/isAbsoluteUrl.esm.js +1 -2
- package/isAnyObject.cjs.js +1 -1
- package/isAnyObject.esm.js +1 -1
- package/isArray.cjs.js +1 -1
- package/isArray.esm.js +1 -1
- package/isBlob.cjs.js +1 -1
- package/isBlob.esm.js +1 -1
- package/isBoolean.cjs.js +1 -1
- package/isBoolean.esm.js +1 -1
- package/isBrowser.cjs.js +1 -1
- package/isBrowser.esm.js +1 -1
- package/isBrowserNow.cjs.js +1 -1
- package/isBrowserNow.esm.js +1 -1
- package/isDate.cjs.js +1 -1
- package/isDate.esm.js +1 -1
- package/isEmptyArray.cjs.js +1 -1
- package/isEmptyArray.esm.js +1 -1
- package/isEmptyObject.cjs.js +1 -1
- package/isEmptyObject.esm.js +1 -1
- package/isEmptyString.cjs.js +1 -1
- package/isEmptyString.esm.js +1 -1
- package/isError.cjs.js +1 -1
- package/isError.esm.js +1 -1
- package/isExternalUrl.cjs.js +1 -9
- package/isExternalUrl.esm.js +1 -9
- package/isFile.cjs.js +1 -1
- package/isFile.esm.js +1 -1
- package/isFloat.cjs.js +1 -1
- package/isFloat.esm.js +1 -1
- package/isFormData.cjs.js +1 -1
- package/isFormData.esm.js +1 -1
- package/isFullArray.cjs.js +1 -1
- package/isFullArray.esm.js +1 -1
- package/isFullObject.cjs.js +1 -1
- package/isFullObject.esm.js +1 -1
- package/isFullString.cjs.js +1 -1
- package/isFullString.esm.js +1 -1
- package/isFunction.cjs.js +1 -1
- package/isFunction.esm.js +1 -1
- package/isInt.cjs.js +1 -1
- package/isInt.esm.js +1 -1
- package/isMap.cjs.js +1 -1
- package/isMap.esm.js +1 -1
- package/isNaNValue.cjs.js +1 -1
- package/isNaNValue.esm.js +1 -1
- package/isNegativeNumber.cjs.js +1 -1
- package/isNegativeNumber.esm.js +1 -1
- package/isNull.cjs.js +1 -1
- package/isNull.esm.js +1 -1
- package/isNullOrUndefined.cjs.js +1 -1
- package/isNullOrUndefined.esm.js +1 -1
- package/isNumber.cjs.js +1 -1
- package/isNumber.esm.js +1 -1
- package/isNumericLiteral.cjs.js +1 -1
- package/isNumericLiteral.esm.js +1 -1
- package/isObject.cjs.js +1 -1
- package/isObject.esm.js +1 -1
- package/isObjectLike.cjs.js +1 -1
- package/isObjectLike.esm.js +1 -1
- package/isObjectStringKeyed.cjs.js +1 -1
- package/isObjectStringKeyed.esm.js +1 -1
- package/isOneOf.cjs.js +1 -7
- package/isOneOf.esm.js +1 -7
- package/isPlainObject.cjs.js +1 -4
- package/isPlainObject.esm.js +1 -4
- package/isPositiveNumber.cjs.js +1 -1
- package/isPositiveNumber.esm.js +1 -1
- package/isPrimitive.cjs.js +1 -6
- package/isPrimitive.esm.js +1 -6
- package/isPromise.cjs.js +1 -1
- package/isPromise.esm.js +1 -1
- package/isRegExp.cjs.js +1 -1
- package/isRegExp.esm.js +1 -1
- package/isServer.cjs.js +1 -1
- package/isServer.esm.js +1 -1
- package/isServerNow.cjs.js +1 -1
- package/isServerNow.esm.js +1 -1
- package/isSet.cjs.js +1 -1
- package/isSet.esm.js +1 -1
- package/isString.cjs.js +1 -1
- package/isString.esm.js +1 -1
- package/isSymbol.cjs.js +1 -1
- package/isSymbol.esm.js +1 -1
- package/isType.cjs.js +1 -11
- package/isType.esm.js +1 -11
- package/isUndefined.cjs.js +1 -1
- package/isUndefined.esm.js +1 -1
- package/isWeakMap.cjs.js +1 -1
- package/isWeakMap.esm.js +1 -1
- package/isWeakSet.cjs.js +1 -1
- package/isWeakSet.esm.js +1 -1
- package/kbToBytes.cjs.js +1 -1
- package/kbToBytes.esm.js +1 -1
- package/lowercase.cjs.js +1 -1
- package/lowercase.d.ts +1 -1
- package/lowercase.esm.js +1 -1
- package/mapListBy.cjs.js +1 -4
- package/mapListBy.esm.js +1 -4
- package/matchSorter.cjs.js +5 -239
- package/matchSorter.d.ts +1 -1
- package/matchSorter.esm.js +3 -237
- package/mbToBytes.cjs.js +1 -1
- package/mbToBytes.esm.js +1 -1
- package/mergeObjects.cjs.js +1 -26
- package/mergeObjects.esm.js +1 -26
- package/mergeUrlQueryParams.cjs.js +1 -12
- package/mergeUrlQueryParams.esm.js +1 -12
- package/moveSortableArrayItemByKey.cjs.js +1 -8
- package/moveSortableArrayItemByKey.esm.js +1 -8
- package/noop.cjs.js +1 -1
- package/noop.esm.js +1 -1
- package/normaliseUrl.cjs.js +1 -1
- package/normaliseUrl.esm.js +1 -1
- package/normaliseUrlPathname.cjs.js +1 -1
- package/normaliseUrlPathname.esm.js +1 -1
- package/objectFlat.cjs.js +1 -16
- package/objectFlat.esm.js +1 -16
- package/objectFlip.cjs.js +1 -4
- package/objectFlip.esm.js +1 -4
- package/objectMergeWithDefaults.cjs.js +1 -19
- package/objectMergeWithDefaults.d.ts +1 -1
- package/objectMergeWithDefaults.esm.js +1 -19
- package/objectOmit.cjs.js +1 -7
- package/objectOmit.esm.js +1 -7
- package/objectPick.cjs.js +1 -8
- package/objectPick.esm.js +1 -8
- package/objectSort.cjs.js +1 -1
- package/objectSort.esm.js +1 -1
- package/objectSortByKeysMatching.cjs.js +1 -1
- package/objectSortByKeysMatching.esm.js +1 -1
- package/objectToArray.cjs.js +1 -1
- package/objectToArray.esm.js +1 -1
- package/package.json +10 -5
- package/parseCookie.cjs.js +1 -32
- package/parseCookie.esm.js +1 -32
- package/parseURL.cjs.js +1 -13
- package/parseURL.esm.js +1 -13
- package/quaranteneProps.cjs.js +1 -15
- package/quaranteneProps.esm.js +1 -15
- package/randomInt.cjs.js +1 -1
- package/randomInt.esm.js +1 -1
- package/randomKey.cjs.js +1 -4
- package/randomKey.esm.js +1 -4
- package/readCookie.cjs.js +1 -33
- package/readCookie.esm.js +1 -33
- package/removeAccents.cjs.js +2 -9
- package/removeAccents.d.ts +1 -1
- package/removeAccents.esm.js +2 -9
- package/removeCookie.cjs.js +1 -7
- package/removeCookie.esm.js +1 -7
- package/removeDuplicates.cjs.js +1 -1
- package/removeDuplicates.esm.js +1 -1
- package/removeDuplicatesByKey.cjs.js +1 -12
- package/removeDuplicatesByKey.esm.js +1 -12
- package/removeDuplicatesComparing.cjs.js +1 -4
- package/removeDuplicatesComparing.esm.js +1 -4
- package/removeIndexesFromArray.cjs.js +1 -9
- package/removeIndexesFromArray.esm.js +1 -9
- package/removeTrailingSlash.cjs.js +1 -1
- package/removeTrailingSlash.esm.js +1 -1
- package/removeUrlQueryParams.cjs.js +1 -11
- package/removeUrlQueryParams.esm.js +1 -11
- package/render.cjs.js +1 -112
- package/render.esm.js +1 -112
- package/round.cjs.js +1 -3
- package/round.esm.js +1 -3
- package/roundTo.cjs.js +1 -10
- package/roundTo.esm.js +1 -10
- package/serializeCookie.cjs.js +1 -67
- package/serializeCookie.esm.js +1 -67
- package/setCookie.cjs.js +1 -41
- package/setCookie.esm.js +1 -41
- package/shuffle.cjs.js +1 -16
- package/shuffle.esm.js +1 -16
- package/slugify.cjs.js +2 -9
- package/slugify.esm.js +2 -9
- package/split.cjs.js +1 -1
- package/split.esm.js +1 -1
- package/splitReverse.cjs.js +1 -1
- package/splitReverse.esm.js +1 -1
- package/swapMap.cjs.js +1 -7
- package/swapMap.esm.js +1 -7
- package/throttle.cjs.js +1 -14
- package/throttle.d.ts +1 -1
- package/throttle.esm.js +1 -14
- package/titleCase.cjs.js +6 -3
- package/titleCase.esm.js +6 -3
- package/toNumber.cjs.js +1 -1
- package/toNumber.esm.js +1 -1
- package/toRgba.cjs.js +1 -7
- package/toRgba.esm.js +1 -7
- package/transformToUrlPathname.cjs.js +1 -3
- package/transformToUrlPathname.esm.js +1 -3
- package/truncate.cjs.js +1 -5
- package/truncate.esm.js +1 -5
- package/tryUntil.cjs.js +1 -14
- package/tryUntil.esm.js +1 -14
- package/uid.cjs.js +1 -5
- package/uid.esm.js +1 -5
- package/updateLinkParams.cjs.js +1 -5
- package/updateLinkParams.esm.js +1 -5
- package/updateUrlQueryParams.cjs.js +1 -7
- package/updateUrlQueryParams.esm.js +1 -7
- package/uppercase.cjs.js +1 -1
- package/uppercase.d.ts +1 -1
- package/uppercase.esm.js +1 -1
- package/uuid.cjs.js +1 -4
- package/uuid.esm.js +1 -4
- package/uuidNumeric.cjs.js +1 -1
- package/uuidNumeric.esm.js +1 -1
- package/wait.cjs.js +1 -1
- package/wait.esm.js +1 -1
- package/accentSets.cjs.d.ts +0 -2
- package/accentSets.cjs.default.js +0 -1
- package/accentSets.cjs.js +0 -36
- package/accentSets.cjs.mjs +0 -2
- package/accentSets.esm.js +0 -31
- /package/{accentSets.d.ts → accentsSets.d.ts} +0 -0
package/isUndefined.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var getType = require('./getType.cjs.js');
|
|
6
6
|
|
|
7
|
-
let isUndefined
|
|
7
|
+
let isUndefined=d=>"Undefined"===getType.getType(d);
|
|
8
8
|
|
|
9
9
|
exports["default"] = isUndefined;
|
|
10
10
|
exports.isUndefined = isUndefined;
|
package/isUndefined.esm.js
CHANGED
package/isWeakMap.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var getType = require('./getType.cjs.js');
|
|
6
6
|
|
|
7
|
-
let isWeakMap
|
|
7
|
+
let isWeakMap=a=>"WeakMap"===getType.getType(a);
|
|
8
8
|
|
|
9
9
|
exports["default"] = isWeakMap;
|
|
10
10
|
exports.isWeakMap = isWeakMap;
|
package/isWeakMap.esm.js
CHANGED
package/isWeakSet.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var getType = require('./getType.cjs.js');
|
|
6
6
|
|
|
7
|
-
let isWeakSet
|
|
7
|
+
let isWeakSet=t=>"WeakSet"===getType.getType(t);
|
|
8
8
|
|
|
9
9
|
exports["default"] = isWeakSet;
|
|
10
10
|
exports.isWeakSet = isWeakSet;
|
package/isWeakSet.esm.js
CHANGED
package/kbToBytes.cjs.js
CHANGED
package/kbToBytes.esm.js
CHANGED
package/lowercase.cjs.js
CHANGED
package/lowercase.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare let lowercase: <T extends string>(str?:
|
|
1
|
+
export declare let lowercase: <T extends string>(str?: null | T) => Lowercase<T>;
|
|
2
2
|
export default lowercase;
|
package/lowercase.esm.js
CHANGED
package/mapListBy.cjs.js
CHANGED
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
let mapListBy
|
|
6
|
-
obj[item[key]] = item;
|
|
7
|
-
return obj;
|
|
8
|
-
}, {});
|
|
5
|
+
let mapListBy=(e=[],t="")=>e.reduce((e,p)=>(e[p[t]]=p,e),{});
|
|
9
6
|
|
|
10
7
|
exports["default"] = mapListBy;
|
|
11
8
|
exports.mapListBy = mapListBy;
|
package/mapListBy.esm.js
CHANGED
package/matchSorter.cjs.js
CHANGED
|
@@ -5,244 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var isString = require('./isString.cjs.js');
|
|
6
6
|
var removeAccents = require('./removeAccents.cjs.js');
|
|
7
7
|
require('./getType.cjs.js');
|
|
8
|
-
require('./
|
|
8
|
+
require('./accentsSets.cjs.js');
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
const RANKING_EQUAL = 6;
|
|
12
|
-
const RANKING_STARTS_WITH = 5;
|
|
13
|
-
const RANKING_WORD_STARTS_WITH = 4;
|
|
14
|
-
const RANKING_CONTAINS = 3;
|
|
15
|
-
const RANKING_ACRONYM = 2;
|
|
16
|
-
const RANKING_MATCHES = 1;
|
|
17
|
-
const RANKING_NO_MATCH = 0;
|
|
18
|
-
let defaultBaseSortFn = (a, b) => String(a.rankedValue).localeCompare(String(b.rankedValue));
|
|
19
|
-
let matchSorter = (items, value, options = {}) => {
|
|
20
|
-
const { keys, threshold = RANKING_MATCHES, baseSort = defaultBaseSortFn, sorter = (matchedItems) => matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort)), } = options;
|
|
21
|
-
const matchedItems = items.reduce(reduceItemsToRanked, []);
|
|
22
|
-
return sorter(matchedItems).map(({ item }) => item);
|
|
23
|
-
function reduceItemsToRanked(matches, item, index) {
|
|
24
|
-
const rankingInfo = getHighestRanking(item, keys, value, options);
|
|
25
|
-
const { rank, keyThreshold = threshold } = rankingInfo;
|
|
26
|
-
if (rank >= keyThreshold) {
|
|
27
|
-
matches.push({ ...rankingInfo, item, index });
|
|
28
|
-
}
|
|
29
|
-
return matches;
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
let getHighestRanking = (item, keys, value, options) => {
|
|
33
|
-
if (!keys) {
|
|
34
|
-
const stringItem = item;
|
|
35
|
-
return {
|
|
36
|
-
rankedValue: stringItem,
|
|
37
|
-
rank: getMatchRanking(stringItem, value, options),
|
|
38
|
-
keyIndex: -1,
|
|
39
|
-
keyThreshold: options.threshold,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
const valuesToRank = getAllValuesToRank(item, keys);
|
|
43
|
-
return valuesToRank.reduce(({ rank, rankedValue, keyIndex, keyThreshold }, { itemValue, attributes }, i) => {
|
|
44
|
-
let newRank = getMatchRanking(itemValue, value, options);
|
|
45
|
-
let newRankedValue = rankedValue;
|
|
46
|
-
const { minRanking, maxRanking, threshold } = attributes;
|
|
47
|
-
if (newRank < minRanking && newRank >= RANKING_MATCHES) {
|
|
48
|
-
newRank = minRanking;
|
|
49
|
-
}
|
|
50
|
-
else if (newRank > maxRanking) {
|
|
51
|
-
newRank = maxRanking;
|
|
52
|
-
}
|
|
53
|
-
if (newRank > rank) {
|
|
54
|
-
rank = newRank;
|
|
55
|
-
keyIndex = i;
|
|
56
|
-
keyThreshold = threshold;
|
|
57
|
-
newRankedValue = itemValue;
|
|
58
|
-
}
|
|
59
|
-
return { rankedValue: newRankedValue, rank, keyIndex, keyThreshold };
|
|
60
|
-
}, {
|
|
61
|
-
rankedValue: item,
|
|
62
|
-
rank: RANKING_NO_MATCH,
|
|
63
|
-
keyIndex: -1,
|
|
64
|
-
keyThreshold: options.threshold,
|
|
65
|
-
});
|
|
66
|
-
};
|
|
67
|
-
let getMatchRanking = (testString, stringToRank, options) => {
|
|
68
|
-
testString = prepareValueForComparison(testString, options);
|
|
69
|
-
stringToRank = prepareValueForComparison(stringToRank, options);
|
|
70
|
-
if (stringToRank.length > testString.length) {
|
|
71
|
-
return RANKING_NO_MATCH;
|
|
72
|
-
}
|
|
73
|
-
if (testString === stringToRank) {
|
|
74
|
-
return RANKING_CASE_SENSITIVE_EQUAL;
|
|
75
|
-
}
|
|
76
|
-
testString = testString.toLowerCase();
|
|
77
|
-
stringToRank = stringToRank.toLowerCase();
|
|
78
|
-
if (testString === stringToRank) {
|
|
79
|
-
return RANKING_EQUAL;
|
|
80
|
-
}
|
|
81
|
-
if (testString.startsWith(stringToRank)) {
|
|
82
|
-
return RANKING_STARTS_WITH;
|
|
83
|
-
}
|
|
84
|
-
if (testString.includes(` ${stringToRank}`)) {
|
|
85
|
-
return RANKING_WORD_STARTS_WITH;
|
|
86
|
-
}
|
|
87
|
-
if (testString.includes(stringToRank)) {
|
|
88
|
-
return RANKING_CONTAINS;
|
|
89
|
-
}
|
|
90
|
-
else if (stringToRank.length === 1) {
|
|
91
|
-
return RANKING_NO_MATCH;
|
|
92
|
-
}
|
|
93
|
-
if (getAcronym(testString).includes(stringToRank)) {
|
|
94
|
-
return RANKING_ACRONYM;
|
|
95
|
-
}
|
|
96
|
-
return getClosenessRanking(testString, stringToRank);
|
|
97
|
-
};
|
|
98
|
-
let getAcronym = (string) => {
|
|
99
|
-
let acronym = "";
|
|
100
|
-
const wordsInString = string.split(" ");
|
|
101
|
-
wordsInString.forEach((wordInString) => {
|
|
102
|
-
const splitByHyphenWords = wordInString.split("-");
|
|
103
|
-
splitByHyphenWords.forEach((splitByHyphenWord) => {
|
|
104
|
-
acronym += splitByHyphenWord.substring(0, 1);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
return acronym;
|
|
108
|
-
};
|
|
109
|
-
let getClosenessRanking = (testString, stringToRank) => {
|
|
110
|
-
let matchingInOrderCharCount = 0;
|
|
111
|
-
let charNumber = 0;
|
|
112
|
-
function findMatchingCharacter(matchChar, string, index) {
|
|
113
|
-
for (let j = index, J = string.length; j < J; j++) {
|
|
114
|
-
const stringChar = string[j];
|
|
115
|
-
if (stringChar === matchChar) {
|
|
116
|
-
matchingInOrderCharCount += 1;
|
|
117
|
-
return j + 1;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return -1;
|
|
121
|
-
}
|
|
122
|
-
function getRanking(spread) {
|
|
123
|
-
const spreadPercentage = 1 / spread;
|
|
124
|
-
const inOrderPercentage = matchingInOrderCharCount / stringToRank.length;
|
|
125
|
-
const ranking = RANKING_MATCHES + inOrderPercentage * spreadPercentage;
|
|
126
|
-
return ranking;
|
|
127
|
-
}
|
|
128
|
-
const firstIndex = findMatchingCharacter(stringToRank[0], testString, 0);
|
|
129
|
-
if (firstIndex < 0) {
|
|
130
|
-
return RANKING_NO_MATCH;
|
|
131
|
-
}
|
|
132
|
-
charNumber = firstIndex;
|
|
133
|
-
for (let i = 1, I = stringToRank.length; i < I; i++) {
|
|
134
|
-
const matchChar = stringToRank[i];
|
|
135
|
-
charNumber = findMatchingCharacter(matchChar, testString, charNumber);
|
|
136
|
-
const found = charNumber > -1;
|
|
137
|
-
if (!found) {
|
|
138
|
-
return RANKING_NO_MATCH;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
const spread = charNumber - firstIndex;
|
|
142
|
-
return getRanking(spread);
|
|
143
|
-
};
|
|
144
|
-
let sortRankedValues = (a, b, baseSort) => {
|
|
145
|
-
const aFirst = -1;
|
|
146
|
-
const bFirst = 1;
|
|
147
|
-
const { rank: aRank, keyIndex: aKeyIndex } = a;
|
|
148
|
-
const { rank: bRank, keyIndex: bKeyIndex } = b;
|
|
149
|
-
const same = aRank === bRank;
|
|
150
|
-
if (same) {
|
|
151
|
-
if (aKeyIndex === bKeyIndex) {
|
|
152
|
-
return baseSort(a, b);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
return aKeyIndex < bKeyIndex ? aFirst : bFirst;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
return aRank > bRank ? aFirst : bFirst;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
let prepareValueForComparison = (value, { keepDiacritics }) => {
|
|
163
|
-
value = `${value}`;
|
|
164
|
-
if (!keepDiacritics) {
|
|
165
|
-
value = removeAccents.removeAccents(value);
|
|
166
|
-
}
|
|
167
|
-
return value;
|
|
168
|
-
};
|
|
169
|
-
let getItemValues = (item, key) => {
|
|
170
|
-
if (typeof key === "object") {
|
|
171
|
-
key = key.key;
|
|
172
|
-
}
|
|
173
|
-
let value;
|
|
174
|
-
if (typeof key === "function") {
|
|
175
|
-
value = key(item);
|
|
176
|
-
}
|
|
177
|
-
else if (item == null) {
|
|
178
|
-
value = null;
|
|
179
|
-
}
|
|
180
|
-
else if (Object.hasOwnProperty.call(item, key)) {
|
|
181
|
-
value = item[key];
|
|
182
|
-
}
|
|
183
|
-
else if (key.includes(".")) {
|
|
184
|
-
return getNestedValues(key, item);
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
value = null;
|
|
188
|
-
}
|
|
189
|
-
if (value == null) {
|
|
190
|
-
return [];
|
|
191
|
-
}
|
|
192
|
-
if (Array.isArray(value)) {
|
|
193
|
-
return value;
|
|
194
|
-
}
|
|
195
|
-
return [String(value)];
|
|
196
|
-
};
|
|
197
|
-
let getNestedValues = (path, item) => {
|
|
198
|
-
const keys = path.split(".");
|
|
199
|
-
let values = [item];
|
|
200
|
-
for (let i = 0, I = keys.length; i < I; i++) {
|
|
201
|
-
const nestedKey = keys[i];
|
|
202
|
-
let nestedValues = [];
|
|
203
|
-
for (let j = 0, J = values.length; j < J; j++) {
|
|
204
|
-
const nestedItem = values[j];
|
|
205
|
-
if (nestedItem == null)
|
|
206
|
-
continue;
|
|
207
|
-
if (Object.hasOwnProperty.call(nestedItem, nestedKey)) {
|
|
208
|
-
const nestedValue = nestedItem[nestedKey];
|
|
209
|
-
if (nestedValue != null) {
|
|
210
|
-
nestedValues.push(nestedValue);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
else if (nestedKey === "*") {
|
|
214
|
-
nestedValues = nestedValues.concat(nestedItem);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
values = nestedValues;
|
|
218
|
-
}
|
|
219
|
-
if (Array.isArray(values[0])) {
|
|
220
|
-
const result = [];
|
|
221
|
-
return result.concat(...values);
|
|
222
|
-
}
|
|
223
|
-
return values;
|
|
224
|
-
};
|
|
225
|
-
let getAllValuesToRank = (item, keys) => {
|
|
226
|
-
const allValues = [];
|
|
227
|
-
for (let j = 0, J = keys.length; j < J; j++) {
|
|
228
|
-
const key = keys[j];
|
|
229
|
-
const attributes = getKeyAttributes(key);
|
|
230
|
-
const itemValues = getItemValues(item, key);
|
|
231
|
-
for (let i = 0, I = itemValues.length; i < I; i++) {
|
|
232
|
-
allValues.push({
|
|
233
|
-
itemValue: itemValues[i],
|
|
234
|
-
attributes,
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return allValues;
|
|
239
|
-
};
|
|
240
|
-
const defaultKeyAttributes = {
|
|
241
|
-
maxRanking: Infinity,
|
|
242
|
-
minRanking: -Infinity,
|
|
243
|
-
};
|
|
244
|
-
let getKeyAttributes = (key) => isString.isString(key) ? defaultKeyAttributes : { ...defaultKeyAttributes, ...key };
|
|
10
|
+
let r=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue)),l=(e,t,l={})=>{let{keys:u,threshold:a=1,baseSort:o=r,sorter:s=e=>e.sort((e,t)=>i(e,t,o))}=l;return s(e.reduce(function(e,r,o){let i=n(r,u,t,l),{rank:s,keyThreshold:h=a}=i;return s>=h&&e.push({...i,item:r,index:o}),e},[])).map(({item:e})=>e)},n=(e,t,r,l)=>t?c(e,t).reduce(({rank:e,rankedValue:t,keyIndex:n,keyThreshold:a},{itemValue:o,attributes:i},s)=>{let h=u(o,r,l),f=t,{minRanking:c,maxRanking:d,threshold:k}=i;return h<c&&h>=1?h=c:h>d&&(h=d),h>e&&(e=h,n=s,a=k,f=o),{rankedValue:f,rank:e,keyIndex:n,keyThreshold:a}},{rankedValue:e,rank:0,keyIndex:-1,keyThreshold:l.threshold}):{rankedValue:e,rank:u(e,r,l),keyIndex:-1,keyThreshold:l.threshold},u=(e,t,r)=>(e=s(e,r),(t=s(t,r)).length>e.length)?0:e===t?7:(e=e.toLowerCase())===(t=t.toLowerCase())?6:e.startsWith(t)?5:e.includes(` ${t}`)?4:e.includes(t)?3:1===t.length?0:a(e).includes(t)?2:o(e,t),a=e=>{let t="";return e.split(" ").forEach(e=>{e.split("-").forEach(e=>{t+=e.substring(0,1);});}),t},o=(e,t)=>{let r=0,l=0;function n(e,t,l){for(let n=l,u=t.length;n<u;n++)if(t[n]===e)return r+=1,n+1;return -1}let u=n(t[0],e,0);if(u<0)return 0;l=u;for(let r=1,u=t.length;r<u;r++)if(!((l=n(t[r],e,l))>-1))return 0;return 1+1/(l-u)*(r/t.length)},i=(e,t,r)=>{let{rank:l,keyIndex:n}=e,{rank:u,keyIndex:a}=t;return l!==u?l>u?-1:1:n===a?r(e,t):n<a?-1:1},s=(e,{keepDiacritics:r})=>(e=`${e}`,r||(e=removeAccents.removeAccents(e)),e),h=(e,t)=>{let r;if("object"==typeof t&&(t=t.key),"function"==typeof t)r=t(e);else if(null==e)r=null;else if(Object.hasOwnProperty.call(e,t))r=e[t];else {if(t.includes("."))return f(t,e);r=null;}return null==r?[]:Array.isArray(r)?r:[String(r)]},f=(e,t)=>{let r=e.split("."),l=[t];for(let e=0,t=r.length;e<t;e++){let t=r[e],n=[];for(let e=0,r=l.length;e<r;e++){let r=l[e];if(null!=r){if(Object.hasOwnProperty.call(r,t)){let e=r[t];null!=e&&n.push(e);}else "*"===t&&(n=n.concat(r));}}l=n;}return Array.isArray(l[0])?[].concat(...l):l},c=(e,t)=>{let r=[];for(let l=0,n=t.length;l<n;l++){let n=t[l],u=k(n),a=h(e,n);for(let e=0,t=a.length;e<t;e++)r.push({itemValue:a[e],attributes:u});}return r},d={maxRanking:1/0,minRanking:-1/0},k=t=>isString.isString(t)?d:{...d,...t};
|
|
245
11
|
|
|
246
|
-
exports["default"] =
|
|
247
|
-
exports.defaultBaseSortFn =
|
|
248
|
-
exports.matchSorter =
|
|
12
|
+
exports["default"] = l;
|
|
13
|
+
exports.defaultBaseSortFn = r;
|
|
14
|
+
exports.matchSorter = l;
|
package/matchSorter.d.ts
CHANGED
|
@@ -48,7 +48,7 @@ declare const RANKING_MATCHES = 1;
|
|
|
48
48
|
declare const RANKING_NO_MATCH = 0;
|
|
49
49
|
type Ranking = typeof RANKING_CASE_SENSITIVE_EQUAL | typeof RANKING_EQUAL | typeof RANKING_STARTS_WITH | typeof RANKING_WORD_STARTS_WITH | typeof RANKING_CONTAINS | typeof RANKING_ACRONYM | typeof RANKING_MATCHES | typeof RANKING_NO_MATCH;
|
|
50
50
|
declare let defaultBaseSortFn: BaseSorter<unknown>;
|
|
51
|
-
declare let matchSorter: <ItemType = string>(items:
|
|
51
|
+
declare let matchSorter: <ItemType = string>(items: ReadonlyArray<ItemType>, value: string, options?: MatchSorterOptions<ItemType>) => Array<ItemType>;
|
|
52
52
|
export { matchSorter, defaultBaseSortFn };
|
|
53
53
|
export type { MatchSorterOptions, KeyAttributesOptions, KeyOption, KeyAttributes, RankingInfo, ValueGetterKey, };
|
|
54
54
|
export default matchSorter;
|
package/matchSorter.esm.js
CHANGED
|
@@ -1,242 +1,8 @@
|
|
|
1
1
|
import { isString } from './isString.esm.js';
|
|
2
2
|
import { removeAccents } from './removeAccents.esm.js';
|
|
3
3
|
import './getType.esm.js';
|
|
4
|
-
import './
|
|
4
|
+
import './accentsSets.esm.js';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
const RANKING_EQUAL = 6;
|
|
8
|
-
const RANKING_STARTS_WITH = 5;
|
|
9
|
-
const RANKING_WORD_STARTS_WITH = 4;
|
|
10
|
-
const RANKING_CONTAINS = 3;
|
|
11
|
-
const RANKING_ACRONYM = 2;
|
|
12
|
-
const RANKING_MATCHES = 1;
|
|
13
|
-
const RANKING_NO_MATCH = 0;
|
|
14
|
-
let defaultBaseSortFn = (a, b) => String(a.rankedValue).localeCompare(String(b.rankedValue));
|
|
15
|
-
let matchSorter = (items, value, options = {}) => {
|
|
16
|
-
const { keys, threshold = RANKING_MATCHES, baseSort = defaultBaseSortFn, sorter = (matchedItems) => matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort)), } = options;
|
|
17
|
-
const matchedItems = items.reduce(reduceItemsToRanked, []);
|
|
18
|
-
return sorter(matchedItems).map(({ item }) => item);
|
|
19
|
-
function reduceItemsToRanked(matches, item, index) {
|
|
20
|
-
const rankingInfo = getHighestRanking(item, keys, value, options);
|
|
21
|
-
const { rank, keyThreshold = threshold } = rankingInfo;
|
|
22
|
-
if (rank >= keyThreshold) {
|
|
23
|
-
matches.push({ ...rankingInfo, item, index });
|
|
24
|
-
}
|
|
25
|
-
return matches;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
let getHighestRanking = (item, keys, value, options) => {
|
|
29
|
-
if (!keys) {
|
|
30
|
-
const stringItem = item;
|
|
31
|
-
return {
|
|
32
|
-
rankedValue: stringItem,
|
|
33
|
-
rank: getMatchRanking(stringItem, value, options),
|
|
34
|
-
keyIndex: -1,
|
|
35
|
-
keyThreshold: options.threshold,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
const valuesToRank = getAllValuesToRank(item, keys);
|
|
39
|
-
return valuesToRank.reduce(({ rank, rankedValue, keyIndex, keyThreshold }, { itemValue, attributes }, i) => {
|
|
40
|
-
let newRank = getMatchRanking(itemValue, value, options);
|
|
41
|
-
let newRankedValue = rankedValue;
|
|
42
|
-
const { minRanking, maxRanking, threshold } = attributes;
|
|
43
|
-
if (newRank < minRanking && newRank >= RANKING_MATCHES) {
|
|
44
|
-
newRank = minRanking;
|
|
45
|
-
}
|
|
46
|
-
else if (newRank > maxRanking) {
|
|
47
|
-
newRank = maxRanking;
|
|
48
|
-
}
|
|
49
|
-
if (newRank > rank) {
|
|
50
|
-
rank = newRank;
|
|
51
|
-
keyIndex = i;
|
|
52
|
-
keyThreshold = threshold;
|
|
53
|
-
newRankedValue = itemValue;
|
|
54
|
-
}
|
|
55
|
-
return { rankedValue: newRankedValue, rank, keyIndex, keyThreshold };
|
|
56
|
-
}, {
|
|
57
|
-
rankedValue: item,
|
|
58
|
-
rank: RANKING_NO_MATCH,
|
|
59
|
-
keyIndex: -1,
|
|
60
|
-
keyThreshold: options.threshold,
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
let getMatchRanking = (testString, stringToRank, options) => {
|
|
64
|
-
testString = prepareValueForComparison(testString, options);
|
|
65
|
-
stringToRank = prepareValueForComparison(stringToRank, options);
|
|
66
|
-
if (stringToRank.length > testString.length) {
|
|
67
|
-
return RANKING_NO_MATCH;
|
|
68
|
-
}
|
|
69
|
-
if (testString === stringToRank) {
|
|
70
|
-
return RANKING_CASE_SENSITIVE_EQUAL;
|
|
71
|
-
}
|
|
72
|
-
testString = testString.toLowerCase();
|
|
73
|
-
stringToRank = stringToRank.toLowerCase();
|
|
74
|
-
if (testString === stringToRank) {
|
|
75
|
-
return RANKING_EQUAL;
|
|
76
|
-
}
|
|
77
|
-
if (testString.startsWith(stringToRank)) {
|
|
78
|
-
return RANKING_STARTS_WITH;
|
|
79
|
-
}
|
|
80
|
-
if (testString.includes(` ${stringToRank}`)) {
|
|
81
|
-
return RANKING_WORD_STARTS_WITH;
|
|
82
|
-
}
|
|
83
|
-
if (testString.includes(stringToRank)) {
|
|
84
|
-
return RANKING_CONTAINS;
|
|
85
|
-
}
|
|
86
|
-
else if (stringToRank.length === 1) {
|
|
87
|
-
return RANKING_NO_MATCH;
|
|
88
|
-
}
|
|
89
|
-
if (getAcronym(testString).includes(stringToRank)) {
|
|
90
|
-
return RANKING_ACRONYM;
|
|
91
|
-
}
|
|
92
|
-
return getClosenessRanking(testString, stringToRank);
|
|
93
|
-
};
|
|
94
|
-
let getAcronym = (string) => {
|
|
95
|
-
let acronym = "";
|
|
96
|
-
const wordsInString = string.split(" ");
|
|
97
|
-
wordsInString.forEach((wordInString) => {
|
|
98
|
-
const splitByHyphenWords = wordInString.split("-");
|
|
99
|
-
splitByHyphenWords.forEach((splitByHyphenWord) => {
|
|
100
|
-
acronym += splitByHyphenWord.substring(0, 1);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
return acronym;
|
|
104
|
-
};
|
|
105
|
-
let getClosenessRanking = (testString, stringToRank) => {
|
|
106
|
-
let matchingInOrderCharCount = 0;
|
|
107
|
-
let charNumber = 0;
|
|
108
|
-
function findMatchingCharacter(matchChar, string, index) {
|
|
109
|
-
for (let j = index, J = string.length; j < J; j++) {
|
|
110
|
-
const stringChar = string[j];
|
|
111
|
-
if (stringChar === matchChar) {
|
|
112
|
-
matchingInOrderCharCount += 1;
|
|
113
|
-
return j + 1;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return -1;
|
|
117
|
-
}
|
|
118
|
-
function getRanking(spread) {
|
|
119
|
-
const spreadPercentage = 1 / spread;
|
|
120
|
-
const inOrderPercentage = matchingInOrderCharCount / stringToRank.length;
|
|
121
|
-
const ranking = RANKING_MATCHES + inOrderPercentage * spreadPercentage;
|
|
122
|
-
return ranking;
|
|
123
|
-
}
|
|
124
|
-
const firstIndex = findMatchingCharacter(stringToRank[0], testString, 0);
|
|
125
|
-
if (firstIndex < 0) {
|
|
126
|
-
return RANKING_NO_MATCH;
|
|
127
|
-
}
|
|
128
|
-
charNumber = firstIndex;
|
|
129
|
-
for (let i = 1, I = stringToRank.length; i < I; i++) {
|
|
130
|
-
const matchChar = stringToRank[i];
|
|
131
|
-
charNumber = findMatchingCharacter(matchChar, testString, charNumber);
|
|
132
|
-
const found = charNumber > -1;
|
|
133
|
-
if (!found) {
|
|
134
|
-
return RANKING_NO_MATCH;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
const spread = charNumber - firstIndex;
|
|
138
|
-
return getRanking(spread);
|
|
139
|
-
};
|
|
140
|
-
let sortRankedValues = (a, b, baseSort) => {
|
|
141
|
-
const aFirst = -1;
|
|
142
|
-
const bFirst = 1;
|
|
143
|
-
const { rank: aRank, keyIndex: aKeyIndex } = a;
|
|
144
|
-
const { rank: bRank, keyIndex: bKeyIndex } = b;
|
|
145
|
-
const same = aRank === bRank;
|
|
146
|
-
if (same) {
|
|
147
|
-
if (aKeyIndex === bKeyIndex) {
|
|
148
|
-
return baseSort(a, b);
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
return aKeyIndex < bKeyIndex ? aFirst : bFirst;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
return aRank > bRank ? aFirst : bFirst;
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
let prepareValueForComparison = (value, { keepDiacritics }) => {
|
|
159
|
-
value = `${value}`;
|
|
160
|
-
if (!keepDiacritics) {
|
|
161
|
-
value = removeAccents(value);
|
|
162
|
-
}
|
|
163
|
-
return value;
|
|
164
|
-
};
|
|
165
|
-
let getItemValues = (item, key) => {
|
|
166
|
-
if (typeof key === "object") {
|
|
167
|
-
key = key.key;
|
|
168
|
-
}
|
|
169
|
-
let value;
|
|
170
|
-
if (typeof key === "function") {
|
|
171
|
-
value = key(item);
|
|
172
|
-
}
|
|
173
|
-
else if (item == null) {
|
|
174
|
-
value = null;
|
|
175
|
-
}
|
|
176
|
-
else if (Object.hasOwnProperty.call(item, key)) {
|
|
177
|
-
value = item[key];
|
|
178
|
-
}
|
|
179
|
-
else if (key.includes(".")) {
|
|
180
|
-
return getNestedValues(key, item);
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
value = null;
|
|
184
|
-
}
|
|
185
|
-
if (value == null) {
|
|
186
|
-
return [];
|
|
187
|
-
}
|
|
188
|
-
if (Array.isArray(value)) {
|
|
189
|
-
return value;
|
|
190
|
-
}
|
|
191
|
-
return [String(value)];
|
|
192
|
-
};
|
|
193
|
-
let getNestedValues = (path, item) => {
|
|
194
|
-
const keys = path.split(".");
|
|
195
|
-
let values = [item];
|
|
196
|
-
for (let i = 0, I = keys.length; i < I; i++) {
|
|
197
|
-
const nestedKey = keys[i];
|
|
198
|
-
let nestedValues = [];
|
|
199
|
-
for (let j = 0, J = values.length; j < J; j++) {
|
|
200
|
-
const nestedItem = values[j];
|
|
201
|
-
if (nestedItem == null)
|
|
202
|
-
continue;
|
|
203
|
-
if (Object.hasOwnProperty.call(nestedItem, nestedKey)) {
|
|
204
|
-
const nestedValue = nestedItem[nestedKey];
|
|
205
|
-
if (nestedValue != null) {
|
|
206
|
-
nestedValues.push(nestedValue);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
else if (nestedKey === "*") {
|
|
210
|
-
nestedValues = nestedValues.concat(nestedItem);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
values = nestedValues;
|
|
214
|
-
}
|
|
215
|
-
if (Array.isArray(values[0])) {
|
|
216
|
-
const result = [];
|
|
217
|
-
return result.concat(...values);
|
|
218
|
-
}
|
|
219
|
-
return values;
|
|
220
|
-
};
|
|
221
|
-
let getAllValuesToRank = (item, keys) => {
|
|
222
|
-
const allValues = [];
|
|
223
|
-
for (let j = 0, J = keys.length; j < J; j++) {
|
|
224
|
-
const key = keys[j];
|
|
225
|
-
const attributes = getKeyAttributes(key);
|
|
226
|
-
const itemValues = getItemValues(item, key);
|
|
227
|
-
for (let i = 0, I = itemValues.length; i < I; i++) {
|
|
228
|
-
allValues.push({
|
|
229
|
-
itemValue: itemValues[i],
|
|
230
|
-
attributes,
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
return allValues;
|
|
235
|
-
};
|
|
236
|
-
const defaultKeyAttributes = {
|
|
237
|
-
maxRanking: Infinity,
|
|
238
|
-
minRanking: -Infinity,
|
|
239
|
-
};
|
|
240
|
-
let getKeyAttributes = (key) => isString(key) ? defaultKeyAttributes : { ...defaultKeyAttributes, ...key };
|
|
6
|
+
let r=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue)),l=(e,t,l={})=>{let{keys:u,threshold:a=1,baseSort:o=r,sorter:s=e=>e.sort((e,t)=>i(e,t,o))}=l;return s(e.reduce(function(e,r,o){let i=n(r,u,t,l),{rank:s,keyThreshold:h=a}=i;return s>=h&&e.push({...i,item:r,index:o}),e},[])).map(({item:e})=>e)},n=(e,t,r,l)=>t?c(e,t).reduce(({rank:e,rankedValue:t,keyIndex:n,keyThreshold:a},{itemValue:o,attributes:i},s)=>{let h=u(o,r,l),f=t,{minRanking:c,maxRanking:d,threshold:k}=i;return h<c&&h>=1?h=c:h>d&&(h=d),h>e&&(e=h,n=s,a=k,f=o),{rankedValue:f,rank:e,keyIndex:n,keyThreshold:a}},{rankedValue:e,rank:0,keyIndex:-1,keyThreshold:l.threshold}):{rankedValue:e,rank:u(e,r,l),keyIndex:-1,keyThreshold:l.threshold},u=(e,t,r)=>(e=s(e,r),(t=s(t,r)).length>e.length)?0:e===t?7:(e=e.toLowerCase())===(t=t.toLowerCase())?6:e.startsWith(t)?5:e.includes(` ${t}`)?4:e.includes(t)?3:1===t.length?0:a(e).includes(t)?2:o(e,t),a=e=>{let t="";return e.split(" ").forEach(e=>{e.split("-").forEach(e=>{t+=e.substring(0,1);});}),t},o=(e,t)=>{let r=0,l=0;function n(e,t,l){for(let n=l,u=t.length;n<u;n++)if(t[n]===e)return r+=1,n+1;return -1}let u=n(t[0],e,0);if(u<0)return 0;l=u;for(let r=1,u=t.length;r<u;r++)if(!((l=n(t[r],e,l))>-1))return 0;return 1+1/(l-u)*(r/t.length)},i=(e,t,r)=>{let{rank:l,keyIndex:n}=e,{rank:u,keyIndex:a}=t;return l!==u?l>u?-1:1:n===a?r(e,t):n<a?-1:1},s=(e,{keepDiacritics:r})=>(e=`${e}`,r||(e=removeAccents(e)),e),h=(e,t)=>{let r;if("object"==typeof t&&(t=t.key),"function"==typeof t)r=t(e);else if(null==e)r=null;else if(Object.hasOwnProperty.call(e,t))r=e[t];else {if(t.includes("."))return f(t,e);r=null;}return null==r?[]:Array.isArray(r)?r:[String(r)]},f=(e,t)=>{let r=e.split("."),l=[t];for(let e=0,t=r.length;e<t;e++){let t=r[e],n=[];for(let e=0,r=l.length;e<r;e++){let r=l[e];if(null!=r){if(Object.hasOwnProperty.call(r,t)){let e=r[t];null!=e&&n.push(e);}else "*"===t&&(n=n.concat(r));}}l=n;}return Array.isArray(l[0])?[].concat(...l):l},c=(e,t)=>{let r=[];for(let l=0,n=t.length;l<n;l++){let n=t[l],u=k(n),a=h(e,n);for(let e=0,t=a.length;e<t;e++)r.push({itemValue:a[e],attributes:u});}return r},d={maxRanking:1/0,minRanking:-1/0},k=t=>isString(t)?d:{...d,...t};
|
|
241
7
|
|
|
242
|
-
export {
|
|
8
|
+
export { l as default, r as defaultBaseSortFn, l as matchSorter };
|
package/mbToBytes.cjs.js
CHANGED
package/mbToBytes.esm.js
CHANGED
package/mergeObjects.cjs.js
CHANGED
|
@@ -7,32 +7,7 @@ var isUndefined = require('./isUndefined.cjs.js');
|
|
|
7
7
|
require('./isPlainObject.cjs.js');
|
|
8
8
|
require('./getType.cjs.js');
|
|
9
9
|
|
|
10
|
-
let mergeObjects = (
|
|
11
|
-
if (!sources.length) {
|
|
12
|
-
return target;
|
|
13
|
-
}
|
|
14
|
-
const source = sources.shift();
|
|
15
|
-
if (source === undefined) {
|
|
16
|
-
return target;
|
|
17
|
-
}
|
|
18
|
-
if (isObject.isObject(target) && isObject.isObject(source)) {
|
|
19
|
-
Object.keys(source).forEach((_key) => {
|
|
20
|
-
const key = _key;
|
|
21
|
-
if (isObject.isObject(source[key])) {
|
|
22
|
-
if (!target[key]) {
|
|
23
|
-
target[key] = {};
|
|
24
|
-
}
|
|
25
|
-
mergeObjects(target[key], source[key]);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
if (!isUndefined.isUndefined(source[key])) {
|
|
29
|
-
target[key] = source[key];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
return mergeObjects(target, ...sources);
|
|
35
|
-
};
|
|
10
|
+
let mergeObjects=(r,...i)=>{if(!i.length)return r;let m=i.shift();return void 0===m?r:(isObject.isObject(r)&&isObject.isObject(m)&&Object.keys(m).forEach(i=>{isObject.isObject(m[i])?(r[i]||(r[i]={}),mergeObjects(r[i],m[i])):isUndefined.isUndefined(m[i])||(r[i]=m[i]);}),mergeObjects(r,...i))};
|
|
36
11
|
|
|
37
12
|
exports["default"] = mergeObjects;
|
|
38
13
|
exports.mergeObjects = mergeObjects;
|