cry-search 1.0.6 → 1.0.8

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.
Files changed (58) hide show
  1. package/CLAUDE.md +79 -78
  2. package/README.md +93 -17
  3. package/UNIVERSE.md +29 -20
  4. package/dist/common/SearchUniverse.d.ts +28 -13
  5. package/dist/common/SearchUniverse.d.ts.map +1 -1
  6. package/dist/common/numeric/AugmentedMetadata.d.ts +27 -92
  7. package/dist/common/numeric/AugmentedMetadata.d.ts.map +1 -1
  8. package/dist/common/numeric/createSearchArrayMetadata.d.ts +47 -7
  9. package/dist/common/numeric/createSearchArrayMetadata.d.ts.map +1 -1
  10. package/dist/common/numeric/findInLinkedArrays.d.ts +7 -4
  11. package/dist/common/numeric/findInLinkedArrays.d.ts.map +1 -1
  12. package/dist/common/numeric/scoring.d.ts +95 -0
  13. package/dist/common/numeric/scoring.d.ts.map +1 -0
  14. package/dist/common/numeric/searchAndRank.d.ts +48 -0
  15. package/dist/common/numeric/searchAndRank.d.ts.map +1 -0
  16. package/dist/common/numeric/searchInData.d.ts +17 -9
  17. package/dist/common/numeric/searchInData.d.ts.map +1 -1
  18. package/dist/common/numeric/syncSearchArrayMetadata.d.ts +7 -50
  19. package/dist/common/numeric/syncSearchArrayMetadata.d.ts.map +1 -1
  20. package/dist/common/numeric/updateSearchLinkedMetadata.d.ts +11 -110
  21. package/dist/common/numeric/updateSearchLinkedMetadata.d.ts.map +1 -1
  22. package/dist/common/numeric/updateSearchMetadata.d.ts.map +1 -1
  23. package/dist/index.cjs +646 -312
  24. package/dist/index.d.cts +3 -3
  25. package/dist/index.d.ts +3 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +646 -312
  28. package/dist/types/index.d.ts +35 -50
  29. package/dist/types/index.d.ts.map +1 -1
  30. package/dist/utils/matchTokenNumeric.d.ts.map +1 -1
  31. package/dist/utils/prepareStringForSearchNumeric.d.ts +24 -29
  32. package/dist/utils/prepareStringForSearchNumeric.d.ts.map +1 -1
  33. package/package.json +4 -14
  34. package/dist/common/findInArray.d.ts +0 -37
  35. package/dist/common/findInArray.d.ts.map +0 -1
  36. package/dist/common/findInArrayReturnDataAndMeta.d.ts +0 -52
  37. package/dist/common/findInArrayReturnDataAndMeta.d.ts.map +0 -1
  38. package/dist/common/findInLinkedArrays.d.ts +0 -66
  39. package/dist/common/findInLinkedArrays.d.ts.map +0 -1
  40. package/dist/common/string/createSearchArrayMetadata.d.ts +0 -117
  41. package/dist/common/string/createSearchArrayMetadata.d.ts.map +0 -1
  42. package/dist/common/string/createSearchLinkedMetadata.d.ts +0 -36
  43. package/dist/common/string/createSearchLinkedMetadata.d.ts.map +0 -1
  44. package/dist/common/string/index.d.ts +0 -10
  45. package/dist/common/string/index.d.ts.map +0 -1
  46. package/dist/common/string/updateSearchMetadata.d.ts +0 -103
  47. package/dist/common/string/updateSearchMetadata.d.ts.map +0 -1
  48. package/dist/common/syncSearchArrayMetadata.d.ts +0 -68
  49. package/dist/common/syncSearchArrayMetadata.d.ts.map +0 -1
  50. package/dist/common/updateSearchLinkedMetadata.d.ts +0 -139
  51. package/dist/common/updateSearchLinkedMetadata.d.ts.map +0 -1
  52. package/dist/string.cjs +0 -930
  53. package/dist/string.d.cts +0 -26
  54. package/dist/string.d.ts +0 -26
  55. package/dist/string.d.ts.map +0 -1
  56. package/dist/string.js +0 -898
  57. package/dist/utils/matchToken.d.ts +0 -65
  58. package/dist/utils/matchToken.d.ts.map +0 -1
