@liveblocks/client 0.15.0-alpha.3 → 0.15.1

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 (59) hide show
  1. package/README.md +5 -10
  2. package/lib/esm/index.js +2991 -5
  3. package/lib/esm/index.mjs +2991 -0
  4. package/lib/esm/internal.js +149 -0
  5. package/lib/esm/internal.mjs +149 -0
  6. package/lib/{esm/types.d.ts → index.d.ts} +253 -61
  7. package/lib/index.js +4237 -0
  8. package/lib/{esm/live.d.ts → internal.d.ts} +46 -34
  9. package/lib/internal.js +193 -0
  10. package/package.json +32 -10
  11. package/lib/cjs/AbstractCrdt.d.ts +0 -68
  12. package/lib/cjs/AbstractCrdt.js +0 -95
  13. package/lib/cjs/LiveList.d.ts +0 -144
  14. package/lib/cjs/LiveList.js +0 -530
  15. package/lib/cjs/LiveMap.d.ts +0 -91
  16. package/lib/cjs/LiveMap.js +0 -325
  17. package/lib/cjs/LiveObject.d.ts +0 -80
  18. package/lib/cjs/LiveObject.js +0 -485
  19. package/lib/cjs/LiveRegister.d.ts +0 -29
  20. package/lib/cjs/LiveRegister.js +0 -88
  21. package/lib/cjs/client.d.ts +0 -27
  22. package/lib/cjs/client.js +0 -123
  23. package/lib/cjs/immutable.d.ts +0 -9
  24. package/lib/cjs/immutable.js +0 -299
  25. package/lib/cjs/index.d.ts +0 -6
  26. package/lib/cjs/index.js +0 -18
  27. package/lib/cjs/live.d.ts +0 -181
  28. package/lib/cjs/live.js +0 -49
  29. package/lib/cjs/position.d.ts +0 -6
  30. package/lib/cjs/position.js +0 -113
  31. package/lib/cjs/room.d.ts +0 -159
  32. package/lib/cjs/room.js +0 -1129
  33. package/lib/cjs/types.d.ts +0 -502
  34. package/lib/cjs/types.js +0 -2
  35. package/lib/cjs/utils.d.ts +0 -15
  36. package/lib/cjs/utils.js +0 -225
  37. package/lib/esm/AbstractCrdt.d.ts +0 -68
  38. package/lib/esm/AbstractCrdt.js +0 -91
  39. package/lib/esm/LiveList.d.ts +0 -144
  40. package/lib/esm/LiveList.js +0 -526
  41. package/lib/esm/LiveMap.d.ts +0 -91
  42. package/lib/esm/LiveMap.js +0 -321
  43. package/lib/esm/LiveObject.d.ts +0 -80
  44. package/lib/esm/LiveObject.js +0 -481
  45. package/lib/esm/LiveRegister.d.ts +0 -29
  46. package/lib/esm/LiveRegister.js +0 -84
  47. package/lib/esm/client.d.ts +0 -27
  48. package/lib/esm/client.js +0 -119
  49. package/lib/esm/immutable.d.ts +0 -9
  50. package/lib/esm/immutable.js +0 -290
  51. package/lib/esm/index.d.ts +0 -6
  52. package/lib/esm/live.js +0 -46
  53. package/lib/esm/position.d.ts +0 -6
  54. package/lib/esm/position.js +0 -106
  55. package/lib/esm/room.d.ts +0 -159
  56. package/lib/esm/room.js +0 -1123
  57. package/lib/esm/types.js +0 -1
  58. package/lib/esm/utils.d.ts +0 -15
  59. package/lib/esm/utils.js +0 -213
