MCPcopy Index your code
hub / github.com/TanStack/db / serializeValue

Function serializeValue

packages/query-db-collection/src/serialization.ts:91–135  ·  view source on GitHub ↗

* Serializes special JavaScript values (undefined, NaN, Infinity, Date) * @internal

(value: unknown)

Source from the content-addressed store, hash-verified

89 * @internal
90 */
91function serializeValue(value: unknown): unknown {
92 if (value === undefined) {
93 return { __type: `undefined` }
94 }
95
96 if (typeof value === `number`) {
97 if (Number.isNaN(value)) {
98 return { __type: `nan` }
99 }
100 if (value === Number.POSITIVE_INFINITY) {
101 return { __type: `infinity`, sign: 1 }
102 }
103 if (value === Number.NEGATIVE_INFINITY) {
104 return { __type: `infinity`, sign: -1 }
105 }
106 }
107
108 if (
109 value === null ||
110 typeof value === `string` ||
111 typeof value === `number` ||
112 typeof value === `boolean`
113 ) {
114 return value
115 }
116
117 if (value instanceof Date) {
118 return { __type: `date`, value: value.toJSON() }
119 }
120
121 if (Array.isArray(value)) {
122 return value.map((item) => serializeValue(item))
123 }
124
125 if (typeof value === `object`) {
126 return Object.fromEntries(
127 Object.entries(value as Record<string, unknown>).map(([key, val]) => [
128 key,
129 serializeValue(val),
130 ]),
131 )
132 }
133
134 return value
135}

Callers 1

serializeExpressionFunction · 0.70

Calls 3

toJSONMethod · 0.80
mapMethod · 0.45
entriesMethod · 0.45

Tested by

no test coverage detected