fix: install clean-deep

This commit is contained in:
Christel Westerberg
2024-05-15 13:20:43 +02:00
parent 863d99ad44
commit cd33e17775
6 changed files with 55 additions and 27 deletions

29
package-lock.json generated
View File

@@ -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",

View File

@@ -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"
}
}
}

View File

@@ -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,

View File

@@ -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 =

View 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,
})
}

View File

@@ -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
}