@@ -0,0 +1,149 @@
1
+ var ServerMessageType = /* @__PURE__ */ ((ServerMessageType2) => {
2
+ ServerMessageType2[ServerMessageType2["UpdatePresence"] = 100] = "UpdatePresence";
3
+ ServerMessageType2[ServerMessageType2["UserJoined"] = 101] = "UserJoined";
4
+ ServerMessageType2[ServerMessageType2["UserLeft"] = 102] = "UserLeft";
5
+ ServerMessageType2[ServerMessageType2["Event"] = 103] = "Event";
6
+ ServerMessageType2[ServerMessageType2["RoomState"] = 104] = "RoomState";
7
+ ServerMessageType2[ServerMessageType2["InitialStorageState"] = 200] = "InitialStorageState";
8
+ ServerMessageType2[ServerMessageType2["UpdateStorage"] = 201] = "UpdateStorage";
9
+ return ServerMessageType2;
10
+ })(ServerMessageType || {});
11
+ var ClientMessageType = /* @__PURE__ */ ((ClientMessageType2) => {
12
+ ClientMessageType2[ClientMessageType2["UpdatePresence"] = 100] = "UpdatePresence";
13
+ ClientMessageType2[ClientMessageType2["ClientEvent"] = 103] = "ClientEvent";
14
+ ClientMessageType2[ClientMessageType2["FetchStorage"] = 200] = "FetchStorage";
15
+ ClientMessageType2[ClientMessageType2["UpdateStorage"] = 201] = "UpdateStorage";
16
+ return ClientMessageType2;
17
+ })(ClientMessageType || {});
18
+ var CrdtType = /* @__PURE__ */ ((CrdtType2) => {
19
+ CrdtType2[CrdtType2["Object"] = 0] = "Object";
20
+ CrdtType2[CrdtType2["List"] = 1] = "List";
21
+ CrdtType2[CrdtType2["Map"] = 2] = "Map";
22
+ CrdtType2[CrdtType2["Register"] = 3] = "Register";
23
+ return CrdtType2;
24
+ })(CrdtType || {});
25
+ var OpType = /* @__PURE__ */ ((OpType2) => {
26
+ OpType2[OpType2["Init"] = 0] = "Init";
27
+ OpType2[OpType2["SetParentKey"] = 1] = "SetParentKey";
28
+ OpType2[OpType2["CreateList"] = 2] = "CreateList";
29
+ OpType2[OpType2["UpdateObject"] = 3] = "UpdateObject";
30
+ OpType2[OpType2["CreateObject"] = 4] = "CreateObject";
31
+ OpType2[OpType2["DeleteCrdt"] = 5] = "DeleteCrdt";
32
+ OpType2[OpType2["DeleteObjectKey"] = 6] = "DeleteObjectKey";
33
+ OpType2[OpType2["CreateMap"] = 7] = "CreateMap";
34
+ OpType2[OpType2["CreateRegister"] = 8] = "CreateRegister";
35
+ return OpType2;
36
+ })(OpType || {});
37
+ var WebsocketCloseCodes = /* @__PURE__ */ ((WebsocketCloseCodes2) => {
38
+ WebsocketCloseCodes2[WebsocketCloseCodes2["CLOSE_ABNORMAL"] = 1006] = "CLOSE_ABNORMAL";
39
+ WebsocketCloseCodes2[WebsocketCloseCodes2["INVALID_MESSAGE_FORMAT"] = 4e3] = "INVALID_MESSAGE_FORMAT";
40
+ WebsocketCloseCodes2[WebsocketCloseCodes2["NOT_ALLOWED"] = 4001] = "NOT_ALLOWED";
41
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_MESSAGES_PER_SECONDS"] = 4002] = "MAX_NUMBER_OF_MESSAGES_PER_SECONDS";
42
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_CONCURRENT_CONNECTIONS"] = 4003] = "MAX_NUMBER_OF_CONCURRENT_CONNECTIONS";
43
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP"] = 4004] = "MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP";
44
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM"] = 4005] = "MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM";
45
+ return WebsocketCloseCodes2;
46
+ })(WebsocketCloseCodes || {});
47
+
48
+ const min = 32;
49
+ const max = 126;
50
+ function makePosition(before, after) {
51
+ if (before == null && after == null) {
52
+ return pos([min + 1]);
53
+ }
54
+ if (before != null && after == null) {
55
+ return getNextPosition(before);
56
+ }
57
+ if (before == null && after != null) {
58
+ return getPreviousPosition(after);
59
+ }
60
+ return pos(makePositionFromCodes(posCodes(before), posCodes(after)));
61
+ }
62
+ function getPreviousPosition(after) {
63
+ const result = [];
64
+ const afterCodes = posCodes(after);
65
+ for (let i = 0; i < afterCodes.length; i++) {
66
+ const code = afterCodes[i];
67
+ if (code <= min + 1) {
68
+ result.push(min);
69
+ if (afterCodes.length - 1 === i) {
70
+ result.push(max);
71
+ break;
72
+ }
73
+ } else {
74
+ result.push(code - 1);
75
+ break;
76
+ }
77
+ }
78
+ return pos(result);
79
+ }
80
+ function getNextPosition(before) {
81
+ const result = [];
82
+ const beforeCodes = posCodes(before);
83
+ for (let i = 0; i < beforeCodes.length; i++) {
84
+ const code = beforeCodes[i];
85
+ if (code === max) {
86
+ result.push(code);
87
+ if (beforeCodes.length - 1 === i) {
88
+ result.push(min + 1);
89
+ break;
90
+ }
91
+ } else {
92
+ result.push(code + 1);
93
+ break;
94
+ }
95
+ }
96
+ return pos(result);
97
+ }
98
+ function makePositionFromCodes(before, after) {
99
+ let index = 0;
100
+ const result = [];
101
+ while (true) {
102
+ const beforeDigit = before[index] || min;
103
+ const afterDigit = after[index] || max;
104
+ if (beforeDigit > afterDigit) {
105
+ throw new Error(`Impossible to generate position between ${before} and ${after}`);
106
+ }
107
+ if (beforeDigit === afterDigit) {
108
+ result.push(beforeDigit);
109
+ index++;
110
+ continue;
111
+ }
112
+ if (afterDigit - beforeDigit === 1) {
113
+ result.push(beforeDigit);
114
+ result.push(...makePositionFromCodes(before.slice(index + 1), []));
115
+ break;
116
+ }
117
+ const mid = afterDigit + beforeDigit >> 1;
118
+ result.push(mid);
119
+ break;
120
+ }
121
+ return result;
122
+ }
123
+ function posCodes(str) {
124
+ const codes = [];
125
+ for (let i = 0; i < str.length; i++) {
126
+ codes.push(str.charCodeAt(i));
127
+ }
128
+ return codes;
129
+ }
130
+ function pos(codes) {
131
+ return String.fromCharCode(...codes);
132
+ }
133
+ function compare(posA, posB) {
134
+ const aCodes = posCodes(posA);
135
+ const bCodes = posCodes(posB);
136
+ const maxLength = Math.max(aCodes.length, bCodes.length);
137
+ for (let i = 0; i < maxLength; i++) {
138
+ const a = aCodes[i] == null ? min : aCodes[i];
139
+ const b = bCodes[i] == null ? min : bCodes[i];
140
+ if (a === b) {
141
+ continue;
142
+ } else {
143
+ return a - b;
144
+ }
145
+ }
146
+ throw new Error(`Impossible to compare similar position "${posA}" and "${posB}"`);
147
+ }
148
+
149
+ export { ClientMessageType, CrdtType, OpType, ServerMessageType, WebsocketCloseCodes, compare, makePosition, max, min, pos, posCodes };
@@ -0,0 +1,149 @@
1
+ var ServerMessageType = /* @__PURE__ */ ((ServerMessageType2) => {
2
+ ServerMessageType2[ServerMessageType2["UpdatePresence"] = 100] = "UpdatePresence";
3
+ ServerMessageType2[ServerMessageType2["UserJoined"] = 101] = "UserJoined";
4
+ ServerMessageType2[ServerMessageType2["UserLeft"] = 102] = "UserLeft";
5
+ ServerMessageType2[ServerMessageType2["Event"] = 103] = "Event";
6
+ ServerMessageType2[ServerMessageType2["RoomState"] = 104] = "RoomState";
7
+ ServerMessageType2[ServerMessageType2["InitialStorageState"] = 200] = "InitialStorageState";
8
+ ServerMessageType2[ServerMessageType2["UpdateStorage"] = 201] = "UpdateStorage";
9
+ return ServerMessageType2;
10
+ })(ServerMessageType || {});
11
+ var ClientMessageType = /* @__PURE__ */ ((ClientMessageType2) => {
12
+ ClientMessageType2[ClientMessageType2["UpdatePresence"] = 100] = "UpdatePresence";
13
+ ClientMessageType2[ClientMessageType2["ClientEvent"] = 103] = "ClientEvent";
14
+ ClientMessageType2[ClientMessageType2["FetchStorage"] = 200] = "FetchStorage";
15
+ ClientMessageType2[ClientMessageType2["UpdateStorage"] = 201] = "UpdateStorage";
16
+ return ClientMessageType2;
17
+ })(ClientMessageType || {});
18
+ var CrdtType = /* @__PURE__ */ ((CrdtType2) => {
19
+ CrdtType2[CrdtType2["Object"] = 0] = "Object";
20
+ CrdtType2[CrdtType2["List"] = 1] = "List";
21
+ CrdtType2[CrdtType2["Map"] = 2] = "Map";
22
+ CrdtType2[CrdtType2["Register"] = 3] = "Register";
23
+ return CrdtType2;
24
+ })(CrdtType || {});
25
+ var OpType = /* @__PURE__ */ ((OpType2) => {
26
+ OpType2[OpType2["Init"] = 0] = "Init";
27
+ OpType2[OpType2["SetParentKey"] = 1] = "SetParentKey";
28
+ OpType2[OpType2["CreateList"] = 2] = "CreateList";
29
+ OpType2[OpType2["UpdateObject"] = 3] = "UpdateObject";
30
+ OpType2[OpType2["CreateObject"] = 4] = "CreateObject";
31
+ OpType2[OpType2["DeleteCrdt"] = 5] = "DeleteCrdt";
32
+ OpType2[OpType2["DeleteObjectKey"] = 6] = "DeleteObjectKey";
33
+ OpType2[OpType2["CreateMap"] = 7] = "CreateMap";
34
+ OpType2[OpType2["CreateRegister"] = 8] = "CreateRegister";
35
+ return OpType2;
36
+ })(OpType || {});
37
+ var WebsocketCloseCodes = /* @__PURE__ */ ((WebsocketCloseCodes2) => {
38
+ WebsocketCloseCodes2[WebsocketCloseCodes2["CLOSE_ABNORMAL"] = 1006] = "CLOSE_ABNORMAL";
39
+ WebsocketCloseCodes2[WebsocketCloseCodes2["INVALID_MESSAGE_FORMAT"] = 4e3] = "INVALID_MESSAGE_FORMAT";
40
+ WebsocketCloseCodes2[WebsocketCloseCodes2["NOT_ALLOWED"] = 4001] = "NOT_ALLOWED";
41
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_MESSAGES_PER_SECONDS"] = 4002] = "MAX_NUMBER_OF_MESSAGES_PER_SECONDS";
42
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_CONCURRENT_CONNECTIONS"] = 4003] = "MAX_NUMBER_OF_CONCURRENT_CONNECTIONS";
43
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP"] = 4004] = "MAX_NUMBER_OF_MESSAGES_PER_DAY_PER_APP";
44
+ WebsocketCloseCodes2[WebsocketCloseCodes2["MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM"] = 4005] = "MAX_NUMBER_OF_CONCURRENT_CONNECTIONS_PER_ROOM";
45
+ return WebsocketCloseCodes2;
46
+ })(WebsocketCloseCodes || {});
47
+
48
+ const min = 32;
49
+ const max = 126;
50
+ function makePosition(before, after) {
51
+ if (before == null && after == null) {
52
+ return pos([min + 1]);
53
+ }
54
+ if (before != null && after == null) {
55
+ return getNextPosition(before);
56
+ }
57
+ if (before == null && after != null) {
58
+ return getPreviousPosition(after);
59
+ }
60
+ return pos(makePositionFromCodes(posCodes(before), posCodes(after)));
61
+ }
62
+ function getPreviousPosition(after) {
63
+ const result = [];
64
+ const afterCodes = posCodes(after);
65
+ for (let i = 0; i < afterCodes.length; i++) {
66
+ const code = afterCodes[i];
67
+ if (code <= min + 1) {
68
+ result.push(min);
69
+ if (afterCodes.length - 1 === i) {
70
+ result.push(max);
71
+ break;
72
+ }
73
+ } else {
74
+ result.push(code - 1);
75
+ break;
76
+ }
77
+ }
78
+ return pos(result);
79
+ }
80
+ function getNextPosition(before) {
81
+ const result = [];
82
+ const beforeCodes = posCodes(before);
83
+ for (let i = 0; i < beforeCodes.length; i++) {
84
+ const code = beforeCodes[i];
85
+ if (code === max) {
86
+ result.push(code);
87
+ if (beforeCodes.length - 1 === i) {
88
+ result.push(min + 1);
89
+ break;
90
+ }
91
+ } else {
92
+ result.push(code + 1);
93
+ break;
94
+ }
95
+ }
96
+ return pos(result);
97
+ }
98
+ function makePositionFromCodes(before, after) {
99
+ let index = 0;
100
+ const result = [];
101
+ while (true) {
102
+ const beforeDigit = before[index] || min;
103
+ const afterDigit = after[index] || max;
104
+ if (beforeDigit > afterDigit) {
105
+ throw new Error(`Impossible to generate position between ${before} and ${after}`);
106
+ }
107
+ if (beforeDigit === afterDigit) {
108
+ result.push(beforeDigit);
109
+ index++;
110
+ continue;
111
+ }
112
+ if (afterDigit - beforeDigit === 1) {
113
+ result.push(beforeDigit);
114
+ result.push(...makePositionFromCodes(before.slice(index + 1), []));
115
+ break;
116
+ }
117
+ const mid = afterDigit + beforeDigit >> 1;
118
+ result.push(mid);
119
+ break;
120
+ }
121
+ return result;
122
+ }
123
+ function posCodes(str) {
124
+ const codes = [];
125
+ for (let i = 0; i < str.length; i++) {
126
+ codes.push(str.charCodeAt(i));
127
+ }
128
+ return codes;
129
+ }
130
+ function pos(codes) {
131
+ return String.fromCharCode(...codes);
132
+ }
133
+ function compare(posA, posB) {
134
+ const aCodes = posCodes(posA);
135
+ const bCodes = posCodes(posB);
136
+ const maxLength = Math.max(aCodes.length, bCodes.length);
137
+ for (let i = 0; i < maxLength; i++) {
138
+ const a = aCodes[i] == null ? min : aCodes[i];
139
+ const b = bCodes[i] == null ? min : bCodes[i];
140
+ if (a === b) {
141
+ continue;
142
+ } else {
143
+ return a - b;
144
+ }
145
+ }
146
+ throw new Error(`Impossible to compare similar position "${posA}" and "${posB}"`);
147
+ }
148
+
149
+ export { ClientMessageType, CrdtType, OpType, ServerMessageType, WebsocketCloseCodes, compare, makePosition, max, min, pos, posCodes };