@casual-simulation/aux-vm-client 3.3.12 → 3.3.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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@casual-simulation/aux-vm-client",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.13",
|
|
4
4
|
"description": "A set of utilities required to securely run an AUX as a client.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"aux"
|
|
@@ -39,19 +39,19 @@
|
|
|
39
39
|
"url": "https://github.com/casual-simulation/casualos/issues"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@casual-simulation/aux-common": "^3.3.
|
|
43
|
-
"@casual-simulation/aux-runtime": "^3.3.
|
|
44
|
-
"@casual-simulation/aux-vm": "^3.3.
|
|
45
|
-
"@casual-simulation/aux-websocket": "^3.3.
|
|
46
|
-
"@casual-simulation/aux-websocket-aws": "^3.3.
|
|
42
|
+
"@casual-simulation/aux-common": "^3.3.13",
|
|
43
|
+
"@casual-simulation/aux-runtime": "^3.3.13",
|
|
44
|
+
"@casual-simulation/aux-vm": "^3.3.13",
|
|
45
|
+
"@casual-simulation/aux-websocket": "^3.3.13",
|
|
46
|
+
"@casual-simulation/aux-websocket-aws": "^3.3.13",
|
|
47
47
|
"@casual-simulation/crypto": "^3.3.8",
|
|
48
48
|
"@casual-simulation/timesync": "^3.3.4",
|
|
49
49
|
"@casual-simulation/websocket": "^3.3.4",
|
|
50
|
-
"axios": "1.
|
|
50
|
+
"axios": "1.7.7",
|
|
51
51
|
"comlink": "4.3.1",
|
|
52
52
|
"lodash": "4.17.21",
|
|
53
53
|
"rxjs": "8.0.0-alpha.14",
|
|
54
54
|
"uuid": "10.0.0"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "dfd33895a860f63dca1a0698a694fe7ca8d0e4c8"
|
|
57
57
|
}
|
|
@@ -2,6 +2,8 @@ import { InstRecordsClient, PartitionAuthSource } from '@casual-simulation/aux-c
|
|
|
2
2
|
import { PartitionConfig, OtherPlayersPartition, RemoteCausalRepoProtocol, YjsPartition } from '@casual-simulation/aux-common';
|
|
3
3
|
import { AuxTimeSyncConfiguration } from '@casual-simulation/aux-vm';
|
|
4
4
|
import { TimeSyncController } from '@casual-simulation/timesync';
|
|
5
|
+
import { RemoteSharedDocumentConfig } from '@casual-simulation/aux-common/documents/SharedDocumentConfig';
|
|
6
|
+
import { RemoteYjsSharedDocument } from '@casual-simulation/aux-common/documents/RemoteYjsSharedDocument';
|
|
5
7
|
/**
|
|
6
8
|
* Gets the causal repo client that should be used for the given host.
|
|
7
9
|
* @param host The host.
|
|
@@ -23,6 +25,12 @@ export declare function getWebSocketClientForHost(host: string, authSource: Part
|
|
|
23
25
|
* @param config The config.
|
|
24
26
|
*/
|
|
25
27
|
export declare function createRemoteYjsPartition(config: PartitionConfig, authSource: PartitionAuthSource, useCache?: boolean): Promise<YjsPartition>;
|
|
28
|
+
/**
|
|
29
|
+
* Attempts to create a RemoteYjsSharedDocument from the given config.
|
|
30
|
+
* @param config The config.
|
|
31
|
+
* @param authSource The auth source.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createRemoteYjsSharedDocument(config: RemoteSharedDocumentConfig, authSource: PartitionAuthSource): Promise<RemoteYjsSharedDocument>;
|
|
26
34
|
/**
|
|
27
35
|
* Attempts to create a CausalTree2Partition from the given config.
|
|
28
36
|
* @param config The config.
|
|
@@ -13,6 +13,7 @@ import { WebsocketConnectionClient } from '@casual-simulation/aux-websocket';
|
|
|
13
13
|
import { OtherPlayersPartitionImpl, RemoteYjsPartitionImpl, } from '@casual-simulation/aux-common';
|
|
14
14
|
import { SocketManager as WebSocketManager } from '@casual-simulation/websocket';
|
|
15
15
|
import { TimeSyncController } from '@casual-simulation/timesync';
|
|
16
|
+
import { RemoteYjsSharedDocument } from '@casual-simulation/aux-common/documents/RemoteYjsSharedDocument';
|
|
16
17
|
const DEFAULT_RESEND_UPDATES_INTERVAL_MS = 1000;
|
|
17
18
|
const DEFAULT_RETRY_UPDATES_AFTER_MS = 5000;
|
|
18
19
|
/**
|
|
@@ -107,6 +108,22 @@ export function createRemoteYjsPartition(config, authSource, useCache = true) {
|
|
|
107
108
|
return undefined;
|
|
108
109
|
});
|
|
109
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Attempts to create a RemoteYjsSharedDocument from the given config.
|
|
113
|
+
* @param config The config.
|
|
114
|
+
* @param authSource The auth source.
|
|
115
|
+
*/
|
|
116
|
+
export function createRemoteYjsSharedDocument(config, authSource) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
if (config.inst) {
|
|
119
|
+
const client = getClientForHostAndProtocol(config.host, authSource, config.connectionProtocol);
|
|
120
|
+
const partition = new RemoteYjsSharedDocument(client, authSource, config);
|
|
121
|
+
yield partition.init();
|
|
122
|
+
return partition;
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
110
127
|
/**
|
|
111
128
|
* Attempts to create a CausalTree2Partition from the given config.
|
|
112
129
|
* @param config The config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartitionFactories.js","sourceRoot":"","sources":["PartitionFactories.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,6BAA6B,EAG7B,iBAAiB,EACjB,mCAAmC,GAGtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,mCAAmC,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAKH,yBAAyB,EAEzB,sBAAsB,GAEzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"PartitionFactories.js","sourceRoot":"","sources":["PartitionFactories.ts"],"names":[],"mappings":"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"}
|
package/vm/RemoteAuxChannel.d.ts
CHANGED
|
@@ -2,11 +2,15 @@ import { LocalActions, PartitionConfig, AuxPartition, AuxPartitionServices } fro
|
|
|
2
2
|
import { AuxConfig, BaseAuxChannel, AuxChannelOptions } from '@casual-simulation/aux-vm';
|
|
3
3
|
import { TimeSyncController } from '@casual-simulation/timesync';
|
|
4
4
|
import { AuxRuntime } from '@casual-simulation/aux-runtime';
|
|
5
|
+
import { RemoteSharedDocumentConfig } from '@casual-simulation/aux-common/documents/SharedDocumentConfig';
|
|
6
|
+
import { SharedDocumentServices } from '@casual-simulation/aux-common/documents/SharedDocumentFactories';
|
|
7
|
+
import { SharedDocument } from '@casual-simulation/aux-common/documents/SharedDocument';
|
|
5
8
|
export interface RemoteAuxChannelOptions extends AuxChannelOptions {
|
|
6
9
|
}
|
|
7
10
|
export declare class RemoteAuxChannel extends BaseAuxChannel {
|
|
8
11
|
constructor(config: AuxConfig, options: RemoteAuxChannelOptions);
|
|
9
12
|
protected _createPartition(config: PartitionConfig, services: AuxPartitionServices): Promise<AuxPartition>;
|
|
13
|
+
protected _createSharedDocument(config: RemoteSharedDocumentConfig, services: SharedDocumentServices): Promise<SharedDocument>;
|
|
10
14
|
protected _createTimeSyncController(): TimeSyncController;
|
|
11
15
|
protected _handleError(error: any): void;
|
|
12
16
|
protected _handleLocalEvents(e: LocalActions[]): void;
|
package/vm/RemoteAuxChannel.js
CHANGED
|
@@ -9,7 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { createAuxPartition, createMemoryPartition, iteratePartitions, createOtherPlayersClientPartition, createYjsPartition, createRemoteClientYjsPartition, } from '@casual-simulation/aux-common';
|
|
11
11
|
import { BaseAuxChannel, } from '@casual-simulation/aux-vm';
|
|
12
|
-
import { createOtherPlayersRepoPartition, createRemoteYjsPartition, createTimeSyncController, } from '../partitions';
|
|
12
|
+
import { createOtherPlayersRepoPartition, createRemoteYjsPartition, createRemoteYjsSharedDocument, createTimeSyncController, } from '../partitions';
|
|
13
|
+
import { createSharedDocument, } from '@casual-simulation/aux-common/documents/SharedDocumentFactories';
|
|
14
|
+
import { createYjsSharedDocument } from '@casual-simulation/aux-common/documents/YjsSharedDocument';
|
|
13
15
|
export class RemoteAuxChannel extends BaseAuxChannel {
|
|
14
16
|
constructor(config, options) {
|
|
15
17
|
super(config, options);
|
|
@@ -19,6 +21,11 @@ export class RemoteAuxChannel extends BaseAuxChannel {
|
|
|
19
21
|
return yield createAuxPartition(config, services, createMemoryPartition, (config) => createOtherPlayersClientPartition(config, services.authSource), (config) => createOtherPlayersRepoPartition(config, services.authSource), (config) => createYjsPartition(config), (config) => createRemoteYjsPartition(config, services.authSource), (config) => createRemoteClientYjsPartition(config, services.authSource));
|
|
20
22
|
});
|
|
21
23
|
}
|
|
24
|
+
_createSharedDocument(config, services) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
return yield createSharedDocument(config, services, (config, services) => createRemoteYjsSharedDocument(config, services.authSource), createYjsSharedDocument);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
22
29
|
_createTimeSyncController() {
|
|
23
30
|
var _a, _b, _c;
|
|
24
31
|
if ((_b = (_a = this._config) === null || _a === void 0 ? void 0 : _a.config) === null || _b === void 0 ? void 0 : _b.timesync) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteAuxChannel.js","sourceRoot":"","sources":["RemoteAuxChannel.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAIH,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,iCAAiC,EACjC,kBAAkB,EAClB,8BAA8B,GAGjC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEH,cAAc,GAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,+BAA+B,EAC/B,wBAAwB,EACxB,wBAAwB,GAC3B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"RemoteAuxChannel.js","sourceRoot":"","sources":["RemoteAuxChannel.ts"],"names":[],"mappings":"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"}
|