@meshagent/meshagent 0.0.11 → 0.0.13

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 (127) hide show
  1. package/dist/browser/agent-client.d.ts +88 -0
  2. package/dist/browser/agent-client.js +174 -0
  3. package/dist/browser/agent.d.ts +103 -0
  4. package/dist/browser/agent.js +229 -0
  5. package/dist/browser/client.d.ts +90 -0
  6. package/dist/browser/client.js +449 -0
  7. package/dist/browser/completer.d.ts +9 -0
  8. package/dist/browser/completer.js +25 -0
  9. package/dist/browser/data-types.d.ts +44 -0
  10. package/dist/browser/data-types.js +119 -0
  11. package/dist/browser/database-client.d.ts +77 -0
  12. package/dist/browser/database-client.js +113 -0
  13. package/dist/browser/developer-client.d.ts +13 -0
  14. package/dist/browser/developer-client.js +35 -0
  15. package/dist/browser/document.d.ts +84 -0
  16. package/dist/browser/document.js +531 -0
  17. package/dist/browser/entrypoint.d.ts +49722 -0
  18. package/dist/browser/entrypoint.js +8659 -0
  19. package/dist/browser/event-emitter.d.ts +13 -0
  20. package/dist/browser/event-emitter.js +38 -0
  21. package/dist/browser/helpers.d.ts +26 -0
  22. package/dist/browser/helpers.js +79 -0
  23. package/dist/browser/index.d.ts +24 -0
  24. package/dist/browser/index.js +40 -0
  25. package/dist/browser/messaging-client.d.ts +76 -0
  26. package/dist/browser/messaging-client.js +248 -0
  27. package/dist/browser/participant-token.d.ts +36 -0
  28. package/dist/browser/participant-token.js +104 -0
  29. package/dist/browser/participant.d.ts +18 -0
  30. package/dist/browser/participant.js +42 -0
  31. package/dist/browser/protocol.d.ts +87 -0
  32. package/dist/browser/protocol.js +305 -0
  33. package/dist/browser/queues-client.d.ts +26 -0
  34. package/dist/browser/queues-client.js +47 -0
  35. package/dist/browser/requirement.d.ts +25 -0
  36. package/dist/browser/requirement.js +49 -0
  37. package/dist/browser/response.d.ts +60 -0
  38. package/dist/browser/response.js +138 -0
  39. package/dist/browser/room-client.d.ts +43 -0
  40. package/dist/browser/room-client.js +109 -0
  41. package/dist/browser/room-event.d.ts +60 -0
  42. package/dist/browser/room-event.js +82 -0
  43. package/dist/browser/room-server-client.d.ts +19 -0
  44. package/dist/browser/room-server-client.js +50 -0
  45. package/dist/browser/runtime.d.ts +6 -0
  46. package/dist/browser/runtime.js +8 -0
  47. package/dist/browser/schema.d.ts +83 -0
  48. package/dist/browser/schema.js +321 -0
  49. package/dist/browser/storage-client.d.ts +38 -0
  50. package/dist/browser/storage-client.js +86 -0
  51. package/dist/browser/stream-controller.d.ts +8 -0
  52. package/dist/browser/stream-controller.js +55 -0
  53. package/dist/browser/sync-client.d.ts +33 -0
  54. package/dist/browser/sync-client.js +123 -0
  55. package/dist/browser/utils.d.ts +14 -0
  56. package/dist/browser/utils.js +59 -0
  57. package/dist/node/agent-client.d.ts +88 -0
  58. package/dist/node/agent-client.js +174 -0
  59. package/dist/node/agent.d.ts +103 -0
  60. package/dist/node/agent.js +229 -0
  61. package/dist/node/client.d.ts +90 -0
  62. package/dist/node/client.js +449 -0
  63. package/dist/node/completer.d.ts +9 -0
  64. package/dist/node/completer.js +25 -0
  65. package/dist/node/data-types.d.ts +44 -0
  66. package/dist/node/data-types.js +119 -0
  67. package/dist/node/database-client.d.ts +77 -0
  68. package/dist/node/database-client.js +113 -0
  69. package/dist/node/developer-client.d.ts +13 -0
  70. package/dist/node/developer-client.js +35 -0
  71. package/dist/node/document.d.ts +84 -0
  72. package/dist/node/document.js +531 -0
  73. package/dist/node/entrypoint.d.ts +49722 -0
  74. package/dist/node/entrypoint.js +6321 -0
  75. package/dist/node/event-emitter.d.ts +13 -0
  76. package/dist/node/event-emitter.js +38 -0
  77. package/dist/node/helpers.d.ts +26 -0
  78. package/dist/node/helpers.js +79 -0
  79. package/dist/node/index.d.ts +24 -0
  80. package/dist/node/index.js +40 -0
  81. package/dist/node/messaging-client.d.ts +76 -0
  82. package/dist/node/messaging-client.js +248 -0
  83. package/dist/node/participant-token.d.ts +36 -0
  84. package/dist/node/participant-token.js +104 -0
  85. package/dist/node/participant.d.ts +18 -0
  86. package/dist/node/participant.js +42 -0
  87. package/dist/node/protocol.d.ts +87 -0
  88. package/dist/node/protocol.js +305 -0
  89. package/dist/node/queues-client.d.ts +26 -0
  90. package/dist/node/queues-client.js +47 -0
  91. package/dist/node/requirement.d.ts +25 -0
  92. package/dist/node/requirement.js +49 -0
  93. package/dist/node/response.d.ts +60 -0
  94. package/dist/node/response.js +138 -0
  95. package/dist/node/room-client.d.ts +43 -0
  96. package/dist/node/room-client.js +109 -0
  97. package/dist/node/room-event.d.ts +60 -0
  98. package/dist/node/room-event.js +82 -0
  99. package/dist/node/room-server-client.d.ts +19 -0
  100. package/dist/node/room-server-client.js +50 -0
  101. package/dist/node/runtime.d.ts +6 -0
  102. package/dist/node/runtime.js +8 -0
  103. package/dist/node/schema.d.ts +83 -0
  104. package/dist/node/schema.js +321 -0
  105. package/dist/node/storage-client.d.ts +38 -0
  106. package/dist/node/storage-client.js +86 -0
  107. package/dist/node/stream-controller.d.ts +8 -0
  108. package/dist/node/stream-controller.js +55 -0
  109. package/dist/node/sync-client.d.ts +33 -0
  110. package/dist/node/sync-client.js +123 -0
  111. package/dist/node/utils.d.ts +14 -0
  112. package/dist/node/utils.js +59 -0
  113. package/package.json +35 -22
  114. package/README.md +0 -0
  115. package/babel.config.cjs +0 -3
  116. package/client.js +0 -422
  117. package/dist/entrypoint.js +0 -11262
  118. package/dist/entrypoint.js.map +0 -7
  119. package/document-server-client.js +0 -246
  120. package/entrypoint.js +0 -11568
  121. package/index.js +0 -2
  122. package/protocol.js +0 -459
  123. package/server.js +0 -310
  124. package/test/assert.js +0 -19
  125. package/test/document-server-client.test.js +0 -33
  126. package/test/document.test.js +0 -313
  127. package/test/protocol.test.js +0 -64
