@fjell/core 4.4.6 → 4.4.7

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.
@@ -1,6 +1,100 @@
1
1
  import LibLogger from '../logger.js';
2
2
 
3
3
  const logger = LibLogger.get('KUtils');
4
+ // Normalize a key value to string for consistent comparison and hashing
5
+ const normalizeKeyValue = (value)=>{
6
+ return String(value);
7
+ };
8
+ // Normalized hash function for Dictionary that converts pk/lk values to strings
9
+ const createNormalizedHashFunction = ()=>{
10
+ return (key)=>{
11
+ if (typeof key === 'object' && key !== null) {
12
+ // Create a normalized version of the key with string values
13
+ const normalizedKey = JSON.parse(JSON.stringify(key));
14
+ // Normalize pk values
15
+ if ('pk' in normalizedKey && normalizedKey.pk !== undefined && normalizedKey.pk !== null) {
16
+ normalizedKey.pk = normalizeKeyValue(normalizedKey.pk);
17
+ }
18
+ // Normalize lk values
19
+ if ('lk' in normalizedKey && normalizedKey.lk !== undefined && normalizedKey.lk !== null) {
20
+ normalizedKey.lk = normalizeKeyValue(normalizedKey.lk);
21
+ }
22
+ // Normalize loc array lk values
23
+ if ('loc' in normalizedKey && Array.isArray(normalizedKey.loc)) {
24
+ normalizedKey.loc = normalizedKey.loc.map((locItem)=>{
25
+ if (locItem && 'lk' in locItem && locItem.lk !== undefined && locItem.lk !== null) {
26
+ return {
27
+ ...locItem,
28
+ lk: normalizeKeyValue(locItem.lk)
29
+ };
30
+ }
31
+ return locItem;
32
+ });
33
+ }
34
+ return JSON.stringify(normalizedKey);
35
+ }
36
+ return JSON.stringify(key);
37
+ };
38
+ };
39
+ // Normalized comparison functions
40
+ const isPriKeyEqualNormalized = (a, b)=>{
41
+ logger.trace('isPriKeyEqualNormalized', {
42
+ a,
43
+ b
44
+ });
45
+ return a && b && normalizeKeyValue(a.pk) === normalizeKeyValue(b.pk) && a.kt === b.kt;
46
+ };
47
+ const isLocKeyEqualNormalized = (a, b)=>{
48
+ logger.trace('isLocKeyEqualNormalized', {
49
+ a,
50
+ b
51
+ });
52
+ return a && b && normalizeKeyValue(a.lk) === normalizeKeyValue(b.lk) && a.kt === b.kt;
53
+ };
54
+ const isComKeyEqualNormalized = (a, b)=>{
55
+ logger.trace('isComKeyEqualNormalized', {
56
+ a,
57
+ b
58
+ });
59
+ if (a && b && isPriKeyEqualNormalized({
60
+ kt: a.kt,
61
+ pk: a.pk
62
+ }, {
63
+ kt: b.kt,
64
+ pk: b.pk
65
+ })) {
66
+ if (a.loc.length === b.loc.length) {
67
+ for(let i = 0; i < a.loc.length; i++){
68
+ if (!isLocKeyEqualNormalized(a.loc[i], b.loc[i])) {
69
+ return false;
70
+ }
71
+ }
72
+ return true;
73
+ } else {
74
+ return false;
75
+ }
76
+ } else {
77
+ return false;
78
+ }
79
+ };
80
+ const isItemKeyEqualNormalized = (a, b)=>{
81
+ logger.trace('isItemKeyEqualNormalized', {
82
+ a,
83
+ b
84
+ });
85
+ if (isComKey(a) && isComKey(b)) {
86
+ return isComKeyEqualNormalized(a, b);
87
+ } else if (isPriKey(a) && isPriKey(b)) {
88
+ if (isComKey(a) || isComKey(b)) {
89
+ return false;
90
+ } else {
91
+ return isPriKeyEqualNormalized(a, b);
92
+ }
93
+ } else {
94
+ return false;
95
+ }
96
+ };
97
+ // Original comparison functions (kept for backward compatibility)
4
98
  const isItemKeyEqual = (a, b)=>{
5
99
  logger.trace('isKeyEqual', {
6
100
  a,
@@ -119,7 +213,7 @@ const constructPriKey = (pk, kt)=>{
119
213
  kt
120
214
  });
121
215
  let pri;
122
- if (typeof pk === 'string') {
216
+ if (typeof pk === 'string' || typeof pk === 'number') {
123
217
  pri = {
124
218
  kt: kt,
125
219
  pk: pk
@@ -267,5 +361,5 @@ const isValidItemKey = (key)=>{
267
361
  };
268
362
  const lkaToIK = locKeyArrayToItemKey;
269
363
 
270
- export { abbrevIK, abbrevLKA, cPK, constructPriKey, generateKeyArray, ikToLKA, isComKey, isComKeyEqual, isItemKey, isItemKeyEqual, isLocKey, isLocKeyEqual, isPriKey, isPriKeyEqual, isValidComKey, isValidItemKey, isValidLocKey, isValidLocKeyArray, isValidPriKey, itemKeyToLocKeyArray, lkaToIK, locKeyArrayToItemKey, primaryType, toKeyTypeArray };
364
+ export { abbrevIK, abbrevLKA, cPK, constructPriKey, createNormalizedHashFunction, generateKeyArray, ikToLKA, isComKey, isComKeyEqual, isComKeyEqualNormalized, isItemKey, isItemKeyEqual, isItemKeyEqualNormalized, isLocKey, isLocKeyEqual, isLocKeyEqualNormalized, isPriKey, isPriKeyEqual, isPriKeyEqualNormalized, isValidComKey, isValidItemKey, isValidLocKey, isValidLocKeyArray, isValidPriKey, itemKeyToLocKeyArray, lkaToIK, locKeyArrayToItemKey, primaryType, toKeyTypeArray };
271
365
  //# sourceMappingURL=KUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KUtils.js","sources":["../../../src/key/KUtils.ts"],"sourcesContent":["/* eslint-disable no-undefined */\nimport {\n ComKey,\n LocKey,\n LocKeyArray,\n PriKey,\n UUID\n} from \"@/keys\";\n\nimport LibLogger from \"@/logger\";\n\nconst logger = LibLogger.get('KUtils');\n\nexport const isItemKeyEqual = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, b: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): boolean => {\n logger.trace('isKeyEqual', { a, b });\n if (isComKey(a) && isComKey(b)) {\n return isComKeyEqual(a as ComKey<S, L1, L2, L3, L4, L5>, b as ComKey<S, L1, L2, L3, L4, L5>);\n } else if (isPriKey(a) && isPriKey(b)) {\n if (isComKey(a) || isComKey(b)) {\n return false;\n } else {\n return isPriKeyEqual(a as PriKey<S>, b as PriKey<S>);\n }\n } else {\n return false;\n }\n}\n\nexport const isPriKeyEqual = <\n S extends string,\n>(a: PriKey<S>, b: PriKey<S>): boolean => {\n logger.trace('isPriKeyEqual', { a, b });\n return a && b && a.pk === b.pk && a.kt === b.kt;\n}\n\nexport const isLocKeyEqual = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: LocKey<L1 | L2 | L3 | L4 | L5>, b: LocKey<L1 | L2 | L3 | L4 | L5>): boolean => {\n logger.trace('isLocKeyEqual', { a, b });\n return a && b && a.lk === b.lk && a.kt === b.kt;\n}\n\nexport const isComKeyEqual = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: ComKey<S, L1, L2, L3, L4, L5>, b: ComKey<S, L1, L2, L3, L4, L5>): boolean => {\n logger.trace('isComKeyEqual', { a, b });\n if (a && b && isPriKeyEqual({ kt: a.kt, pk: a.pk } as PriKey<S>, { kt: b.kt, pk: b.pk } as PriKey<S>)) {\n if (a.loc.length === b.loc.length) {\n for (let i = 0; i < a.loc.length; i++) {\n if (!isLocKeyEqual<L1, L2, L3, L4, L5>(a.loc[i], b.loc[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n}\n\nexport const isItemKey = (key: any): boolean => {\n logger.trace('isItemKey', { key });\n return key !== undefined && (isComKey(key) || isPriKey(key));\n}\n\nexport const isComKey = (key: any): boolean => {\n logger.trace('isComKey', { key });\n return key !== undefined &&\n (key.pk !== undefined && key.kt !== undefined) && (key.loc !== undefined && key.loc.length > 0);\n}\n\nexport const isPriKey = (key: any): boolean => {\n logger.trace('isPriKey', { key });\n return key !== undefined &&\n (key.pk !== undefined && key.kt !== undefined) && (key.loc === undefined || key.loc.length === 0);\n}\n\nexport const isLocKey = (key: any): boolean => {\n logger.trace('isLocKey', { key });\n return key !== undefined && (key.lk !== undefined && key.kt !== undefined);\n}\n\nexport const generateKeyArray = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never,\n>(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S> | LocKeyArray<L1, L2, L3, L4, L5> | []):\n Array<PriKey<S> | LocKey<L1 | L2 | L3 | L4 | L5>> => {\n logger.trace('generateKeyArray', { key });\n const keys: Array<PriKey<S> | LocKey<L1 | L2 | L3 | L4 | L5>> = [];\n\n if (isComKey(key) || isPriKey(key)) {\n // console.log('it is an item key');\n if (isComKey(key)) {\n // console.log('it is a composite key');\n const comKey = key as ComKey<S, L1, L2, L3, L4, L5>;\n keys.push({ pk: comKey.pk, kt: comKey.kt });\n for (let i = 0; i < comKey.loc.length; i++) {\n keys.push(comKey.loc[i]);\n }\n } else {\n keys.push(key as PriKey<S>);\n }\n } else {\n // console.log('is is an array, length: ' + key.length);\n const locKeys = key as LocKey<L1 | L2 | L3 | L4 | L5>[];\n for (let i = 0; i < locKeys.length; i++) {\n // console.log('Pushing a key');\n keys.push(locKeys[i]);\n }\n }\n return keys;\n}\n\n// TODO: Exactly the same as in ContainedItemLib\nexport const constructPriKey = <S extends string>(\n pk: string | PriKey<S>,\n kt: S,\n) => {\n logger.trace('constructPriKey', { pk, kt });\n let pri: PriKey<S>;\n if (typeof pk === 'string') {\n pri = { kt: kt as S, pk: pk as UUID };\n } else {\n pri = pk;\n }\n return pri;\n}\n\n// TODO: Exactly the same as in ContainedItemLib\nexport const cPK = constructPriKey;\n\nexport const toKeyTypeArray = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>):\n string[] => {\n logger.trace('toKeyTypeArray', { ik });\n if (isComKey(ik)) {\n const ck = ik as ComKey<S, L1, L2, L3, L4, L5>;\n return [ck.kt, ...ck.loc.map((l: LocKey<L1 | L2 | L3 | L4 | L5>) => l.kt)];\n } else {\n return [(ik as PriKey<S>).kt];\n }\n}\n\nexport const abbrevIK = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(ik: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): string => {\n logger.trace('abbrevIK', { ik });\n if (ik) {\n if (isComKey(ik)) {\n const ck = ik as ComKey<S, L1, L2, L3, L4, L5>;\n return `${ck.kt}:${ck.pk}:${ck.loc.map((l: LocKey<L1 | L2 | L3 | L4 | L5>) => `${l.kt}:${l.lk}`).join(',')}`;\n } else {\n return `${(ik as PriKey<S>).kt}:${(ik as PriKey<S>).pk}`;\n }\n } else {\n return 'null IK';\n }\n}\n\nexport const abbrevLKA = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(keyArray: Array<LocKey<L1 | L2 | L3 | L4 | L5>> | null): string => {\n logger.trace('abbrevLKA', { keyArray });\n if (keyArray === undefined || keyArray === null) {\n return 'null LKA';\n } else {\n return keyArray.map(key => {\n if (key) {\n return `${key.kt}:${key.lk}`;\n } else {\n return key;\n }\n }).join(',');\n }\n}\n\nexport const primaryType = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(ik: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): string => {\n logger.trace('primaryType', { ik });\n if (isComKey(ik)) {\n return (ik as ComKey<S, L1, L2, L3, L4, L5>).kt;\n } else {\n return (ik as PriKey<S>).kt;\n }\n}\n\n/**\n *\n * @param ik ItemKey to be used as a basis for a location\n * @returns\n */\nexport const itemKeyToLocKeyArray =\n <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n >(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>): LocKeyArray<S, L1, L2, L3, L4> => {\n logger.trace('itemKeyToLocKeyArray', { ik: abbrevIK(ik) });\n let lka: Array<LocKey<L1 | L2 | L3 | L4 | L5>> = [];\n if (isComKey(ik)) {\n const ck = ik as ComKey<S, L1, L2, L3, L4, L5>;\n lka = [{ kt: ck.kt, lk: ck.pk } as unknown as LocKey<L1 | L2 | L3 | L4 | L5>, ...ck.loc];\n } else {\n const pk = ik as PriKey<S>;\n lka = [{ kt: pk.kt, lk: pk.pk } as unknown as LocKey<L1 | L2 | L3 | L4 | L5>];\n }\n logger.trace('itemKeyToLocKeyArray Results', { ik: abbrevIK(ik), lka: abbrevLKA(lka) });\n return lka as LocKeyArray<S, L1, L2, L3, L4>;\n }\n\nexport const ikToLKA = itemKeyToLocKeyArray;\n\n/**\n * Sometimes you need to take a location key array and convert it to the item key that points to the containing item.\n * @param lka A location key array\n * @returns An item key corresponding to the containing item this location refers to.\n */\nexport const locKeyArrayToItemKey =\n <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n >(lka: LocKeyArray<L1, L2, L3, L4, L5>):\n PriKey<L1> | ComKey<L1, L2, L3, L4, L5> => {\n logger.trace('locKeyArrayToItemKey', { lka: abbrevLKA(lka as Array<LocKey<L1 | L2 | L3 | L4 | L5>>) });\n\n if (lka && lka.length === 1) {\n const priKey = cPK(lka[0].lk, lka[0].kt);\n return priKey as PriKey<L1>;\n } else if (lka && lka.length > 1 && lka[0] !== undefined) {\n const locs = lka.slice(1);\n const priKey = cPK(lka[0].lk, lka[0].kt);\n const comKey = { kt: priKey.kt, pk: priKey.pk, loc: locs as unknown as LocKeyArray<L2, L3, L4, L5> };\n return comKey as ComKey<L1, L2, L3, L4, L5>;\n } else {\n throw new Error('locKeyArrayToItemKey: lka is undefined or empty');\n }\n }\n\n// TODO: This is annoying that we have to check for '' and 'null'\nexport const isValidPriKey = <S extends string>(key: PriKey<S>): boolean => {\n const valid = (key !== undefined && key !== null)\n && (key.pk !== undefined && key.pk !== null && key.pk !== '' && key.pk !== 'null')\n && (key.kt !== undefined && key.kt !== null && key.kt !== '' && key.kt !== 'null');\n return valid;\n}\n\n// TODO: This is annoying that we have to check for '' and 'null'\nexport const isValidLocKey = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(key: LocKey<L1 | L2 | L3 | L4 | L5>): boolean => {\n const valid = (key !== undefined && key !== null)\n && (key.lk !== undefined && key.lk !== null && key.lk !== '' && key.lk !== 'null')\n && (key.kt !== undefined && key.kt !== null && key.kt !== '' && key.kt !== 'null');\n return valid;\n}\n\nexport const isValidLocKeyArray = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(keyArray: Array<LocKey<L1 | L2 | L3 | L4 | L5>>): boolean => {\n return (keyArray !== undefined && keyArray !== null) && keyArray.every(isValidLocKey);\n}\n\nexport const isValidComKey = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(key: ComKey<S, L1, L2, L3, L4, L5>): boolean => {\n return (key !== undefined\n && key !== null) && isValidPriKey(key) && isValidLocKeyArray(key.loc as Array<LocKey<L1 | L2 | L3 | L4 | L5>>);\n}\n\nexport const isValidItemKey = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): boolean => {\n return (isComKey(key) &&\n isValidComKey(key as ComKey<S, L1, L2, L3, L4, L5>)) || (isPriKey(key) && isValidPriKey(key as PriKey<S>));\n}\n\nexport const lkaToIK = locKeyArrayToItemKey;\n"],"names":["logger","LibLogger","get","isItemKeyEqual","a","b","trace","isComKey","isComKeyEqual","isPriKey","isPriKeyEqual","pk","kt","isLocKeyEqual","lk","loc","length","i","isItemKey","key","undefined","isLocKey","generateKeyArray","keys","comKey","push","locKeys","constructPriKey","pri","cPK","toKeyTypeArray","ik","ck","map","l","abbrevIK","join","abbrevLKA","keyArray","primaryType","itemKeyToLocKeyArray","lka","ikToLKA","locKeyArrayToItemKey","priKey","locs","slice","Error","isValidPriKey","valid","isValidLocKey","isValidLocKeyArray","every","isValidComKey","isValidItemKey","lkaToIK"],"mappings":"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"}
1
+ {"version":3,"file":"KUtils.js","sources":["../../../src/key/KUtils.ts"],"sourcesContent":["/* eslint-disable no-undefined */\nimport {\n ComKey,\n LocKey,\n LocKeyArray,\n PriKey\n} from \"@/keys\";\n\nimport LibLogger from \"@/logger\";\n\nconst logger = LibLogger.get('KUtils');\n\n// Normalize a key value to string for consistent comparison and hashing\nconst normalizeKeyValue = (value: string | number): string => {\n return String(value);\n};\n\n// Normalized hash function for Dictionary that converts pk/lk values to strings\nexport const createNormalizedHashFunction = <T>() => {\n return (key: T): string => {\n if (typeof key === 'object' && key !== null) {\n // Create a normalized version of the key with string values\n const normalizedKey = JSON.parse(JSON.stringify(key));\n\n // Normalize pk values\n if ('pk' in normalizedKey && (normalizedKey.pk !== undefined && normalizedKey.pk !== null)) {\n normalizedKey.pk = normalizeKeyValue(normalizedKey.pk);\n }\n\n // Normalize lk values\n if ('lk' in normalizedKey && (normalizedKey.lk !== undefined && normalizedKey.lk !== null)) {\n normalizedKey.lk = normalizeKeyValue(normalizedKey.lk);\n }\n\n // Normalize loc array lk values\n if ('loc' in normalizedKey && Array.isArray(normalizedKey.loc)) {\n normalizedKey.loc = normalizedKey.loc.map((locItem: any) => {\n if (locItem && 'lk' in locItem && (locItem.lk !== undefined && locItem.lk !== null)) {\n return { ...locItem, lk: normalizeKeyValue(locItem.lk) };\n }\n return locItem;\n });\n }\n\n return JSON.stringify(normalizedKey);\n }\n return JSON.stringify(key);\n };\n};\n\n// Normalized comparison functions\nexport const isPriKeyEqualNormalized = <\n S extends string,\n>(a: PriKey<S>, b: PriKey<S>): boolean => {\n logger.trace('isPriKeyEqualNormalized', { a, b });\n return a && b &&\n normalizeKeyValue(a.pk) === normalizeKeyValue(b.pk) &&\n a.kt === b.kt;\n};\n\nexport const isLocKeyEqualNormalized = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: LocKey<L1 | L2 | L3 | L4 | L5>, b: LocKey<L1 | L2 | L3 | L4 | L5>): boolean => {\n logger.trace('isLocKeyEqualNormalized', { a, b });\n return a && b &&\n normalizeKeyValue(a.lk) === normalizeKeyValue(b.lk) &&\n a.kt === b.kt;\n};\n\nexport const isComKeyEqualNormalized = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: ComKey<S, L1, L2, L3, L4, L5>, b: ComKey<S, L1, L2, L3, L4, L5>): boolean => {\n logger.trace('isComKeyEqualNormalized', { a, b });\n if (a && b && isPriKeyEqualNormalized({ kt: a.kt, pk: a.pk } as PriKey<S>, { kt: b.kt, pk: b.pk } as PriKey<S>)) {\n if (a.loc.length === b.loc.length) {\n for (let i = 0; i < a.loc.length; i++) {\n if (!isLocKeyEqualNormalized<L1, L2, L3, L4, L5>(a.loc[i], b.loc[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n};\n\nexport const isItemKeyEqualNormalized = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, b: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): boolean => {\n logger.trace('isItemKeyEqualNormalized', { a, b });\n if (isComKey(a) && isComKey(b)) {\n return isComKeyEqualNormalized(a as ComKey<S, L1, L2, L3, L4, L5>, b as ComKey<S, L1, L2, L3, L4, L5>);\n } else if (isPriKey(a) && isPriKey(b)) {\n if (isComKey(a) || isComKey(b)) {\n return false;\n } else {\n return isPriKeyEqualNormalized(a as PriKey<S>, b as PriKey<S>);\n }\n } else {\n return false;\n }\n};\n\n// Original comparison functions (kept for backward compatibility)\nexport const isItemKeyEqual = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, b: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): boolean => {\n logger.trace('isKeyEqual', { a, b });\n if (isComKey(a) && isComKey(b)) {\n return isComKeyEqual(a as ComKey<S, L1, L2, L3, L4, L5>, b as ComKey<S, L1, L2, L3, L4, L5>);\n } else if (isPriKey(a) && isPriKey(b)) {\n if (isComKey(a) || isComKey(b)) {\n return false;\n } else {\n return isPriKeyEqual(a as PriKey<S>, b as PriKey<S>);\n }\n } else {\n return false;\n }\n};\n\nexport const isPriKeyEqual = <\n S extends string,\n>(a: PriKey<S>, b: PriKey<S>): boolean => {\n logger.trace('isPriKeyEqual', { a, b });\n return a && b && a.pk === b.pk && a.kt === b.kt;\n}\n\nexport const isLocKeyEqual = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: LocKey<L1 | L2 | L3 | L4 | L5>, b: LocKey<L1 | L2 | L3 | L4 | L5>): boolean => {\n logger.trace('isLocKeyEqual', { a, b });\n return a && b && a.lk === b.lk && a.kt === b.kt;\n}\n\nexport const isComKeyEqual = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(a: ComKey<S, L1, L2, L3, L4, L5>, b: ComKey<S, L1, L2, L3, L4, L5>): boolean => {\n logger.trace('isComKeyEqual', { a, b });\n if (a && b && isPriKeyEqual({ kt: a.kt, pk: a.pk } as PriKey<S>, { kt: b.kt, pk: b.pk } as PriKey<S>)) {\n if (a.loc.length === b.loc.length) {\n for (let i = 0; i < a.loc.length; i++) {\n if (!isLocKeyEqual<L1, L2, L3, L4, L5>(a.loc[i], b.loc[i])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n } else {\n return false;\n }\n}\n\nexport const isItemKey = (key: any): boolean => {\n logger.trace('isItemKey', { key });\n return key !== undefined && (isComKey(key) || isPriKey(key));\n}\n\nexport const isComKey = (key: any): boolean => {\n logger.trace('isComKey', { key });\n return key !== undefined &&\n (key.pk !== undefined && key.kt !== undefined) && (key.loc !== undefined && key.loc.length > 0);\n}\n\nexport const isPriKey = (key: any): boolean => {\n logger.trace('isPriKey', { key });\n return key !== undefined &&\n (key.pk !== undefined && key.kt !== undefined) && (key.loc === undefined || key.loc.length === 0);\n}\n\nexport const isLocKey = (key: any): boolean => {\n logger.trace('isLocKey', { key });\n return key !== undefined && (key.lk !== undefined && key.kt !== undefined);\n}\n\nexport const generateKeyArray = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never,\n>(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S> | LocKeyArray<L1, L2, L3, L4, L5> | []):\n Array<PriKey<S> | LocKey<L1 | L2 | L3 | L4 | L5>> => {\n logger.trace('generateKeyArray', { key });\n const keys: Array<PriKey<S> | LocKey<L1 | L2 | L3 | L4 | L5>> = [];\n\n if (isComKey(key) || isPriKey(key)) {\n // console.log('it is an item key');\n if (isComKey(key)) {\n // console.log('it is a composite key');\n const comKey = key as ComKey<S, L1, L2, L3, L4, L5>;\n keys.push({ pk: comKey.pk, kt: comKey.kt });\n for (let i = 0; i < comKey.loc.length; i++) {\n keys.push(comKey.loc[i]);\n }\n } else {\n keys.push(key as PriKey<S>);\n }\n } else {\n // console.log('is is an array, length: ' + key.length);\n const locKeys = key as LocKey<L1 | L2 | L3 | L4 | L5>[];\n for (let i = 0; i < locKeys.length; i++) {\n // console.log('Pushing a key');\n keys.push(locKeys[i]);\n }\n }\n return keys;\n}\n\n// TODO: Exactly the same as in ContainedItemLib\nexport const constructPriKey = <S extends string>(\n pk: string | number | PriKey<S>,\n kt: S,\n) => {\n logger.trace('constructPriKey', { pk, kt });\n let pri: PriKey<S>;\n if (typeof pk === 'string' || typeof pk === 'number') {\n pri = { kt: kt as S, pk: pk };\n } else {\n pri = pk;\n }\n return pri;\n}\n\n// TODO: Exactly the same as in ContainedItemLib\nexport const cPK = constructPriKey;\n\nexport const toKeyTypeArray = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>):\n string[] => {\n logger.trace('toKeyTypeArray', { ik });\n if (isComKey(ik)) {\n const ck = ik as ComKey<S, L1, L2, L3, L4, L5>;\n return [ck.kt, ...ck.loc.map((l: LocKey<L1 | L2 | L3 | L4 | L5>) => l.kt)];\n } else {\n return [(ik as PriKey<S>).kt];\n }\n}\n\nexport const abbrevIK = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(ik: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): string => {\n logger.trace('abbrevIK', { ik });\n if (ik) {\n if (isComKey(ik)) {\n const ck = ik as ComKey<S, L1, L2, L3, L4, L5>;\n return `${ck.kt}:${ck.pk}:${ck.loc.map((l: LocKey<L1 | L2 | L3 | L4 | L5>) => `${l.kt}:${l.lk}`).join(',')}`;\n } else {\n return `${(ik as PriKey<S>).kt}:${(ik as PriKey<S>).pk}`;\n }\n } else {\n return 'null IK';\n }\n}\n\nexport const abbrevLKA = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(keyArray: Array<LocKey<L1 | L2 | L3 | L4 | L5>> | null): string => {\n logger.trace('abbrevLKA', { keyArray });\n if (keyArray === undefined || keyArray === null) {\n return 'null LKA';\n } else {\n return keyArray.map(key => {\n if (key) {\n return `${key.kt}:${key.lk}`;\n } else {\n return key;\n }\n }).join(',');\n }\n}\n\nexport const primaryType = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(ik: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): string => {\n logger.trace('primaryType', { ik });\n if (isComKey(ik)) {\n return (ik as ComKey<S, L1, L2, L3, L4, L5>).kt;\n } else {\n return (ik as PriKey<S>).kt;\n }\n}\n\n/**\n *\n * @param ik ItemKey to be used as a basis for a location\n * @returns\n */\nexport const itemKeyToLocKeyArray =\n <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n >(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>): LocKeyArray<S, L1, L2, L3, L4> => {\n logger.trace('itemKeyToLocKeyArray', { ik: abbrevIK(ik) });\n let lka: Array<LocKey<L1 | L2 | L3 | L4 | L5>> = [];\n if (isComKey(ik)) {\n const ck = ik as ComKey<S, L1, L2, L3, L4, L5>;\n lka = [{ kt: ck.kt, lk: ck.pk } as unknown as LocKey<L1 | L2 | L3 | L4 | L5>, ...ck.loc];\n } else {\n const pk = ik as PriKey<S>;\n lka = [{ kt: pk.kt, lk: pk.pk } as unknown as LocKey<L1 | L2 | L3 | L4 | L5>];\n }\n logger.trace('itemKeyToLocKeyArray Results', { ik: abbrevIK(ik), lka: abbrevLKA(lka) });\n return lka as LocKeyArray<S, L1, L2, L3, L4>;\n }\n\nexport const ikToLKA = itemKeyToLocKeyArray;\n\n/**\n * Sometimes you need to take a location key array and convert it to the item key that points to the containing item.\n * @param lka A location key array\n * @returns An item key corresponding to the containing item this location refers to.\n */\nexport const locKeyArrayToItemKey =\n <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n >(lka: LocKeyArray<L1, L2, L3, L4, L5>):\n PriKey<L1> | ComKey<L1, L2, L3, L4, L5> => {\n logger.trace('locKeyArrayToItemKey', { lka: abbrevLKA(lka as Array<LocKey<L1 | L2 | L3 | L4 | L5>>) });\n\n if (lka && lka.length === 1) {\n const priKey = cPK(lka[0].lk, lka[0].kt);\n return priKey as PriKey<L1>;\n } else if (lka && lka.length > 1 && lka[0] !== undefined) {\n const locs = lka.slice(1);\n const priKey = cPK(lka[0].lk, lka[0].kt);\n const comKey = { kt: priKey.kt, pk: priKey.pk, loc: locs as unknown as LocKeyArray<L2, L3, L4, L5> };\n return comKey as ComKey<L1, L2, L3, L4, L5>;\n } else {\n throw new Error('locKeyArrayToItemKey: lka is undefined or empty');\n }\n }\n\n// TODO: This is annoying that we have to check for '' and 'null'\nexport const isValidPriKey = <S extends string>(key: PriKey<S>): boolean => {\n const valid = (key !== undefined && key !== null)\n && (key.pk !== undefined && key.pk !== null && key.pk !== '' && key.pk !== 'null')\n && (key.kt !== undefined && key.kt !== null && key.kt !== '' && key.kt !== 'null');\n return valid;\n}\n\n// TODO: This is annoying that we have to check for '' and 'null'\nexport const isValidLocKey = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(key: LocKey<L1 | L2 | L3 | L4 | L5>): boolean => {\n const valid = (key !== undefined && key !== null)\n && (key.lk !== undefined && key.lk !== null && key.lk !== '' && key.lk !== 'null')\n && (key.kt !== undefined && key.kt !== null && key.kt !== '' && key.kt !== 'null');\n return valid;\n}\n\nexport const isValidLocKeyArray = <\n L1 extends string,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(keyArray: Array<LocKey<L1 | L2 | L3 | L4 | L5>>): boolean => {\n return (keyArray !== undefined && keyArray !== null) && keyArray.every(isValidLocKey);\n}\n\nexport const isValidComKey = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(key: ComKey<S, L1, L2, L3, L4, L5>): boolean => {\n return (key !== undefined\n && key !== null) && isValidPriKey(key) && isValidLocKeyArray(key.loc as Array<LocKey<L1 | L2 | L3 | L4 | L5>>);\n}\n\nexport const isValidItemKey = <\n S extends string,\n L1 extends string = never,\n L2 extends string = never,\n L3 extends string = never,\n L4 extends string = never,\n L5 extends string = never\n>(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): boolean => {\n return (isComKey(key) &&\n isValidComKey(key as ComKey<S, L1, L2, L3, L4, L5>)) || (isPriKey(key) && isValidPriKey(key as PriKey<S>));\n}\n\nexport const lkaToIK = locKeyArrayToItemKey;\n"],"names":["logger","LibLogger","get","normalizeKeyValue","value","String","createNormalizedHashFunction","key","normalizedKey","JSON","parse","stringify","pk","undefined","lk","Array","isArray","loc","map","locItem","isPriKeyEqualNormalized","a","b","trace","kt","isLocKeyEqualNormalized","isComKeyEqualNormalized","length","i","isItemKeyEqualNormalized","isComKey","isPriKey","isItemKeyEqual","isComKeyEqual","isPriKeyEqual","isLocKeyEqual","isItemKey","isLocKey","generateKeyArray","keys","comKey","push","locKeys","constructPriKey","pri","cPK","toKeyTypeArray","ik","ck","l","abbrevIK","join","abbrevLKA","keyArray","primaryType","itemKeyToLocKeyArray","lka","ikToLKA","locKeyArrayToItemKey","priKey","locs","slice","Error","isValidPriKey","valid","isValidLocKey","isValidLocKeyArray","every","isValidComKey","isValidItemKey","lkaToIK"],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -6,6 +6,25 @@ const Logging = require('@fjell/logging');
6
6
  const deepmerge = require('deepmerge');
7
7
  const luxon = require('luxon');
8
8
 
9
+ function _interopNamespaceDefault(e) {
10
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
11
+ if (e) {
12
+ for (const k in e) {
13
+ if (k !== 'default') {
14
+ const d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: () => e[k]
18
+ });
19
+ }
20
+ }
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ const luxon__namespace = /*#__PURE__*/_interopNamespaceDefault(luxon);
27
+
9
28
  const LibLogger = Logging.getLogger('@fjell/core');
10
29
 
11
30
  function _define_property$3(obj, key, value) {
@@ -72,6 +91,100 @@ class Dictionary {
72
91
  }
73
92
 
74
93
  const logger$2 = LibLogger.get('KUtils');
94
+ // Normalize a key value to string for consistent comparison and hashing
95
+ const normalizeKeyValue = (value)=>{
96
+ return String(value);
97
+ };
98
+ // Normalized hash function for Dictionary that converts pk/lk values to strings
99
+ const createNormalizedHashFunction = ()=>{
100
+ return (key)=>{
101
+ if (typeof key === 'object' && key !== null) {
102
+ // Create a normalized version of the key with string values
103
+ const normalizedKey = JSON.parse(JSON.stringify(key));
104
+ // Normalize pk values
105
+ if ('pk' in normalizedKey && normalizedKey.pk !== undefined && normalizedKey.pk !== null) {
106
+ normalizedKey.pk = normalizeKeyValue(normalizedKey.pk);
107
+ }
108
+ // Normalize lk values
109
+ if ('lk' in normalizedKey && normalizedKey.lk !== undefined && normalizedKey.lk !== null) {
110
+ normalizedKey.lk = normalizeKeyValue(normalizedKey.lk);
111
+ }
112
+ // Normalize loc array lk values
113
+ if ('loc' in normalizedKey && Array.isArray(normalizedKey.loc)) {
114
+ normalizedKey.loc = normalizedKey.loc.map((locItem)=>{
115
+ if (locItem && 'lk' in locItem && locItem.lk !== undefined && locItem.lk !== null) {
116
+ return {
117
+ ...locItem,
118
+ lk: normalizeKeyValue(locItem.lk)
119
+ };
120
+ }
121
+ return locItem;
122
+ });
123
+ }
124
+ return JSON.stringify(normalizedKey);
125
+ }
126
+ return JSON.stringify(key);
127
+ };
128
+ };
129
+ // Normalized comparison functions
130
+ const isPriKeyEqualNormalized = (a, b)=>{
131
+ logger$2.trace('isPriKeyEqualNormalized', {
132
+ a,
133
+ b
134
+ });
135
+ return a && b && normalizeKeyValue(a.pk) === normalizeKeyValue(b.pk) && a.kt === b.kt;
136
+ };
137
+ const isLocKeyEqualNormalized = (a, b)=>{
138
+ logger$2.trace('isLocKeyEqualNormalized', {
139
+ a,
140
+ b
141
+ });
142
+ return a && b && normalizeKeyValue(a.lk) === normalizeKeyValue(b.lk) && a.kt === b.kt;
143
+ };
144
+ const isComKeyEqualNormalized = (a, b)=>{
145
+ logger$2.trace('isComKeyEqualNormalized', {
146
+ a,
147
+ b
148
+ });
149
+ if (a && b && isPriKeyEqualNormalized({
150
+ kt: a.kt,
151
+ pk: a.pk
152
+ }, {
153
+ kt: b.kt,
154
+ pk: b.pk
155
+ })) {
156
+ if (a.loc.length === b.loc.length) {
157
+ for(let i = 0; i < a.loc.length; i++){
158
+ if (!isLocKeyEqualNormalized(a.loc[i], b.loc[i])) {
159
+ return false;
160
+ }
161
+ }
162
+ return true;
163
+ } else {
164
+ return false;
165
+ }
166
+ } else {
167
+ return false;
168
+ }
169
+ };
170
+ const isItemKeyEqualNormalized = (a, b)=>{
171
+ logger$2.trace('isItemKeyEqualNormalized', {
172
+ a,
173
+ b
174
+ });
175
+ if (isComKey(a) && isComKey(b)) {
176
+ return isComKeyEqualNormalized(a, b);
177
+ } else if (isPriKey(a) && isPriKey(b)) {
178
+ if (isComKey(a) || isComKey(b)) {
179
+ return false;
180
+ } else {
181
+ return isPriKeyEqualNormalized(a, b);
182
+ }
183
+ } else {
184
+ return false;
185
+ }
186
+ };
187
+ // Original comparison functions (kept for backward compatibility)
75
188
  const isItemKeyEqual = (a, b)=>{
76
189
  logger$2.trace('isKeyEqual', {
77
190
  a,
@@ -190,7 +303,7 @@ const constructPriKey = (pk, kt)=>{
190
303
  kt
191
304
  });
192
305
  let pri;
193
- if (typeof pk === 'string') {
306
+ if (typeof pk === 'string' || typeof pk === 'number') {
194
307
  pri = {
195
308
  kt: kt,
196
309
  pk: pk
@@ -650,7 +763,7 @@ const logger$1 = LibLogger.get('IQUtils');
650
763
  // This is a dateTimeReviver used for JSON parse - when we convert a param back to a query, we need this.
651
764
  const dateTimeReviver = function(key, value) {
652
765
  if (typeof value === 'string') {
653
- const parsedDate = luxon.DateTime.fromISO(value);
766
+ const parsedDate = luxon__namespace.DateTime.fromISO(value);
654
767
  if (parsedDate.isValid) {
655
768
  return parsedDate.toJSDate();
656
769
  }
@@ -982,19 +1095,24 @@ exports.abbrevQuery = abbrevQuery;
982
1095
  exports.abbrevRef = abbrevRef;
983
1096
  exports.cPK = cPK;
984
1097
  exports.constructPriKey = constructPriKey;
1098
+ exports.createNormalizedHashFunction = createNormalizedHashFunction;
985
1099
  exports.generateKeyArray = generateKeyArray;
986
1100
  exports.ikToLKA = ikToLKA;
987
1101
  exports.isComItem = isComItem;
988
1102
  exports.isComKey = isComKey;
989
1103
  exports.isComKeyEqual = isComKeyEqual;
1104
+ exports.isComKeyEqualNormalized = isComKeyEqualNormalized;
990
1105
  exports.isCondition = isCondition;
991
1106
  exports.isItemKey = isItemKey;
992
1107
  exports.isItemKeyEqual = isItemKeyEqual;
1108
+ exports.isItemKeyEqualNormalized = isItemKeyEqualNormalized;
993
1109
  exports.isLocKey = isLocKey;
994
1110
  exports.isLocKeyEqual = isLocKeyEqual;
1111
+ exports.isLocKeyEqualNormalized = isLocKeyEqualNormalized;
995
1112
  exports.isPriItem = isPriItem;
996
1113
  exports.isPriKey = isPriKey;
997
1114
  exports.isPriKeyEqual = isPriKeyEqual;
1115
+ exports.isPriKeyEqualNormalized = isPriKeyEqualNormalized;
998
1116
  exports.isQueryMatch = isQueryMatch;
999
1117
  exports.isValidComKey = isValidComKey;
1000
1118
  exports.isValidItemKey = isValidItemKey;