@ibgib/ts-gib 0.5.21 → 0.5.23

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/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## 0.5.22/23
2
+ * Tweaked `toNormalizedForHashing` to normalize arrays slightly differently.
3
+ * Instead of returning the raw array, the fn now maps each member to its
4
+ normalized version. This way objects _inside_ those arrays are normalized,
5
+ as would be expected, but the actual order of the array itself is preserved.
6
+
7
+
8
+ ## 0.5.21
9
+ * correcting bare imports in all libs/apps
10
+ * updated helper-gib, ts-gib and encrypt-gib.
11
+
1
12
  ## 0.5.6
2
13
  * impl: added `validateRel8nsIntrinsically` and respecs
3
14
  * i decided not to change `validateIbGibIntrinsically` to also call this.
@@ -1 +1 @@
1
- {"version":3,"file":"sha256v1.d.mts","sourceRoot":"","sources":["../../src/V1/sha256v1.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAMrE;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAyGhF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA8I5E;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B"}
1
+ {"version":3,"file":"sha256v1.d.mts","sourceRoot":"","sources":["../../src/V1/sha256v1.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAMrE;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAyGhF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoL5E;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B"}
@@ -160,38 +160,69 @@ export function sha256v1(ibGib, salt = "") {
160
160
  return hashAsArray.map(b => b.toString(16).padStart(2, '0')).join('');
161
161
  };
162
162
  /**
163
- * normalizes via sorting keys and removing values that are undefined.
164
- * values that are null or empty strings are not removed.
163
+ * THIS IS DUPLICATED CODE IN THE RESPEC FILE. ANY CHANGES HERE MUST
164
+ * MANUALLY BE CHANGED IN THE RESPEC FILE!!!
165
165
  *
166
- * this is DUPLICATED code in the respec file. any changes here must
167
- * manually be changed in the respec file!!!
166
+ * Normalizes an object/value for consistent hashing.
167
+ * - Recursively processes objects and arrays.
168
+ * - For objects:
169
+ * - Sorts keys alphabetically.
170
+ * - Removes properties whose values are `undefined`.
171
+ * - Keeps properties whose values are `null`.
172
+ * - For arrays:
173
+ * - Preserves element order.
174
+ * - Recursively normalizes each element.
175
+ * - Primitives (strings, numbers, booleans) and `null` are returned as is.
168
176
  *
169
- * @param obj to normalize (is not changed, e.g. keys aren't sorted in place)
177
+ * THIS IS DUPLICATED CODE IN THE RESPEC FILE. ANY CHANGES HERE MUST
178
+ * MANUALLY BE CHANGED IN THE RESPEC FILE!!!
179
+ *
180
+ * @param value The value to normalize.
181
+ * @returns The normalized value.
170
182
  */
171
- const toNormalizedForHashing = (obj) => {
172
- if (!obj) {
173
- return obj; /* <<<< returns early */
174
- }
175
- else if (typeof obj === 'string' || Array.isArray(obj)) {
176
- return obj.concat(); /* <<<< returns early */
183
+ const toNormalizedForHashing = (value) => {
184
+ // Handle null, primitives (string, number, boolean) directly.
185
+ // `undefined` at the top level will be handled by the caller or become part of an object/array.
186
+ if (value === null || typeof value !== 'object') {
187
+ return value;
177
188
  }
178
- else if (typeof obj !== 'object') {
179
- // Return non-objects as is, we don't know how to concat/copy it...hmm...
180
- return obj; /* <<<< returns early */
189
+ // Handle Arrays: recursively normalize elements, preserve order
190
+ if (Array.isArray(value)) {
191
+ return value.map(element => toNormalizedForHashing(element));
181
192
  }
182
- // we have an object. we will create a new object and populate it.
183
- const normalized = {};
184
- // sort keys alphabetically
185
- // NOTE: this does NOT mutate obj as Object.keys produces a new array
186
- const keys = Object.keys(obj).sort();
187
- for (const key of keys) {
188
- const value = obj[key];
189
- if (value !== undefined) {
190
- // Recursively normalize if the value is an object
191
- normalized[key] = (typeof value === 'object' && value !== null) ? toNormalizedForHashing(value) : value;
193
+ // Handle Objects (plain objects)
194
+ const normalizedObject = {};
195
+ const sortedKeys = Object.keys(value).sort();
196
+ for (const key of sortedKeys) {
197
+ const propertyValue = value[key];
198
+ if (propertyValue !== undefined) { // CRITICAL: Only omit if value is undefined
199
+ normalizedObject[key] = toNormalizedForHashing(propertyValue);
192
200
  }
201
+ // If propertyValue is undefined, it's omitted from normalizedObject.
202
+ // If propertyValue is null, it's included.
193
203
  }
194
- return normalized;
204
+ return normalizedObject;
205
+ // if (!obj) {
206
+ // return obj; /* <<<< returns early */
207
+ // } else if (typeof obj === 'string' || Array.isArray(obj)) {
208
+ // return obj.concat(); /* <<<< returns early */
209
+ // } else if (typeof obj !== 'object') {
210
+ // // Return non-objects as is, we don't know how to concat/copy it...hmm...
211
+ // return obj; /* <<<< returns early */
212
+ // }
213
+ // // we have an object. we will create a new object and populate it.
214
+ // const normalized = {};
215
+ // // sort keys alphabetically
216
+ // // NOTE: this does NOT mutate obj as Object.keys produces a new array
217
+ // const keys = Object.keys(obj).sort();
218
+ // for (const key of keys) {
219
+ // const value = obj[key];
220
+ // if (value !== undefined) {
221
+ // // Recursively normalize if the value is an object
222
+ // normalized[key] = (typeof value === 'object' && value !== null) ? toNormalizedForHashing(value) : value;
223
+ // }
224
+ // }
225
+ // return normalized;
195
226
  };
196
227
  let hashFields;
197
228
  if (salt) {
@@ -276,7 +307,7 @@ export function sha256v1(ibGib, salt = "") {
276
307
  return allHash;
277
308
  };
278
309
  }
279
- return hashFields(ibGib.ib, ibGib?.data, ibGib?.rel8ns);
310
+ return hashFields(ibGib.ib, ibGib?.data, ibGib?.rel8ns); // conditional nav ibGib?.data and ibGib?.rel8ns
280
311
  }
281
312
  /**
282
313
  * I have one large-ish sha256 function for gibbing purposes
@@ -1 +1 @@
1
- {"version":3,"file":"sha256v1.mjs","sourceRoot":"","sources":["../../src/V1/sha256v1.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sha256v1.mjs","sourceRoot":"","sources":["../../src/V1/sha256v1.mts"],"names":[],"mappings":"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"}
package/dist/helper.d.mts CHANGED
@@ -21,13 +21,24 @@ export declare function getIbAndGib({ ibGib, ibGibAddr, delimiter }: {
21
21
  delimiter?: string;
22
22
  }): IbAndGib;
23
23
  /**
24
- * normalizes via sorting keys and removing values that are undefined.
25
- * values that are null or empty strings are not removed.
24
+ * Normalizes an object/value for consistent hashing.
25
+ * - Recursively processes objects and arrays.
26
+ * - For objects:
27
+ * - Sorts keys alphabetically.
28
+ * - Removes properties whose values are `undefined`.
29
+ * - Keeps properties whose values are `null`.
30
+ * - For arrays:
31
+ * - Preserves element order.
32
+ * - Recursively normalizes each element.
33
+ * - Primitives (strings, numbers, booleans) and `null` are returned as is.
26
34
  *
27
- * this is DUPLICATED code in the respec file. any changes here must
28
- * manually be changed in the respec file!!!
35
+ * @param value The value to normalize.
36
+ * @returns The normalized value.
29
37
  *
30
- * @param obj to normalize (is not changed, e.g. keys aren't sorted in place)
38
+ * This has been adjusted due to conversation with Gemini and working on python
39
+ * port. The main thing here is that we normalize array members, but not the
40
+ * array itself. This way the array's order is preserved, but any object members
41
+ * are themselves normalized.
31
42
  */
32
- export declare function toNormalizedForHashing(obj: any): any;
43
+ export declare function toNormalizedForHashing(value: any): any;
33
44
  //# sourceMappingURL=helper.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.mts","sourceRoot":"","sources":["../src/helper.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGlE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EACzB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAe,EAClC,EAAE;IACC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,SAAS,CAIZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,SAAS,EACT,SAAe,EAClB,EAAE;IACC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,QAAQ,CAyCX;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAyBpD"}
1
+ {"version":3,"file":"helper.d.mts","sourceRoot":"","sources":["../src/helper.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGlE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EACzB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAe,EAClC,EAAE;IACC,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,SAAS,CAIZ;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,SAAS,EACT,SAAe,EAClB,EAAE;IACC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG,QAAQ,CAyCX;AAGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAyBtD"}
package/dist/helper.mjs CHANGED
@@ -63,37 +63,46 @@ export function getIbAndGib({ ibGib, ibGibAddr, delimiter = '^' }) {
63
63
  }
64
64
  }
65
65
  /**
66
- * normalizes via sorting keys and removing values that are undefined.
67
- * values that are null or empty strings are not removed.
66
+ * Normalizes an object/value for consistent hashing.
67
+ * - Recursively processes objects and arrays.
68
+ * - For objects:
69
+ * - Sorts keys alphabetically.
70
+ * - Removes properties whose values are `undefined`.
71
+ * - Keeps properties whose values are `null`.
72
+ * - For arrays:
73
+ * - Preserves element order.
74
+ * - Recursively normalizes each element.
75
+ * - Primitives (strings, numbers, booleans) and `null` are returned as is.
68
76
  *
69
- * this is DUPLICATED code in the respec file. any changes here must
70
- * manually be changed in the respec file!!!
77
+ * @param value The value to normalize.
78
+ * @returns The normalized value.
71
79
  *
72
- * @param obj to normalize (is not changed, e.g. keys aren't sorted in place)
80
+ * This has been adjusted due to conversation with Gemini and working on python
81
+ * port. The main thing here is that we normalize array members, but not the
82
+ * array itself. This way the array's order is preserved, but any object members
83
+ * are themselves normalized.
73
84
  */
74
- export function toNormalizedForHashing(obj) {
75
- if (!obj) {
76
- return obj; /* <<<< returns early */
85
+ export function toNormalizedForHashing(value) {
86
+ // Handle null, primitives (string, number, boolean) directly.
87
+ // `undefined` at the top level will be handled by the caller or become part of an object/array.
88
+ if (value === null || typeof value !== 'object') {
89
+ return value;
77
90
  }
78
- else if (typeof obj === 'string' || Array.isArray(obj)) {
79
- return obj.concat(); /* <<<< returns early */
91
+ // Handle Arrays: recursively normalize elements, preserve order
92
+ if (Array.isArray(value)) {
93
+ return value.map(element => toNormalizedForHashing(element));
80
94
  }
81
- else if (typeof obj !== 'object') {
82
- // Return non-objects as is, we don't know how to concat/copy it...hmm...
83
- return obj; /* <<<< returns early */
84
- }
85
- // we have an object. we will create a new object and populate it.
86
- const normalized = {};
87
- // sort keys alphabetically
88
- // NOTE: this does NOT mutate obj as Object.keys produces a new array
89
- const keys = Object.keys(obj).sort();
90
- for (const key of keys) {
91
- const value = obj[key];
92
- if (value !== undefined) {
93
- // Recursively normalize if the value is an object
94
- normalized[key] = (typeof value === 'object' && value !== null) ? toNormalizedForHashing(value) : value;
95
+ // Handle Objects (plain objects)
96
+ const normalizedObject = {};
97
+ const sortedKeys = Object.keys(value).sort();
98
+ for (const key of sortedKeys) {
99
+ const propertyValue = value[key];
100
+ if (propertyValue !== undefined) { // CRITICAL: Only omit if value is undefined
101
+ normalizedObject[key] = toNormalizedForHashing(propertyValue);
95
102
  }
103
+ // If propertyValue is undefined, it's omitted from normalizedObject.
104
+ // If propertyValue is null, it's included.
96
105
  }
97
- return normalized;
106
+ return normalizedObject;
98
107
  }
99
108
  //# sourceMappingURL=helper.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"helper.mjs","sourceRoot":"","sources":["../src/helper.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helper.mjs","sourceRoot":"","sources":["../src/helper.mts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,EACzB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,EAMlC;IACG,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3B,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9B,OAAO,EAAE,GAAG,SAAS,GAAG,GAAG,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EACxB,KAAK,EACL,SAAS,EACT,SAAS,GAAG,GAAG,EAKlB;IACG,MAAM,EAAE,GAAG,eAAe,CAAC;IAC3B,IAAI,CAAC,SAAS,EAAE;QACZ,IAAI,KAAK,EAAE;YACP,SAAS,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SACvC;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,+CAA+C,CAAC,CAAC;SACzE;KACJ;IACD,IAAI,CAAC,SAAS,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,yCAAyC,CAAC,CAAC;KAAE;IAEpF,IAAI,CAAC,SAAS,EAAE;QAAE,SAAS,GAAG,GAAG,CAAC;KAAE;IAEpC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,qDAAqD;QACrD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC7D,4CAA4C;QAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;KACrC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC/D,qDAAqD;QACrD,wDAAwD;QACxD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;QACpE,8CAA8C;QAC9C,2CAA2C;QAC3C,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAClC,qCAAqC;QACrC,oEAAoE;QACpE,4CAA4C;KAC/C;SAAM;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,oGAAoG,CAAC,CAAC;QACxH,uBAAuB;QACvB,kBAAkB;QAClB,aAAa;QACb,OAAO;YACH,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACtD,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1C,CAAA;KACJ;AACL,CAAC;AAGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAU;IAC7C,8DAA8D;IAC9D,gGAAgG;IAChG,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7C,OAAO,KAAK,CAAC;KAChB;IAED,gEAAgE;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;KAChE;IAED,iCAAiC;IACjC,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;QAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,aAAa,KAAK,SAAS,EAAE,EAAE,4CAA4C;YAC3E,gBAAgB,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;SACjE;QACD,qEAAqE;QACrE,2CAA2C;KAC9C;IACD,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibgib/ts-gib",
3
- "version": "0.5.21",
3
+ "version": "0.5.23",
4
4
  "description": "ibgib library with low-level graphing-related substrate functionality, e.g. creating raw ibgibs and transformations. node19+ needed for heavily-used webcrypto hashing isomorphically consumed in node and browsers (apps).",
5
5
  "repository": {
6
6
  "url": "https://gitlab.com/ibgib/ts-gib",
@@ -151,41 +151,79 @@ export function sha256v1(ibGib: IbGib_V1, salt: string = ""): Promise<string> {
151
151
  };
152
152
 
153
153
  /**
154
- * normalizes via sorting keys and removing values that are undefined.
155
- * values that are null or empty strings are not removed.
154
+ * THIS IS DUPLICATED CODE IN THE RESPEC FILE. ANY CHANGES HERE MUST
155
+ * MANUALLY BE CHANGED IN THE RESPEC FILE!!!
156
156
  *
157
- * this is DUPLICATED code in the respec file. any changes here must
158
- * manually be changed in the respec file!!!
157
+ * Normalizes an object/value for consistent hashing.
158
+ * - Recursively processes objects and arrays.
159
+ * - For objects:
160
+ * - Sorts keys alphabetically.
161
+ * - Removes properties whose values are `undefined`.
162
+ * - Keeps properties whose values are `null`.
163
+ * - For arrays:
164
+ * - Preserves element order.
165
+ * - Recursively normalizes each element.
166
+ * - Primitives (strings, numbers, booleans) and `null` are returned as is.
159
167
  *
160
- * @param obj to normalize (is not changed, e.g. keys aren't sorted in place)
168
+ * THIS IS DUPLICATED CODE IN THE RESPEC FILE. ANY CHANGES HERE MUST
169
+ * MANUALLY BE CHANGED IN THE RESPEC FILE!!!
170
+ *
171
+ * @param value The value to normalize.
172
+ * @returns The normalized value.
161
173
  */
162
- const toNormalizedForHashing = (obj: any) => {
163
- if (!obj) {
164
- return obj; /* <<<< returns early */
165
- } else if (typeof obj === 'string' || Array.isArray(obj)) {
166
- return obj.concat(); /* <<<< returns early */
167
- } else if (typeof obj !== 'object') {
168
- // Return non-objects as is, we don't know how to concat/copy it...hmm...
169
- return obj; /* <<<< returns early */
174
+ const toNormalizedForHashing = (value: any) => {
175
+ // Handle null, primitives (string, number, boolean) directly.
176
+ // `undefined` at the top level will be handled by the caller or become part of an object/array.
177
+ if (value === null || typeof value !== 'object') {
178
+ return value;
170
179
  }
171
180
 
172
- // we have an object. we will create a new object and populate it.
173
- const normalized = {};
181
+ // Handle Arrays: recursively normalize elements, preserve order
182
+ if (Array.isArray(value)) {
183
+ return value.map(element => toNormalizedForHashing(element));
184
+ }
174
185
 
175
- // sort keys alphabetically
176
- // NOTE: this does NOT mutate obj as Object.keys produces a new array
177
- const keys = Object.keys(obj).sort();
186
+ // Handle Objects (plain objects)
187
+ const normalizedObject: { [key: string]: any } = {};
188
+ const sortedKeys = Object.keys(value).sort();
178
189
 
179
- for (const key of keys) {
180
- const value = obj[key];
181
- if (value !== undefined) {
182
- // Recursively normalize if the value is an object
183
- normalized[key] = (typeof value === 'object' && value !== null) ? toNormalizedForHashing(value) : value;
190
+ for (const key of sortedKeys) {
191
+ const propertyValue = value[key];
192
+ if (propertyValue !== undefined) { // CRITICAL: Only omit if value is undefined
193
+ normalizedObject[key] = toNormalizedForHashing(propertyValue);
184
194
  }
195
+ // If propertyValue is undefined, it's omitted from normalizedObject.
196
+ // If propertyValue is null, it's included.
185
197
  }
186
- return normalized;
198
+ return normalizedObject;
199
+
200
+ // if (!obj) {
201
+ // return obj; /* <<<< returns early */
202
+ // } else if (typeof obj === 'string' || Array.isArray(obj)) {
203
+ // return obj.concat(); /* <<<< returns early */
204
+ // } else if (typeof obj !== 'object') {
205
+ // // Return non-objects as is, we don't know how to concat/copy it...hmm...
206
+ // return obj; /* <<<< returns early */
207
+ // }
208
+
209
+ // // we have an object. we will create a new object and populate it.
210
+ // const normalized = {};
211
+
212
+ // // sort keys alphabetically
213
+ // // NOTE: this does NOT mutate obj as Object.keys produces a new array
214
+ // const keys = Object.keys(obj).sort();
215
+
216
+ // for (const key of keys) {
217
+ // const value = obj[key];
218
+ // if (value !== undefined) {
219
+ // // Recursively normalize if the value is an object
220
+ // normalized[key] = (typeof value === 'object' && value !== null) ? toNormalizedForHashing(value) : value;
221
+ // }
222
+ // }
223
+ // return normalized;
187
224
  }
188
225
 
226
+
189
227
  let hashFields;
190
228
  if (salt) {
191
229
  hashFields = async (ib: Ib, data: IbGibData_V1 | undefined, rel8ns: IbGibRel8ns_V1 | undefined) => {
@@ -264,7 +302,7 @@ export function sha256v1(ibGib: IbGib_V1, salt: string = ""): Promise<string> {
264
302
  return allHash;
265
303
  }
266
304
  }
267
- return hashFields(ibGib.ib, ibGib?.data, ibGib?.rel8ns);
305
+ return hashFields(ibGib.ib, ibGib?.data, ibGib?.rel8ns); // conditional nav ibGib?.data and ibGib?.rel8ns
268
306
  }
269
307
 
270
308
  /**