api-client/packages/hoppscotch-js-sandbox/src/constants/sandbox-markers.ts
2025-10-27 17:49:58 +05:30

31 lines
1.1 KiB
TypeScript

/**
* Special marker constants for preserving undefined and null values
* across the sandbox boundary during serialization.
*
* These markers are used because:
* - JSON.stringify converts undefined to null or omits the property
* - We need to distinguish between actual null and serialized undefined
* - The sandbox boundary requires serialization, losing type information
*/
export const UNDEFINED_MARKER = "__HOPPSCOTCH_UNDEFINED__" as const
export const NULL_MARKER = "__HOPPSCOTCH_NULL__" as const
export type SandboxMarker = typeof UNDEFINED_MARKER | typeof NULL_MARKER
/**
* Converts marker strings back to their original values
*/
export const convertMarkerToValue = (value: unknown): unknown => {
if (value === UNDEFINED_MARKER) return undefined
if (value === NULL_MARKER) return null
return value
}
/**
* Converts null/undefined values to marker strings for serialization
*/
export const convertValueToMarker = (value: unknown): unknown => {
if (value === undefined) return UNDEFINED_MARKER
if (value === null) return NULL_MARKER
return value
}