30 lines
868 B
TypeScript
30 lines
868 B
TypeScript
export function getPlacementMetadataRecord(metadata: unknown): Record<string, unknown> {
|
|
if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata)) {
|
|
return {}
|
|
}
|
|
|
|
return metadata as Record<string, unknown>
|
|
}
|
|
|
|
export function addFreshPlacementMetadata(metadata: unknown): Record<string, unknown> {
|
|
return {
|
|
...getPlacementMetadataRecord(metadata),
|
|
isNew: true,
|
|
}
|
|
}
|
|
|
|
export function isFreshPlacementMetadata(metadata: unknown): boolean {
|
|
return getPlacementMetadataRecord(metadata).isNew === true
|
|
}
|
|
|
|
export function stripPlacementMetadataFlags(metadata: unknown): unknown {
|
|
if (typeof metadata !== 'object' || metadata === null || Array.isArray(metadata)) {
|
|
return metadata
|
|
}
|
|
|
|
const nextMeta = { ...(metadata as Record<string, unknown>) }
|
|
delete nextMeta.isNew
|
|
delete nextMeta.isTransient
|
|
return nextMeta
|
|
}
|