export function deserializeData()

in packages/graph-explorer/src/core/StateProvider/serializeData.ts [59:89]


export function deserializeData(data: unknown): unknown {
  if (data && typeof data === "object" && "__type" in data && "value" in data) {
    // Deserialize custom type wrappers
    if (data.__type === "Date" && typeof data.value === "string") {
      // Deserialize inner date value to Date
      return new Date(data.value);
    } else if (data.__type === "Map" && Array.isArray(data.value)) {
      // Deserialize inner array values to Map entries
      return new Map(
        data.value.map(([key, value]: [string, any]) => [
          key,
          deserializeData(value),
        ])
      );
    } else if (data.__type === "Set" && Array.isArray(data.value)) {
      // Deserialize inner array values to Set entries
      return new Set(data.value.map(value => deserializeData(value)));
    }
  } else if (Array.isArray(data)) {
    // Recursively deserialize array
    return data.map(deserializeData);
  } else if (typeof data === "object" && data !== null) {
    // Recursively deserialize object values
    return Object.fromEntries(
      Object.entries(data).map(([key, value]) => [key, deserializeData(value)])
    );
  } else {
    // Literal type deserializes fine on its own
    return data;
  }
}