# Astro Resume Utilities for serializing data from server for use in the client. 1. `Serialize` - Astro component that takes `id` and `data` 1. `deserialize(id: string)` - a function for use in the client that takes an `id` string and returns the `data` object ## Installation & Examples ### Install via npm On your [Astro](https://astro.build) project: ``` npm i @ayco/astro-resume ``` ### Usage Serializing and deserializing basic primitive data ```astro --- import Serialize from "@ayco/astro-resume"; const data = { hello: 'world', } --- ``` ### Type Safety You can define a type for the data and use it in the client script. ```astro --- import Serialize from "@ayco/astro-resume"; const data = { hello: 'world', isOkay: true } // define the type of data to be serialized export type Data = typeof data; --- ``` ### Passing all Astro.props to client If you need to make all the component props to the client script: ```astro --- import Serialize from "@ayco/astro-resume"; export interface Props { hello: string; isOkay: boolean; } --- ``` ### Using a custom serializer and parser If you want to opt for more complex data, you can bring your custom serializer/parser. Here's an example of serializing data that `JSON.stringify` cannot (e.g., Date or BigInt) using Rich Harris' [`devalue`](https://github.com/Rich-Harris/devalue): ```astro --- import {stringify} from 'devalue'; import Serialize from "../Serialize.astro"; const data = { name: 'John Doe', isOkay: true, mood: null, now: new Date(), age: BigInt('3218378192378') } export type Data = typeof data; --- ``` ### Errors & Warning in `deserialize()` The `deserialize()` function may give you the following: 1. **ERR: No match found** - there are no `JSON` scripts with the given ID 1. **WARNING: Multiple matches for ** - there were multiple `JSON` scripts found with the same ID ## About This is a quick and easy pattern to embed serialized information into your HTML and make it available in the client-side script with type safety. The `Serialize` component will write the data as JSON wrapped in a `