♻️ (builder) Remove barrel export and flatten folder arch
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
export const getDeepKeys = (obj: any): string[] => {
|
||||
let keys: string[] = []
|
||||
for (const key in obj) {
|
||||
if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) {
|
||||
const subkeys = getDeepKeys(obj[key])
|
||||
keys = keys.concat(
|
||||
subkeys.map(function (subkey) {
|
||||
return key + parseKey(subkey)
|
||||
})
|
||||
)
|
||||
} else if (Array.isArray(obj[key])) {
|
||||
if (obj[key].length === 0) continue
|
||||
|
||||
const subkeys = getDeepKeys(obj[key][0])
|
||||
if (obj[key].length > 1) {
|
||||
keys = keys.concat(
|
||||
subkeys.map(function (subkey) {
|
||||
return `${key}.flatMap(item => item${parseKey(subkey)})`
|
||||
})
|
||||
)
|
||||
}
|
||||
keys = keys.concat(
|
||||
subkeys.map(function (subkey, idx) {
|
||||
return `${key}[${idx}]${parseKey(subkey)}`
|
||||
})
|
||||
)
|
||||
} else {
|
||||
keys.push(key)
|
||||
}
|
||||
}
|
||||
return keys
|
||||
}
|
||||
|
||||
const parseKey = (key: string) => {
|
||||
if (
|
||||
key.includes(' ') &&
|
||||
!key.includes('.flatMap(item => item') &&
|
||||
!key.includes("['") &&
|
||||
!key.includes("']")
|
||||
) {
|
||||
return `['${key}']`
|
||||
}
|
||||
return `.${key}`
|
||||
}
|
||||
Reference in New Issue
Block a user