@liveblocks/client 0.15.0-alpha.2 → 0.15.0

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.
Files changed (62) hide show
  1. package/lib/esm/index.js +2991 -5
  2. package/lib/esm/index.mjs +2991 -0
  3. package/lib/esm/internal.js +149 -0
  4. package/lib/esm/internal.mjs +149 -0
  5. package/lib/{esm/types.d.ts → index.d.ts} +255 -50
  6. package/lib/index.js +4237 -0
  7. package/lib/{esm/live.d.ts → internal.d.ts} +46 -34
  8. package/lib/internal.js +193 -0
  9. package/package.json +36 -9
  10. package/lib/cjs/AbstractCrdt.d.ts +0 -67
  11. package/lib/cjs/AbstractCrdt.js +0 -95
  12. package/lib/cjs/LiveList.d.ts +0 -144
  13. package/lib/cjs/LiveList.js +0 -527
  14. package/lib/cjs/LiveMap.d.ts +0 -91
  15. package/lib/cjs/LiveMap.js +0 -322
  16. package/lib/cjs/LiveObject.d.ts +0 -80
  17. package/lib/cjs/LiveObject.js +0 -453
  18. package/lib/cjs/LiveRegister.d.ts +0 -29
  19. package/lib/cjs/LiveRegister.js +0 -88
  20. package/lib/cjs/authentication.d.ts +0 -3
  21. package/lib/cjs/authentication.js +0 -71
  22. package/lib/cjs/client.d.ts +0 -27
  23. package/lib/cjs/client.js +0 -80
  24. package/lib/cjs/immutable.d.ts +0 -9
  25. package/lib/cjs/immutable.js +0 -291
  26. package/lib/cjs/index.d.ts +0 -6
  27. package/lib/cjs/index.js +0 -18
  28. package/lib/cjs/live.d.ts +0 -181
  29. package/lib/cjs/live.js +0 -49
  30. package/lib/cjs/position.d.ts +0 -6
  31. package/lib/cjs/position.js +0 -113
  32. package/lib/cjs/room.d.ts +0 -159
  33. package/lib/cjs/room.js +0 -1094
  34. package/lib/cjs/types.d.ts +0 -489
  35. package/lib/cjs/types.js +0 -2
  36. package/lib/cjs/utils.d.ts +0 -11
  37. package/lib/cjs/utils.js +0 -175
  38. package/lib/esm/AbstractCrdt.d.ts +0 -67
  39. package/lib/esm/AbstractCrdt.js +0 -91
  40. package/lib/esm/LiveList.d.ts +0 -144
  41. package/lib/esm/LiveList.js +0 -523
  42. package/lib/esm/LiveMap.d.ts +0 -91
  43. package/lib/esm/LiveMap.js +0 -318
  44. package/lib/esm/LiveObject.d.ts +0 -80
  45. package/lib/esm/LiveObject.js +0 -449
  46. package/lib/esm/LiveRegister.d.ts +0 -29
  47. package/lib/esm/LiveRegister.js +0 -84
  48. package/lib/esm/authentication.d.ts +0 -3
  49. package/lib/esm/authentication.js +0 -66
  50. package/lib/esm/client.d.ts +0 -27
  51. package/lib/esm/client.js +0 -76
  52. package/lib/esm/immutable.d.ts +0 -9
  53. package/lib/esm/immutable.js +0 -282
  54. package/lib/esm/index.d.ts +0 -6
  55. package/lib/esm/live.js +0 -46
  56. package/lib/esm/position.d.ts +0 -6
  57. package/lib/esm/position.js +0 -106
  58. package/lib/esm/room.d.ts +0 -159
  59. package/lib/esm/room.js +0 -1069
  60. package/lib/esm/types.js +0 -1
  61. package/lib/esm/utils.d.ts +0 -11
  62. package/lib/esm/utils.js +0 -164
