MCPcopy
hub / github.com/YousefED/SyncedStore / crdtValue

Function crdtValue

packages/core/src/internal.ts:48–81  ·  view source on GitHub ↗
(value: T | Y.Array<any> | Y.Map<any>)

Source from the content-addressed store, hash-verified

46}
47
48export function crdtValue<T extends NestedSchemaType>(value: T | Y.Array<any> | Y.Map<any>) {
49 if (value === null || value === undefined) {
50 return value;
51 }
52 value = (getYjsValue(value as any) as any) || value; // unwrap
53 if (value instanceof Y.Array) {
54 return crdtArray([], value);
55 } else if (value instanceof Y.Map) {
56 return crdtObject({}, value);
57 } else if (typeof value === "string") {
58 return value; // TODO
59 } else if (Array.isArray(value)) {
60 return crdtArray(value as any[]);
61 } else if (
62 value instanceof Y.XmlElement ||
63 value instanceof Y.XmlFragment ||
64 value instanceof Y.XmlText ||
65 value instanceof Y.XmlHook
66 ) {
67 return value;
68 } else if (value instanceof Y.Text) {
69 return value;
70 } else if (typeof value === "object") {
71 if (value instanceof Box) {
72 return value;
73 } else {
74 return crdtObject(value as any);
75 }
76 } else if (typeof value === "number" || typeof value === "boolean") {
77 return value;
78 } else {
79 throw new Error("invalid");
80 }
81}

Callers 3

wrapItemsFunction · 0.90
crdtObjectFunction · 0.90
parseYjsReturnValueFunction · 0.85

Calls 3

crdtArrayFunction · 0.90
crdtObjectFunction · 0.90
getYjsValueFunction · 0.85

Tested by

no test coverage detected