@pluv/crdt-loro 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,8 @@
1
+ import { LoroCounter, LoroDoc, LoroList, LoroMap, LoroMovableList, LoroText, LoroTree } from "loro-crdt";
1
2
  import { AbstractCrdtDocFactory, CrdtType, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams, InferCrdtJson } from "@pluv/crdt";
2
3
  import { CrdtDocLike } from "@pluv/types";
3
-
4
- //#region src/loro-runtime.browser.d.ts
5
-
6
- import * as import_loro_crdt from "loro-crdt";
7
- //#endregion
8
4
  //#region src/counter.d.ts
9
- declare const counter: () => loro_runtime_browser_d_exports.LoroCounter;
5
+ declare const counter: () => LoroCounter;
10
6
  //#endregion
11
7
  //#region src/types.d.ts
12
8
  type LoroType<TValue extends unknown, TJson extends unknown = any> = TValue & CrdtType<TValue, TJson> & {
@@ -16,20 +12,20 @@ type LoroType<TValue extends unknown, TJson extends unknown = any> = TValue & Cr
16
12
  //#endregion
17
13
  //#region src/doc/builder.d.ts
18
14
  type LoroBuilder = ReturnType<typeof builder>;
19
- declare const builder: (doc: loro_runtime_browser_d_exports.LoroDoc) => {
20
- counter(name: string): loro_runtime_browser_d_exports.LoroCounter;
21
- list<T extends unknown>(name: string, value?: T[] | readonly T[]): LoroType<loro_runtime_browser_d_exports.LoroList<T>, T[]>;
22
- map<T extends Record<string, unknown>>(name: string, value?: T): LoroType<loro_runtime_browser_d_exports.LoroMap<T>, T>;
23
- moveableList<T extends unknown>(name: string, value?: T[] | readonly T[]): LoroType<loro_runtime_browser_d_exports.LoroMovableList<T>, T[]>;
24
- text(name: string, value?: string): LoroType<loro_runtime_browser_d_exports.LoroText, string>;
15
+ declare const builder: (doc: LoroDoc) => {
16
+ counter(name: string): LoroCounter;
17
+ list<T extends unknown>(name: string, value?: T[] | readonly T[]): LoroType<LoroList<T>, T[]>;
18
+ map<T extends Record<string, unknown>>(name: string, value?: T): LoroType<LoroMap<T>, T>;
19
+ moveableList<T extends unknown>(name: string, value?: T[] | readonly T[]): LoroType<LoroMovableList<T>, T[]>;
20
+ text(name: string, value?: string): LoroType<LoroText, string>;
25
21
  tree(name: string): import("loro-crdt").LoroTree<Record<string, unknown>>;
26
22
  };
27
23
  //#endregion
28
24
  //#region src/doc/CrdtLoroDoc.d.ts
29
25
  type CrdtLoroDocParams<TStorage extends Record<string, LoroType<any, any>>> = (builder: LoroBuilder) => TStorage;
30
- declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> implements CrdtDocLike<loro_runtime_browser_d_exports.LoroDoc, TStorage> {
26
+ declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> implements CrdtDocLike<LoroDoc, TStorage> {
31
27
  #private;
32
- value: loro_runtime_browser_d_exports.LoroDoc;
28
+ value: LoroDoc;
33
29
  constructor(params?: CrdtLoroDocParams<TStorage>);
34
30
  applyEncodedState(params: DocApplyEncodedStateParams): this;
35
31
  batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
@@ -44,7 +40,7 @@ declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> i
44
40
  isEmpty(): boolean;
45
41
  rebuildStorage(reference: TStorage): this;
46
42
  redo(): this;
47
- subscribe(listener: (params: DocSubscribeCallbackParams<loro_runtime_browser_d_exports.LoroDoc, TStorage>) => void): () => void;
43
+ subscribe(listener: (params: DocSubscribeCallbackParams<LoroDoc, TStorage>) => void): () => void;
48
44
  track(): this;
49
45
  /**
50
46
  * @description Unlike Yjs, this method is required to be called after each loro operation.
@@ -55,7 +51,7 @@ declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> i
55
51
  }
56
52
  //#endregion
57
53
  //#region src/doc/CrdtLoroDocFactory.d.ts
58
- declare class CrdtLoroDocFactory<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDocFactory<loro_runtime_browser_d_exports.LoroDoc, TStorage> {
54
+ declare class CrdtLoroDocFactory<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDocFactory<LoroDoc, TStorage> {
59
55
  readonly _initialStorage: (builder: LoroBuilder) => TStorage;
60
56
  constructor(initialStorage?: (builder: LoroBuilder) => TStorage);
61
57
  getEmpty(): CrdtLoroDoc<TStorage>;
@@ -67,22 +63,22 @@ declare class CrdtLoroDocFactory<TStorage extends Record<string, LoroType<any, a
67
63
  declare const doc: <TStorage extends Record<string, LoroType<any, any>>>(value?: (builder: LoroBuilder) => TStorage) => CrdtLoroDocFactory<TStorage>;
68
64
  //#endregion
69
65
  //#region src/list.d.ts
70
- declare const list: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<loro_runtime_browser_d_exports.LoroList<T>, T[]>;
66
+ declare const list: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<LoroList<T>, T[]>;
71
67
  //#endregion
72
68
  //#region src/map.d.ts
73
- declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => LoroType<loro_runtime_browser_d_exports.LoroMap<Record<string, T>>, Record<string, T>>;
69
+ declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => LoroType<LoroMap<Record<string, T>>, Record<string, T>>;
74
70
  //#endregion
75
71
  //#region src/movableList.d.ts
76
- declare const movableList: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<loro_runtime_browser_d_exports.LoroMovableList<T>, T[]>;
72
+ declare const movableList: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<LoroMovableList<T>, T[]>;
77
73
  //#endregion
78
74
  //#region src/object.d.ts
79
- declare const object: <T extends Record<string, any>>(value: T) => LoroType<loro_runtime_browser_d_exports.LoroMap<T>, T>;
75
+ declare const object: <T extends Record<string, any>>(value: T) => LoroType<LoroMap<T>, T>;
80
76
  //#endregion
81
77
  //#region src/text.d.ts
82
- declare const text: (value?: string) => LoroType<loro_runtime_browser_d_exports.LoroText, string>;
78
+ declare const text: (value?: string) => LoroType<LoroText, string>;
83
79
  //#endregion
84
80
  //#region src/tree.d.ts
85
- declare const tree: <T extends Record<string, unknown>>() => loro_runtime_browser_d_exports.LoroTree<T>;
81
+ declare const tree: <T extends Record<string, unknown>>() => LoroTree<T>;
86
82
  declare namespace loro_d_exports {
87
83
  export { CrdtLoroDoc, LoroBuilder, LoroType, counter, doc, kind, list, map, movableList, object, text, tree };
88
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/loro-runtime.browser.ts","../src/counter.ts","../src/types.ts","../src/doc/builder.ts","../src/doc/CrdtLoroDoc.ts","../src/doc/CrdtLoroDocFactory.ts","../src/doc/doc.ts","../src/list.ts","../src/map.ts","../src/movableList.ts","../src/object.ts","../src/text.ts","../src/tree.ts","../src/loro.ts","../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/counter.ts","../src/types.ts","../src/doc/builder.ts","../src/doc/CrdtLoroDoc.ts","../src/doc/CrdtLoroDocFactory.ts","../src/doc/doc.ts","../src/list.ts","../src/map.ts","../src/movableList.ts","../src/object.ts","../src/text.ts","../src/tree.ts","../src/loro.ts","../src/index.ts"],"mappings":";;;;cAGa,eAAc;;;KCDf,SAAS,wBAAwB,+BAA+B,SACxE,SAAS,QAAQ;EACb;EACA;;;;KCOI,cAAc,kBAAkB;cAE/B,UAAW,KAAK;EAEP,QAAA,eAAS;EAGlB,KAAA,mBAAiB,cACN,QACL,eAAe,MACvB,SAAS,SAAS,IAAI;EAUrB,IAAA,UAAU,yBAAuB,cACrB,QACL,IACR,SAAS,QAAQ,IAAI;EAUX,aAAA,mBAAiB,cACd,QACL,eAAe,MACvB,SAAS,gBAAgB,IAAI;EAUrB,KAAA,cAAM,iBAAuB,SAAS;EAOtC,KAAA,mCAAM,SAAA;;;;KCrCb,kBAAkB,iBAAiB,eAAe,wBAC1D,SAAS,gBACR;cAEQ,YACT,iBAAiB,eAAe,gCACvB,YAAY,SAAS;;EACvB,OAAO;EAKF,YAAA,SAAQ,kBAAkB;EAiB/B,kBAAkB,QAAQ;EAW1B,uBAAuB,QAAQ;EAkC/B;EAMA;EAMA;EAIA,IAAI,kBAAkB;EACtB,IAAI,mBAAmB,UAAU,KAAK,OAAO,SAAS;EAOtD;EAIA,UAAU,cAAc;EACxB,OAAO,mBAAmB,UAAU,MAAM,OAAO,cAAc,SAAS;EAqBxE;EAMA,eAAe,WAAW;EAwB1B;EAMA,UACH,WAAW,QAAQ,2BAA2B,SAAS;EA6BpD;;;;;EAoBA,SAAS;EAQT;;;;cChPE,mBACT,iBAAiB,eAAe,6BAC1B,uBAAuB,SAAS;WACtB,kBAAkB,SAAS,gBAAgB;EAE/C,YAAA,kBAAiB,SAAS,gBAAgB;EAM/C,YAAY,YAAY;EAIxB,WACH,mBAAmB,SAAS,gBAAgB,wBAC7C,mBAAmB;EAIf,eACH,kBAAkB,SAAS,gBAAgB,WAC5C,YAAY;;;;cCzBN,MAAO,iBAAiB,eAAe,qBAChD,SAAQ,SAAS,gBAAgB,aAClC,mBAAmB;;;cCFT,OAAQ,mBACjB,QAAO,eAAe,QACvB,SAAS,SAAS,IAAI;;;cCFZ,MAAO,mBAChB,4BAA2B,aAAa,OAAO,UAChD,SAAS,QAAQ,eAAe,KAAK,eAAe;;;cCF1C,cAAe,mBAAmB,QAAO,eAAe,QAQlC,SAAS,gBAAgB,IAAI;;;cCRnD,SAAU,UAAU,qBAAqB,OAAO,MAAI,SAAS,QAAQ,IAAI;;;cCDzE,OAAQ,mBAAqB,SAAS;;;cCDtC,OAAQ,UAAU,8BAAuB,SAAA;;;;cCQzC;;;KCND,yBAAyB"}
package/dist/browser.mjs CHANGED
@@ -1,14 +1,10 @@
1
- import { n as __reExport, t as __exportAll } from "./rolldown-runtime-BBjsoOtd.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
+ import { LoroCounter, LoroDoc, LoroList, LoroMap, LoroMovableList, LoroText, LoroTree, UndoManager, isContainer } from "loro-crdt";
2
3
  import { fromUint8Array, toUint8Array } from "js-base64";
3
4
  import { AbstractCrdtDocFactory } from "@pluv/crdt";
4
- //#region src/loro-runtime.browser.ts
5
- var loro_runtime_browser_exports = /* @__PURE__ */ __exportAll({});
6
- import * as import_loro_crdt from "loro-crdt";
7
- __reExport(loro_runtime_browser_exports, import_loro_crdt);
8
- //#endregion
9
5
  //#region src/counter.ts
10
6
  const counter = () => {
11
- return new loro_runtime_browser_exports.LoroCounter();
7
+ return new LoroCounter();
12
8
  };
13
9
  //#endregion
14
10
  //#region src/doc/builder.ts
@@ -20,7 +16,7 @@ const builder = (doc) => {
20
16
  list(name, value = []) {
21
17
  const list = doc.getList(name);
22
18
  value.forEach((item, i) => {
23
- if ((0, loro_runtime_browser_exports.isContainer)(item)) list.insertContainer(i, item);
19
+ if (isContainer(item)) list.insertContainer(i, item);
24
20
  else list.insert(i, item);
25
21
  });
26
22
  return list;
@@ -28,7 +24,7 @@ const builder = (doc) => {
28
24
  map(name, value = {}) {
29
25
  const container = doc.getMap(name);
30
26
  Object.entries(value).forEach(([key, item]) => {
31
- if ((0, loro_runtime_browser_exports.isContainer)(item)) container.setContainer(key, item);
27
+ if (isContainer(item)) container.setContainer(key, item);
32
28
  else container.set(key, item);
33
29
  });
34
30
  return container;
@@ -36,7 +32,7 @@ const builder = (doc) => {
36
32
  moveableList(name, value = []) {
37
33
  const list = doc.getMovableList(name);
38
34
  value.forEach((item, i) => {
39
- if ((0, loro_runtime_browser_exports.isContainer)(item)) list.insertContainer(i, item);
35
+ if (isContainer(item)) list.insertContainer(i, item);
40
36
  else list.insert(i, item);
41
37
  });
42
38
  return list;
@@ -57,7 +53,7 @@ const MAX_UNDO_STEPS = 100;
57
53
  const MERGE_INTERVAL_MS = 1e3;
58
54
  const PLUV_ID_FIELD = "__$pluv";
59
55
  var CrdtLoroDoc = class {
60
- value = new loro_runtime_browser_exports.LoroDoc();
56
+ value = new LoroDoc();
61
57
  #_storage;
62
58
  #_undoManager = null;
63
59
  constructor(params = () => ({})) {
@@ -117,11 +113,11 @@ var CrdtLoroDoc = class {
117
113
  toJson(type) {
118
114
  if (typeof type === "string") {
119
115
  const container = this.#_storage[type];
120
- return container instanceof loro_runtime_browser_exports.LoroText ? container.toString() : container instanceof loro_runtime_browser_exports.LoroCounter ? container.value : container.toJSON();
116
+ return container instanceof LoroText ? container.toString() : container instanceof LoroCounter ? container.value : container.toJSON();
121
117
  }
122
118
  return Object.entries(this.#_storage).reduce((acc, [key, value]) => ({
123
119
  ...acc,
124
- [key]: value instanceof loro_runtime_browser_exports.LoroText ? value.toString() : value.toJSON()
120
+ [key]: value instanceof LoroText ? value.toString() : value.toJSON()
125
121
  }), {});
126
122
  }
127
123
  isEmpty() {
@@ -134,27 +130,27 @@ var CrdtLoroDoc = class {
134
130
  return this;
135
131
  }
136
132
  this.#_storage = Object.entries(reference).reduce((acc, [key, node]) => {
137
- if (node instanceof loro_runtime_browser_exports.LoroCounter) return {
133
+ if (node instanceof LoroCounter) return {
138
134
  ...acc,
139
135
  [key]: this.value.getCounter(key)
140
136
  };
141
- if (node instanceof loro_runtime_browser_exports.LoroList) return {
137
+ if (node instanceof LoroList) return {
142
138
  ...acc,
143
139
  [key]: this.value.getList(key)
144
140
  };
145
- if (node instanceof loro_runtime_browser_exports.LoroMap) return {
141
+ if (node instanceof LoroMap) return {
146
142
  ...acc,
147
143
  [key]: this.value.getMap(key)
148
144
  };
149
- if (node instanceof loro_runtime_browser_exports.LoroMovableList) return {
145
+ if (node instanceof LoroMovableList) return {
150
146
  ...acc,
151
147
  [key]: this.value.getMovableList(key)
152
148
  };
153
- if (node instanceof loro_runtime_browser_exports.LoroText) return {
149
+ if (node instanceof LoroText) return {
154
150
  ...acc,
155
151
  [key]: this.value.getText(key)
156
152
  };
157
- if (node instanceof loro_runtime_browser_exports.LoroTree) return {
153
+ if (node instanceof LoroTree) return {
158
154
  ...acc,
159
155
  [key]: this.value.getTree(key)
160
156
  };
@@ -190,7 +186,7 @@ var CrdtLoroDoc = class {
190
186
  this.#_undoManager.free();
191
187
  this.#_undoManager = null;
192
188
  }
193
- this.#_undoManager = new loro_runtime_browser_exports.UndoManager(this.value, {
189
+ this.#_undoManager = new UndoManager(this.value, {
194
190
  maxUndoSteps: MAX_UNDO_STEPS,
195
191
  mergeInterval: MERGE_INTERVAL_MS
196
192
  });
@@ -241,9 +237,9 @@ const doc = (value = () => ({})) => {
241
237
  //#endregion
242
238
  //#region src/list.ts
243
239
  const list = (value = []) => {
244
- const container = new loro_runtime_browser_exports.LoroList();
240
+ const container = new LoroList();
245
241
  value.forEach((item, i) => {
246
- if ((0, loro_runtime_browser_exports.isContainer)(item)) container.insertContainer(i, item);
242
+ if (isContainer(item)) container.insertContainer(i, item);
247
243
  else container.insert(i, item);
248
244
  });
249
245
  return container;
@@ -251,9 +247,9 @@ const list = (value = []) => {
251
247
  //#endregion
252
248
  //#region src/map.ts
253
249
  const map = (value = []) => {
254
- const container = new loro_runtime_browser_exports.LoroMap();
250
+ const container = new LoroMap();
255
251
  value.forEach(([key, item]) => {
256
- if ((0, loro_runtime_browser_exports.isContainer)(item)) container.setContainer(key, item);
252
+ if (isContainer(item)) container.setContainer(key, item);
257
253
  else container.set(key, item);
258
254
  });
259
255
  return container;
@@ -261,9 +257,9 @@ const map = (value = []) => {
261
257
  //#endregion
262
258
  //#region src/movableList.ts
263
259
  const movableList = (value = []) => {
264
- const container = new loro_runtime_browser_exports.LoroMovableList();
260
+ const container = new LoroMovableList();
265
261
  value.forEach((item, i) => {
266
- if ((0, loro_runtime_browser_exports.isContainer)(item)) container.insertContainer(i, item);
262
+ if (isContainer(item)) container.insertContainer(i, item);
267
263
  else container.insert(i, item);
268
264
  });
269
265
  return container;
@@ -271,9 +267,9 @@ const movableList = (value = []) => {
271
267
  //#endregion
272
268
  //#region src/object.ts
273
269
  const object = (value) => {
274
- const container = new loro_runtime_browser_exports.LoroMap();
270
+ const container = new LoroMap();
275
271
  Object.entries(value).forEach(([key, item]) => {
276
- if ((0, loro_runtime_browser_exports.isContainer)(item)) container.setContainer(key, item);
272
+ if (isContainer(item)) container.setContainer(key, item);
277
273
  else container.set(key, item);
278
274
  });
279
275
  return container;
@@ -281,14 +277,14 @@ const object = (value) => {
281
277
  //#endregion
282
278
  //#region src/text.ts
283
279
  const text = (value = "") => {
284
- const container = new loro_runtime_browser_exports.LoroText();
280
+ const container = new LoroText();
285
281
  container.insert(0, value);
286
282
  return container;
287
283
  };
288
284
  //#endregion
289
285
  //#region src/tree.ts
290
286
  const tree = () => {
291
- return new loro_runtime_browser_exports.LoroTree();
287
+ return new LoroTree();
292
288
  };
293
289
  //#endregion
294
290
  //#region src/loro.ts
@@ -1 +1 @@
1
- {"version":3,"file":"browser.mjs","names":["LoroCounter","LoroDoc","#_storage","#_setPluvId","#_undoManager","LoroText","LoroCounter","LoroList","LoroMap","LoroMovableList","LoroTree","container","UndoManager","LoroList","LoroMap","LoroMovableList","LoroMap","LoroText","LoroTree"],"sources":["../src/loro-runtime.browser.ts","../src/counter.ts","../src/doc/builder.ts","../src/doc/CrdtLoroDoc.ts","../src/doc/CrdtLoroDocFactory.ts","../src/doc/doc.ts","../src/list.ts","../src/map.ts","../src/movableList.ts","../src/object.ts","../src/text.ts","../src/tree.ts","../src/loro.ts"],"sourcesContent":["export * from \"loro-crdt\";\n","import { LoroCounter } from \"@loro-runtime\";\nimport { LoroType } from \"./types\";\n\nexport const counter = (): LoroCounter => {\n const counter = new LoroCounter();\n\n return counter as unknown as LoroType<LoroCounter, number>;\n};\n","import type {\n Container,\n LoroCounter,\n LoroDoc,\n LoroList,\n LoroMap,\n LoroMovableList,\n LoroText,\n} from \"@loro-runtime\";\nimport { isContainer } from \"@loro-runtime\";\nimport type { LoroType } from \"../types\";\n\nexport type LoroBuilder = ReturnType<typeof builder>;\n\nexport const builder = (doc: LoroDoc) => {\n return {\n counter(name: string): LoroCounter {\n return doc.getCounter(name);\n },\n list<T extends unknown>(\n name: string,\n value: T[] | readonly T[] = [],\n ): LoroType<LoroList<T>, T[]> {\n const list = doc.getList(name);\n\n value.forEach((item, i) => {\n if (isContainer(item)) list.insertContainer(i, item);\n else list.insert(i, item as Exclude<T, Container>);\n });\n\n return list as unknown as LoroType<LoroList<T>, T[]>;\n },\n map<T extends Record<string, unknown>>(\n name: string,\n value: T = {} as T,\n ): LoroType<LoroMap<T>, T> {\n const container = doc.getMap(name);\n\n Object.entries(value).forEach(([key, item]) => {\n if (isContainer(item)) container.setContainer(key, item);\n else container.set(key, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMap<T>, T>;\n },\n moveableList<T extends unknown>(\n name: string,\n value: T[] | readonly T[] = [],\n ): LoroType<LoroMovableList<T>, T[]> {\n const list = doc.getMovableList(name);\n\n value.forEach((item, i) => {\n if (isContainer(item)) list.insertContainer(i, item);\n else list.insert(i, item as Exclude<T, Container>);\n });\n\n return list as unknown as LoroType<LoroMovableList<T>, T[]>;\n },\n text(name: string, value: string = \"\"): LoroType<LoroText, string> {\n const text = doc.getText(name);\n\n text.insert(0, value);\n\n return text as unknown as LoroType<LoroText, string>;\n },\n tree(name: string) {\n return doc.getTree(name);\n },\n };\n};\n","import type {\n DocApplyEncodedStateParams,\n DocBatchApplyEncodedStateParams,\n DocSubscribeCallbackParams,\n InferCrdtJson,\n} from \"@pluv/crdt\";\nimport type { CrdtDocLike } from \"@pluv/types\";\nimport { fromUint8Array, toUint8Array } from \"js-base64\";\nimport type { Container } from \"@loro-runtime\";\nimport {\n LoroCounter,\n LoroDoc,\n LoroEventBatch,\n LoroList,\n LoroMap,\n LoroMovableList,\n LoroText,\n LoroTree,\n UndoManager,\n} from \"@loro-runtime\";\nimport type { LoroType } from \"../types\";\nimport type { LoroBuilder } from \"./builder\";\nimport { builder } from \"./builder\";\n\nconst MAX_UNDO_STEPS = 100;\nconst MERGE_INTERVAL_MS = 1_000;\nconst PLUV_ID_FIELD = \"__$pluv\";\n\nexport type CrdtLoroDocParams<TStorage extends Record<string, LoroType<any, any>>> = (\n builder: LoroBuilder,\n) => TStorage;\n\nexport class CrdtLoroDoc<\n TStorage extends Record<string, LoroType<any, any>>,\n> implements CrdtDocLike<LoroDoc, TStorage> {\n public value: LoroDoc = new LoroDoc();\n\n #_storage: TStorage;\n #_undoManager: UndoManager | null = null;\n\n constructor(params: CrdtLoroDocParams<TStorage> = () => ({}) as TStorage) {\n const storage = params(builder(this.value));\n\n const keys = Object.keys(this.value.toJSON()).reduce(\n (set, key) => set.add(key),\n new Set<string>(),\n );\n\n this.#_storage = Object.entries(storage).reduce(\n (acc, [key, node]) => (keys.has(key) ? { ...acc, [key]: node } : acc),\n {} as TStorage,\n );\n if (!!Object.keys(storage).length) this.#_setPluvId();\n\n this.value.commit();\n }\n\n public applyEncodedState(params: DocApplyEncodedStateParams): this {\n const update =\n typeof params.update === \"string\" ? toUint8Array(params.update) : params.update;\n\n if (!update) return this;\n\n this.value.import(update);\n\n return this;\n }\n\n public batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this {\n const updates = params.updates ?? [];\n\n const filtered = updates.reduce<Uint8Array[]>((acc, update) => {\n if (!update) return acc;\n\n if (typeof update === \"string\") {\n acc.push(toUint8Array(update));\n return acc;\n }\n\n if (typeof update === \"object\") {\n acc.push(update);\n return acc;\n }\n\n return acc;\n }, []);\n\n if (!filtered.length) return this;\n\n if (filtered.length === 1) {\n const update = filtered[0] ?? null;\n\n if (!!update) this.value.import(update);\n\n return this;\n }\n\n this.value.importBatch(filtered);\n\n return this;\n }\n\n public canRedo(): boolean {\n if (!this.#_undoManager) return false;\n\n return this.#_undoManager.canRedo();\n }\n\n public canUndo(): boolean {\n if (!this.#_undoManager) return false;\n\n return this.#_undoManager.canUndo();\n }\n\n public destroy(): void {\n return;\n }\n\n public get(key?: undefined): TStorage;\n public get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];\n public get<TKey extends keyof TStorage>(key?: TKey): TStorage | TStorage[TKey] {\n if (typeof key === \"undefined\") return this.#_storage;\n\n return this.#_storage[key as TKey];\n }\n\n public getEncodedState(): string {\n return fromUint8Array(this.value.export({ mode: \"snapshot\" }));\n }\n\n public toJson(): InferCrdtJson<TStorage>;\n public toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;\n public toJson<TKey extends keyof TStorage>(type?: TKey) {\n if (typeof type === \"string\") {\n const container = this.#_storage[type] as unknown as Container;\n\n return container instanceof LoroText\n ? container.toString()\n : container instanceof LoroCounter\n ? container.value\n : container.toJSON!();\n }\n\n return Object.entries(this.#_storage).reduce(\n (acc, [key, value]) => ({\n ...(acc as any),\n [key]: value instanceof LoroText ? value.toString() : value.toJSON!(),\n }),\n {} as InferCrdtJson<TStorage>,\n );\n }\n\n public isEmpty(): boolean {\n const serialized = this.value.toJSON();\n\n return !serialized || !Object.keys(serialized).length;\n }\n\n public rebuildStorage(reference: TStorage): this {\n const isBuilt = !!Object.keys(this.#_storage).length;\n\n if (isBuilt) {\n console.warn(\"Attempted to rebuild storage multiple times\");\n return this;\n }\n\n this.#_storage = Object.entries(reference).reduce((acc, [key, node]) => {\n if (node instanceof LoroCounter) return { ...acc, [key]: this.value.getCounter(key) };\n if (node instanceof LoroList) return { ...acc, [key]: this.value.getList(key) };\n if (node instanceof LoroMap) return { ...acc, [key]: this.value.getMap(key) };\n if (node instanceof LoroMovableList) {\n return { ...acc, [key]: this.value.getMovableList(key) };\n }\n if (node instanceof LoroText) return { ...acc, [key]: this.value.getText(key) };\n if (node instanceof LoroTree) return { ...acc, [key]: this.value.getTree(key) };\n\n return acc;\n }, {} as TStorage);\n\n return this.track();\n }\n\n public redo(): this {\n this.#_undoManager?.redo();\n\n return this;\n }\n\n public subscribe(\n listener: (params: DocSubscribeCallbackParams<LoroDoc, TStorage>) => void,\n ): () => void {\n const fn = (event: LoroEventBatch) => {\n const update = fromUint8Array(this.value.export({ mode: \"update\" }));\n\n listener({\n doc: this,\n local: event.by === \"local\",\n origin: event.origin ? String(event.origin) : null,\n update,\n });\n };\n\n const unsubcribeAll = Object.values(this.#_storage).reduce<() => void>(\n (acc, crdtType) => {\n const container = crdtType as unknown as Container;\n const unsubscribe = container.subscribe(fn);\n\n return () => {\n acc();\n unsubscribe();\n };\n },\n () => undefined,\n );\n\n return unsubcribeAll;\n }\n\n public track(): this {\n if (this.#_undoManager) {\n this.#_undoManager.clear();\n this.#_undoManager.free();\n\n this.#_undoManager = null;\n }\n\n this.#_undoManager = new UndoManager(this.value, {\n maxUndoSteps: MAX_UNDO_STEPS,\n mergeInterval: MERGE_INTERVAL_MS,\n });\n\n return this;\n }\n\n /**\n * @description Unlike Yjs, this method is required to be called after each loro operation.\n * @date January 12, 2025\n */\n public transact(fn: () => void): this {\n fn();\n\n this.value.commit();\n\n return this;\n }\n\n public undo(): this {\n this.#_undoManager?.undo();\n\n return this;\n }\n\n #_setPluvId() {\n const text = this.value.getText(PLUV_ID_FIELD);\n const id = typeof crypto !== \"undefined\" ? crypto.randomUUID() : Math.random().toString();\n\n text.insert(0, id);\n }\n}\n","import { AbstractCrdtDocFactory } from \"@pluv/crdt\";\nimport type { LoroDoc } from \"@loro-runtime\";\nimport type { LoroType } from \"../types\";\nimport { CrdtLoroDoc } from \"./CrdtLoroDoc\";\nimport type { LoroBuilder } from \"./builder\";\n\nexport class CrdtLoroDocFactory<\n TStorage extends Record<string, LoroType<any, any>>,\n> extends AbstractCrdtDocFactory<LoroDoc, TStorage> {\n public readonly _initialStorage: (builder: LoroBuilder) => TStorage;\n\n constructor(initialStorage: (builder: LoroBuilder) => TStorage = () => ({}) as TStorage) {\n super(initialStorage);\n\n this._initialStorage = initialStorage;\n }\n\n public getEmpty(): CrdtLoroDoc<TStorage> {\n return new CrdtLoroDoc<TStorage>();\n }\n\n public getFactory(\n initialStorage?: ((builder: LoroBuilder) => TStorage) | undefined,\n ): CrdtLoroDocFactory<TStorage> {\n return new CrdtLoroDocFactory<TStorage>(initialStorage ?? this._initialStorage);\n }\n\n public getInitialized(\n initialStorage?: (builder: LoroBuilder) => TStorage,\n ): CrdtLoroDoc<TStorage> {\n return new CrdtLoroDoc<TStorage>(initialStorage ?? this._initialStorage);\n }\n}\n","import type { LoroType } from \"../types\";\nimport type { LoroBuilder } from \"./builder\";\nimport { CrdtLoroDocFactory } from \"./CrdtLoroDocFactory\";\n\nexport const doc = <TStorage extends Record<string, LoroType<any, any>>>(\n value: (builder: LoroBuilder) => TStorage = () => ({}) as TStorage,\n): CrdtLoroDocFactory<TStorage> => {\n return new CrdtLoroDocFactory<TStorage>(value);\n};\n","import type { Container } from \"@loro-runtime\";\nimport { LoroList, isContainer } from \"@loro-runtime\";\nimport type { LoroType } from \"./types\";\n\nexport const list = <T extends unknown>(\n value: T[] | readonly T[] = [],\n): LoroType<LoroList<T>, T[]> => {\n const container = new LoroList();\n\n value.forEach((item, i) => {\n if (isContainer(item)) container.insertContainer(i, item);\n else container.insert(i, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroList<T>, T[]>;\n};\n","import type { Container } from \"@loro-runtime\";\nimport { LoroMap, isContainer } from \"@loro-runtime\";\nimport type { LoroType } from \"./types\";\n\nexport const map = <T extends unknown>(\n value: readonly (readonly [key: string, value: T])[] = [],\n): LoroType<LoroMap<Record<string, T>>, Record<string, T>> => {\n const container = new LoroMap();\n\n value.forEach(([key, item]) => {\n if (isContainer(item)) container.setContainer(key, item);\n else container.set(key, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMap<Record<string, T>>, Record<string, T>>;\n};\n","import type { Container } from \"@loro-runtime\";\nimport { isContainer, LoroMovableList } from \"@loro-runtime\";\nimport type { LoroType } from \"./types\";\n\nexport const movableList = <T extends unknown>(value: T[] | readonly T[] = []) => {\n const container = new LoroMovableList();\n\n value.forEach((item, i) => {\n if (isContainer(item)) container.insertContainer(i, item);\n else container.insert(i, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMovableList<T>, T[]>;\n};\n","import type { Container } from \"@loro-runtime\";\nimport { LoroMap, isContainer } from \"@loro-runtime\";\nimport type { LoroType } from \"./types\";\n\nexport const object = <T extends Record<string, any>>(value: T): LoroType<LoroMap<T>, T> => {\n const container = new LoroMap();\n\n Object.entries(value).forEach(([key, item]) => {\n if (isContainer(item)) container.setContainer(key, item);\n else container.set(key, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMap<T>, T>;\n};\n","import { LoroText } from \"@loro-runtime\";\nimport type { LoroType } from \"./types\";\n\nexport const text = (value: string = \"\"): LoroType<LoroText, string> => {\n const container = new LoroText();\n\n container.insert(0, value);\n\n return container as unknown as LoroType<LoroText, string>;\n};\n","import { LoroTree } from \"@loro-runtime\";\n\nexport const tree = <T extends Record<string, unknown>>() => {\n const container = new LoroTree<T>();\n\n return container;\n};\n","export { counter } from \"./counter\";\nexport { CrdtLoroDoc, doc } from \"./doc\";\nexport type { LoroBuilder } from \"./doc\";\nexport { list } from \"./list\";\nexport { map } from \"./map\";\nexport { movableList } from \"./movableList\";\nexport { object } from \"./object\";\nexport { text } from \"./text\";\nexport { tree } from \"./tree\";\nexport type { LoroType } from \"./types\";\nexport const kind = \"loro\" as const;\n"],"mappings":"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"}
1
+ {"version":3,"file":"browser.mjs","names":["#_storage","#_setPluvId","#_undoManager","container"],"sources":["../src/counter.ts","../src/doc/builder.ts","../src/doc/CrdtLoroDoc.ts","../src/doc/CrdtLoroDocFactory.ts","../src/doc/doc.ts","../src/list.ts","../src/map.ts","../src/movableList.ts","../src/object.ts","../src/text.ts","../src/tree.ts","../src/loro.ts"],"sourcesContent":["import { LoroCounter } from \"loro-crdt\";\nimport { LoroType } from \"./types\";\n\nexport const counter = (): LoroCounter => {\n const counter = new LoroCounter();\n\n return counter as unknown as LoroType<LoroCounter, number>;\n};\n","import type {\n Container,\n LoroCounter,\n LoroDoc,\n LoroList,\n LoroMap,\n LoroMovableList,\n LoroText,\n} from \"loro-crdt\";\nimport { isContainer } from \"loro-crdt\";\nimport type { LoroType } from \"../types\";\n\nexport type LoroBuilder = ReturnType<typeof builder>;\n\nexport const builder = (doc: LoroDoc) => {\n return {\n counter(name: string): LoroCounter {\n return doc.getCounter(name);\n },\n list<T extends unknown>(\n name: string,\n value: T[] | readonly T[] = [],\n ): LoroType<LoroList<T>, T[]> {\n const list = doc.getList(name);\n\n value.forEach((item, i) => {\n if (isContainer(item)) list.insertContainer(i, item);\n else list.insert(i, item as Exclude<T, Container>);\n });\n\n return list as unknown as LoroType<LoroList<T>, T[]>;\n },\n map<T extends Record<string, unknown>>(\n name: string,\n value: T = {} as T,\n ): LoroType<LoroMap<T>, T> {\n const container = doc.getMap(name);\n\n Object.entries(value).forEach(([key, item]) => {\n if (isContainer(item)) container.setContainer(key, item);\n else container.set(key, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMap<T>, T>;\n },\n moveableList<T extends unknown>(\n name: string,\n value: T[] | readonly T[] = [],\n ): LoroType<LoroMovableList<T>, T[]> {\n const list = doc.getMovableList(name);\n\n value.forEach((item, i) => {\n if (isContainer(item)) list.insertContainer(i, item);\n else list.insert(i, item as Exclude<T, Container>);\n });\n\n return list as unknown as LoroType<LoroMovableList<T>, T[]>;\n },\n text(name: string, value: string = \"\"): LoroType<LoroText, string> {\n const text = doc.getText(name);\n\n text.insert(0, value);\n\n return text as unknown as LoroType<LoroText, string>;\n },\n tree(name: string) {\n return doc.getTree(name);\n },\n };\n};\n","import type {\n DocApplyEncodedStateParams,\n DocBatchApplyEncodedStateParams,\n DocSubscribeCallbackParams,\n InferCrdtJson,\n} from \"@pluv/crdt\";\nimport type { CrdtDocLike } from \"@pluv/types\";\nimport { fromUint8Array, toUint8Array } from \"js-base64\";\nimport type { Container } from \"loro-crdt\";\nimport {\n LoroCounter,\n LoroDoc,\n LoroEventBatch,\n LoroList,\n LoroMap,\n LoroMovableList,\n LoroText,\n LoroTree,\n UndoManager,\n} from \"loro-crdt\";\nimport type { LoroType } from \"../types\";\nimport type { LoroBuilder } from \"./builder\";\nimport { builder } from \"./builder\";\n\nconst MAX_UNDO_STEPS = 100;\nconst MERGE_INTERVAL_MS = 1_000;\nconst PLUV_ID_FIELD = \"__$pluv\";\n\nexport type CrdtLoroDocParams<TStorage extends Record<string, LoroType<any, any>>> = (\n builder: LoroBuilder,\n) => TStorage;\n\nexport class CrdtLoroDoc<\n TStorage extends Record<string, LoroType<any, any>>,\n> implements CrdtDocLike<LoroDoc, TStorage> {\n public value: LoroDoc = new LoroDoc();\n\n #_storage: TStorage;\n #_undoManager: UndoManager | null = null;\n\n constructor(params: CrdtLoroDocParams<TStorage> = () => ({}) as TStorage) {\n const storage = params(builder(this.value));\n\n const keys = Object.keys(this.value.toJSON()).reduce(\n (set, key) => set.add(key),\n new Set<string>(),\n );\n\n this.#_storage = Object.entries(storage).reduce(\n (acc, [key, node]) => (keys.has(key) ? { ...acc, [key]: node } : acc),\n {} as TStorage,\n );\n if (!!Object.keys(storage).length) this.#_setPluvId();\n\n this.value.commit();\n }\n\n public applyEncodedState(params: DocApplyEncodedStateParams): this {\n const update =\n typeof params.update === \"string\" ? toUint8Array(params.update) : params.update;\n\n if (!update) return this;\n\n this.value.import(update);\n\n return this;\n }\n\n public batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this {\n const updates = params.updates ?? [];\n\n const filtered = updates.reduce<Uint8Array[]>((acc, update) => {\n if (!update) return acc;\n\n if (typeof update === \"string\") {\n acc.push(toUint8Array(update));\n return acc;\n }\n\n if (typeof update === \"object\") {\n acc.push(update);\n return acc;\n }\n\n return acc;\n }, []);\n\n if (!filtered.length) return this;\n\n if (filtered.length === 1) {\n const update = filtered[0] ?? null;\n\n if (!!update) this.value.import(update);\n\n return this;\n }\n\n this.value.importBatch(filtered);\n\n return this;\n }\n\n public canRedo(): boolean {\n if (!this.#_undoManager) return false;\n\n return this.#_undoManager.canRedo();\n }\n\n public canUndo(): boolean {\n if (!this.#_undoManager) return false;\n\n return this.#_undoManager.canUndo();\n }\n\n public destroy(): void {\n return;\n }\n\n public get(key?: undefined): TStorage;\n public get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];\n public get<TKey extends keyof TStorage>(key?: TKey): TStorage | TStorage[TKey] {\n if (typeof key === \"undefined\") return this.#_storage;\n\n return this.#_storage[key as TKey];\n }\n\n public getEncodedState(): string {\n return fromUint8Array(this.value.export({ mode: \"snapshot\" }));\n }\n\n public toJson(): InferCrdtJson<TStorage>;\n public toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;\n public toJson<TKey extends keyof TStorage>(type?: TKey) {\n if (typeof type === \"string\") {\n const container = this.#_storage[type] as unknown as Container;\n\n return container instanceof LoroText\n ? container.toString()\n : container instanceof LoroCounter\n ? container.value\n : container.toJSON!();\n }\n\n return Object.entries(this.#_storage).reduce(\n (acc, [key, value]) => ({\n ...(acc as any),\n [key]: value instanceof LoroText ? value.toString() : value.toJSON!(),\n }),\n {} as InferCrdtJson<TStorage>,\n );\n }\n\n public isEmpty(): boolean {\n const serialized = this.value.toJSON();\n\n return !serialized || !Object.keys(serialized).length;\n }\n\n public rebuildStorage(reference: TStorage): this {\n const isBuilt = !!Object.keys(this.#_storage).length;\n\n if (isBuilt) {\n console.warn(\"Attempted to rebuild storage multiple times\");\n return this;\n }\n\n this.#_storage = Object.entries(reference).reduce((acc, [key, node]) => {\n if (node instanceof LoroCounter) return { ...acc, [key]: this.value.getCounter(key) };\n if (node instanceof LoroList) return { ...acc, [key]: this.value.getList(key) };\n if (node instanceof LoroMap) return { ...acc, [key]: this.value.getMap(key) };\n if (node instanceof LoroMovableList) {\n return { ...acc, [key]: this.value.getMovableList(key) };\n }\n if (node instanceof LoroText) return { ...acc, [key]: this.value.getText(key) };\n if (node instanceof LoroTree) return { ...acc, [key]: this.value.getTree(key) };\n\n return acc;\n }, {} as TStorage);\n\n return this.track();\n }\n\n public redo(): this {\n this.#_undoManager?.redo();\n\n return this;\n }\n\n public subscribe(\n listener: (params: DocSubscribeCallbackParams<LoroDoc, TStorage>) => void,\n ): () => void {\n const fn = (event: LoroEventBatch) => {\n const update = fromUint8Array(this.value.export({ mode: \"update\" }));\n\n listener({\n doc: this,\n local: event.by === \"local\",\n origin: event.origin ? String(event.origin) : null,\n update,\n });\n };\n\n const unsubcribeAll = Object.values(this.#_storage).reduce<() => void>(\n (acc, crdtType) => {\n const container = crdtType as unknown as Container;\n const unsubscribe = container.subscribe(fn);\n\n return () => {\n acc();\n unsubscribe();\n };\n },\n () => undefined,\n );\n\n return unsubcribeAll;\n }\n\n public track(): this {\n if (this.#_undoManager) {\n this.#_undoManager.clear();\n this.#_undoManager.free();\n\n this.#_undoManager = null;\n }\n\n this.#_undoManager = new UndoManager(this.value, {\n maxUndoSteps: MAX_UNDO_STEPS,\n mergeInterval: MERGE_INTERVAL_MS,\n });\n\n return this;\n }\n\n /**\n * @description Unlike Yjs, this method is required to be called after each loro operation.\n * @date January 12, 2025\n */\n public transact(fn: () => void): this {\n fn();\n\n this.value.commit();\n\n return this;\n }\n\n public undo(): this {\n this.#_undoManager?.undo();\n\n return this;\n }\n\n #_setPluvId() {\n const text = this.value.getText(PLUV_ID_FIELD);\n const id = typeof crypto !== \"undefined\" ? crypto.randomUUID() : Math.random().toString();\n\n text.insert(0, id);\n }\n}\n","import { AbstractCrdtDocFactory } from \"@pluv/crdt\";\nimport type { LoroDoc } from \"loro-crdt\";\nimport type { LoroType } from \"../types\";\nimport { CrdtLoroDoc } from \"./CrdtLoroDoc\";\nimport type { LoroBuilder } from \"./builder\";\n\nexport class CrdtLoroDocFactory<\n TStorage extends Record<string, LoroType<any, any>>,\n> extends AbstractCrdtDocFactory<LoroDoc, TStorage> {\n public readonly _initialStorage: (builder: LoroBuilder) => TStorage;\n\n constructor(initialStorage: (builder: LoroBuilder) => TStorage = () => ({}) as TStorage) {\n super(initialStorage);\n\n this._initialStorage = initialStorage;\n }\n\n public getEmpty(): CrdtLoroDoc<TStorage> {\n return new CrdtLoroDoc<TStorage>();\n }\n\n public getFactory(\n initialStorage?: ((builder: LoroBuilder) => TStorage) | undefined,\n ): CrdtLoroDocFactory<TStorage> {\n return new CrdtLoroDocFactory<TStorage>(initialStorage ?? this._initialStorage);\n }\n\n public getInitialized(\n initialStorage?: (builder: LoroBuilder) => TStorage,\n ): CrdtLoroDoc<TStorage> {\n return new CrdtLoroDoc<TStorage>(initialStorage ?? this._initialStorage);\n }\n}\n","import type { LoroType } from \"../types\";\nimport type { LoroBuilder } from \"./builder\";\nimport { CrdtLoroDocFactory } from \"./CrdtLoroDocFactory\";\n\nexport const doc = <TStorage extends Record<string, LoroType<any, any>>>(\n value: (builder: LoroBuilder) => TStorage = () => ({}) as TStorage,\n): CrdtLoroDocFactory<TStorage> => {\n return new CrdtLoroDocFactory<TStorage>(value);\n};\n","import type { Container } from \"loro-crdt\";\nimport { LoroList, isContainer } from \"loro-crdt\";\nimport type { LoroType } from \"./types\";\n\nexport const list = <T extends unknown>(\n value: T[] | readonly T[] = [],\n): LoroType<LoroList<T>, T[]> => {\n const container = new LoroList();\n\n value.forEach((item, i) => {\n if (isContainer(item)) container.insertContainer(i, item);\n else container.insert(i, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroList<T>, T[]>;\n};\n","import type { Container } from \"loro-crdt\";\nimport { LoroMap, isContainer } from \"loro-crdt\";\nimport type { LoroType } from \"./types\";\n\nexport const map = <T extends unknown>(\n value: readonly (readonly [key: string, value: T])[] = [],\n): LoroType<LoroMap<Record<string, T>>, Record<string, T>> => {\n const container = new LoroMap();\n\n value.forEach(([key, item]) => {\n if (isContainer(item)) container.setContainer(key, item);\n else container.set(key, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMap<Record<string, T>>, Record<string, T>>;\n};\n","import type { Container } from \"loro-crdt\";\nimport { isContainer, LoroMovableList } from \"loro-crdt\";\nimport type { LoroType } from \"./types\";\n\nexport const movableList = <T extends unknown>(value: T[] | readonly T[] = []) => {\n const container = new LoroMovableList();\n\n value.forEach((item, i) => {\n if (isContainer(item)) container.insertContainer(i, item);\n else container.insert(i, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMovableList<T>, T[]>;\n};\n","import type { Container } from \"loro-crdt\";\nimport { LoroMap, isContainer } from \"loro-crdt\";\nimport type { LoroType } from \"./types\";\n\nexport const object = <T extends Record<string, any>>(value: T): LoroType<LoroMap<T>, T> => {\n const container = new LoroMap();\n\n Object.entries(value).forEach(([key, item]) => {\n if (isContainer(item)) container.setContainer(key, item);\n else container.set(key, item as Exclude<T, Container>);\n });\n\n return container as unknown as LoroType<LoroMap<T>, T>;\n};\n","import { LoroText } from \"loro-crdt\";\nimport type { LoroType } from \"./types\";\n\nexport const text = (value: string = \"\"): LoroType<LoroText, string> => {\n const container = new LoroText();\n\n container.insert(0, value);\n\n return container as unknown as LoroType<LoroText, string>;\n};\n","import { LoroTree } from \"loro-crdt\";\n\nexport const tree = <T extends Record<string, unknown>>() => {\n const container = new LoroTree<T>();\n\n return container;\n};\n","export { counter } from \"./counter\";\nexport { CrdtLoroDoc, doc } from \"./doc\";\nexport type { LoroBuilder } from \"./doc\";\nexport { list } from \"./list\";\nexport { map } from \"./map\";\nexport { movableList } from \"./movableList\";\nexport { object } from \"./object\";\nexport { text } from \"./text\";\nexport { tree } from \"./tree\";\nexport type { LoroType } from \"./types\";\nexport const kind = \"loro\" as const;\n"],"mappings":"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"}
package/dist/bundler.mjs CHANGED
@@ -1,10 +1,8 @@
1
+ import { LoroCounter, LoroDoc, LoroList, LoroMap, LoroMovableList, LoroText, LoroTree, UndoManager, isContainer } from "loro-crdt/bundler";
1
2
  import { fromUint8Array, toUint8Array } from "js-base64";
2
3
  import { AbstractCrdtDocFactory } from "@pluv/crdt";
3
4
  //#region \0rolldown/runtime.js
4
5
  var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __exportAll = (all, no_symbols) => {
9
7
  let target = {};
10
8
  for (var name in all) __defProp(target, name, {
@@ -14,26 +12,10 @@ var __exportAll = (all, no_symbols) => {
14
12
  if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
15
13
  return target;
16
14
  };
17
- var __copyProps = (to, from, except, desc) => {
18
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
19
- key = keys[i];
20
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
21
- get: ((k) => from[k]).bind(null, key),
22
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
23
- });
24
- }
25
- return to;
26
- };
27
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
28
- //#endregion
29
- //#region src/loro-runtime.bundler.ts
30
- var loro_runtime_bundler_exports = /* @__PURE__ */ __exportAll({});
31
- import * as import_loro_crdt_bundler from "loro-crdt/bundler";
32
- __reExport(loro_runtime_bundler_exports, import_loro_crdt_bundler);
33
15
  //#endregion
34
16
  //#region src/counter.ts
35
17
  const counter = () => {
36
- return new loro_runtime_bundler_exports.LoroCounter();
18
+ return new LoroCounter();
37
19
  };
38
20
  //#endregion
39
21
  //#region src/doc/builder.ts
@@ -45,7 +27,7 @@ const builder = (doc) => {
45
27
  list(name, value = []) {
46
28
  const list = doc.getList(name);
47
29
  value.forEach((item, i) => {
48
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) list.insertContainer(i, item);
30
+ if (isContainer(item)) list.insertContainer(i, item);
49
31
  else list.insert(i, item);
50
32
  });
51
33
  return list;
@@ -53,7 +35,7 @@ const builder = (doc) => {
53
35
  map(name, value = {}) {
54
36
  const container = doc.getMap(name);
55
37
  Object.entries(value).forEach(([key, item]) => {
56
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) container.setContainer(key, item);
38
+ if (isContainer(item)) container.setContainer(key, item);
57
39
  else container.set(key, item);
58
40
  });
59
41
  return container;
@@ -61,7 +43,7 @@ const builder = (doc) => {
61
43
  moveableList(name, value = []) {
62
44
  const list = doc.getMovableList(name);
63
45
  value.forEach((item, i) => {
64
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) list.insertContainer(i, item);
46
+ if (isContainer(item)) list.insertContainer(i, item);
65
47
  else list.insert(i, item);
66
48
  });
67
49
  return list;
@@ -82,7 +64,7 @@ const MAX_UNDO_STEPS = 100;
82
64
  const MERGE_INTERVAL_MS = 1e3;
83
65
  const PLUV_ID_FIELD = "__$pluv";
84
66
  var CrdtLoroDoc = class {
85
- value = new loro_runtime_bundler_exports.LoroDoc();
67
+ value = new LoroDoc();
86
68
  #_storage;
87
69
  #_undoManager = null;
88
70
  constructor(params = () => ({})) {
@@ -142,11 +124,11 @@ var CrdtLoroDoc = class {
142
124
  toJson(type) {
143
125
  if (typeof type === "string") {
144
126
  const container = this.#_storage[type];
145
- return container instanceof loro_runtime_bundler_exports.LoroText ? container.toString() : container instanceof loro_runtime_bundler_exports.LoroCounter ? container.value : container.toJSON();
127
+ return container instanceof LoroText ? container.toString() : container instanceof LoroCounter ? container.value : container.toJSON();
146
128
  }
147
129
  return Object.entries(this.#_storage).reduce((acc, [key, value]) => ({
148
130
  ...acc,
149
- [key]: value instanceof loro_runtime_bundler_exports.LoroText ? value.toString() : value.toJSON()
131
+ [key]: value instanceof LoroText ? value.toString() : value.toJSON()
150
132
  }), {});
151
133
  }
152
134
  isEmpty() {
@@ -159,27 +141,27 @@ var CrdtLoroDoc = class {
159
141
  return this;
160
142
  }
161
143
  this.#_storage = Object.entries(reference).reduce((acc, [key, node]) => {
162
- if (node instanceof loro_runtime_bundler_exports.LoroCounter) return {
144
+ if (node instanceof LoroCounter) return {
163
145
  ...acc,
164
146
  [key]: this.value.getCounter(key)
165
147
  };
166
- if (node instanceof loro_runtime_bundler_exports.LoroList) return {
148
+ if (node instanceof LoroList) return {
167
149
  ...acc,
168
150
  [key]: this.value.getList(key)
169
151
  };
170
- if (node instanceof loro_runtime_bundler_exports.LoroMap) return {
152
+ if (node instanceof LoroMap) return {
171
153
  ...acc,
172
154
  [key]: this.value.getMap(key)
173
155
  };
174
- if (node instanceof loro_runtime_bundler_exports.LoroMovableList) return {
156
+ if (node instanceof LoroMovableList) return {
175
157
  ...acc,
176
158
  [key]: this.value.getMovableList(key)
177
159
  };
178
- if (node instanceof loro_runtime_bundler_exports.LoroText) return {
160
+ if (node instanceof LoroText) return {
179
161
  ...acc,
180
162
  [key]: this.value.getText(key)
181
163
  };
182
- if (node instanceof loro_runtime_bundler_exports.LoroTree) return {
164
+ if (node instanceof LoroTree) return {
183
165
  ...acc,
184
166
  [key]: this.value.getTree(key)
185
167
  };
@@ -215,7 +197,7 @@ var CrdtLoroDoc = class {
215
197
  this.#_undoManager.free();
216
198
  this.#_undoManager = null;
217
199
  }
218
- this.#_undoManager = new loro_runtime_bundler_exports.UndoManager(this.value, {
200
+ this.#_undoManager = new UndoManager(this.value, {
219
201
  maxUndoSteps: MAX_UNDO_STEPS,
220
202
  mergeInterval: MERGE_INTERVAL_MS
221
203
  });
@@ -266,9 +248,9 @@ const doc = (value = () => ({})) => {
266
248
  //#endregion
267
249
  //#region src/list.ts
268
250
  const list = (value = []) => {
269
- const container = new loro_runtime_bundler_exports.LoroList();
251
+ const container = new LoroList();
270
252
  value.forEach((item, i) => {
271
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) container.insertContainer(i, item);
253
+ if (isContainer(item)) container.insertContainer(i, item);
272
254
  else container.insert(i, item);
273
255
  });
274
256
  return container;
@@ -276,9 +258,9 @@ const list = (value = []) => {
276
258
  //#endregion
277
259
  //#region src/map.ts
278
260
  const map = (value = []) => {
279
- const container = new loro_runtime_bundler_exports.LoroMap();
261
+ const container = new LoroMap();
280
262
  value.forEach(([key, item]) => {
281
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) container.setContainer(key, item);
263
+ if (isContainer(item)) container.setContainer(key, item);
282
264
  else container.set(key, item);
283
265
  });
284
266
  return container;
@@ -286,9 +268,9 @@ const map = (value = []) => {
286
268
  //#endregion
287
269
  //#region src/movableList.ts
288
270
  const movableList = (value = []) => {
289
- const container = new loro_runtime_bundler_exports.LoroMovableList();
271
+ const container = new LoroMovableList();
290
272
  value.forEach((item, i) => {
291
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) container.insertContainer(i, item);
273
+ if (isContainer(item)) container.insertContainer(i, item);
292
274
  else container.insert(i, item);
293
275
  });
294
276
  return container;
@@ -296,9 +278,9 @@ const movableList = (value = []) => {
296
278
  //#endregion
297
279
  //#region src/object.ts
298
280
  const object = (value) => {
299
- const container = new loro_runtime_bundler_exports.LoroMap();
281
+ const container = new LoroMap();
300
282
  Object.entries(value).forEach(([key, item]) => {
301
- if ((0, loro_runtime_bundler_exports.isContainer)(item)) container.setContainer(key, item);
283
+ if (isContainer(item)) container.setContainer(key, item);
302
284
  else container.set(key, item);
303
285
  });
304
286
  return container;
@@ -306,14 +288,14 @@ const object = (value) => {
306
288
  //#endregion
307
289
  //#region src/text.ts
308
290
  const text = (value = "") => {
309
- const container = new loro_runtime_bundler_exports.LoroText();
291
+ const container = new LoroText();
310
292
  container.insert(0, value);
311
293
  return container;
312
294
  };
313
295
  //#endregion
314
296
  //#region src/tree.ts
315
297
  const tree = () => {
316
- return new loro_runtime_bundler_exports.LoroTree();
298
+ return new LoroTree();
317
299
  };
318
300
  //#endregion
319
301
  //#region src/loro.ts