Skip to content

Commit 8d4e477

Browse files
Decouple Platform.Transport’s transport order from implementations
Preparation for #1394 (making transports tree-shakable).
1 parent a0df5f5 commit 8d4e477

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

src/common/lib/transport/connectionmanager.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,8 @@ class ConnectionManager extends EventEmitter {
410410

411411
static initTransports() {
412412
WebSocketTransport(ConnectionManager);
413-
Utils.arrForEach(Platform.Transports, function (initFn) {
413+
Utils.arrForEach(Platform.Transports.order, function (transportName) {
414+
const initFn = Platform.Transports.implementations[transportName]!;
414415
initFn(ConnectionManager);
415416
});
416417
}

src/common/platform.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@ import IBufferUtils from './types/IBufferUtils';
77
import * as WebBufferUtils from '../platform/web/lib/util/bufferutils';
88
import * as NodeBufferUtils from '../platform/nodejs/lib/util/bufferutils';
99
import { IUntypedCryptoStatic } from '../common/types/ICryptoStatic';
10+
import TransportName from './constants/TransportName';
1011

1112
type Bufferlike = WebBufferUtils.Bufferlike | NodeBufferUtils.Bufferlike;
1213
type BufferUtilsOutput = WebBufferUtils.Output | NodeBufferUtils.Output;
1314
type ToBufferOutput = WebBufferUtils.ToBufferOutput | NodeBufferUtils.ToBufferOutput;
1415

16+
export type TransportImplementations = Partial<Record<TransportName, TransportInitialiser>>;
17+
1518
export default class Platform {
1619
static Config: IPlatformConfig;
1720
/*
@@ -29,7 +32,10 @@ export default class Platform {
2932
*/
3033
static Crypto: IUntypedCryptoStatic | null;
3134
static Http: typeof IHttp;
32-
static Transports: TransportInitialiser[];
35+
static Transports: {
36+
order: TransportName[];
37+
implementations: TransportImplementations;
38+
};
3339
static Defaults: IDefaults;
3440
static WebStorage: IWebStorage | null;
3541
}
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import TransportName from 'common/constants/TransportName';
12
import initialiseNodeCometTransport from './nodecomettransport';
23

3-
export default [initialiseNodeCometTransport];
4+
export default {
5+
order: [TransportName.Comet],
6+
implementations: { [TransportName.Comet]: initialiseNodeCometTransport },
7+
};
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1+
import TransportName from 'common/constants/TransportName';
12
import initialiseXHRPollingTransport from './xhrpollingtransport';
23
import initialiseXHRStreamingTransport from './xhrstreamingtransport';
34

4-
export default [initialiseXHRPollingTransport, initialiseXHRStreamingTransport];
5+
export default {
6+
order: [TransportName.XhrPolling, TransportName.XhrStreaming],
7+
implementations: {
8+
[TransportName.XhrPolling]: initialiseXHRPollingTransport,
9+
[TransportName.XhrStreaming]: initialiseXHRStreamingTransport,
10+
},
11+
};

0 commit comments

Comments
 (0)