UNPKG

@syncedstore/core

Version:

SyncedStore is an easy-to-use library for building collaborative applications that sync automatically. It's built on top of Yjs, a proven, high performance CRDT implementation.

1 lines 44.2 kB
{"version":3,"file":"syncedstore.modern.mjs","sources":["../src/boxed.ts","../src/array.ts","../src/object.ts","../src/types.ts","../src/internal.ts","../src/doc.ts","../src/util.ts","../src/index.ts"],"sourcesContent":["import { JSONValue } from \"./types\";\n\n/**\n * @ignore\n */\nexport class Box<T extends Readonly<JSONValue>> {\n constructor(public readonly value: T) {}\n}\n\nexport function boxed<T extends JSONValue>(value: T) {\n if (ArrayBuffer.isView(value)) {\n // can't freeze arraybuffer\n return new Box(value as T);\n } else {\n return new Box(Object.freeze(value) as T);\n }\n}\n","import { $reactive, $reactiveproxy, reactive } from \"@reactivedata/reactive\";\nimport * as Y from \"yjs\";\nimport { areSame, getYjsValue, INTERNAL_SYMBOL } from \".\";\nimport { Box } from \"./boxed\";\nimport { crdtValue, ObjectSchemaType, parseYjsReturnValue } from \"./internal\";\nimport { CRDTObject } from \"./object\";\n\nexport type CRDTArray<T> = {\n [INTERNAL_SYMBOL]?: Y.Array<T>;\n [n: number]: T extends Box<infer A>\n ? A\n : T extends Array<infer A>\n ? CRDTArray<A>\n : T extends ObjectSchemaType\n ? CRDTObject<T>\n : T;\n} & T[]; // TODO: should return ArrayImplementation<T> on getter\n\nfunction arrayImplementation<T>(arr: Y.Array<T>) {\n const slice = function slice() {\n let ic = this[$reactiveproxy]?.implicitObserver;\n (arr as any)._implicitObserver = ic;\n\n const items = arr.slice.bind(arr).apply(arr, arguments);\n return items.map((item) => {\n const ret = parseYjsReturnValue(item, ic);\n if (ic && typeof ret === \"object\") {\n // when using Reactive, we should make sure the returned\n // object is made reactive with the implicit observer ic\n return reactive(ret, ic);\n } else {\n return ret;\n }\n });\n } as T[][\"slice\"];\n\n const wrapItems = function wrapItems(items) {\n return items.map((item) => {\n const wrapped = crdtValue(item as any); // TODO\n let valueToSet = getYjsValue(wrapped) || wrapped;\n if (valueToSet instanceof Box) {\n valueToSet = valueToSet.value;\n }\n if (valueToSet instanceof Y.AbstractType && valueToSet.parent) {\n throw new Error(\"Not supported: reassigning object that already occurs in the tree.\");\n }\n return valueToSet;\n });\n };\n\n const findIndex = function findIndex() {\n return [].findIndex.apply(slice.apply(this), arguments);\n } as T[][\"find\"];\n\n const methods = {\n // get length() {\n // return arr.length;\n // },\n // set length(val: number) {\n // throw new Error(\"set length of yjs array is unsupported\");\n // },\n slice,\n unshift: (...items: T[]) => {\n arr.unshift(wrapItems(items));\n return (arr as any).lengthUntracked;\n },\n\n push: (...items: T[]) => {\n arr.push(wrapItems(items));\n return (arr as any).lengthUntracked;\n },\n\n insert: arr.insert.bind(arr) as Y.Array<T>[\"insert\"],\n toJSON: arr.toJSON.bind(arr) as Y.Array<T>[\"toJSON\"],\n\n forEach: function () {\n return [].forEach.apply(slice.apply(this), arguments);\n } as T[][\"forEach\"],\n\n every: function () {\n return [].every.apply(slice.apply(this), arguments);\n },\n\n filter: function () {\n return [].filter.apply(slice.apply(this), arguments);\n } as T[][\"filter\"],\n\n find: function () {\n return [].find.apply(slice.apply(this), arguments);\n } as T[][\"find\"],\n\n findIndex,\n\n some: function () {\n return [].some.apply(slice.apply(this), arguments);\n } as T[][\"some\"],\n\n includes: function () {\n return [].includes.apply(slice.apply(this), arguments);\n } as T[][\"includes\"],\n\n map: function () {\n return [].map.apply(slice.apply(this), arguments);\n } as T[][\"map\"],\n\n indexOf: function () {\n const arg = arguments[0];\n return findIndex.call(this, (el) => areSame(el, arg));\n } as T[][\"indexOf\"],\n\n splice: function () {\n let start = arguments[0] < 0 ? arr.length - Math.abs(arguments[0]) : arguments[0];\n let deleteCount = arguments[1];\n let items = Array.from(Array.from(arguments).slice(2));\n let deleted = slice.apply(this, [start, Number.isInteger(deleteCount) ? start + deleteCount : undefined]);\n if (arr.doc) {\n arr.doc.transact(() => {\n arr.delete(start, deleteCount);\n arr.insert(start, wrapItems(items));\n });\n } else {\n arr.delete(start, deleteCount);\n arr.insert(start, wrapItems(items));\n }\n return deleted;\n } as T[][\"splice\"],\n // toJSON = () => {\n // return this.arr.toJSON() slice();\n // };\n // delete = this.arr.delete.bind(this.arr) as (Y.Array<T>)[\"delete\"];\n };\n\n const ret = [];\n for (let method in methods) {\n ret[method] = methods[method];\n }\n\n // this is necessary to prevent errors like \"trap reported non-configurability for property 'length' which is either non-existent or configurable in the proxy target\" when adding support for ownKeys and Reflect.keysx\n // (not necessary anymore now we changed ret from object to array)\n\n // Object.defineProperty(ret, \"length\", {\n // enumerable: false,\n // configurable: false,\n // writable: true,\n // value: (arr as any).lengthUntracked,\n // });\n\n return ret;\n}\n\nfunction propertyToNumber(p: string | number | symbol) {\n if (typeof p === \"string\" && p.trim().length) {\n const asNum = Number(p);\n // https://stackoverflow.com/questions/10834796/validate-that-a-string-is-a-positive-integer\n if (Number.isInteger(asNum)) {\n return asNum;\n }\n }\n return p;\n}\n\nexport function crdtArray<T>(initializer: T[], arr = new Y.Array<T>()) {\n if (arr[$reactive]) {\n throw new Error(\"unexpected\");\n // arr = arr[$reactive].raw;\n }\n const implementation = arrayImplementation(arr);\n\n const proxy = new Proxy(implementation as any as CRDTArray<T>, {\n set: (target, pArg, value) => {\n const p = propertyToNumber(pArg);\n if (typeof p !== \"number\") {\n throw new Error();\n }\n // TODO map.set(p, smartValue(value));\n throw new Error(\"array assignment is not implemented / supported\");\n },\n get: (target, pArg, receiver) => {\n const p = propertyToNumber(pArg);\n\n if (p === INTERNAL_SYMBOL) {\n return arr;\n }\n\n if (typeof p === \"number\") {\n let ic: any;\n if (receiver && receiver[$reactiveproxy]) {\n ic = receiver[$reactiveproxy]?.implicitObserver;\n (arr as any)._implicitObserver = ic;\n } else {\n // console.warn(\"no receiver getting property\", p);\n }\n let ret = arr.get(p) as any;\n ret = parseYjsReturnValue(ret, ic);\n return ret;\n }\n\n if (p === Symbol.toStringTag) {\n return \"Array\";\n }\n\n if (p === Symbol.iterator) {\n const values = arr.slice();\n return Reflect.get(values, p);\n }\n\n if (p === \"length\") {\n return arr.length;\n }\n // forward to arrayimplementation\n const ret = Reflect.get(target, p, receiver);\n return ret;\n },\n // getOwnPropertyDescriptor: (target, pArg) => {\n // const p = propertyToNumber(pArg);\n // if (typeof p === \"number\" && p < arr.length && p >= 0) {\n // return { configurable: true, enumerable: true, value: arr.get(p) };\n // } else {\n // return undefined;\n // }\n // },\n deleteProperty: (target, pArg) => {\n const p = propertyToNumber(pArg);\n if (typeof p !== \"number\") {\n throw new Error();\n }\n if (p < (arr as any).lengthUntracked && p >= 0) {\n arr.delete(p);\n return true;\n } else {\n return false;\n }\n },\n has: (target, pArg) => {\n const p = propertyToNumber(pArg);\n if (typeof p !== \"number\") {\n // forward to arrayimplementation\n return Reflect.has(target, p);\n }\n if (p < (arr as any).lengthUntracked && p >= 0) {\n return true;\n } else {\n return false;\n }\n },\n getOwnPropertyDescriptor(target, pArg) {\n const p = propertyToNumber(pArg);\n if (p === \"length\") {\n return {\n enumerable: false,\n configurable: false,\n writable: true,\n };\n }\n if (typeof p === \"number\" && p >= 0 && p < (arr as any).lengthUntracked) {\n return {\n enumerable: true,\n configurable: true,\n writable: true,\n };\n }\n return undefined;\n },\n ownKeys: (target) => {\n const keys: string[] = [];\n for (let i = 0; i < arr.length; i++) {\n keys.push(i + \"\");\n }\n keys.push(\"length\");\n return keys;\n },\n });\n\n implementation.push.apply(proxy, initializer);\n return proxy;\n}\n","import { $reactive, $reactiveproxy } from \"@reactivedata/reactive\";\nimport * as Y from \"yjs\";\nimport { getYjsValue, INTERNAL_SYMBOL } from \".\";\nimport { CRDTArray } from \"./array\";\nimport { Box } from \"./boxed\";\nimport { crdtValue, parseYjsReturnValue, yToWrappedCache, ObjectSchemaType } from \"./internal\";\n\nexport type CRDTObject<T extends ObjectSchemaType> = {\n [P in keyof T]?: T[P] extends Box<infer A>\n ? Box<A>\n : T[P] extends Array<infer A>\n ? CRDTArray<A>\n : T[P] extends ObjectSchemaType\n ? CRDTObject<T[P]>\n : T[P];\n} & {\n [INTERNAL_SYMBOL]?: Y.Map<T>;\n};\n\nexport function crdtObject<T extends ObjectSchemaType>(initializer: T, map = new Y.Map<any>()) {\n if (map[$reactive]) {\n throw new Error(\"unexpected\");\n // map = map[$reactive].raw;\n }\n\n const proxy = new Proxy({} as any as CRDTObject<T>, {\n set: (target, p, value) => {\n if (typeof p !== \"string\") {\n throw new Error();\n }\n const wrapped = crdtValue(value); // TODO: maybe set cache\n let valueToSet = getYjsValue(wrapped) || wrapped;\n\n if (valueToSet instanceof Box) {\n valueToSet = valueToSet.value;\n }\n\n if (valueToSet instanceof Y.AbstractType && valueToSet.parent) {\n throw new Error(\"Not supported: reassigning object that already occurs in the tree.\");\n }\n\n map.set(p, valueToSet);\n\n return true;\n },\n get: (target, p, receiver) => {\n if (p === INTERNAL_SYMBOL) {\n return map;\n }\n if (typeof p !== \"string\") {\n return Reflect.get(target, p);\n // throw new Error(\"get non string parameter\");\n }\n let ic: any;\n if (receiver && receiver[$reactiveproxy]) {\n ic = receiver[$reactiveproxy]?.implicitObserver;\n (map as any)._implicitObserver = ic;\n } else {\n // console.warn(\"no receiver getting property\", p);\n }\n let ret = map.get(p);\n ret = parseYjsReturnValue(ret, ic);\n return ret;\n },\n deleteProperty: (target, p) => {\n if (typeof p !== \"string\") {\n throw new Error();\n }\n if (map.has(p)) {\n map.delete(p);\n return true;\n } else {\n return false;\n }\n },\n has: (target, p) => {\n if (typeof p === \"string\" && map.has(p)) {\n return true;\n }\n return false;\n },\n getOwnPropertyDescriptor(target, p) {\n if (typeof p === \"string\" && map.has(p)) {\n return {\n enumerable: true,\n configurable: true,\n };\n }\n return undefined;\n },\n ownKeys: (target) => {\n return Array.from(map.keys());\n },\n });\n\n yToWrappedCache.set(map, proxy);\n\n for (let key in initializer) {\n proxy[key] = initializer[key] as any;\n }\n\n return proxy;\n}\n","import * as Y from \"yjs\";\n\nexport type Primitive = bigint | boolean | null | number | string | symbol | undefined;\n\nexport type JSONValue = Primitive | JSONObject | JSONArray;\n\nexport type JSONObject = {\n [key: string]: JSONValue;\n};\n\nexport type JSONArray = Array<JSONValue>;\n\nexport function isYType(element: any) {\n return element instanceof Y.AbstractType;\n}\n","import { markRaw } from \"@reactivedata/reactive\";\nimport * as Y from \"yjs\";\nimport { getYjsValue } from \".\";\nimport { crdtArray } from \"./array\";\nimport { Box, boxed } from \"./boxed\";\nimport { crdtObject } from \"./object\";\nimport { isYType, JSONValue } from \"./types\";\n\ntype NestedSchemaType = JSONValue | ObjectSchemaType | Box<any> | Y.AbstractType<any> | NestedSchemaType[];\n\nexport type ObjectSchemaType = {\n [key: string]: NestedSchemaType;\n};\n\nexport const yToWrappedCache = new WeakMap<Y.AbstractType<any> | Y.Doc, any>();\n\nexport function parseYjsReturnValue(value: any, implicitObserver?: any) {\n if (isYType(value)) {\n value._implicitObserver = implicitObserver;\n\n if (value instanceof Y.Array || value instanceof Y.Map) {\n if (!yToWrappedCache.has(value)) {\n const wrapped = crdtValue(value);\n yToWrappedCache.set(value, wrapped);\n }\n value = yToWrappedCache.get(value);\n } else if (\n value instanceof Y.XmlElement ||\n value instanceof Y.XmlFragment ||\n value instanceof Y.XmlText ||\n value instanceof Y.XmlHook ||\n value instanceof Y.Text\n ) {\n markRaw(value);\n (value as any).__v_skip = true; // for vue Reactive\n } else {\n throw new Error(\"unknown YType\");\n }\n return value;\n } else if (value === null) {\n return null;\n } else if (typeof value === \"object\") {\n return boxed(value); // TODO: how do we recognize a boxed \"null\" value?\n }\n return value;\n}\n\nexport function crdtValue<T extends NestedSchemaType>(value: T | Y.Array<any> | Y.Map<any>) {\n if (value === null || value === undefined) {\n return value;\n }\n value = (getYjsValue(value as any) as any) || value; // unwrap\n if (value instanceof Y.Array) {\n return crdtArray([], value);\n } else if (value instanceof Y.Map) {\n return crdtObject({}, value);\n } else if (typeof value === \"string\") {\n return value; // TODO\n } else if (Array.isArray(value)) {\n return crdtArray(value as any[]);\n } else if (\n value instanceof Y.XmlElement ||\n value instanceof Y.XmlFragment ||\n value instanceof Y.XmlText ||\n value instanceof Y.XmlHook\n ) {\n return value;\n } else if (value instanceof Y.Text) {\n return value;\n } else if (typeof value === \"object\") {\n if (value instanceof Box) {\n return value;\n } else {\n return crdtObject(value as any);\n }\n } else if (typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n } else {\n throw new Error(\"invalid\");\n }\n}\n","import { $reactive, $reactiveproxy } from \"@reactivedata/reactive\";\nimport * as Y from \"yjs\";\nimport { INTERNAL_SYMBOL } from \".\";\nimport { parseYjsReturnValue, yToWrappedCache } from \"./internal\";\n\nexport type docElementTypeDescription = \"xml\" | \"text\" | Array<any> | object;\nexport type DocTypeDescription = {\n [key: string]: docElementTypeDescription;\n};\n\nexport type MappedTypeDescription<T extends DocTypeDescription> = {\n readonly [P in keyof T]: T[P] extends \"xml\"\n ? Y.XmlFragment\n : T[P] extends \"text\"\n ? Y.Text\n : T[P] extends Array<any>\n ? T[P]\n : T[P] extends object\n ? Partial<T[P]>\n : never;\n};\n\n// export type rootTypeDescription<T extends rootTypeDescriptionParent> = {\n// [P in keyof T]?: T[P];\n// };\n\nfunction validateRootTypeDescription<T extends DocTypeDescription>(typeDescription: T) {\n for (let [key, val] of Object.entries(typeDescription)) {\n if (Array.isArray(val)) {\n if (val.length !== 0) {\n throw new Error(\"Root Array initializer must always be empty array\");\n }\n } else if (val && typeof val === \"object\") {\n if (Object.keys(val).length !== 0 || Object.getPrototypeOf(val) !== Object.prototype) {\n throw new Error(\"Root Object initializer must always be {}\");\n }\n } else if (val !== \"xml\" && val !== \"text\") {\n throw new Error(\"unknown Root initializer\");\n }\n }\n}\n\nfunction getYjsByTypeDescription<T extends DocTypeDescription>(doc: Y.Doc, typeDescription: T, p: string) {\n let description = typeDescription[p];\n if (!description) {\n // exclude expected Vue Reactive checks from logging a warning\n if (p !== \"__v_raw\" && p !== \"__v_isRef\" && p !== \"__v_isReadonly\") {\n console.warn(\"property not found on root doc\", p);\n }\n return undefined;\n }\n\n return description === \"xml\"\n ? doc.getXmlFragment(p)\n : description === \"text\"\n ? doc.getText(p)\n : Array.isArray(description)\n ? doc.getArray(p)\n : doc.getMap(p);\n}\nexport function crdtDoc<T extends DocTypeDescription>(doc: Y.Doc, typeDescription: T) {\n if (doc[$reactive]) {\n throw new Error(\"unexpected\");\n }\n\n validateRootTypeDescription(typeDescription);\n\n const proxy = new Proxy({} as MappedTypeDescription<T>, {\n set: (target, p, value) => {\n if (typeof p !== \"string\") {\n throw new Error();\n }\n throw new Error(\"cannot set new elements on root doc\");\n },\n get: (target, p, receiver) => {\n if (p === INTERNAL_SYMBOL) {\n return doc;\n }\n\n if (typeof p !== \"string\") {\n return Reflect.get(target, p);\n // throw new Error(\"get non string parameter\");\n }\n let ic: any;\n if (receiver && receiver[$reactiveproxy]) {\n ic = receiver[$reactiveproxy]?.implicitObserver;\n (doc as any)._implicitObserver = ic;\n } else {\n // console.warn(\"no receiver getting property\", p);\n }\n\n if (p === \"toJSON\") {\n for (let key of Object.keys(typeDescription)) {\n // initialize all values\n getYjsByTypeDescription(doc, typeDescription, key);\n }\n const ret = Reflect.get(doc, p);\n return ret;\n }\n\n let ret = getYjsByTypeDescription(doc, typeDescription, p);\n ret = parseYjsReturnValue(ret, ic);\n\n return ret;\n },\n deleteProperty: (target, p) => {\n throw new Error(\"deleteProperty not available for doc\");\n },\n has: (target, p) => {\n if (typeof p === \"string\" && doc.share.has(p)) {\n return true;\n }\n return false;\n },\n getOwnPropertyDescriptor(target, p) {\n if ((typeof p === \"string\" && doc.share.has(p)) || p === \"toJSON\") {\n return {\n enumerable: true,\n configurable: true,\n };\n }\n return undefined;\n },\n ownKeys: (target) => {\n return Array.from(doc.share.keys());\n },\n });\n\n yToWrappedCache.set(doc, proxy);\n\n return proxy;\n}\n","/**\n * Filter a SyncedStore array\n * @param arr array to filter\n * @param filter predicate to filter the array `arr` by\n */\nexport function filterArray<T>(arr: T[], filter: (obj: T) => boolean) {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (!filter(arr[i])) {\n arr.splice(i, 1);\n }\n }\n}\n","import * as reactive from \"@reactivedata/reactive\";\nimport { markRaw } from \"@reactivedata/reactive\";\nimport { enableReactiveBindings, makeYDocObservable } from \"@syncedstore/yjs-reactive-bindings\";\nimport * as Y from \"yjs\";\nimport {\n Array as SyncedArray,\n Doc as SyncedDoc,\n Map as SyncedMap,\n Text as SyncedText,\n XmlFragment as SyncedXml,\n} from \"yjs\";\nimport { crdtDoc, DocTypeDescription } from \"./doc\";\n\nexport { enableMobxBindings, enableVueBindings } from \"@syncedstore/yjs-reactive-bindings\";\nexport { Box, boxed } from \"./boxed\";\nexport * from \"./util\";\n/**\n * @ignore\n */\nexport { Y };\n/**\n * @ignore\n */\nexport { SyncedDoc, SyncedArray, SyncedMap, SyncedXml, SyncedText };\n\n// setup yjs-reactive-bindings\n\nenableReactiveBindings(reactive); // use reactive bindings by default\n\n/**\n * @ignore\n */\nexport const INTERNAL_SYMBOL = Symbol(\"INTERNAL_SYMBOL\");\n\n/**\n * Register a listener for when any changes to `object` or its nested objects occur.\n *\n * @param object the synced object (store, object, map, or Yjs value to observe)\n * @param handler the callback to be raised.\n * @returns a function to dispose (unregister) the handler\n */\nexport function observeDeep(object: any, handler: () => void): () => void {\n const internal = getYjsValue(object) || object;\n if (!internal) {\n throw new Error(\"not a valid synced object\");\n }\n\n if (internal instanceof Y.Doc) {\n internal.on(\"update\", handler);\n return () => {\n internal.off(\"update\", handler);\n };\n } else {\n internal.observeDeep(handler);\n return () => {\n internal.unobserveDeep(handler);\n };\n }\n}\n\n/**\n * Access the internal Yjs Doc.\n *\n * @param store a store returned by\n * @returns the Yjs doc (Y.Doc) underneath.\n */\nexport function getYjsDoc<T>(store: T): Y.Doc {\n const ret = getYjsValue(store);\n if (!(ret instanceof Y.Doc)) {\n throw new Error(\"store is not a valid syncedStore that maps to a Y.Doc\");\n }\n return ret;\n}\n\n/**\n * Access the internal Yjs value that backs the syncing of the passed in object.\n *\n * @param object a value retrieved from the store\n * @returns the Yjs value underneath. This can be a Y.Doc, Y.Array, Y.Map or other Y-type based on the value passed in\n */\nexport function getYjsValue(object: any): Y.Doc | Y.AbstractType<any> | undefined {\n if (typeof object !== \"object\" || object === null) {\n return undefined;\n }\n const ret = object[INTERNAL_SYMBOL];\n if (ret) {\n markRaw(ret);\n (ret as any).__v_skip = true; // for vue Reactive\n }\n return ret;\n}\n\n/**\n * Check whether two objects represent the same value.\n * A strict equality (===) check doesn't always work,\n * because SyncedStore can wrap the object with a Proxy depending on where you retrieved it.\n *\n * @param objectA Object to compare with objectB\n * @param objectB Object to compare with objectA\n * @returns true if they represent the same object, false otherwise\n */\nexport function areSame(objectA: any, objectB: any) {\n if (objectA === objectB) {\n return true;\n }\n if (typeof objectA === \"object\" && typeof objectB === \"object\") {\n const internalA = getYjsValue(objectA);\n const internalB = getYjsValue(objectB);\n if (!internalA || !internalB) {\n // one of them doesn't have an internal value\n return false;\n }\n return internalA === internalB;\n }\n return false;\n}\n\n/**\n * Create a SyncedStore store\n * @param shape an object that describes the root types of the store. e.g.:\n * const shape = {\n * exampleArrayData: [],\n * exampleObjectData: {},\n * exampleXMLData: \"xml\",\n * exampleTextData: \"text\",\n * };\n * @param doc (optional) a Y.Doc to use as the backing system\n * @returns a SyncedStore store\n */\nexport function syncedStore<T extends DocTypeDescription>(shape: T, doc: Y.Doc = new Y.Doc()) {\n makeYDocObservable(doc);\n\n return crdtDoc<T>(doc, shape);\n}\n\nexport default syncedStore;\n"],"names":["Box","constructor","value","boxed","ArrayBuffer","isView","Object","freeze","arrayImplementation","arr","slice","ic","$reactiveproxy","implicitObserver","_implicitObserver","items","bind","apply","arguments","map","item","ret","parseYjsReturnValue","reactive","wrapItems","wrapped","crdtValue","valueToSet","getYjsValue","Y","AbstractType","parent","Error","findIndex","methods","unshift","lengthUntracked","push","insert","toJSON","forEach","every","filter","find","some","includes","indexOf","arg","call","el","areSame","splice","start","length","Math","abs","deleteCount","Array","from","deleted","Number","isInteger","undefined","doc","transact","delete","method","propertyToNumber","p","trim","asNum","crdtArray","initializer","$reactive","implementation","proxy","Proxy","set","target","pArg","get","receiver","INTERNAL_SYMBOL","Symbol","toStringTag","iterator","values","Reflect","deleteProperty","has","getOwnPropertyDescriptor","enumerable","configurable","writable","ownKeys","keys","i","crdtObject","Map","yToWrappedCache","key","isYType","element","WeakMap","XmlElement","XmlFragment","XmlText","XmlHook","Text","markRaw","__v_skip","isArray","validateRootTypeDescription","typeDescription","val","entries","getPrototypeOf","prototype","getYjsByTypeDescription","description","console","warn","getXmlFragment","getText","getArray","getMap","crdtDoc","share","filterArray","enableReactiveBindings","observeDeep","object","handler","internal","Doc","on","off","unobserveDeep","getYjsDoc","store","objectA","objectB","internalA","internalB","syncedStore","shape","makeYDocObservable"],"mappings":"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"}