cry-search 2.0.2 → 2.1.0
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/CLAUDE.md +8 -2
- package/README.md +53 -0
- package/UNIVERSE.md +12 -0
- package/dist/common/numeric/createSearchArrayMetadata.d.ts +10 -0
- package/dist/common/numeric/createSearchArrayMetadata.d.ts.map +1 -1
- package/dist/common/numeric/matchMany.d.ts +111 -0
- package/dist/common/numeric/matchMany.d.ts.map +1 -0
- package/dist/common/numeric/prepareQueryVariants.d.ts +24 -0
- package/dist/common/numeric/prepareQueryVariants.d.ts.map +1 -1
- package/dist/common/numeric/searchAndRank.d.ts.map +1 -1
- package/dist/common/numeric/searchInData.d.ts.map +1 -1
- package/dist/common/numeric/syncSearchArrayMetadata.d.ts.map +1 -1
- package/dist/common/numeric/updateSearchMetadata.d.ts.map +1 -1
- package/dist/index.cjs +316 -112
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +316 -112
- package/dist/types/index.d.ts +65 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/compareTokenized.d.ts +24 -0
- package/dist/utils/compareTokenized.d.ts.map +1 -0
- package/dist/vet/data/enote.d.ts +40 -0
- package/dist/vet/data/enote.d.ts.map +1 -0
- package/dist/vet/data/znamke.gen.d.ts +41 -0
- package/dist/vet/data/znamke.gen.d.ts.map +1 -0
- package/dist/vet/index.cjs +2468 -0
- package/dist/vet/index.d.cts +24 -0
- package/dist/vet/index.d.ts +24 -0
- package/dist/vet/index.d.ts.map +1 -0
- package/dist/vet/index.js +2426 -0
- package/dist/vet/normalizatorji.d.ts +104 -0
- package/dist/vet/normalizatorji.d.ts.map +1 -0
- package/dist/vet/ocena.d.ts +46 -0
- package/dist/vet/ocena.d.ts.map +1 -0
- package/dist/vet/spec.d.ts +35 -0
- package/dist/vet/spec.d.ts.map +1 -0
- package/dist/vet/uparjanje.d.ts +72 -0
- package/dist/vet/uparjanje.d.ts.map +1 -0
- package/package.json +29 -11
package/dist/index.js
CHANGED
|
@@ -212,6 +212,22 @@ function prepareStringForSearch(input) {
|
|
|
212
212
|
const tokens = tokenize(sanitised, DEFAULT_TOKENIZE_CONFIG);
|
|
213
213
|
return tokens.sort();
|
|
214
214
|
}
|
|
215
|
+
// src/utils/compareTokenized.ts
|
|
216
|
+
function compareTokenized(a, b) {
|
|
217
|
+
const aTokens = new Set(prepareStringForSearch(a));
|
|
218
|
+
const bTokens = new Set(prepareStringForSearch(b));
|
|
219
|
+
if (aTokens.size === 0 && bTokens.size === 0)
|
|
220
|
+
return 1;
|
|
221
|
+
let intersection = 0;
|
|
222
|
+
for (const token of aTokens) {
|
|
223
|
+
if (bTokens.has(token))
|
|
224
|
+
intersection++;
|
|
225
|
+
}
|
|
226
|
+
const union = aTokens.size + bTokens.size - intersection;
|
|
227
|
+
if (union === 0)
|
|
228
|
+
return 0;
|
|
229
|
+
return intersection / union;
|
|
230
|
+
}
|
|
215
231
|
// src/utils/phoneNormalization.ts
|
|
216
232
|
var RE_ASCII_DIGITS = /^[0-9]+$/;
|
|
217
233
|
var RE_PHONE_LIKE_QUERY = /^[\d+()/\-. ]+$/;
|
|
@@ -410,6 +426,38 @@ function extractStringsFromValue(value, results) {
|
|
|
410
426
|
}
|
|
411
427
|
}
|
|
412
428
|
}
|
|
429
|
+
function applyValueNormalizers(value, field, normalizers) {
|
|
430
|
+
let text = value;
|
|
431
|
+
const classes = {};
|
|
432
|
+
if (!normalizers?.length)
|
|
433
|
+
return { text, classes };
|
|
434
|
+
for (const normalizer of normalizers) {
|
|
435
|
+
if (normalizer.fields && !normalizer.fields.includes(field))
|
|
436
|
+
continue;
|
|
437
|
+
const izhod = normalizer.fn(text, field);
|
|
438
|
+
if (izhod === undefined)
|
|
439
|
+
continue;
|
|
440
|
+
if (typeof izhod === "string") {
|
|
441
|
+
text = izhod;
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
text = izhod.text;
|
|
445
|
+
for (const [kljuc, vrednost] of Object.entries(izhod.classes ?? {})) {
|
|
446
|
+
const seznam = Array.isArray(vrednost) ? vrednost : [vrednost];
|
|
447
|
+
const obstojeci = classes[kljuc] ?? [];
|
|
448
|
+
for (const v of seznam) {
|
|
449
|
+
if (v != null && v !== "" && !obstojeci.includes(String(v)))
|
|
450
|
+
obstojeci.push(String(v));
|
|
451
|
+
}
|
|
452
|
+
classes[kljuc] = obstojeci;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
return { text, classes };
|
|
456
|
+
}
|
|
457
|
+
function itemClasses(metadata, id) {
|
|
458
|
+
const zapis = metadata.classes?.get(id);
|
|
459
|
+
return zapis && Object.keys(zapis).length ? zapis : undefined;
|
|
460
|
+
}
|
|
413
461
|
function prepareObjectForSearchNumeric(obj, spec, tokensMap) {
|
|
414
462
|
if (isDeletedOrBlocked(obj)) {
|
|
415
463
|
return;
|
|
@@ -417,11 +465,12 @@ function prepareObjectForSearchNumeric(obj, spec, tokensMap) {
|
|
|
417
465
|
if (spec?.enrichSearchObjectFn) {
|
|
418
466
|
spec.enrichSearchObjectFn(obj, spec.searchContext);
|
|
419
467
|
}
|
|
420
|
-
const
|
|
468
|
+
const classes = {};
|
|
469
|
+
const sorted = spec?.extractSearchableStringFn ? buildSortedFromExtractFn(obj, spec.extractSearchableStringFn, tokensMap) : buildSortedFromFields(obj, spec, tokensMap, classes);
|
|
421
470
|
if (sorted === undefined)
|
|
422
471
|
return;
|
|
423
|
-
const firstN = spec?.keyFields && spec.keyFields.length > 0 ? buildFirstNFromKeyFields(obj, spec.keyFields, spec.firstTokensN ?? DEFAULT_FIRST_TOKENS_N, spec.phoneFields ?? DEFAULT_PHONE_FIELDS, tokensMap) : undefined;
|
|
424
|
-
return { sorted, firstN };
|
|
472
|
+
const firstN = spec?.keyFields && spec.keyFields.length > 0 ? buildFirstNFromKeyFields(obj, spec.keyFields, spec.firstTokensN ?? DEFAULT_FIRST_TOKENS_N, spec.phoneFields ?? DEFAULT_PHONE_FIELDS, tokensMap, spec.valueNormalizers) : undefined;
|
|
473
|
+
return Object.keys(classes).length ? { sorted, firstN, classes } : { sorted, firstN };
|
|
425
474
|
}
|
|
426
475
|
function buildSortedFromExtractFn(obj, extractFn, tokensMap) {
|
|
427
476
|
const str = extractFn(obj);
|
|
@@ -429,7 +478,7 @@ function buildSortedFromExtractFn(obj, extractFn, tokensMap) {
|
|
|
429
478
|
return;
|
|
430
479
|
return prepareStringForSearchNumeric(str, tokensMap).sorted;
|
|
431
480
|
}
|
|
432
|
-
function buildSortedFromFields(obj, spec, tokensMap) {
|
|
481
|
+
function buildSortedFromFields(obj, spec, tokensMap, classesOut = {}) {
|
|
433
482
|
const allTokens = [];
|
|
434
483
|
const fieldMatchModes = spec?.fieldMatchModes;
|
|
435
484
|
const fieldsToSearch = spec?.searchInFields ?? Object.keys(obj);
|
|
@@ -462,7 +511,19 @@ function buildSortedFromFields(obj, spec, tokensMap) {
|
|
|
462
511
|
}
|
|
463
512
|
if (fieldStrings.length === 0)
|
|
464
513
|
continue;
|
|
465
|
-
const
|
|
514
|
+
const normalizirane = spec?.valueNormalizers?.length ? fieldStrings.map((s) => applyValueNormalizers(s, keyStr, spec.valueNormalizers)) : undefined;
|
|
515
|
+
const fieldText = normalizirane ? normalizirane.map((n) => n.text).join(" ") : fieldStrings.join(" ");
|
|
516
|
+
if (normalizirane) {
|
|
517
|
+
for (const n of normalizirane) {
|
|
518
|
+
for (const [kljuc, vrednosti] of Object.entries(n.classes)) {
|
|
519
|
+
const obstojeci = classesOut[kljuc] ?? [];
|
|
520
|
+
for (const v of vrednosti)
|
|
521
|
+
if (!obstojeci.includes(v))
|
|
522
|
+
obstojeci.push(v);
|
|
523
|
+
classesOut[kljuc] = obstojeci;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
466
527
|
const datesNormalized = normalizeDates(fieldText);
|
|
467
528
|
const preprocessed = preprocessString(datesNormalized);
|
|
468
529
|
const sanitised = sanitiseString(preprocessed);
|
|
@@ -480,7 +541,7 @@ function buildSortedFromFields(obj, spec, tokensMap) {
|
|
|
480
541
|
const uniqueTokens = [...new Set(allTokens)].sort((a, b) => a - b);
|
|
481
542
|
return new Uint32Array(uniqueTokens);
|
|
482
543
|
}
|
|
483
|
-
function buildFirstNFromKeyFields(obj, keyFields, n, phoneFields, tokensMap) {
|
|
544
|
+
function buildFirstNFromKeyFields(obj, keyFields, n, phoneFields, tokensMap, normalizers) {
|
|
484
545
|
const strings = [];
|
|
485
546
|
const phoneFieldPaths = new Set(phoneFields);
|
|
486
547
|
for (const field of keyFields) {
|
|
@@ -490,7 +551,9 @@ function buildFirstNFromKeyFields(obj, keyFields, n, phoneFields, tokensMap) {
|
|
|
490
551
|
const value = isDotNotation(keyStr) ? getValueByPath(obj, keyStr) : obj[field];
|
|
491
552
|
if (value == null)
|
|
492
553
|
continue;
|
|
493
|
-
|
|
554
|
+
const zacasno = [];
|
|
555
|
+
extractStringsFromValue(value, zacasno);
|
|
556
|
+
strings.push(...normalizers?.length ? zacasno.map((s) => applyValueNormalizers(s, keyStr, normalizers).text) : zacasno);
|
|
494
557
|
}
|
|
495
558
|
if (strings.length === 0)
|
|
496
559
|
return;
|
|
@@ -519,6 +582,9 @@ function createSearchArrayMetadataNumeric(data, spec) {
|
|
|
519
582
|
if (result.firstN !== undefined) {
|
|
520
583
|
metadata.unsorted.set(id, result.firstN);
|
|
521
584
|
}
|
|
585
|
+
if (result.classes !== undefined) {
|
|
586
|
+
(metadata.classes ??= new Map).set(id, result.classes);
|
|
587
|
+
}
|
|
522
588
|
}
|
|
523
589
|
}
|
|
524
590
|
return metadata;
|
|
@@ -554,6 +620,7 @@ function updateSearchMetadataNumeric(metadata, objectId, obj, spec, tokensMap) {
|
|
|
554
620
|
if (result === undefined) {
|
|
555
621
|
metadata.sorted.delete(objectId);
|
|
556
622
|
metadata.unsorted.delete(objectId);
|
|
623
|
+
metadata.classes?.delete(objectId);
|
|
557
624
|
return false;
|
|
558
625
|
}
|
|
559
626
|
metadata.sorted.set(objectId, result.sorted);
|
|
@@ -562,6 +629,11 @@ function updateSearchMetadataNumeric(metadata, objectId, obj, spec, tokensMap) {
|
|
|
562
629
|
} else {
|
|
563
630
|
metadata.unsorted.delete(objectId);
|
|
564
631
|
}
|
|
632
|
+
if (result.classes !== undefined) {
|
|
633
|
+
(metadata.classes ??= new Map).set(objectId, result.classes);
|
|
634
|
+
} else {
|
|
635
|
+
metadata.classes?.delete(objectId);
|
|
636
|
+
}
|
|
565
637
|
return true;
|
|
566
638
|
}
|
|
567
639
|
function updateSearchMetadataBatchNumeric(metadata, batch, spec) {
|
|
@@ -790,20 +862,49 @@ function allTokensMatchNumeric(searchTokenStrs, targetTokens, opts) {
|
|
|
790
862
|
}
|
|
791
863
|
|
|
792
864
|
// src/common/numeric/prepareQueryVariants.ts
|
|
865
|
+
function normalizeQueryWithOpts(query, opts) {
|
|
866
|
+
const normalizers = opts?.queryNormalizers;
|
|
867
|
+
if (!normalizers?.length)
|
|
868
|
+
return { text: query, classes: {} };
|
|
869
|
+
let text = query;
|
|
870
|
+
const classes = {};
|
|
871
|
+
for (const normalizer of normalizers) {
|
|
872
|
+
const fn = typeof normalizer === "function" ? normalizer : normalizer.fn;
|
|
873
|
+
const izhod = fn(text, "");
|
|
874
|
+
if (izhod === undefined)
|
|
875
|
+
continue;
|
|
876
|
+
if (typeof izhod === "string") {
|
|
877
|
+
text = izhod;
|
|
878
|
+
continue;
|
|
879
|
+
}
|
|
880
|
+
text = izhod.text;
|
|
881
|
+
for (const [kljuc, vrednost] of Object.entries(izhod.classes ?? {})) {
|
|
882
|
+
const seznam = Array.isArray(vrednost) ? vrednost : [vrednost];
|
|
883
|
+
const obstojeci = classes[kljuc] ?? [];
|
|
884
|
+
for (const v of seznam) {
|
|
885
|
+
if (v != null && v !== "" && !obstojeci.includes(String(v)))
|
|
886
|
+
obstojeci.push(String(v));
|
|
887
|
+
}
|
|
888
|
+
classes[kljuc] = obstojeci;
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
return { text, classes };
|
|
892
|
+
}
|
|
793
893
|
function prepareQueryVariants(query, opts) {
|
|
794
|
-
const
|
|
894
|
+
const { text: normalizirano, classes } = normalizeQueryWithOpts(query, opts);
|
|
895
|
+
const rawTokenStrs = prepareStringForSearch(normalizirano);
|
|
795
896
|
const rawTokens = prepareQueryTokens(rawTokenStrs);
|
|
796
897
|
const normalizers = opts?.phoneQueryNormalizers ?? [defaultQueryPhoneNormalizer];
|
|
797
898
|
const seenPhones = new Set;
|
|
798
899
|
const phoneTokens = [];
|
|
799
900
|
for (const normalizer of normalizers) {
|
|
800
|
-
const normalized = validateNormalizedPhone(normalizer(
|
|
901
|
+
const normalized = validateNormalizedPhone(normalizer(normalizirano), "Phone query normalizer");
|
|
801
902
|
if (normalized === undefined || seenPhones.has(normalized))
|
|
802
903
|
continue;
|
|
803
904
|
seenPhones.add(normalized);
|
|
804
905
|
phoneTokens.push(prepareQueryTokens([normalized]));
|
|
805
906
|
}
|
|
806
|
-
return { rawTokenStrs, rawTokens, phoneTokens };
|
|
907
|
+
return { rawTokenStrs, rawTokens, phoneTokens, classes };
|
|
807
908
|
}
|
|
808
909
|
|
|
809
910
|
// src/common/numeric/scoring.ts
|
|
@@ -922,12 +1023,13 @@ function searchInDataReturnObjectsNumeric(query, metadata, data, opts) {
|
|
|
922
1023
|
return results;
|
|
923
1024
|
}
|
|
924
1025
|
function searchInDataReturnIdsWithLimitNumeric(query, metadata, limit, opts) {
|
|
925
|
-
const {
|
|
1026
|
+
const { rawTokens, phoneTokens } = prepareQueryVariants(query, opts);
|
|
926
1027
|
const phoneCandidates = findMatchingCandidates(metadata, phoneTokens, opts);
|
|
927
1028
|
const candidates = phoneCandidates.length > 0 ? phoneCandidates : findMatchingCandidates(metadata, rawTokens.length > 0 ? [rawTokens] : [], opts);
|
|
928
1029
|
if (candidates.length === 0)
|
|
929
1030
|
return [];
|
|
930
|
-
const
|
|
1031
|
+
const qText = normalizeQueryWithOpts(query, opts).text;
|
|
1032
|
+
const qTokens = orderedTokenize(qText);
|
|
931
1033
|
const hasUnsorted = metadata.unsorted.size > 0;
|
|
932
1034
|
if (!hasUnsorted) {
|
|
933
1035
|
if (limit === Infinity || limit >= candidates.length)
|
|
@@ -946,7 +1048,7 @@ function searchInDataReturnIdsWithLimitNumeric(query, metadata, limit, opts) {
|
|
|
946
1048
|
for (let j = 0;j < unsortedIds.length; j++) {
|
|
947
1049
|
itemTokens[j] = tokens[unsortedIds[j]] ?? "";
|
|
948
1050
|
}
|
|
949
|
-
scored[i] = { id, score: scoreOne(
|
|
1051
|
+
scored[i] = { id, score: scoreOne(qText, qTokens, itemTokens), order: i };
|
|
950
1052
|
}
|
|
951
1053
|
scored.sort((a, b) => {
|
|
952
1054
|
if (a.score !== b.score)
|
|
@@ -1398,10 +1500,16 @@ function applyPreparedTokens(metadata, id, result) {
|
|
|
1398
1500
|
} else {
|
|
1399
1501
|
metadata.unsorted.delete(id);
|
|
1400
1502
|
}
|
|
1503
|
+
if (result.classes !== undefined) {
|
|
1504
|
+
(metadata.classes ??= new Map).set(id, result.classes);
|
|
1505
|
+
} else {
|
|
1506
|
+
metadata.classes?.delete(id);
|
|
1507
|
+
}
|
|
1401
1508
|
}
|
|
1402
1509
|
function deletePreparedTokens(metadata, id) {
|
|
1403
1510
|
metadata.sorted.delete(id);
|
|
1404
1511
|
metadata.unsorted.delete(id);
|
|
1512
|
+
metadata.classes?.delete(id);
|
|
1405
1513
|
}
|
|
1406
1514
|
function syncSearchArrayMetadataNumeric(metadata, newData, spec) {
|
|
1407
1515
|
const result = {
|
|
@@ -1491,6 +1599,135 @@ function syncSearchArrayMetadataNumericWithPrevious(metadata, previousData, newD
|
|
|
1491
1599
|
clearTokensMap(tokensMap);
|
|
1492
1600
|
return result;
|
|
1493
1601
|
}
|
|
1602
|
+
// src/common/numeric/searchAndRank.ts
|
|
1603
|
+
function tokenIdsToStrings(tokenIds) {
|
|
1604
|
+
if (tokenIds === undefined)
|
|
1605
|
+
return;
|
|
1606
|
+
const out = new Array(tokenIds.length);
|
|
1607
|
+
for (let i = 0;i < tokenIds.length; i++) {
|
|
1608
|
+
out[i] = tokens[tokenIds[i]] ?? "";
|
|
1609
|
+
}
|
|
1610
|
+
return out;
|
|
1611
|
+
}
|
|
1612
|
+
function searchAndRankNumeric(query, data, metadata, options) {
|
|
1613
|
+
const { primaryTextFn, exactKeysFn, limit, opts } = options;
|
|
1614
|
+
const ids = searchInDataReturnIdsNumeric(query, metadata, opts);
|
|
1615
|
+
if (ids.length === 0)
|
|
1616
|
+
return [];
|
|
1617
|
+
const qText = normalizeQueryWithOpts(query, opts).text;
|
|
1618
|
+
const qTokens = orderedTokenize(qText);
|
|
1619
|
+
const scored = [];
|
|
1620
|
+
for (const id of ids) {
|
|
1621
|
+
const item = data.get(id);
|
|
1622
|
+
if (!item)
|
|
1623
|
+
continue;
|
|
1624
|
+
const itemTokens = tokenIdsToStrings(metadata.unsorted.get(id)) ?? orderedTokenize(primaryTextFn(item) || "");
|
|
1625
|
+
const exactKeys = exactKeysFn?.(item);
|
|
1626
|
+
const score = scoreOne(qText, qTokens, itemTokens, exactKeys);
|
|
1627
|
+
scored.push({ id, item, score });
|
|
1628
|
+
}
|
|
1629
|
+
scored.sort((x, y) => {
|
|
1630
|
+
if (y.score !== x.score)
|
|
1631
|
+
return y.score - x.score;
|
|
1632
|
+
const xText = primaryTextFn(x.item) || "";
|
|
1633
|
+
const yText = primaryTextFn(y.item) || "";
|
|
1634
|
+
return xText.localeCompare(yText);
|
|
1635
|
+
});
|
|
1636
|
+
if (limit === undefined || limit === Infinity || limit >= scored.length)
|
|
1637
|
+
return scored;
|
|
1638
|
+
return scored.slice(0, limit);
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
// src/common/numeric/matchMany.ts
|
|
1642
|
+
function naSezname(classes) {
|
|
1643
|
+
if (!classes)
|
|
1644
|
+
return;
|
|
1645
|
+
const out = {};
|
|
1646
|
+
for (const [kljuc, vrednost] of Object.entries(classes)) {
|
|
1647
|
+
const seznam = Array.isArray(vrednost) ? vrednost.map(String) : [String(vrednost)];
|
|
1648
|
+
if (seznam.length)
|
|
1649
|
+
out[kljuc] = seznam;
|
|
1650
|
+
}
|
|
1651
|
+
return Object.keys(out).length ? out : undefined;
|
|
1652
|
+
}
|
|
1653
|
+
async function* matchMany(prepared, queries, options) {
|
|
1654
|
+
const { queryOf, idOf, limit = 3, minScore = 0, kos = 50, samoEnolicno, rank, accept, opts } = options;
|
|
1655
|
+
const retrievalLimit = options.retrievalLimit ?? Math.max(20, limit * 4);
|
|
1656
|
+
const primaryTextOf = options.primaryTextOf ?? ((item) => item["naziv"]);
|
|
1657
|
+
const porabljeni = samoEnolicno ? new Set : undefined;
|
|
1658
|
+
let kosZbirka = [];
|
|
1659
|
+
for (let indeks = 0;indeks < queries.length; indeks++) {
|
|
1660
|
+
const query = queries[indeks];
|
|
1661
|
+
const vhod = queryOf(query);
|
|
1662
|
+
const text = typeof vhod === "string" ? vhod : vhod.text;
|
|
1663
|
+
const queryClasses = typeof vhod === "string" ? undefined : naSezname(vhod.classes);
|
|
1664
|
+
const id = idOf ? idOf(query, indeks) : String(query["_id"] ?? query["id"] ?? indeks);
|
|
1665
|
+
const poisciKandidate = (besedilo, razredi) => {
|
|
1666
|
+
if (!besedilo.trim())
|
|
1667
|
+
return { kandidati: [], zadetkov: 0 };
|
|
1668
|
+
const zadetki = searchAndRankNumeric(besedilo, prepared.data, prepared.metadata, {
|
|
1669
|
+
primaryTextFn: primaryTextOf,
|
|
1670
|
+
...options.exactKeysOf ? { exactKeysFn: options.exactKeysOf } : {},
|
|
1671
|
+
...opts ? { opts } : {},
|
|
1672
|
+
limit: retrievalLimit
|
|
1673
|
+
});
|
|
1674
|
+
const poizvedbaZaDomeno = { text: besedilo, ...razredi ? { classes: razredi } : {} };
|
|
1675
|
+
const najdeni = [];
|
|
1676
|
+
for (const zadetek of zadetki) {
|
|
1677
|
+
const classes = itemClasses(prepared.metadata, zadetek.id);
|
|
1678
|
+
const kandidat = {
|
|
1679
|
+
id: zadetek.id,
|
|
1680
|
+
item: zadetek.item,
|
|
1681
|
+
...classes ? { classes } : {}
|
|
1682
|
+
};
|
|
1683
|
+
if (accept && !accept(kandidat, poizvedbaZaDomeno))
|
|
1684
|
+
continue;
|
|
1685
|
+
const ocena = rank ? rank(kandidat, poizvedbaZaDomeno) : zadetek.score;
|
|
1686
|
+
if (ocena < minScore)
|
|
1687
|
+
continue;
|
|
1688
|
+
if (porabljeni?.has(zadetek.id))
|
|
1689
|
+
continue;
|
|
1690
|
+
najdeni.push({ id: zadetek.id, item: zadetek.item, score: ocena, ...classes ? { classes } : {} });
|
|
1691
|
+
}
|
|
1692
|
+
najdeni.sort((a, b) => {
|
|
1693
|
+
if (b.score !== a.score)
|
|
1694
|
+
return b.score - a.score;
|
|
1695
|
+
return (primaryTextOf(a.item) ?? "").localeCompare(primaryTextOf(b.item) ?? "");
|
|
1696
|
+
});
|
|
1697
|
+
if (najdeni.length > limit)
|
|
1698
|
+
najdeni.length = limit;
|
|
1699
|
+
return { kandidati: najdeni, zadetkov: zadetki.length };
|
|
1700
|
+
};
|
|
1701
|
+
let { kandidati, zadetkov } = poisciKandidate(text, queryClasses);
|
|
1702
|
+
const poskusiAlternative = kandidati.length === 0 && (options.alternativneLeCeNiZadetkov ? zadetkov === 0 : true);
|
|
1703
|
+
if (poskusiAlternative && options.alternativnePoizvedbe) {
|
|
1704
|
+
for (const alternativa of options.alternativnePoizvedbe(query)) {
|
|
1705
|
+
const altBesedilo = typeof alternativa === "string" ? alternativa : alternativa.text;
|
|
1706
|
+
if (!altBesedilo?.trim() || altBesedilo === text)
|
|
1707
|
+
continue;
|
|
1708
|
+
const altRazredi = typeof alternativa === "string" ? undefined : naSezname(alternativa.classes);
|
|
1709
|
+
({ kandidati } = poisciKandidate(altBesedilo, altRazredi));
|
|
1710
|
+
if (kandidati.length)
|
|
1711
|
+
break;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
if (porabljeni) {
|
|
1715
|
+
for (const kandidat of kandidati)
|
|
1716
|
+
porabljeni.add(kandidat.id);
|
|
1717
|
+
}
|
|
1718
|
+
kosZbirka.push({
|
|
1719
|
+
id,
|
|
1720
|
+
...queryClasses ? { queryClasses } : {},
|
|
1721
|
+
kandidati
|
|
1722
|
+
});
|
|
1723
|
+
if (kosZbirka.length >= kos) {
|
|
1724
|
+
yield kosZbirka;
|
|
1725
|
+
kosZbirka = [];
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
if (kosZbirka.length)
|
|
1729
|
+
yield kosZbirka;
|
|
1730
|
+
}
|
|
1494
1731
|
// src/common/numeric/updateSearchLinkedMetadata.ts
|
|
1495
1732
|
function tokensEqual2(a, b) {
|
|
1496
1733
|
if (a.length !== b.length)
|
|
@@ -1643,43 +1880,6 @@ function syncLinkedItemsForPrimaryNumeric(linked, primaryId, newLinkedItems, for
|
|
|
1643
1880
|
clearTokensMap(tokensMap);
|
|
1644
1881
|
return result;
|
|
1645
1882
|
}
|
|
1646
|
-
// src/common/numeric/searchAndRank.ts
|
|
1647
|
-
function tokenIdsToStrings(tokenIds) {
|
|
1648
|
-
if (tokenIds === undefined)
|
|
1649
|
-
return;
|
|
1650
|
-
const out = new Array(tokenIds.length);
|
|
1651
|
-
for (let i = 0;i < tokenIds.length; i++) {
|
|
1652
|
-
out[i] = tokens[tokenIds[i]] ?? "";
|
|
1653
|
-
}
|
|
1654
|
-
return out;
|
|
1655
|
-
}
|
|
1656
|
-
function searchAndRankNumeric(query, data, metadata, options) {
|
|
1657
|
-
const { primaryTextFn, exactKeysFn, limit, opts } = options;
|
|
1658
|
-
const ids = searchInDataReturnIdsNumeric(query, metadata, opts);
|
|
1659
|
-
if (ids.length === 0)
|
|
1660
|
-
return [];
|
|
1661
|
-
const qTokens = orderedTokenize(query);
|
|
1662
|
-
const scored = [];
|
|
1663
|
-
for (const id of ids) {
|
|
1664
|
-
const item = data.get(id);
|
|
1665
|
-
if (!item)
|
|
1666
|
-
continue;
|
|
1667
|
-
const itemTokens = tokenIdsToStrings(metadata.unsorted.get(id)) ?? orderedTokenize(primaryTextFn(item) || "");
|
|
1668
|
-
const exactKeys = exactKeysFn?.(item);
|
|
1669
|
-
const score = scoreOne(query, qTokens, itemTokens, exactKeys);
|
|
1670
|
-
scored.push({ id, item, score });
|
|
1671
|
-
}
|
|
1672
|
-
scored.sort((x, y) => {
|
|
1673
|
-
if (y.score !== x.score)
|
|
1674
|
-
return y.score - x.score;
|
|
1675
|
-
const xText = primaryTextFn(x.item) || "";
|
|
1676
|
-
const yText = primaryTextFn(y.item) || "";
|
|
1677
|
-
return xText.localeCompare(yText);
|
|
1678
|
-
});
|
|
1679
|
-
if (limit === undefined || limit === Infinity || limit >= scored.length)
|
|
1680
|
-
return scored;
|
|
1681
|
-
return scored.slice(0, limit);
|
|
1682
|
-
}
|
|
1683
1883
|
// src/common/SearchUniverse.ts
|
|
1684
1884
|
function tokensEqual3(a, b) {
|
|
1685
1885
|
if (a.length !== b.length)
|
|
@@ -2121,67 +2321,71 @@ class SearchUniverse {
|
|
|
2121
2321
|
}
|
|
2122
2322
|
}
|
|
2123
2323
|
export {
|
|
2124
|
-
|
|
2125
|
-
upsertLinkedItemNumeric as upsertLinkedItem,
|
|
2126
|
-
updateSearchMetadataBatchNumeric as updateSearchMetadataBatch,
|
|
2127
|
-
updateSearchMetadataNumeric as updateSearchMetadata,
|
|
2128
|
-
tokens,
|
|
2129
|
-
tokenize,
|
|
2130
|
-
syncSearchArrayMetadataNumericWithPrevious as syncSearchArrayMetadataWithPrevious,
|
|
2131
|
-
syncSearchArrayMetadataNumeric as syncSearchArrayMetadata,
|
|
2132
|
-
syncLinkedItemsForPrimaryNumeric as syncLinkedItemsForPrimary,
|
|
2133
|
-
searchableDataToArray,
|
|
2134
|
-
searchInDataReturnIdsWithLimitNumeric as searchInDataWithLimit,
|
|
2135
|
-
searchInDataReturnObjectsNumeric as searchInDataReturnObjects,
|
|
2136
|
-
searchInDataReturnIdsNumeric as searchInDataReturnIds,
|
|
2137
|
-
searchInDataReturnIdsNumeric as searchInData,
|
|
2138
|
-
searchAndRankNumeric,
|
|
2139
|
-
searchAndRankNumeric as searchAndRank,
|
|
2140
|
-
scoreOrderAndPresence,
|
|
2141
|
-
scoreOne,
|
|
2142
|
-
scoreBag,
|
|
2143
|
-
sanitiseString,
|
|
2144
|
-
resolvePhoneQueryNormalizer,
|
|
2145
|
-
resetTokenRegistry,
|
|
2146
|
-
removePrimaryItemNumeric as removePrimaryItem,
|
|
2147
|
-
removeLinkedItemNumeric as removeLinkedItem,
|
|
2148
|
-
removeFromSearchMetadataBatchNumeric as removeFromSearchMetadataBatch,
|
|
2149
|
-
removeFromSearchMetadataNumeric as removeFromSearchMetadata,
|
|
2150
|
-
registerToken,
|
|
2151
|
-
preprocessString,
|
|
2152
|
-
prepareStringForSearch,
|
|
2153
|
-
prepareQueryTokens,
|
|
2154
|
-
prepareObjectForSearchNumeric as prepareObjectForSearch,
|
|
2155
|
-
orderedTokenize,
|
|
2156
|
-
normalizeDates,
|
|
2157
|
-
matchTokenInSortedListNumeric,
|
|
2158
|
-
matchPreparedTokenInSortedList,
|
|
2159
|
-
isDeletedOrBlocked,
|
|
2160
|
-
getTokenCount,
|
|
2161
|
-
getTokenById,
|
|
2162
|
-
getOrCreateTokenId,
|
|
2163
|
-
findTokenId,
|
|
2164
|
-
findInLinkedArraysSimpleNumeric,
|
|
2165
|
-
findInLinkedArraysNumeric,
|
|
2166
|
-
encodeTokenWithMode,
|
|
2167
|
-
defaultQueryPhoneNormalizer,
|
|
2168
|
-
defaultPhoneNormalizer,
|
|
2169
|
-
decodeTokenId,
|
|
2170
|
-
decodeMatchMode,
|
|
2171
|
-
createTokensMap,
|
|
2172
|
-
createSearchLinkedMetadataNumeric as createSearchLinkedMetadata,
|
|
2173
|
-
createSearchArrayMetadataNumeric as createSearchArrayMetadata,
|
|
2174
|
-
clearTokensMap,
|
|
2175
|
-
binarySearchUint32,
|
|
2176
|
-
arrayToSearchableData,
|
|
2177
|
-
allTokensMatchNumeric,
|
|
2178
|
-
allPreparedTokensMatch,
|
|
2179
|
-
TOKEN_ID_MASK,
|
|
2180
|
-
SearchUniverse,
|
|
2181
|
-
PREFIX_TO_MATCH_MODE,
|
|
2182
|
-
MATCH_MODE_PREFIXES,
|
|
2183
|
-
MATCH_MODE_BITS,
|
|
2184
|
-
DEFAULT_SEARCH_OPTS,
|
|
2324
|
+
AugmentedMetadata,
|
|
2185
2325
|
DEFAULT_PHONE_FIELDS,
|
|
2186
|
-
|
|
2326
|
+
DEFAULT_SEARCH_OPTS,
|
|
2327
|
+
MATCH_MODE_BITS,
|
|
2328
|
+
MATCH_MODE_PREFIXES,
|
|
2329
|
+
PREFIX_TO_MATCH_MODE,
|
|
2330
|
+
SearchUniverse,
|
|
2331
|
+
TOKEN_ID_MASK,
|
|
2332
|
+
allPreparedTokensMatch,
|
|
2333
|
+
allTokensMatchNumeric,
|
|
2334
|
+
arrayToSearchableData,
|
|
2335
|
+
binarySearchUint32,
|
|
2336
|
+
clearTokensMap,
|
|
2337
|
+
compareTokenized,
|
|
2338
|
+
createSearchArrayMetadataNumeric as createSearchArrayMetadata,
|
|
2339
|
+
createSearchLinkedMetadataNumeric as createSearchLinkedMetadata,
|
|
2340
|
+
createTokensMap,
|
|
2341
|
+
decodeMatchMode,
|
|
2342
|
+
decodeTokenId,
|
|
2343
|
+
defaultPhoneNormalizer,
|
|
2344
|
+
defaultQueryPhoneNormalizer,
|
|
2345
|
+
encodeTokenWithMode,
|
|
2346
|
+
findInLinkedArraysNumeric,
|
|
2347
|
+
findInLinkedArraysSimpleNumeric,
|
|
2348
|
+
findTokenId,
|
|
2349
|
+
getOrCreateTokenId,
|
|
2350
|
+
getTokenById,
|
|
2351
|
+
getTokenCount,
|
|
2352
|
+
isDeletedOrBlocked,
|
|
2353
|
+
itemClasses,
|
|
2354
|
+
matchMany,
|
|
2355
|
+
matchPreparedTokenInSortedList,
|
|
2356
|
+
matchTokenInSortedListNumeric,
|
|
2357
|
+
normalizeDates,
|
|
2358
|
+
normalizeQueryWithOpts,
|
|
2359
|
+
orderedTokenize,
|
|
2360
|
+
prepareObjectForSearchNumeric as prepareObjectForSearch,
|
|
2361
|
+
prepareQueryTokens,
|
|
2362
|
+
prepareStringForSearch,
|
|
2363
|
+
preprocessString,
|
|
2364
|
+
registerToken,
|
|
2365
|
+
removeFromSearchMetadataNumeric as removeFromSearchMetadata,
|
|
2366
|
+
removeFromSearchMetadataBatchNumeric as removeFromSearchMetadataBatch,
|
|
2367
|
+
removeLinkedItemNumeric as removeLinkedItem,
|
|
2368
|
+
removePrimaryItemNumeric as removePrimaryItem,
|
|
2369
|
+
resetTokenRegistry,
|
|
2370
|
+
resolvePhoneQueryNormalizer,
|
|
2371
|
+
sanitiseString,
|
|
2372
|
+
scoreBag,
|
|
2373
|
+
scoreOne,
|
|
2374
|
+
scoreOrderAndPresence,
|
|
2375
|
+
searchAndRankNumeric as searchAndRank,
|
|
2376
|
+
searchAndRankNumeric,
|
|
2377
|
+
searchInDataReturnIdsNumeric as searchInData,
|
|
2378
|
+
searchInDataReturnIdsNumeric as searchInDataReturnIds,
|
|
2379
|
+
searchInDataReturnObjectsNumeric as searchInDataReturnObjects,
|
|
2380
|
+
searchInDataReturnIdsWithLimitNumeric as searchInDataWithLimit,
|
|
2381
|
+
searchableDataToArray,
|
|
2382
|
+
syncLinkedItemsForPrimaryNumeric as syncLinkedItemsForPrimary,
|
|
2383
|
+
syncSearchArrayMetadataNumeric as syncSearchArrayMetadata,
|
|
2384
|
+
syncSearchArrayMetadataNumericWithPrevious as syncSearchArrayMetadataWithPrevious,
|
|
2385
|
+
tokenize,
|
|
2386
|
+
tokens,
|
|
2387
|
+
updateSearchMetadataNumeric as updateSearchMetadata,
|
|
2388
|
+
updateSearchMetadataBatchNumeric as updateSearchMetadataBatch,
|
|
2389
|
+
upsertLinkedItemNumeric as upsertLinkedItem,
|
|
2390
|
+
upsertPrimaryItemNumeric as upsertPrimaryItem
|
|
2187
2391
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -27,6 +27,17 @@ export interface NumericSearchMetadata {
|
|
|
27
27
|
sorted: Map<Id, NumericTokenSortedList>;
|
|
28
28
|
/** First-N token IDs in SOURCE order per item — used for positional ranking. */
|
|
29
29
|
unsorted: Map<Id, NumericTokenUnsortedList>;
|
|
30
|
+
/**
|
|
31
|
+
* Domain classes per item, produced by `SearchableObjectSpec.valueNormalizers`
|
|
32
|
+
* (e.g. `{ razpon: ['15-30'], enota: ['tbl'] }`).
|
|
33
|
+
*
|
|
34
|
+
* Classes are **not tokens**: they never take part in retrieval, so a candidate
|
|
35
|
+
* missing a class is never excluded. They exist so a domain scorer can reward
|
|
36
|
+
* equal class values and penalize conflicting ones (soft semantics).
|
|
37
|
+
*
|
|
38
|
+
* Absent when no normalizer produced classes.
|
|
39
|
+
*/
|
|
40
|
+
classes?: Map<Id, Record<string, string[]>>;
|
|
30
41
|
}
|
|
31
42
|
/** Map of objects by their ID for efficient lookup */
|
|
32
43
|
export type SearchableData<T extends SearchableObject> = Map<Id, T>;
|
|
@@ -97,7 +108,55 @@ export interface SearchableObjectSpec<T extends SearchableObject, C = unknown> {
|
|
|
97
108
|
* @default 8
|
|
98
109
|
*/
|
|
99
110
|
firstTokensN?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Domain normalizers applied to FIELD VALUES at index time, before the standard
|
|
113
|
+
* pipeline (dates → preprocess → sanitise → tokenize) and before `fieldMatchModes`.
|
|
114
|
+
*
|
|
115
|
+
* A normalizer either returns a replacement string (canonical units, brand aliases)
|
|
116
|
+
* or a {@link NormalizedValue} carrying extra **domain classes** (a range, a pack
|
|
117
|
+
* size, an animal species). Classes are stored in `metadata.classes` and are never
|
|
118
|
+
* required for a match — see {@link NumericSearchMetadata.classes}.
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* valueNormalizers: [{ fn: (v) => v.replace(/\btablete?\b/gi, 'tbl') }]
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
valueNormalizers?: readonly ValueNormalizer[];
|
|
100
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Result of a domain normalizer: canonical text plus optional domain classes.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* { text: '15 30 KG', classes: { razpon: '15-30' } }
|
|
133
|
+
* ```
|
|
134
|
+
*/
|
|
135
|
+
export interface NormalizedValue {
|
|
136
|
+
/** Canonical (replacement) text that continues through the normal pipeline. */
|
|
137
|
+
text: string;
|
|
138
|
+
/** Domain classes; a single value or a list (both become a list in metadata). */
|
|
139
|
+
classes?: Record<string, string | string[]>;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Index-time normalizer for a field value (domain extension seam).
|
|
143
|
+
*
|
|
144
|
+
* Returning `undefined` keeps the previous text; normalizers run in order, so a
|
|
145
|
+
* later one sees the previous one's replacement (but not its classes).
|
|
146
|
+
*/
|
|
147
|
+
export interface ValueNormalizer {
|
|
148
|
+
/** Fields this normalizer applies to. Default: every searched field. */
|
|
149
|
+
fields?: readonly string[];
|
|
150
|
+
fn: (value: string, field: string) => string | NormalizedValue | undefined;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Query-time normalizer (domain extension seam). Must be the same mapping as the
|
|
154
|
+
* index-time one, otherwise query tokens and stored tokens drift apart.
|
|
155
|
+
*
|
|
156
|
+
* Accepts either a plain function or the same `{ fn }` shape as
|
|
157
|
+
* {@link ValueNormalizer}, so one definition can be reused on both sides.
|
|
158
|
+
*/
|
|
159
|
+
export type QueryNormalizer = ((query: string) => string | NormalizedValue | undefined) | ValueNormalizer;
|
|
101
160
|
/** Default cap on `metadata.unsorted` length. */
|
|
102
161
|
export declare const DEFAULT_FIRST_TOKENS_N = 8;
|
|
103
162
|
/**
|
|
@@ -134,6 +193,12 @@ export interface SearchOpts {
|
|
|
134
193
|
* When a phone variant finds candidates, it takes precedence over raw tokens.
|
|
135
194
|
*/
|
|
136
195
|
phoneQueryNormalizers?: readonly PhoneQueryNormalizer[];
|
|
196
|
+
/**
|
|
197
|
+
* Domain normalizers applied to the QUERY before tokenization; the same mapping
|
|
198
|
+
* must be configured as `SearchableObjectSpec.valueNormalizers` at index time.
|
|
199
|
+
* Query classes are available to the caller through {@link normalizeQueryWithOpts}.
|
|
200
|
+
*/
|
|
201
|
+
queryNormalizers?: readonly QueryNormalizer[];
|
|
137
202
|
}
|
|
138
203
|
/** Default match-mode options. Phone query normalizers are resolved per search. */
|
|
139
204
|
export declare const DEFAULT_SEARCH_OPTS: Required<Pick<SearchOpts, 'matchWords' | 'matchNumbers' | 'matchNumbersShort' | 'matchNumbersThreshold'>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA;;GAEG;AAMH,+CAA+C;AAC/C,MAAM,MAAM,EAAE,GAAG,MAAM,CAAC;AAExB,yDAAyD;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,2DAA2D;AAC3D,MAAM,MAAM,qBAAqB,GAAG,WAAW,EAAE,CAAC;AAElD,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,8EAA8E;AAC9E,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,0DAA0D;IAC1D,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;IACxC,gFAAgF;IAChF,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;CAC7C;AAED,sDAAsD;AACtD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,gBAAgB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAMpE,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,EAAE,CAAC;IACR,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAE5E,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,gDAAiD,CAAC;AAEnF,+DAA+D;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEpE,4EAA4E;AAC5E,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,GAAG,OAAO;IAC3E,iFAAiF;IACjF,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACjC,sDAAsD;IACtD,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,oFAAoF;IACpF,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1D;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IACtD;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,+EAA+E;IAC/E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,iEAAiE;IACjE,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|