package/index.js DELETED
@@ -1,2 +0,0 @@
1
- export { ServerXmlDocument } from "./server.js";
2
- export { ClientXmlDocument } from "./client.js";
package/protocol.js DELETED
@@ -1,459 +0,0 @@
1
- import { decode } from "base-64";
2
- import * as Y from "yjs";
3
- import { TextEncoder, TextDecoder } from "@kayahr/text-encoding";
4
-
5
- export class ServerProtocol {
6
- constructor(onServerUpdate) {
7
- this.doc = new Y.Doc();
8
- this.doc.on('update', onServerUpdate);
9
- }
10
-
11
- update(update) {
12
- Y.applyUpdate(this.doc, update);
13
- }
14
- }
15
-
16
- export class ClientProtocol {
17
- constructor(onClientUpdate) {
18
- this.doc = new Y.Doc();
19
- this.doc.on('update', onClientUpdate);
20
- }
21
-
22
- update(update) {
23
- Y.applyUpdate(this.doc, update);
24
- }
25
- }
26
-
27
- export class Completer {
28
- constructor() {
29
- const self = this;
30
- this.fut = new Promise((resolve, reject) => {
31
- self.resolve = () => {
32
- this.completed = true;
33
- resolve();
34
- }
35
- self.reject = () => {
36
- this.completed = true;
37
- reject();
38
- };
39
- });
40
- this.completed = false;
41
- }
42
-
43
- }
44
-
45
- class ProtocolMessage {
46
-
47
- /**
48
- * @param {Object} message - the message
49
- * @param {number} id - the message id
50
- * @param {Uint8List} data - the data of the message
51
- * @param {string} type - the type of the message
52
- */
53
- constructor({ id, data, type}) {
54
- this.sent = new Completer()
55
- this.id = id;
56
- this.data = data;
57
- this.type = type;
58
- }
59
- }
60
-
61
- class ProtocolChannel {
62
-
63
- /* void Function(Uint8List data) */
64
- start(onDataReceived) {
65
- this.onDataReceived = onDataReceived;
66
- }
67
-
68
- dispose() {
69
-
70
- }
71
-
72
- /**
73
- * @param {Uint8List} data - the data of the message
74
- */
75
- async sendData(data) {
76
-
77
- }
78
- }
79
-
80
-
81
- export class StreamProtocolChannel extends ProtocolChannel {
82
- /**
83
- *
84
- * @param {Object} options
85
- * @param {ProtocolMessageStream} options.input
86
- * @param {ProtocolMessageStream} options.output
87
- */
88
- constructor({input, output}) {
89
- super();
90
- this.input = input;
91
- this.output = output;
92
- }
93
-
94
- start(onDataReceived) {
95
- if (this.started) {
96
- throw new Error("Already started");
97
- }
98
- this.started = true;
99
- (async () => {
100
- for await (let message of this.input.stream()) {
101
- onDataReceived(message);
102
- }
103
- })();
104
- }
105
-
106
- dispose() {
107
- this.input.close();
108
- }
109
-
110
- async sendData(data) {
111
- this.output.add(data);
112
- }
113
- }
114
-
115
-
116
- export class WebSocketProtocolChannel extends ProtocolChannel {
117
- /**
118
- * @param {Object} params - the params
119
- * @param {string} url - the url to connect to
120
- */
121
- constructor({ url }) {
122
- super();
123
- this.url = url;
124
- this._opened = new Completer();
125
- }
126
-
127
- /**
128
- *
129
- * @param {A callback that will be called every time data is received} onDataReceived
130
- */
131
- start(onDataReceived) {
132
- if(typeof(onDataReceived) != "function") {
133
- throw new Error("onDataReceived must be a function")
134
- }
135
- this.onDataReceived = onDataReceived;
136
- this.webSocket = new WebSocket(this.url);
137
- this.webSocket.onopen = () => {
138
- this._opened.resolve();
139
- };
140
- this.webSocket.addEventListener("message", this.onData.bind(this))
141
- }
142
-
143
-
144
- onData(event) {
145
- this.onDataReceived(new Uint8Array(event.data));
146
- }
147
-
148
-
149
- dispose() {
150
- this.webSocket.close()
151
- }
152
-
153
- /**
154
- * @param {Uint8Array} data - the data to send
155
- */
156
- async sendData(data) {
157
- await this._opened.fut;
158
- this.webSocket.send(data);
159
- }
160
- }
161
-
162
- /*
163
- class LivekitProtocolChannel extends ProtocolChannel {
164
- LivekitProtocolChannel(
165
- {required this.room, required this.topic, required this.remote});
166
-
167
- final lk.RemoteParticipant remote;
168
- final lk.Room room;
169
- final String topic;
170
-
171
- lk.EventsListener<lk.RoomEvent>? listener;
172
-
173
- void Function(Uint8List data)? onDataReceived;
174
-
175
- @override
176
- void start(void Function(Uint8List data) onDataReceived) {
177
- this.onDataReceived = onDataReceived;
178
- listener = room.createListener();
179
- listener!.on<lk.DataReceivedEvent>(onDataPacket);
180
- }
181
-
182
- @override
183
- void dispose() {
184
- listener?.dispose();
185
- onDataReceived = null;
186
- }
187
-
188
- @override
189
- Future<void> sendData(Uint8List data) async {
190
- await room.localParticipant!.publishData(data,
191
- reliable: true, topic: topic, destinationIdentities: [remote.identity]);
192
- }
193
-
194
- void onDataPacket(lk.DataReceivedEvent evt) {
195
- debugPrint(
196
- "Message on topic $topic ${evt.participant?.identity} vs ${remote.identity}");
197
- if (evt.topic == topic && evt.participant == remote) {
198
- debugPrint("Processing message on topic $topic");
199
-
200
- onDataReceived!(evt.data as Uint8List);
201
- }
202
- }
203
- }
204
- */
205
-
206
- export class ProtocolMessageStream {
207
- constructor() {
208
- this._messages = [];
209
- this._messageAdded = new Completer();
210
- this._closed = false;
211
- }
212
-
213
- /**
214
- * @param {ProtocolMessage} message
215
- */
216
- async add(message) {
217
- this._messages.push(message);
218
- if(!this._messageAdded.completed) {
219
- this._messageAdded.resolve();
220
- }
221
- }
222
-
223
- close() {
224
- if(!this._messageAdded.completed) {
225
- this._closed = true;
226
- this._messageAdded.resolve();
227
- }
228
- }
229
-
230
- async *stream() {
231
- while(!this._closed) {
232
- await this._messageAdded.fut;
233
- this._messageAdded = new Completer();
234
- while(this._messages.length > 0) {
235
- if(this._closed) {
236
- break;
237
- }
238
- const msg = this._messages.shift();
239
- yield msg;
240
- }
241
- }
242
- }
243
- }
244
-
245
- const encoder = new TextEncoder("utf-8");
246
- const decoder = new TextDecoder("utf-8");
247
-
248
- export function mergeUint8Arrays(...arrays) {
249
- const totalSize = arrays.reduce((acc, e) => acc + e.length, 0);
250
- const merged = new Uint8Array(totalSize);
251
-
252
- arrays.forEach((array, i, arrays) => {
253
- const offset = arrays.slice(0, i).reduce((acc, e) => acc + e.length, 0);
254
- merged.set(array, offset);
255
- });
256
-
257
- return merged;
258
- }
259
-
260
- export class Protocol {
261
- /**
262
- * @param {Object} params - the params
263
- * @param {ProtocolChannel} params.channel - the protocol channel to use
264
- */
265
- constructor({channel}) {
266
- this.channel = channel;
267
- this.handlers = {}
268
- this._id = 0;
269
- this._send = new ProtocolMessageStream();
270
-
271
- this._recvPacketId = 0;
272
- this._recvState = "ready";
273
- this._recvPacketTotal = 0;
274
- this._recvMessageId = -1;
275
- this._recvType = "";
276
- this._recvPackets = [];
277
- }
278
-
279
-
280
- /**
281
- * @param {string} type - the type of message to handle
282
- * @param {Function} handler - the message handler
283
- */
284
- addHandler(type, handler) {
285
- this.handlers[type] = handler;
286
- }
287
-
288
- /**
289
- * @param {string} type - the type of message to handle
290
- * @param {Function} handler - the message handler
291
- */
292
- removeHandler(type, handler) {
293
- delete this.handlers[type];
294
- }
295
-
296
- /**
297
- * @param {number} messageId - the id of the message
298
- * @param {string} type - the type of the message
299
- * @param {Uint8Array?} data - the data for the message
300
- */
301
- async handleMessage(messageId, type, data) {
302
- const handler = this.handlers[type] ?? this.handlers["*"];
303
- await handler(this, messageId, type, data);
304
- }
305
-
306
-
307
- /**
308
- * @returns {number} the next message id
309
- */
310
- getNextMessageId() {
311
- return this._id++;
312
- }
313
-
314
- /**
315
- * @param {string} type - the type of the message
316
- * @param {Uint8Array} data - the data for the message
317
- * @param {number?} messageId - the id of the message
318
- */
319
- async send(type, data, id) {
320
- const msg = new ProtocolMessage({ id: id ?? this.getNextMessageId(), type: type, data: data });
321
- this._send.add(msg);
322
- await msg.sent.future;
323
- }
324
-
325
- /**
326
- * @param {Object} object - the type of the message
327
- */
328
- async sendJson(object) {
329
- return await send("application/json", encoder.encode(JSON.stringify(object)));
330
- }
331
-
332
-
333
- start(onMessage = null) {
334
-
335
- if(onMessage != null) {
336
- this.addHandler("*", onMessage);
337
- }
338
- this.channel.start(this.onDataReceived.bind(this));
339
-
340
- (async () => {
341
- for await (let message of this._send.stream()) {
342
- console.log(`message recv on protocol ${message.id} ${message.type}`);
343
-
344
- const packets = Math.ceil((message.data.length / 1024));
345
-
346
- const header = new Uint8Array(4*4);
347
- const dataView = new DataView(header.buffer);
348
- dataView.setUint32(0, (message.id & 0x000fffff00000000) / Math.pow(2, 32), false);
349
- dataView.setUint32(4, message.id & 0xffffffff, false);
350
- dataView.setUint32(8, 0, false);
351
- dataView.setUint32(12, packets, false);
352
- const headerPacket = mergeUint8Arrays(
353
- header,
354
- encoder.encode(message.type)
355
- );
356
-
357
- await this.channel.sendData(headerPacket);
358
- for (var i = 0; i < packets; i++) {
359
-
360
- const packetHeader = new Uint8Array(3*4);
361
- const dataView = new DataView(packetHeader.buffer);
362
- dataView.setUint32(0, (message.id & 0x000fffff00000000) / Math.pow(2, 32), false);
363
- dataView.setUint32(4, message.id & 0xffffffff, false);
364
- dataView.setUint32(8, i+1, false);
365
- const packet = mergeUint8Arrays(
366
- packetHeader,
367
- message.data.subarray(i * 1024, Math.min((i + 1) * 1024, message.data.length))
368
- );
369
-
370
- await this.channel.sendData(packet);
371
- }
372
- message.sent.resolve();
373
- console.log(`message sent on protocol ${message.id} ${message.type}`);
374
- }
375
- console.log("protocol done");
376
- })();
377
- }
378
-
379
- dispose() {
380
- this.channel.dispose();
381
- }
382
-
383
- /**
384
- *
385
- * @param {Uint8List} dataPacket
386
- */
387
- onDataReceived(dataPacket) {
388
- const dataView = new DataView(dataPacket.buffer);
389
-
390
- const messageId = dataView.getUint32(4, false) + dataView.getUint32(0, false) * Math.pow(2, 32);
391
- const packet = dataView.getUint32(8, false);
392
-
393
- if (packet != this._recvPacketId) {
394
- this._recvState = "error";
395
- console.log(dataPacket);
396
- console.log(
397
- `received out of order packet got ${packet} expected ${this._recvPacketId}, total ${this._recvPacketTotal} message ID: ${messageId}`);
398
- }
399
-
400
- if (packet == 0) {
401
- if (this._recvState == "ready" || this._recvState == "error") {
402
- this._recvPacketTotal = dataView.getUint32(12, false);
403
- this._recvMessageId = messageId;
404
- this._recvType = decoder.decode(dataPacket.subarray(16));
405
- console.log(`recieved packet ${this._recvType}`);
406
-
407
- if (this._recvPacketTotal == 0) {
408
- try {
409
- const merged = mergeUint8Arrays(...this._recvPackets);
410
- this._recvPackets.length = 0;
411
- this.handleMessage(messageId, this._recvType, merged);
412
-
413
- } finally {
414
- console.log("expecting packet reset to 0");
415
- this._recvState = "ready";
416
- this._recvPacketId = 0;
417
- this._recvType = "";
418
- this._recvMessageId = -1;
419
- }
420
- } else {
421
- this._recvPacketId += 1;
422
- console.log(`expecting packet ${this._recvPacketId}`);
423
- this._recvState = "processing";
424
- }
425
- } else {
426
- this._recvState = "error";
427
- this._recvPacketId = 0;
428
- console.log("received packet 0 in invalid state");
429
- }
430
- } else if (this._recvState != "processing") {
431
- this._recvState = "error";
432
- this._recvPacketId = 0;
433
- console.log("received datapacket in invalid state");
434
- } else {
435
- if (messageId != this._recvMessageId) {
436
- this._recvState = "error";
437
- this._recvPacketId = 0;
438
- console.log("received packet from incorrect message");
439
- }
440
-
441
- this._recvPackets.push(dataPacket.subarray(12));
442
-
443
- if (this._recvPacketTotal == this._recvPacketId) {
444
- try {
445
- const merged = mergeUint8Arrays(...this._recvPackets);
446
- this._recvPackets.length = 0;
447
- this.handleMessage(messageId, this._recvType, merged);
448
- } finally {
449
- this._recvState = "ready";
450
- this._recvPacketId = 0;
451
- this._recvType = "";
452
- this._recvMessageId = -1;
453
- }
454
- } else {
455
- this._recvPacketId += 1;
456
- }
457
- }
458
- }
459
- }