@@ -1,6 +1,9 @@
1
- import { Presence } from "./types";
2
- export declare type ServerMessage = UpdatePresenceMessage | UserJoinMessage | UserLeftMessage | EventMessage | RoomStateMessage | InitialDocumentStateMessage | UpdateStorageMessage;
3
- export declare enum ServerMessageType {
1
+ declare type Presence = {
2
+ [key: string]: any;
3
+ };
4
+
5
+ declare type ServerMessage = UpdatePresenceMessage | UserJoinMessage | UserLeftMessage | EventMessage | RoomStateMessage | InitialDocumentStateMessage | UpdateStorageMessage;
6
+ declare enum ServerMessageType {
4
7
  UpdatePresence = 100,
5
8
  UserJoined = 101,
6
9
  UserLeft = 102,
@@ -9,7 +12,7 @@ export declare enum ServerMessageType {
9
12
  InitialStorageState = 200,
10
13
  UpdateStorage = 201
11
14
  }
12
- export declare type RoomStateMessage = {
15
+ declare type RoomStateMessage = {
13
16
  type: ServerMessageType.RoomState;
14
17
  users: {
15
18
  [actor: number]: {
@@ -18,65 +21,65 @@ export declare type RoomStateMessage = {
18
21
  };
19
22
  };
20
23
  };
21
- export declare type UpdatePresenceMessage = {
24
+ declare type UpdatePresenceMessage = {
22
25
  type: ServerMessageType.UpdatePresence;
23
26
  actor: number;
24
27
  data: Presence;
25
28
  };
26
- export declare type UserJoinMessage = {
29
+ declare type UserJoinMessage = {
27
30
  type: ServerMessageType.UserJoined;
28
31
  actor: number;
29
32
  id?: string;
30
33
  info?: string;
31
34
  };
32
- export declare type UserLeftMessage = {
35
+ declare type UserLeftMessage = {
33
36
  type: ServerMessageType.UserLeft;
34
37
  actor: number;
35
38
  };
36
- export declare type EventMessage = {
39
+ declare type EventMessage = {
37
40
  type: ServerMessageType.Event;
38
41
  actor: number;
39
42
  event: any;
40
43
  };
41
- export declare type SerializedCrdtWithId = [id: string, crdt: SerializedCrdt];
42
- export declare type InitialDocumentStateMessage = {
44
+ declare type SerializedCrdtWithId = [id: string, crdt: SerializedCrdt];
45
+ declare type InitialDocumentStateMessage = {
43
46
  type: ServerMessageType.InitialStorageState;
44
47
  items: SerializedCrdtWithId[];
45
48
  };
46
- export declare type UpdateStorageMessage = {
49
+ declare type UpdateStorageMessage = {
47
50
  type: ServerMessageType.UpdateStorage;
48
51
  ops: Op[];
49
52
  };
50
- export declare type ClientMessage = ClientEventMessage | UpdatePresenceClientMessage | UpdateStorageClientMessage | FetchStorageClientMessage;
51
- export declare enum ClientMessageType {
53
+ declare type ClientMessage = ClientEventMessage | UpdatePresenceClientMessage | UpdateStorageClientMessage | FetchStorageClientMessage;
54
+ declare enum ClientMessageType {
52
55
  UpdatePresence = 100,
53
56
  ClientEvent = 103,
54
57
  FetchStorage = 200,
55
58
  UpdateStorage = 201
56
59
  }
57
- export declare type ClientEventMessage = {
60
+ declare type ClientEventMessage = {
58
61
  type: ClientMessageType.ClientEvent;
59
62
  event: any;
60
63
  };
61
- export declare type UpdatePresenceClientMessage = {
64
+ declare type UpdatePresenceClientMessage = {
62
65
  type: ClientMessageType.UpdatePresence;
63
66
  data: Presence;
64
67
  targetActor?: number;
65
68
  };
66
- export declare type UpdateStorageClientMessage = {
69
+ declare type UpdateStorageClientMessage = {
67
70
  type: ClientMessageType.UpdateStorage;
68
71
  ops: Op[];
69
72
  };
70
- export declare type FetchStorageClientMessage = {
73
+ declare type FetchStorageClientMessage = {
71
74
  type: ClientMessageType.FetchStorage;
72
75
  };
73
- export declare enum CrdtType {
76
+ declare enum CrdtType {
74
77
  Object = 0,
75
78
  List = 1,
76
79
  Map = 2,
77
80
  Register = 3
78
81
  }
79
- export declare type SerializedObject = {
82
+ declare type SerializedObject = {
80
83
  type: CrdtType.Object;
81
84
  parentId?: string;
82
85
  parentKey?: string;
@@ -84,24 +87,24 @@ export declare type SerializedObject = {
84
87
  [key: string]: any;
85
88
  };
86
89
  };
87
- export declare type SerializedList = {
90
+ declare type SerializedList = {
88
91
  type: CrdtType.List;
89
92
  parentId: string;
90
93
  parentKey: string;
91
94
  };
92
- export declare type SerializedMap = {
95
+ declare type SerializedMap = {
93
96
  type: CrdtType.Map;
94
97
  parentId: string;
95
98
  parentKey: string;
96
99
  };
97
- export declare type SerializedRegister = {
100
+ declare type SerializedRegister = {
98
101
  type: CrdtType.Register;
99
102
  parentId: string;
100
103
  parentKey: string;
101
104
  data: any;
102
105
  };
103
- export declare type SerializedCrdt = SerializedObject | SerializedList | SerializedMap | SerializedRegister;
104
- export declare enum OpType {
106
+ declare type SerializedCrdt = SerializedObject | SerializedList | SerializedMap | SerializedRegister;
107
+ declare enum OpType {
105
108
  Init = 0,
106
109
  SetParentKey = 1,
107
110
  CreateList = 2,
@@ -112,8 +115,8 @@ export declare enum OpType {
112
115
  CreateMap = 7,
113
116
  CreateRegister = 8
114
117
  }
115
- export declare type Op = CreateObjectOp | UpdateObjectOp | DeleteCrdtOp | CreateListOp | SetParentKeyOp | DeleteObjectKeyOp | CreateMapOp | CreateRegisterOp;
116
- export declare type UpdateObjectOp = {
118
+ declare type Op = CreateObjectOp | UpdateObjectOp | DeleteCrdtOp | CreateListOp | SetParentKeyOp | DeleteObjectKeyOp | CreateMapOp | CreateRegisterOp;
119
+ declare type UpdateObjectOp = {
117
120
  opId?: string;
118
121
  id: string;
119
122
  type: OpType.UpdateObject;
@@ -121,7 +124,7 @@ export declare type UpdateObjectOp = {
121
124
  [key: string]: any;
122
125
  };
123
126
  };
124
- export declare type CreateObjectOp = {
127
+ declare type CreateObjectOp = {
125
128
  opId?: string;
126
129
  id: string;
127
130
  type: OpType.CreateObject;
@@ -131,21 +134,21 @@ export declare type CreateObjectOp = {
131
134
  [key: string]: any;
132
135
  };
133
136
  };
134
- export declare type CreateListOp = {
137
+ declare type CreateListOp = {
135
138
  opId?: string;
136
139
  id: string;
137
140
  type: OpType.CreateList;
138
141
  parentId: string;
139
142
  parentKey: string;
140
143
  };
141
- export declare type CreateMapOp = {
144
+ declare type CreateMapOp = {
142
145
  opId?: string;
143
146
  id: string;
144
147
  type: OpType.CreateMap;
145
148
  parentId: string;
146
149
  parentKey: string;
147
150
  };
148
- export declare type CreateRegisterOp = {
151
+ declare type CreateRegisterOp = {
149
152
  opId?: string;
150
153
  id: string;
151
154
  type: OpType.CreateRegister;
@@ -153,24 +156,24 @@ export declare type CreateRegisterOp = {
153
156
  parentKey: string;
154
157
  data: any;
155
158
  };
156
- export declare type DeleteCrdtOp = {
159
+ declare type DeleteCrdtOp = {
157
160
  opId?: string;
158
161
  id: string;
159
162
  type: OpType.DeleteCrdt;
160
163
  };
161
- export declare type SetParentKeyOp = {
164
+ declare type SetParentKeyOp = {
162
165
  opId?: string;
163
166
  id: string;
164
167
  type: OpType.SetParentKey;
165
168
  parentKey: string;
166
169
  };
167
- export declare type DeleteObjectKeyOp = {
170
+ declare type DeleteObjectKeyOp = {
168
171
  opId?: string;
169
172
  id: string;
170
173
  type: OpType.DeleteObjectKey;
171
174
  key: string;
172
175
  };
173
- export declare enum WebsocketCloseCodes {
176
+ declare enum WebsocketCloseCodes {
174
177
  CLOSE_ABNORMAL = 1006,
175
178
  INVALID_MESSAGE_FORMAT = 4000,
176
179
  NOT_ALLOWED = 4001,
@@ -179,3 +182,12 @@ export declare enum WebsocketCloseCodes {
179
182
  MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP = 4004,
180
183
  MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM = 4005
181
184
  }
185
+
186
+ declare const min = 32;
187
+ declare const max = 126;
188
+ declare function makePosition(before?: string, after?: string): string;
189
+ declare function posCodes(str: string): number[];
190
+ declare function pos(codes: number[]): string;
191
+ declare function compare(posA: string, posB: string): number;
192
+
193
+ export { ClientEventMessage, ClientMessage, ClientMessageType, CrdtType, CreateListOp, CreateMapOp, CreateObjectOp, CreateRegisterOp, DeleteCrdtOp, DeleteObjectKeyOp, EventMessage, FetchStorageClientMessage, InitialDocumentStateMessage, Op, OpType, RoomStateMessage, SerializedCrdt, SerializedCrdtWithId, SerializedList, SerializedMap, SerializedObject, SerializedRegister, ServerMessage, ServerMessageType, SetParentKeyOp, UpdateObjectOp, UpdatePresenceClientMessage, UpdatePresenceMessage, UpdateStorageClientMessage, UpdateStorageMessage, UserJoinMessage, UserLeftMessage, WebsocketCloseCodes, compare, makePosition, max, min, pos, posCodes };
@@ -0,0 +1,193 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ exports.ServerMessageType = void 0;
6
+
7
+ (function (ServerMessageType) {
8
+ ServerMessageType[ServerMessageType["UpdatePresence"] = 100] = "UpdatePresence";
9
+ ServerMessageType[ServerMessageType["UserJoined"] = 101] = "UserJoined";
10
+ ServerMessageType[ServerMessageType["UserLeft"] = 102] = "UserLeft";
11
+ ServerMessageType[ServerMessageType["Event"] = 103] = "Event";
12
+ ServerMessageType[ServerMessageType["RoomState"] = 104] = "RoomState";
13
+ ServerMessageType[ServerMessageType["InitialStorageState"] = 200] = "InitialStorageState";
14
+ ServerMessageType[ServerMessageType["UpdateStorage"] = 201] = "UpdateStorage";
15
+ })(exports.ServerMessageType || (exports.ServerMessageType = {}));
16
+
17
+ exports.ClientMessageType = void 0;
18
+
19
+ (function (ClientMessageType) {
20
+ ClientMessageType[ClientMessageType["UpdatePresence"] = 100] = "UpdatePresence";
21
+ ClientMessageType[ClientMessageType["ClientEvent"] = 103] = "ClientEvent";
22
+ ClientMessageType[ClientMessageType["FetchStorage"] = 200] = "FetchStorage";
23
+ ClientMessageType[ClientMessageType["UpdateStorage"] = 201] = "UpdateStorage";
24
+ })(exports.ClientMessageType || (exports.ClientMessageType = {}));
25
+
26
+ exports.CrdtType = void 0;
27
+
28
+ (function (CrdtType) {
29
+ CrdtType[CrdtType["Object"] = 0] = "Object";
30
+ CrdtType[CrdtType["List"] = 1] = "List";
31
+ CrdtType[CrdtType["Map"] = 2] = "Map";
32
+ CrdtType[CrdtType["Register"] = 3] = "Register";
33
+ })(exports.CrdtType || (exports.CrdtType = {}));
34
+
35
+ exports.OpType = void 0;
36
+
37
+ (function (OpType) {
38
+ OpType[OpType["Init"] = 0] = "Init";
39
+ OpType[OpType["SetParentKey"] = 1] = "SetParentKey";
40
+ OpType[OpType["CreateList"] = 2] = "CreateList";
41
+ OpType[OpType["UpdateObject"] = 3] = "UpdateObject";
42
+ OpType[OpType["CreateObject"] = 4] = "CreateObject";
43
+ OpType[OpType["DeleteCrdt"] = 5] = "DeleteCrdt";
44
+ OpType[OpType["DeleteObjectKey"] = 6] = "DeleteObjectKey";
45
+ OpType[OpType["CreateMap"] = 7] = "CreateMap";
46
+ OpType[OpType["CreateRegister"] = 8] = "CreateRegister";
47
+ })(exports.OpType || (exports.OpType = {}));
48
+
49
+ exports.WebsocketCloseCodes = void 0;
50
+
51
+ (function (WebsocketCloseCodes) {
52
+ WebsocketCloseCodes[WebsocketCloseCodes["CLOSE_ABNORMAL"] = 1006] = "CLOSE_ABNORMAL";
53
+ WebsocketCloseCodes[WebsocketCloseCodes["INVALID_MESSAGE_FORMAT"] = 4000] = "INVALID_MESSAGE_FORMAT";
54
+ WebsocketCloseCodes[WebsocketCloseCodes["NOT_ALLOWED"] = 4001] = "NOT_ALLOWED";
55
+ WebsocketCloseCodes[WebsocketCloseCodes["MAX_NUMBER_OF_MESSAGES_PER_SECONDS"] = 4002] = "MAX_NUMBER_OF_MESSAGES_PER_SECONDS";
56
+ WebsocketCloseCodes[WebsocketCloseCodes["MAX_NUMBER_OF_CONCURRENT_CONNECTIONS"] = 4003] = "MAX_NUMBER_OF_CONCURRENT_CONNECTIONS";
57
+ WebsocketCloseCodes[WebsocketCloseCodes["MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP"] = 4004] = "MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP";
58
+ WebsocketCloseCodes[WebsocketCloseCodes["MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM"] = 4005] = "MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM";
59
+ })(exports.WebsocketCloseCodes || (exports.WebsocketCloseCodes = {}));
60
+
61
+ var min = 32;
62
+ var max = 126;
63
+ function makePosition(before, after) {
64
+ if (before == null && after == null) {
65
+ return pos([min + 1]);
66
+ }
67
+
68
+ if (before != null && after == null) {
69
+ return getNextPosition(before);
70
+ }
71
+
72
+ if (before == null && after != null) {
73
+ return getPreviousPosition(after);
74
+ }
75
+
76
+ return pos(makePositionFromCodes(posCodes(before), posCodes(after)));
77
+ }
78
+
79
+ function getPreviousPosition(after) {
80
+ var result = [];
81
+ var afterCodes = posCodes(after);
82
+
83
+ for (var i = 0; i < afterCodes.length; i++) {
84
+ var code = afterCodes[i];
85
+
86
+ if (code <= min + 1) {
87
+ result.push(min);
88
+
89
+ if (afterCodes.length - 1 === i) {
90
+ result.push(max);
91
+ break;
92
+ }
93
+ } else {
94
+ result.push(code - 1);
95
+ break;
96
+ }
97
+ }
98
+
99
+ return pos(result);
100
+ }
101
+
102
+ function getNextPosition(before) {
103
+ var result = [];
104
+ var beforeCodes = posCodes(before);
105
+
106
+ for (var i = 0; i < beforeCodes.length; i++) {
107
+ var code = beforeCodes[i];
108
+
109
+ if (code === max) {
110
+ result.push(code);
111
+
112
+ if (beforeCodes.length - 1 === i) {
113
+ result.push(min + 1);
114
+ break;
115
+ }
116
+ } else {
117
+ result.push(code + 1);
118
+ break;
119
+ }
120
+ }
121
+
122
+ return pos(result);
123
+ }
124
+
125
+ function makePositionFromCodes(before, after) {
126
+ var index = 0;
127
+ var result = [];
128
+
129
+ while (true) {
130
+ var beforeDigit = before[index] || min;
131
+ var afterDigit = after[index] || max;
132
+
133
+ if (beforeDigit > afterDigit) {
134
+ throw new Error("Impossible to generate position between " + before + " and " + after);
135
+ }
136
+
137
+ if (beforeDigit === afterDigit) {
138
+ result.push(beforeDigit);
139
+ index++;
140
+ continue;
141
+ }
142
+
143
+ if (afterDigit - beforeDigit === 1) {
144
+ result.push(beforeDigit);
145
+ result.push.apply(result, makePositionFromCodes(before.slice(index + 1), []));
146
+ break;
147
+ }
148
+
149
+ var mid = afterDigit + beforeDigit >> 1;
150
+ result.push(mid);
151
+ break;
152
+ }
153
+
154
+ return result;
155
+ }
156
+
157
+ function posCodes(str) {
158
+ var codes = [];
159
+
160
+ for (var i = 0; i < str.length; i++) {
161
+ codes.push(str.charCodeAt(i));
162
+ }
163
+
164
+ return codes;
165
+ }
166
+ function pos(codes) {
167
+ return String.fromCharCode.apply(String, codes);
168
+ }
169
+ function compare(posA, posB) {
170
+ var aCodes = posCodes(posA);
171
+ var bCodes = posCodes(posB);
172
+ var maxLength = Math.max(aCodes.length, bCodes.length);
173
+
174
+ for (var i = 0; i < maxLength; i++) {
175
+ var a = aCodes[i] == null ? min : aCodes[i];
176
+ var b = bCodes[i] == null ? min : bCodes[i];
177
+
178
+ if (a === b) {
179
+ continue;
180
+ } else {
181
+ return a - b;
182
+ }
183
+ }
184
+
185
+ throw new Error("Impossible to compare similar position \"" + posA + "\" and \"" + posB + "\"");
186
+ }
187
+
188
+ exports.compare = compare;
189
+ exports.makePosition = makePosition;
190
+ exports.max = max;
191
+ exports.min = min;
192
+ exports.pos = pos;
193
+ exports.posCodes = posCodes;
package/package.json CHANGED
@@ -1,12 +1,27 @@
1
1
  {
2
2
  "name": "@liveblocks/client",
3
- "version": "0.15.0-alpha.2",
3
+ "version": "0.15.0",
4
4
  "description": "",
5
- "main": "./lib/cjs/index.js",
6
- "module": "./lib/esm/index.js",
5
+ "main": "./lib/index.js",
6
+ "types": "./lib/index.d.ts",
7
7
  "files": [
8
- "lib/"
8
+ "lib/**"
9
9
  ],
10
+ "exports": {
11
+ "./package.json": "./package.json",
12
+ ".": {
13
+ "types": "./lib/index.d.ts",
14
+ "module": "./lib/esm/index.js",
15
+ "import": "./lib/esm/index.mjs",
16
+ "default": "./lib/index.js"
17
+ },
18
+ "./internal": {
19
+ "types": "./lib/internal.d.ts",
20
+ "module": "./lib/esm/internal.js",
21
+ "import": "./lib/esm/internal.mjs",
22
+ "default": "./lib/internal.js"
23
+ }
24
+ },
10
25
  "keywords": [
11
26
  "liveblocks",
12
27
  "multiplayer",
@@ -17,21 +32,33 @@
17
32
  "url": "https://github.com/liveblocks/liveblocks/issues"
18
33
  },
19
34
  "scripts": {
20
- "build-and-pack": "npm run build && npm pack",
21
- "build": "npm run build:esm && npm run build:cjs",
22
- "build:esm": "tsc -p tsconfig-esm.json",
23
- "build:cjs": "tsc -p tsconfig-cjs.json",
35
+ "build": "rollup -c",
24
36
  "test": "jest --watch"
25
37
  },
26
38
  "license": "Apache-2.0",
27
39
  "devDependencies": {
28
40
  "@babel/core": "^7.12.16",
41
+ "@babel/plugin-proposal-class-properties": "^7.16.7",
42
+ "@babel/plugin-proposal-private-methods": "^7.16.11",
29
43
  "@babel/preset-env": "^7.12.16",
30
44
  "@babel/preset-typescript": "^7.12.16",
45
+ "@rollup/plugin-babel": "^5.3.1",
46
+ "@rollup/plugin-node-resolve": "^13.1.3",
47
+ "@rollup/plugin-typescript": "^8.3.1",
31
48
  "@types/jest": "^26.0.21",
49
+ "@types/node-fetch": "^2.6.1",
50
+ "@types/ws": "^8.2.2",
32
51
  "babel-jest": "^26.6.3",
33
52
  "jest": "^26.6.3",
34
- "typescript": "^4.4.0"
53
+ "jest-each": "^27.5.1",
54
+ "msw": "^0.39.1",
55
+ "node-fetch": "2.6.7",
56
+ "rollup": "^2.68.0",
57
+ "rollup-plugin-dts": "^4.1.0",
58
+ "rollup-plugin-esbuild": "^4.8.2",
59
+ "typescript": "^4.4.0",
60
+ "whatwg-fetch": "^3.6.2",
61
+ "ws": "^8.5.0"
35
62
  },
36
63
  "repository": {
37
64
  "type": "git",
@@ -1,67 +0,0 @@
1
- import { Op, SerializedCrdt } from "./live";
2
- import { StorageUpdate } from "./types";
3
- export declare type ApplyResult = {
4
- reverse: Op[];
5
- modified: StorageUpdate;
6
- } | {
7
- modified: false;
8
- };
9
- export interface Doc {
10
- generateId: () => string;
11
- generateOpId: () => string;
12
- addItem: (id: string, item: AbstractCrdt) => void;
13
- deleteItem: (id: string) => void;
14
- dispatch: (ops: Op[], reverseOps: Op[], storageUpdates: Map<string, StorageUpdate>) => void;
15
- }
16
- export declare abstract class AbstractCrdt {
17
- #private;
18
- /**
19
- * INTERNAL
20
- */
21
- protected get _doc(): Doc | undefined;
22
- /**
23
- * INTERNAL
24
- */
25
- get _id(): string | undefined;
26
- /**
27
- * INTERNAL
28
- */
29
- get _parent(): AbstractCrdt | undefined;
30
- /**
31
- * INTERNAL
32
- */
33
- get _parentKey(): string | undefined;
34
- /**
35
- * INTERNAL
36
- */
37
- _apply(op: Op, isLocal: boolean): ApplyResult;
38
- /**
39
- * INTERNAL
40
- */
41
- _setParentLink(parent: AbstractCrdt, key: string): void;
42
- /**
43
- * INTERNAL
44
- */
45
- _attach(id: string, doc: Doc): void;
46
- /**
47
- * INTERNAL
48
- */
49
- abstract _attachChild(id: string, key: string, crdt: AbstractCrdt, isLocal: boolean): ApplyResult;
50
- /**
51
- * INTERNAL
52
- */
53
- _detach(): void;
54
- /**
55
- * INTERNAL
56
- */
57
- abstract _detachChild(crdt: AbstractCrdt): ApplyResult;
58
- /**
59
- * INTERNAL
60
- */
61
- abstract _serialize(parentId: string, parentKey: string, doc?: Doc): Op[];
62
- /**
63
- * INTERNAL
64
- */
65
- abstract _toSerializedCrdt(): SerializedCrdt;
66
- abstract _getType(): string;
67
- }
@@ -1,95 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
- if (kind === "m") throw new TypeError("Private method is not writable");
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
- };
13
- var _AbstractCrdt_parent, _AbstractCrdt_doc, _AbstractCrdt_id, _AbstractCrdt_parentKey;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.AbstractCrdt = void 0;
16
- const live_1 = require("./live");
17
- class AbstractCrdt {
18
- constructor() {
19
- _AbstractCrdt_parent.set(this, void 0);
20
- _AbstractCrdt_doc.set(this, void 0);
21
- _AbstractCrdt_id.set(this, void 0);
22
- _AbstractCrdt_parentKey.set(this, void 0);
23
- }
24
- /**
25
- * INTERNAL
26
- */
27
- get _doc() {
28
- return __classPrivateFieldGet(this, _AbstractCrdt_doc, "f");
29
- }
30
- /**
31
- * INTERNAL
32
- */
33
- get _id() {
34
- return __classPrivateFieldGet(this, _AbstractCrdt_id, "f");
35
- }
36
- /**
37
- * INTERNAL
38
- */
39
- get _parent() {
40
- return __classPrivateFieldGet(this, _AbstractCrdt_parent, "f");
41
- }
42
- /**
43
- * INTERNAL
44
- */
45
- get _parentKey() {
46
- return __classPrivateFieldGet(this, _AbstractCrdt_parentKey, "f");
47
- }
48
- /**
49
- * INTERNAL
50
- */
51
- _apply(op, isLocal) {
52
- switch (op.type) {
53
- case live_1.OpType.DeleteCrdt: {
54
- if (this._parent != null && this._parentKey != null) {
55
- return this._parent._detachChild(this);
56
- }
57
- return { modified: false };
58
- }
59
- }
60
- return { modified: false };
61
- }
62
- /**
63
- * INTERNAL
64
- */
65
- _setParentLink(parent, key) {
66
- if (__classPrivateFieldGet(this, _AbstractCrdt_parent, "f") != null && __classPrivateFieldGet(this, _AbstractCrdt_parent, "f") !== parent) {
67
- throw new Error("Cannot attach parent if it already exist");
68
- }
69
- __classPrivateFieldSet(this, _AbstractCrdt_parentKey, key, "f");
70
- __classPrivateFieldSet(this, _AbstractCrdt_parent, parent, "f");
71
- }
72
- /**
73
- * INTERNAL
74
- */
75
- _attach(id, doc) {
76
- if (__classPrivateFieldGet(this, _AbstractCrdt_id, "f") || __classPrivateFieldGet(this, _AbstractCrdt_doc, "f")) {
77
- throw new Error("Cannot attach if CRDT is already attached");
78
- }
79
- doc.addItem(id, this);
80
- __classPrivateFieldSet(this, _AbstractCrdt_id, id, "f");
81
- __classPrivateFieldSet(this, _AbstractCrdt_doc, doc, "f");
82
- }
83
- /**
84
- * INTERNAL
85
- */
86
- _detach() {
87
- if (__classPrivateFieldGet(this, _AbstractCrdt_doc, "f") && __classPrivateFieldGet(this, _AbstractCrdt_id, "f")) {
88
- __classPrivateFieldGet(this, _AbstractCrdt_doc, "f").deleteItem(__classPrivateFieldGet(this, _AbstractCrdt_id, "f"));
89
- }
90
- __classPrivateFieldSet(this, _AbstractCrdt_parent, undefined, "f");
91
- __classPrivateFieldSet(this, _AbstractCrdt_doc, undefined, "f");
92
- }
93
- }
94
- exports.AbstractCrdt = AbstractCrdt;
95
- _AbstractCrdt_parent = new WeakMap(), _AbstractCrdt_doc = new WeakMap(), _AbstractCrdt_id = new WeakMap(), _AbstractCrdt_parentKey = new WeakMap();