@@ -2,129 +2,30 @@ import type { Id, SearchableData, SearchableObject, SearchableObjectSpec, Upsert
2
2
  import type { NumericLinkedSearchMetadataWithData } from './createSearchLinkedMetadata.js';
3
3
  export type { UpsertResult, SyncLinkedResult } from '../../types/index.js';
4
4
  /**
5
- * Upserts a primary item into the linked metadata (numeric version).
5
+ * Upserts a primary item into linked metadata.
6
6
  *
7
- * - If the item doesn't exist, adds it to data, metadata, and initializes primaryToLinked index
8
- * - If the item exists, updates data and metadata
9
- * - Handles `_deleted`/`_blocked` items by removing their metadata
10
- *
11
- * @typeParam TPrimary - Type of primary items
12
- * @typeParam TLinked - Type of linked items
13
- * @typeParam C - Type of the search context
14
- *
15
- * @param linked - The linked metadata to update (mutated in place)
16
- * @param item - The primary item to upsert
17
- * @param spec - Optional specification for how to extract searchable text
18
- * @returns UpsertResult indicating if item was added or updated
19
- *
20
- * @example
21
- * ```typescript
22
- * const stranka = { _id: 's1', ime: 'Janez', priimek: 'Novak' };
23
- * const result = upsertPrimaryItemNumeric(linkedMeta, stranka, spec);
24
- * // result.added === true if stranka was new
25
- * ```
7
+ * Adds or updates the primary in `primaryData`, refreshes its tokens in `primaryMeta`,
8
+ * and initializes its `primaryToLinked` entry on first insertion. Items marked
9
+ * `_deleted`/`_blocked` get their metadata cleared (kept in data for reference).
26
10
  */
27
11
  export declare function upsertPrimaryItemNumeric<TPrimary extends SearchableObject, TLinked extends SearchableObject, C = unknown>(linked: NumericLinkedSearchMetadataWithData<TPrimary, TLinked>, item: TPrimary, spec?: SearchableObjectSpec<TPrimary, C>): UpsertResult;
28
12
  /**
29
- * Removes a primary item from the linked metadata (numeric version).
30
- *
31
- * Removes the item from data, metadata, and the primaryToLinked index.
32
- * Note: This does NOT automatically remove linked items - they will become orphans.
33
- * If you want to also remove linked items, call {@link removeLinkedItemNumeric} for each.
34
- *
35
- * @typeParam TPrimary - Type of primary items
36
- * @typeParam TLinked - Type of linked items
37
- *
38
- * @param linked - The linked metadata to update (mutated in place)
39
- * @param primaryId - The ID of the primary item to remove
40
- * @returns true if item was found and removed, false if not found
13
+ * Removes a primary item entirely. Linked items become orphans (caller must
14
+ * call {@link removeLinkedItemNumeric} on each if needed).
41
15
  */
42
16
  export declare function removePrimaryItemNumeric<TPrimary extends SearchableObject, TLinked extends SearchableObject>(linked: NumericLinkedSearchMetadataWithData<TPrimary, TLinked>, primaryId: Id): boolean;
43
17
  /**
44
- * Upserts a linked item into the linked metadata (numeric version).
45
- *
46
- * - If the item doesn't exist, adds it
47
- * - If the item exists, updates it
48
- * - Handles foreign key changes by updating the primaryToLinked index
49
- * (removes from old primary's list, adds to new primary's list)
50
- * - Handles `_deleted`/`_blocked` items by removing their metadata
51
- *
52
- * @typeParam TPrimary - Type of primary items
53
- * @typeParam TLinked - Type of linked items
54
- * @typeParam C - Type of the search context
55
- *
56
- * @param linked - The linked metadata to update (mutated in place)
57
- * @param item - The linked item to upsert
58
- * @param foreignKeyGetter - Function to get the primary ID from a linked item
59
- * @param spec - Optional specification for how to extract searchable text
60
- * @returns UpsertResult indicating if item was added or updated, and previous primary ID if FK changed
61
- *
62
- * @example
63
- * ```typescript
64
- * const pacient = { _id: 'p1', ime: 'Rex', stranka_id: 's1' };
65
- * const result = upsertLinkedItemNumeric(linkedMeta, pacient, (p) => p.stranka_id, spec);
66
- *
67
- * // If the pacient moved to a different stranka:
68
- * pacient.stranka_id = 's2';
69
- * const result2 = upsertLinkedItemNumeric(linkedMeta, pacient, (p) => p.stranka_id, spec);
70
- * // result2.previousPrimaryId === 's1'
71
- * ```
18
+ * Upserts a linked item; if its foreign key changed since previous state, moves
19
+ * the id in `primaryToLinked` from the old primary's bucket to the new one.
72
20
  */
73
21
  export declare function upsertLinkedItemNumeric<TPrimary extends SearchableObject, TLinked extends SearchableObject, C = unknown>(linked: NumericLinkedSearchMetadataWithData<TPrimary, TLinked>, item: TLinked, foreignKeyGetter: (item: TLinked) => Id | undefined, spec?: SearchableObjectSpec<TLinked, C>): UpsertResult;
74
22
  /**
75
- * Removes a linked item from the linked metadata (numeric version).
76
- *
77
- * Removes the item from data, metadata, and the primaryToLinked index.
78
- *
79
- * @typeParam TPrimary - Type of primary items
80
- * @typeParam TLinked - Type of linked items
81
- *
82
- * @param linked - The linked metadata to update (mutated in place)
83
- * @param linkedId - The ID of the linked item to remove
84
- * @param foreignKeyGetter - Function to get the primary ID from a linked item
85
- * @returns true if item was found and removed, false if not found
86
- *
87
- * @example
88
- * ```typescript
89
- * removeLinkedItemNumeric(linkedMeta, 'pacient-id', (p) => p.stranka_id);
90
- * ```
23
+ * Removes a linked item from data, metadata, and the parent primary's index entry.
91
24
  */
92
25
  export declare function removeLinkedItemNumeric<TPrimary extends SearchableObject, TLinked extends SearchableObject>(linked: NumericLinkedSearchMetadataWithData<TPrimary, TLinked>, linkedId: Id, foreignKeyGetter: (item: TLinked) => Id | undefined): boolean;
93
26
  /**
94
- * Syncs all linked items for a specific primary item (numeric version).
95
- *
96
- * This function performs a full sync of linked items belonging to a single primary:
97
- * - Removes linked items that are no longer in the new data
98
- * - Updates existing linked items if their tokens changed
99
- * - Adds new linked items
100
- * - Only processes items whose foreign key points to the given primary
101
- *
102
- * Use this when you have a complete new set of linked items for a primary
103
- * and want to update the metadata to match.
104
- *
105
- * @typeParam TPrimary - Type of primary items
106
- * @typeParam TLinked - Type of linked items
107
- * @typeParam C - Type of the search context
108
- *
109
- * @param linked - The linked metadata to update (mutated in place)
110
- * @param primaryId - The primary ID to sync linked items for
111
- * @param newLinkedItems - The new linked items (only items with matching FK will be processed)
112
- * @param foreignKeyGetter - Function to get the primary ID from a linked item
113
- * @param spec - Optional specification for how to extract searchable text
114
- * @returns SyncLinkedResult with counts of added/updated/removed items
115
- *
116
- * @example
117
- * ```typescript
118
- * const newPacienti = arrayToSearchableData(freshPacientiFromServer);
119
- * const result = syncLinkedItemsForPrimaryNumeric(
120
- * linkedMeta,
121
- * 'stranka-1',
122
- * newPacienti,
123
- * (p) => p.stranka_id,
124
- * spec
125
- * );
126
- * console.log(`Added: ${result.added}, Updated: ${result.updated}, Removed: ${result.removed}`);
127
- * ```
27
+ * Full sync of linked items for one primary: removes missing, updates changed,
28
+ * adds new. Only items whose foreign key equals `primaryId` are processed.
128
29
  */
129
30
  export declare function syncLinkedItemsForPrimaryNumeric<TPrimary extends SearchableObject, TLinked extends SearchableObject, C = unknown>(linked: NumericLinkedSearchMetadataWithData<TPrimary, TLinked>, primaryId: Id, newLinkedItems: SearchableData<TLinked>, foreignKeyGetter: (item: TLinked) => Id | undefined, spec?: SearchableObjectSpec<TLinked, C>): SyncLinkedResult;
130
31
  //# sourceMappingURL=updateSearchLinkedMetadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateSearchLinkedMetadata.d.ts","sourceRoot":"","sources":["../../../src/common/numeric/updateSearchLinkedMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,EAAE,EACF,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAEjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,iCAAiC,CAAA;AAK1F,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAkB1E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,CAAC,GAAG,OAAO,EAEX,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,IAAI,EAAE,QAAQ,EACd,IAAI,CAAC,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,GACvC,YAAY,CAwBd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAUxF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,CAAC,GAAG,OAAO,EAEX,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,IAAI,EAAE,OAAO,EACb,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,GAAG,SAAS,EACnD,IAAI,CAAC,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,GACtC,YAAY,CA0Dd;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAEhC,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,QAAQ,EAAE,EAAE,EACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,GAAG,SAAS,GAClD,OAAO,CAyBT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,CAAC,GAAG,OAAO,EAEX,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,SAAS,EAAE,EAAE,EACb,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,EACvC,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,GAAG,SAAS,EACnD,IAAI,CAAC,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,GACtC,gBAAgB,CA8DlB"}
1
+ {"version":3,"file":"updateSearchLinkedMetadata.d.ts","sourceRoot":"","sources":["../../../src/common/numeric/updateSearchLinkedMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,EAAE,EAEF,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAGjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,iCAAiC,CAAA;AAK1F,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AA8C1E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,CAAC,GAAG,OAAO,EAEX,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,IAAI,EAAE,QAAQ,EACd,IAAI,CAAC,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,GACvC,YAAY,CAiBd;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAOxF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,CAAC,GAAG,OAAO,EAEX,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,IAAI,EAAE,OAAO,EACb,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,GAAG,SAAS,EACnD,IAAI,CAAC,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,GACtC,YAAY,CAwCd;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAEhC,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,QAAQ,EAAE,EAAE,EACZ,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,GAAG,SAAS,GAClD,OAAO,CAkBT;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,SAAS,gBAAgB,EACjC,OAAO,SAAS,gBAAgB,EAChC,CAAC,GAAG,OAAO,EAEX,MAAM,EAAE,mCAAmC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAC9D,SAAS,EAAE,EAAE,EACb,cAAc,EAAE,cAAc,CAAC,OAAO,CAAC,EACvC,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,EAAE,GAAG,SAAS,EACnD,IAAI,CAAC,EAAE,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,GACtC,gBAAgB,CAqDlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateSearchMetadata.d.ts","sourceRoot":"","sources":["../../../src/common/numeric/updateSearchMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,EAAE,EACF,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,6BAA6B,EAC9B,MAAM,aAAa,CAAC;AAIrB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,GAAG,OAAO,EACjF,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,EAAE,EACZ,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACzB,IAAI,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,EAC5C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAUT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,GAAG,OAAO,EACtF,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC,EAAE,EACzC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BtC;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,EAAE,GACX,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAE,EAAE,EAAE,GACd,MAAM,CAYR"}
1
+ {"version":3,"file":"updateSearchMetadata.d.ts","sourceRoot":"","sources":["../../../src/common/numeric/updateSearchMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,EAAE,EACF,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,6BAA6B,EAC9B,MAAM,aAAa,CAAC;AAIrB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,GAAG,OAAO,EACjF,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,EAAE,EACZ,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACzB,IAAI,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,EAC5C,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAgBT;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gCAAgC,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,GAAG,OAAO,EACtF,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,6BAA6B,CAAC,CAAC,CAAC,EAAE,EACzC,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GAChC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA0BtC;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,EAAE,GACX,OAAO,CAIT;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAE,EAAE,EAAE,GACd,MAAM,CAYR"}