MCPcopy Create free account
hub / github.com/esengine/esengine / serialize

Function serialize

packages/core/src/ECS/Serialization/ValueSerializer.ts:49–75  ·  view source on GitHub ↗
(value: unknown, seen = new WeakSet<object>())

Source from the content-addressed store, hash-verified

47});
48
49function serialize(value: unknown, seen = new WeakSet<object>()): SerializableValue {
50 if (value == null) return value as null | undefined;
51
52 const t = typeof value;
53 if (t === 'string' || t === 'number' || t === 'boolean') return value as PrimitiveValue;
54 if (t === 'function') return undefined;
55
56 const obj = value as object;
57 if (seen.has(obj)) return undefined;
58 seen.add(obj);
59
60 for (const [, def] of types) {
61 if (def.check(value)) {
62 return def.serialize(value, (v) => serialize(v, seen));
63 }
64 }
65
66 if (Array.isArray(value)) {
67 return value.map((v) => serialize(v, seen));
68 }
69
70 const result: Record<string, SerializableValue> = {};
71 for (const k of Object.keys(value as object)) {
72 result[k] = serialize((value as Record<string, unknown>)[k], seen);
73 }
74 return result;
75}
76
77function deserialize(value: SerializableValue): unknown {
78 if (value == null) return value;

Callers

nothing calls this directly

Calls 6

isArrayMethod · 0.80
keysMethod · 0.80
hasMethod · 0.65
serializeMethod · 0.65
addMethod · 0.45
mapMethod · 0.45

Tested by

no test coverage detected