fix: install clean-deep
This commit is contained in:
29
package-lock.json
generated
29
package-lock.json
generated
@@ -21,6 +21,7 @@
|
||||
"@trpc/react-query": "^11.0.0-next-beta.318",
|
||||
"@trpc/server": "^11.0.0-next-beta.318",
|
||||
"class-variance-authority": "^0.7.0",
|
||||
"clean-deep": "^3.4.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"deepmerge": "^4.3.1",
|
||||
"graphql": "^16.8.1",
|
||||
@@ -3494,6 +3495,19 @@
|
||||
"url": "https://joebell.co.uk"
|
||||
}
|
||||
},
|
||||
"node_modules/clean-deep": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/clean-deep/-/clean-deep-3.4.0.tgz",
|
||||
"integrity": "sha512-Lo78NV5ItJL/jl+B5w0BycAisaieJGXK1qYi/9m4SjR8zbqmrUtO7Yhro40wEShGmmxs/aJLI/A+jNhdkXK8mw==",
|
||||
"dependencies": {
|
||||
"lodash.isempty": "^4.4.0",
|
||||
"lodash.isplainobject": "^4.0.6",
|
||||
"lodash.transform": "^4.6.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/clean-stack": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
|
||||
@@ -7503,6 +7517,16 @@
|
||||
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.isempty": {
|
||||
"version": "4.4.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz",
|
||||
"integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg=="
|
||||
},
|
||||
"node_modules/lodash.isplainobject": {
|
||||
"version": "4.0.6",
|
||||
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
|
||||
},
|
||||
"node_modules/lodash.merge": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||
@@ -7521,6 +7545,11 @@
|
||||
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.transform": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
|
||||
"integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ=="
|
||||
},
|
||||
"node_modules/log-symbols": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
"@trpc/react-query": "^11.0.0-next-beta.318",
|
||||
"@trpc/server": "^11.0.0-next-beta.318",
|
||||
"class-variance-authority": "^0.7.0",
|
||||
"clean-deep": "^3.4.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"deepmerge": "^4.3.1",
|
||||
"graphql": "^16.8.1",
|
||||
@@ -73,4 +74,4 @@
|
||||
"engines": {
|
||||
"node": "18"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,13 +6,13 @@ import { request } from "@/lib/graphql/request"
|
||||
import { badRequestError, internalServerError } from "@/server/errors/trpc"
|
||||
import { publicProcedure, router } from "@/server/trpc"
|
||||
|
||||
import { removeEmptyObjects } from "@/utils/contentType"
|
||||
import {
|
||||
generateRefsResponseTag,
|
||||
generateTag,
|
||||
generateTags,
|
||||
} from "@/utils/generateTag"
|
||||
|
||||
import { removeEmptyObjects } from "../../utils"
|
||||
import { getAccountPageInput } from "./input"
|
||||
import {
|
||||
type AccountPage,
|
||||
@@ -51,6 +51,9 @@ export const accountPageQueryRouter = router({
|
||||
throw internalServerError()
|
||||
}
|
||||
|
||||
// Remove empty objects from a fetched content type. Needed since
|
||||
// Contentstack returns empty objects for all non queried blocks in modular blocks.
|
||||
// This is an ongoing support case in Contentstack, ticker number #00031579
|
||||
const cleanedData = removeEmptyObjects(refsResponse.data)
|
||||
|
||||
const validatedAccountPageRefs =
|
||||
@@ -71,7 +74,7 @@ export const accountPageQueryRouter = router({
|
||||
validatedAccountPageRefs.data.all_account_page.items[0].system.uid
|
||||
)
|
||||
)
|
||||
const response = await request<AccountPage>(
|
||||
const response = await request<AccountPageRefsDataRaw>(
|
||||
GetAccountPage,
|
||||
{
|
||||
locale: lang,
|
||||
|
||||
@@ -7,13 +7,13 @@ import { _ } from "@/lib/translation"
|
||||
import { badRequestError, internalServerError } from "@/server/errors/trpc"
|
||||
import { publicProcedure, router } from "@/server/trpc"
|
||||
|
||||
import { removeEmptyObjects } from "@/utils/contentType"
|
||||
import {
|
||||
generateRefsResponseTag,
|
||||
generateTag,
|
||||
generateTags,
|
||||
} from "@/utils/generateTag"
|
||||
|
||||
import { removeEmptyObjects } from "../../utils"
|
||||
import { getLoyaltyPageInput } from "./input"
|
||||
import {
|
||||
type LoyaltyPage,
|
||||
@@ -56,6 +56,9 @@ export const loyaltyPageQueryRouter = router({
|
||||
throw internalServerError()
|
||||
}
|
||||
|
||||
// Remove empty objects from a fetched content type. Needed since
|
||||
// Contentstack returns empty objects for all non queried blocks in modular blocks.
|
||||
// This is an ongoing support case in Contentstack, ticker number #00031579
|
||||
const cleanedData = removeEmptyObjects(refsResponse.data)
|
||||
|
||||
const validatedLoyaltyPageRefs =
|
||||
|
||||
15
server/routers/utils/index.ts
Normal file
15
server/routers/utils/index.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import cleaner from "clean-deep"
|
||||
|
||||
/**
|
||||
* Function to remove empty objects from a fetched content type.
|
||||
* Used since Contentstack returns empty objects for all non
|
||||
* queried in modular blocks.
|
||||
*/
|
||||
export function removeEmptyObjects<T>(obj: T) {
|
||||
return cleaner(obj, {
|
||||
emptyArrays: false,
|
||||
emptyStrings: false,
|
||||
nullValues: false,
|
||||
undefinedValues: false,
|
||||
})
|
||||
}
|
||||
@@ -53,26 +53,3 @@ export async function getContentTypeByPathName(
|
||||
return PageTypeEnum.CurrentBlocksPage
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Function to remove empty objects from a fetched content type.
|
||||
* Used since Contentstack returns empty objects for all non
|
||||
* queried in modular blocks.
|
||||
*/
|
||||
export function removeEmptyObjects<T>(obj: T): T {
|
||||
const copy = obj as any
|
||||
|
||||
for (let key in copy) {
|
||||
if (typeof copy[key] === "object" && copy[key] !== null) {
|
||||
copy[key] = removeEmptyObjects(copy[key])
|
||||
if (Object.keys(copy[key]).length === 0 && !Array.isArray(copy[key])) {
|
||||
delete copy[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Array.isArray(copy)) {
|
||||
return copy.filter((item) => item != null).map(removeEmptyObjects) as T
|
||||
}
|
||||
|
||||
return copy as T
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user