@xyo-network/hash 2.74.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/LICENSE +840 -0
- package/README.md +15 -0
- package/dist/PayloadHasher.d.mts +20 -0
- package/dist/PayloadHasher.d.mts.map +1 -0
- package/dist/PayloadHasher.d.ts +20 -0
- package/dist/PayloadHasher.d.ts.map +1 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +162 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +120 -0
- package/dist/index.mjs.map +1 -0
- package/dist/model.d.mts +2 -0
- package/dist/model.d.mts.map +1 -0
- package/dist/model.d.ts +2 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/removeEmptyFields.d.mts +2 -0
- package/dist/removeEmptyFields.d.mts.map +1 -0
- package/dist/removeEmptyFields.d.ts +2 -0
- package/dist/removeEmptyFields.d.ts.map +1 -0
- package/dist/removeFields.d.mts +7 -0
- package/dist/removeFields.d.mts.map +1 -0
- package/dist/removeFields.d.ts +7 -0
- package/dist/removeFields.d.ts.map +1 -0
- package/dist/sortFields.d.mts +3 -0
- package/dist/sortFields.d.mts.map +1 -0
- package/dist/sortFields.d.ts +3 -0
- package/dist/sortFields.d.ts.map +1 -0
- package/package.json +67 -0
- package/src/PayloadHasher.ts +77 -0
- package/src/index.ts +4 -0
- package/src/model.ts +1 -0
- package/src/removeEmptyFields.ts +15 -0
- package/src/removeFields.ts +31 -0
- package/src/sortFields.ts +18 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { typeOf } from '@xyo-network/typeof'
|
|
2
|
+
|
|
3
|
+
export const removeEmptyFields = <T extends Record<string, unknown>>(obj: T) => {
|
|
4
|
+
if (obj === null || Array.isArray(obj)) return obj
|
|
5
|
+
|
|
6
|
+
const newObject: Record<string, unknown> = {}
|
|
7
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
8
|
+
if (typeOf(value) === 'object') {
|
|
9
|
+
newObject[key] = removeEmptyFields(value as Record<string, unknown>)
|
|
10
|
+
} else if (value !== undefined) {
|
|
11
|
+
newObject[key] = value
|
|
12
|
+
}
|
|
13
|
+
})
|
|
14
|
+
return newObject as T
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isObject, mapValues, merge, omitBy, pickBy } from '@xylabs/lodash'
|
|
2
|
+
import { AnyObject } from '@xyo-network/object'
|
|
3
|
+
// eslint-disable-next-line no-restricted-imports
|
|
4
|
+
import type { ValueKeyIteratee } from 'lodash'
|
|
5
|
+
|
|
6
|
+
export const deepBy = <T extends AnyObject>(obj: T, predicate: ValueKeyIteratee<T>, func: typeof omitBy | typeof pickBy): T => {
|
|
7
|
+
if (Array.isArray(obj)) {
|
|
8
|
+
return obj
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//pick the child objects
|
|
12
|
+
const onlyObjects = pickBy<T>(obj, isObject)
|
|
13
|
+
|
|
14
|
+
//pick the child non-objects
|
|
15
|
+
const nonObjects = pickBy<T>(obj, (value) => !isObject(value))
|
|
16
|
+
|
|
17
|
+
const pickedObjects = omitBy(onlyObjects, predicate)
|
|
18
|
+
const pickedNonObjects = omitBy(nonObjects, predicate)
|
|
19
|
+
|
|
20
|
+
const processedObjects = mapValues(pickedObjects, (obj: T) => deepBy(obj, predicate, func))
|
|
21
|
+
|
|
22
|
+
return merge({}, pickedNonObjects, processedObjects) as T
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const deepOmitUnderscoreFields = <T extends AnyObject>(obj: T) => {
|
|
26
|
+
return deepBy(obj, (_, key) => key.startsWith('_'), omitBy)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export const deepPickUnderscoreFields = <T extends AnyObject>(obj: T) => {
|
|
30
|
+
return deepBy(obj, (_, key) => key.startsWith('_'), pickBy)
|
|
31
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AnyObject, isObject, StringKeyObject } from '@xyo-network/object'
|
|
2
|
+
|
|
3
|
+
//if an object, sub-sort
|
|
4
|
+
const subSort = (value: unknown) => {
|
|
5
|
+
return isObject(value) ? sortFields(value) : value
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const sortFields = <T extends AnyObject = AnyObject>(obj: T) => {
|
|
9
|
+
const stringyObj = obj as StringKeyObject
|
|
10
|
+
|
|
11
|
+
const result: StringKeyObject = {}
|
|
12
|
+
Object.keys(obj)
|
|
13
|
+
.sort()
|
|
14
|
+
.forEach((key) => {
|
|
15
|
+
result[key] = subSort(stringyObj[key])
|
|
16
|
+
})
|
|
17
|
+
return result as T
|
|
18
|
+
}
|