@depup/firebase__database 1.1.1-depup.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.
- package/README.md +31 -0
- package/changes.json +10 -0
- package/dist/index.cjs.js +14089 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.esm.js +14032 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.node.cjs.js +14109 -0
- package/dist/index.node.cjs.js.map +1 -0
- package/dist/index.standalone.js +14052 -0
- package/dist/index.standalone.js.map +1 -0
- package/dist/internal.d.ts +2991 -0
- package/dist/node-esm/index.node.esm.js +14048 -0
- package/dist/node-esm/index.node.esm.js.map +1 -0
- package/dist/node-esm/package.json +1 -0
- package/dist/node-esm/src/api/Database.d.ts +137 -0
- package/dist/node-esm/src/api/OnDisconnect.d.ts +110 -0
- package/dist/node-esm/src/api/Reference.d.ts +124 -0
- package/dist/node-esm/src/api/Reference_impl.d.ts +1100 -0
- package/dist/node-esm/src/api/ServerValue.d.ts +30 -0
- package/dist/node-esm/src/api/Transaction.d.ts +83 -0
- package/dist/node-esm/src/api/test_access.d.ts +31 -0
- package/dist/node-esm/src/api.d.ts +18 -0
- package/dist/node-esm/src/api.standalone.d.ts +30 -0
- package/dist/node-esm/src/core/AppCheckTokenProvider.d.ts +32 -0
- package/dist/node-esm/src/core/AuthTokenProvider.d.ts +49 -0
- package/dist/node-esm/src/core/CompoundWrite.d.ts +81 -0
- package/dist/node-esm/src/core/PersistentConnection.d.ts +135 -0
- package/dist/node-esm/src/core/ReadonlyRestClient.d.ts +60 -0
- package/dist/node-esm/src/core/Repo.d.ts +144 -0
- package/dist/node-esm/src/core/RepoInfo.d.ts +61 -0
- package/dist/node-esm/src/core/ServerActions.d.ts +52 -0
- package/dist/node-esm/src/core/SnapshotHolder.d.ts +26 -0
- package/dist/node-esm/src/core/SparseSnapshotTree.d.ts +64 -0
- package/dist/node-esm/src/core/SyncPoint.d.ts +91 -0
- package/dist/node-esm/src/core/SyncTree.d.ts +166 -0
- package/dist/node-esm/src/core/WriteTree.d.ts +205 -0
- package/dist/node-esm/src/core/operation/AckUserWrite.d.ts +36 -0
- package/dist/node-esm/src/core/operation/ListenComplete.d.ts +26 -0
- package/dist/node-esm/src/core/operation/Merge.d.ts +33 -0
- package/dist/node-esm/src/core/operation/Operation.d.ts +45 -0
- package/dist/node-esm/src/core/operation/Overwrite.d.ts +28 -0
- package/dist/node-esm/src/core/snap/ChildrenNode.d.ts +112 -0
- package/dist/node-esm/src/core/snap/IndexMap.d.ts +43 -0
- package/dist/node-esm/src/core/snap/LeafNode.d.ts +83 -0
- package/dist/node-esm/src/core/snap/Node.d.ts +126 -0
- package/dist/node-esm/src/core/snap/childSet.d.ts +32 -0
- package/dist/node-esm/src/core/snap/comparators.d.ts +19 -0
- package/dist/node-esm/src/core/snap/indexes/Index.d.ts +50 -0
- package/dist/node-esm/src/core/snap/indexes/KeyIndex.d.ts +34 -0
- package/dist/node-esm/src/core/snap/indexes/PathIndex.d.ts +29 -0
- package/dist/node-esm/src/core/snap/indexes/PriorityIndex.d.ts +33 -0
- package/dist/node-esm/src/core/snap/indexes/ValueIndex.d.ts +31 -0
- package/dist/node-esm/src/core/snap/nodeFromJSON.d.ts +24 -0
- package/dist/node-esm/src/core/snap/snap.d.ts +23 -0
- package/dist/node-esm/src/core/stats/StatsCollection.d.ts +26 -0
- package/dist/node-esm/src/core/stats/StatsListener.d.ts +30 -0
- package/dist/node-esm/src/core/stats/StatsManager.d.ts +20 -0
- package/dist/node-esm/src/core/stats/StatsReporter.d.ts +28 -0
- package/dist/node-esm/src/core/storage/DOMStorageWrapper.d.ts +46 -0
- package/dist/node-esm/src/core/storage/MemoryStorage.d.ts +27 -0
- package/dist/node-esm/src/core/storage/storage.d.ts +22 -0
- package/dist/node-esm/src/core/util/EventEmitter.d.ts +39 -0
- package/dist/node-esm/src/core/util/ImmutableTree.d.ts +117 -0
- package/dist/node-esm/src/core/util/NextPushId.d.ts +33 -0
- package/dist/node-esm/src/core/util/OnlineMonitor.d.ts +31 -0
- package/dist/node-esm/src/core/util/Path.d.ts +94 -0
- package/dist/node-esm/src/core/util/ServerValues.d.ts +56 -0
- package/dist/node-esm/src/core/util/SortedMap.d.ts +324 -0
- package/dist/node-esm/src/core/util/Tree.d.ts +105 -0
- package/dist/node-esm/src/core/util/VisibilityMonitor.d.ts +23 -0
- package/dist/node-esm/src/core/util/libs/parser.d.ts +32 -0
- package/dist/node-esm/src/core/util/misc.d.ts +19 -0
- package/dist/node-esm/src/core/util/util.d.ts +176 -0
- package/dist/node-esm/src/core/util/validation.d.ts +70 -0
- package/dist/node-esm/src/core/version.d.ts +23 -0
- package/dist/node-esm/src/core/view/CacheNode.d.ts +41 -0
- package/dist/node-esm/src/core/view/Change.d.ts +46 -0
- package/dist/node-esm/src/core/view/ChildChangeAccumulator.d.ts +22 -0
- package/dist/node-esm/src/core/view/CompleteChildSource.d.ts +55 -0
- package/dist/node-esm/src/core/view/Event.d.ts +64 -0
- package/dist/node-esm/src/core/view/EventGenerator.d.ts +42 -0
- package/dist/node-esm/src/core/view/EventQueue.d.ts +67 -0
- package/dist/node-esm/src/core/view/EventRegistration.d.ts +87 -0
- package/dist/node-esm/src/core/view/QueryParams.d.ts +95 -0
- package/dist/node-esm/src/core/view/View.d.ts +59 -0
- package/dist/node-esm/src/core/view/ViewCache.d.ts +32 -0
- package/dist/node-esm/src/core/view/ViewProcessor.d.ts +32 -0
- package/dist/node-esm/src/core/view/filter/IndexedFilter.d.ts +35 -0
- package/dist/node-esm/src/core/view/filter/LimitedFilter.d.ts +47 -0
- package/dist/node-esm/src/core/view/filter/NodeFilter.d.ts +54 -0
- package/dist/node-esm/src/core/view/filter/RangedFilter.d.ts +47 -0
- package/dist/node-esm/src/index.d.ts +28 -0
- package/dist/node-esm/src/index.node.d.ts +17 -0
- package/dist/node-esm/src/index.standalone.d.ts +17 -0
- package/dist/node-esm/src/internal/index.d.ts +38 -0
- package/dist/node-esm/src/realtime/BrowserPollConnection.d.ts +198 -0
- package/dist/node-esm/src/realtime/Connection.d.ts +102 -0
- package/dist/node-esm/src/realtime/Constants.d.ts +27 -0
- package/dist/node-esm/src/realtime/Transport.d.ts +58 -0
- package/dist/node-esm/src/realtime/TransportManager.d.ts +50 -0
- package/dist/node-esm/src/realtime/WebSocketConnection.d.ts +127 -0
- package/dist/node-esm/src/realtime/polling/PacketReceiver.d.ts +38 -0
- package/dist/node-esm/src/register.d.ts +1 -0
- package/dist/node-esm/test/helpers/EventAccumulator.d.ts +35 -0
- package/dist/node-esm/test/helpers/syncpoint-util.d.ts +29 -0
- package/dist/node-esm/test/helpers/util.d.ts +36 -0
- package/dist/private.d.ts +2853 -0
- package/dist/public.d.ts +1405 -0
- package/dist/src/api/Database.d.ts +137 -0
- package/dist/src/api/OnDisconnect.d.ts +110 -0
- package/dist/src/api/Reference.d.ts +124 -0
- package/dist/src/api/Reference_impl.d.ts +1100 -0
- package/dist/src/api/ServerValue.d.ts +30 -0
- package/dist/src/api/Transaction.d.ts +83 -0
- package/dist/src/api/test_access.d.ts +31 -0
- package/dist/src/api.d.ts +18 -0
- package/dist/src/api.standalone.d.ts +30 -0
- package/dist/src/core/AppCheckTokenProvider.d.ts +32 -0
- package/dist/src/core/AuthTokenProvider.d.ts +49 -0
- package/dist/src/core/CompoundWrite.d.ts +81 -0
- package/dist/src/core/PersistentConnection.d.ts +135 -0
- package/dist/src/core/ReadonlyRestClient.d.ts +60 -0
- package/dist/src/core/Repo.d.ts +144 -0
- package/dist/src/core/RepoInfo.d.ts +61 -0
- package/dist/src/core/ServerActions.d.ts +52 -0
- package/dist/src/core/SnapshotHolder.d.ts +26 -0
- package/dist/src/core/SparseSnapshotTree.d.ts +64 -0
- package/dist/src/core/SyncPoint.d.ts +91 -0
- package/dist/src/core/SyncTree.d.ts +166 -0
- package/dist/src/core/WriteTree.d.ts +205 -0
- package/dist/src/core/operation/AckUserWrite.d.ts +36 -0
- package/dist/src/core/operation/ListenComplete.d.ts +26 -0
- package/dist/src/core/operation/Merge.d.ts +33 -0
- package/dist/src/core/operation/Operation.d.ts +45 -0
- package/dist/src/core/operation/Overwrite.d.ts +28 -0
- package/dist/src/core/snap/ChildrenNode.d.ts +112 -0
- package/dist/src/core/snap/IndexMap.d.ts +43 -0
- package/dist/src/core/snap/LeafNode.d.ts +83 -0
- package/dist/src/core/snap/Node.d.ts +126 -0
- package/dist/src/core/snap/childSet.d.ts +32 -0
- package/dist/src/core/snap/comparators.d.ts +19 -0
- package/dist/src/core/snap/indexes/Index.d.ts +50 -0
- package/dist/src/core/snap/indexes/KeyIndex.d.ts +34 -0
- package/dist/src/core/snap/indexes/PathIndex.d.ts +29 -0
- package/dist/src/core/snap/indexes/PriorityIndex.d.ts +33 -0
- package/dist/src/core/snap/indexes/ValueIndex.d.ts +31 -0
- package/dist/src/core/snap/nodeFromJSON.d.ts +24 -0
- package/dist/src/core/snap/snap.d.ts +23 -0
- package/dist/src/core/stats/StatsCollection.d.ts +26 -0
- package/dist/src/core/stats/StatsListener.d.ts +30 -0
- package/dist/src/core/stats/StatsManager.d.ts +20 -0
- package/dist/src/core/stats/StatsReporter.d.ts +28 -0
- package/dist/src/core/storage/DOMStorageWrapper.d.ts +46 -0
- package/dist/src/core/storage/MemoryStorage.d.ts +27 -0
- package/dist/src/core/storage/storage.d.ts +22 -0
- package/dist/src/core/util/EventEmitter.d.ts +39 -0
- package/dist/src/core/util/ImmutableTree.d.ts +117 -0
- package/dist/src/core/util/NextPushId.d.ts +33 -0
- package/dist/src/core/util/OnlineMonitor.d.ts +31 -0
- package/dist/src/core/util/Path.d.ts +94 -0
- package/dist/src/core/util/ServerValues.d.ts +56 -0
- package/dist/src/core/util/SortedMap.d.ts +324 -0
- package/dist/src/core/util/Tree.d.ts +105 -0
- package/dist/src/core/util/VisibilityMonitor.d.ts +23 -0
- package/dist/src/core/util/libs/parser.d.ts +32 -0
- package/dist/src/core/util/misc.d.ts +19 -0
- package/dist/src/core/util/util.d.ts +176 -0
- package/dist/src/core/util/validation.d.ts +70 -0
- package/dist/src/core/version.d.ts +23 -0
- package/dist/src/core/view/CacheNode.d.ts +41 -0
- package/dist/src/core/view/Change.d.ts +46 -0
- package/dist/src/core/view/ChildChangeAccumulator.d.ts +22 -0
- package/dist/src/core/view/CompleteChildSource.d.ts +55 -0
- package/dist/src/core/view/Event.d.ts +64 -0
- package/dist/src/core/view/EventGenerator.d.ts +42 -0
- package/dist/src/core/view/EventQueue.d.ts +67 -0
- package/dist/src/core/view/EventRegistration.d.ts +87 -0
- package/dist/src/core/view/QueryParams.d.ts +95 -0
- package/dist/src/core/view/View.d.ts +59 -0
- package/dist/src/core/view/ViewCache.d.ts +32 -0
- package/dist/src/core/view/ViewProcessor.d.ts +32 -0
- package/dist/src/core/view/filter/IndexedFilter.d.ts +35 -0
- package/dist/src/core/view/filter/LimitedFilter.d.ts +47 -0
- package/dist/src/core/view/filter/NodeFilter.d.ts +54 -0
- package/dist/src/core/view/filter/RangedFilter.d.ts +47 -0
- package/dist/src/index.d.ts +28 -0
- package/dist/src/index.node.d.ts +17 -0
- package/dist/src/index.standalone.d.ts +17 -0
- package/dist/src/internal/index.d.ts +38 -0
- package/dist/src/realtime/BrowserPollConnection.d.ts +198 -0
- package/dist/src/realtime/Connection.d.ts +102 -0
- package/dist/src/realtime/Constants.d.ts +27 -0
- package/dist/src/realtime/Transport.d.ts +58 -0
- package/dist/src/realtime/TransportManager.d.ts +50 -0
- package/dist/src/realtime/WebSocketConnection.d.ts +127 -0
- package/dist/src/realtime/polling/PacketReceiver.d.ts +38 -0
- package/dist/src/register.d.ts +1 -0
- package/dist/src/tsdoc-metadata.json +11 -0
- package/dist/test/helpers/EventAccumulator.d.ts +35 -0
- package/dist/test/helpers/syncpoint-util.d.ts +29 -0
- package/dist/test/helpers/util.d.ts +36 -0
- package/package.json +104 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Firebase Realtime Database
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @license
|
|
8
|
+
* Copyright 2020 Google LLC
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
import { Database } from './api/Database';
|
|
23
|
+
export * from './api';
|
|
24
|
+
declare module '@firebase/component' {
|
|
25
|
+
interface NameServiceMapping {
|
|
26
|
+
'database': Database;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2021 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export * from './api';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2021 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export * from './api.standalone';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2023 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { FirebaseAppCheckInternal } from '@firebase/app-check-interop-types';
|
|
18
|
+
import { FirebaseApp } from '@firebase/app-types';
|
|
19
|
+
import { FirebaseAuthInternal } from '@firebase/auth-interop-types';
|
|
20
|
+
import { Database } from '../api.standalone';
|
|
21
|
+
/**
|
|
22
|
+
* Used by console to create a database based on the app,
|
|
23
|
+
* passed database URL and a custom auth implementation.
|
|
24
|
+
* @internal
|
|
25
|
+
* @param app - A valid FirebaseApp-like object
|
|
26
|
+
* @param url - A valid Firebase databaseURL
|
|
27
|
+
* @param version - custom version e.g. firebase-admin version
|
|
28
|
+
* @param customAppCheckImpl - custom app check implementation
|
|
29
|
+
* @param customAuthImpl - custom auth implementation
|
|
30
|
+
*/
|
|
31
|
+
export declare function _initStandalone({ app, url, version, customAuthImpl, customAppCheckImpl, nodeAdmin }: {
|
|
32
|
+
app: FirebaseApp;
|
|
33
|
+
url: string;
|
|
34
|
+
version: string;
|
|
35
|
+
customAuthImpl: FirebaseAuthInternal;
|
|
36
|
+
customAppCheckImpl?: FirebaseAppCheckInternal;
|
|
37
|
+
nodeAdmin?: boolean;
|
|
38
|
+
}): Database;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { RepoInfo } from '../core/RepoInfo';
|
|
18
|
+
import { PacketReceiver } from './polling/PacketReceiver';
|
|
19
|
+
import { Transport } from './Transport';
|
|
20
|
+
export declare const FIREBASE_LONGPOLL_START_PARAM = "start";
|
|
21
|
+
export declare const FIREBASE_LONGPOLL_CLOSE_COMMAND = "close";
|
|
22
|
+
export declare const FIREBASE_LONGPOLL_COMMAND_CB_NAME = "pLPCommand";
|
|
23
|
+
export declare const FIREBASE_LONGPOLL_DATA_CB_NAME = "pRTLPCB";
|
|
24
|
+
export declare const FIREBASE_LONGPOLL_ID_PARAM = "id";
|
|
25
|
+
export declare const FIREBASE_LONGPOLL_PW_PARAM = "pw";
|
|
26
|
+
export declare const FIREBASE_LONGPOLL_SERIAL_PARAM = "ser";
|
|
27
|
+
export declare const FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = "cb";
|
|
28
|
+
export declare const FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = "seg";
|
|
29
|
+
export declare const FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = "ts";
|
|
30
|
+
export declare const FIREBASE_LONGPOLL_DATA_PARAM = "d";
|
|
31
|
+
export declare const FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM = "disconn";
|
|
32
|
+
export declare const FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = "dframe";
|
|
33
|
+
/**
|
|
34
|
+
* This class manages a single long-polling connection.
|
|
35
|
+
*/
|
|
36
|
+
export declare class BrowserPollConnection implements Transport {
|
|
37
|
+
connId: string;
|
|
38
|
+
repoInfo: RepoInfo;
|
|
39
|
+
private applicationId?;
|
|
40
|
+
private appCheckToken?;
|
|
41
|
+
private authToken?;
|
|
42
|
+
transportSessionId?: string;
|
|
43
|
+
lastSessionId?: string;
|
|
44
|
+
bytesSent: number;
|
|
45
|
+
bytesReceived: number;
|
|
46
|
+
urlFn: (params: object) => string;
|
|
47
|
+
scriptTagHolder: FirebaseIFrameScriptHolder;
|
|
48
|
+
myDisconnFrame: HTMLIFrameElement;
|
|
49
|
+
curSegmentNum: number;
|
|
50
|
+
myPacketOrderer: PacketReceiver;
|
|
51
|
+
id: string;
|
|
52
|
+
password: string;
|
|
53
|
+
private log_;
|
|
54
|
+
private stats_;
|
|
55
|
+
private everConnected_;
|
|
56
|
+
private isClosed_;
|
|
57
|
+
private connectTimeoutTimer_;
|
|
58
|
+
private onDisconnect_;
|
|
59
|
+
/**
|
|
60
|
+
* @param connId An identifier for this connection, used for logging
|
|
61
|
+
* @param repoInfo The info for the endpoint to send data to.
|
|
62
|
+
* @param applicationId The Firebase App ID for this project.
|
|
63
|
+
* @param appCheckToken The AppCheck token for this client.
|
|
64
|
+
* @param authToken The AuthToken to use for this connection.
|
|
65
|
+
* @param transportSessionId Optional transportSessionid if we are
|
|
66
|
+
* reconnecting for an existing transport session
|
|
67
|
+
* @param lastSessionId Optional lastSessionId if the PersistentConnection has
|
|
68
|
+
* already created a connection previously
|
|
69
|
+
*/
|
|
70
|
+
constructor(connId: string, repoInfo: RepoInfo, applicationId?: string, appCheckToken?: string, authToken?: string, transportSessionId?: string, lastSessionId?: string);
|
|
71
|
+
/**
|
|
72
|
+
* @param onMessage - Callback when messages arrive
|
|
73
|
+
* @param onDisconnect - Callback with connection lost.
|
|
74
|
+
*/
|
|
75
|
+
open(onMessage: (msg: {}) => void, onDisconnect: (a?: boolean) => void): void;
|
|
76
|
+
/**
|
|
77
|
+
* Call this when a handshake has completed successfully and we want to consider the connection established
|
|
78
|
+
*/
|
|
79
|
+
start(): void;
|
|
80
|
+
static forceAllow_: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Forces long polling to be considered as a potential transport
|
|
83
|
+
*/
|
|
84
|
+
static forceAllow(): void;
|
|
85
|
+
static forceDisallow_: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Forces longpolling to not be considered as a potential transport
|
|
88
|
+
*/
|
|
89
|
+
static forceDisallow(): void;
|
|
90
|
+
static isAvailable(): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* No-op for polling
|
|
93
|
+
*/
|
|
94
|
+
markConnectionHealthy(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Stops polling and cleans up the iframe
|
|
97
|
+
*/
|
|
98
|
+
private shutdown_;
|
|
99
|
+
/**
|
|
100
|
+
* Triggered when this transport is closed
|
|
101
|
+
*/
|
|
102
|
+
private onClosed_;
|
|
103
|
+
/**
|
|
104
|
+
* External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server
|
|
105
|
+
* that we've left.
|
|
106
|
+
*/
|
|
107
|
+
close(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then
|
|
110
|
+
* broken into chunks (since URLs have a small maximum length).
|
|
111
|
+
* @param data - The JSON data to transmit.
|
|
112
|
+
*/
|
|
113
|
+
send(data: {}): void;
|
|
114
|
+
/**
|
|
115
|
+
* This is how we notify the server that we're leaving.
|
|
116
|
+
* We aren't able to send requests with DHTML on a window close event, but we can
|
|
117
|
+
* trigger XHR requests in some browsers (everything but Opera basically).
|
|
118
|
+
*/
|
|
119
|
+
addDisconnectPingFrame(id: string, pw: string): void;
|
|
120
|
+
/**
|
|
121
|
+
* Used to track the bytes received by this client
|
|
122
|
+
*/
|
|
123
|
+
private incrementIncomingBytes_;
|
|
124
|
+
}
|
|
125
|
+
export interface IFrameElement extends HTMLIFrameElement {
|
|
126
|
+
doc: Document;
|
|
127
|
+
}
|
|
128
|
+
/*********************************************************************************************
|
|
129
|
+
* A wrapper around an iframe that is used as a long-polling script holder.
|
|
130
|
+
*********************************************************************************************/
|
|
131
|
+
export declare class FirebaseIFrameScriptHolder {
|
|
132
|
+
onDisconnect: () => void;
|
|
133
|
+
urlFn: (a: object) => string;
|
|
134
|
+
outstandingRequests: Set<number>;
|
|
135
|
+
pendingSegs: Array<{
|
|
136
|
+
seg: number;
|
|
137
|
+
ts: number;
|
|
138
|
+
d: unknown;
|
|
139
|
+
}>;
|
|
140
|
+
currentSerial: number;
|
|
141
|
+
sendNewPolls: boolean;
|
|
142
|
+
uniqueCallbackIdentifier: number;
|
|
143
|
+
myIFrame: IFrameElement;
|
|
144
|
+
alive: boolean;
|
|
145
|
+
myID: string;
|
|
146
|
+
myPW: string;
|
|
147
|
+
commandCB: (command: string, ...args: unknown[]) => void;
|
|
148
|
+
onMessageCB: (...args: unknown[]) => void;
|
|
149
|
+
/**
|
|
150
|
+
* @param commandCB - The callback to be called when control commands are received from the server.
|
|
151
|
+
* @param onMessageCB - The callback to be triggered when responses arrive from the server.
|
|
152
|
+
* @param onDisconnect - The callback to be triggered when this tag holder is closed
|
|
153
|
+
* @param urlFn - A function that provides the URL of the endpoint to send data to.
|
|
154
|
+
*/
|
|
155
|
+
constructor(commandCB: (command: string, ...args: unknown[]) => void, onMessageCB: (...args: unknown[]) => void, onDisconnect: () => void, urlFn: (a: object) => string);
|
|
156
|
+
/**
|
|
157
|
+
* Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can
|
|
158
|
+
* actually use.
|
|
159
|
+
*/
|
|
160
|
+
private static createIFrame_;
|
|
161
|
+
/**
|
|
162
|
+
* Cancel all outstanding queries and remove the frame.
|
|
163
|
+
*/
|
|
164
|
+
close(): void;
|
|
165
|
+
/**
|
|
166
|
+
* Actually start the long-polling session by adding the first script tag(s) to the iframe.
|
|
167
|
+
* @param id - The ID of this connection
|
|
168
|
+
* @param pw - The password for this connection
|
|
169
|
+
*/
|
|
170
|
+
startLongPoll(id: string, pw: string): void;
|
|
171
|
+
/**
|
|
172
|
+
* This is called any time someone might want a script tag to be added. It adds a script tag when there aren't
|
|
173
|
+
* too many outstanding requests and we are still alive.
|
|
174
|
+
*
|
|
175
|
+
* If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if
|
|
176
|
+
* needed.
|
|
177
|
+
*/
|
|
178
|
+
private newRequest_;
|
|
179
|
+
/**
|
|
180
|
+
* Queue a packet for transmission to the server.
|
|
181
|
+
* @param segnum - A sequential id for this packet segment used for reassembly
|
|
182
|
+
* @param totalsegs - The total number of segments in this packet
|
|
183
|
+
* @param data - The data for this segment.
|
|
184
|
+
*/
|
|
185
|
+
enqueueSegment(segnum: number, totalsegs: number, data: unknown): void;
|
|
186
|
+
/**
|
|
187
|
+
* Add a script tag for a regular long-poll request.
|
|
188
|
+
* @param url - The URL of the script tag.
|
|
189
|
+
* @param serial - The serial number of the request.
|
|
190
|
+
*/
|
|
191
|
+
private addLongPollTag_;
|
|
192
|
+
/**
|
|
193
|
+
* Add an arbitrary script tag to the iframe.
|
|
194
|
+
* @param url - The URL for the script tag source.
|
|
195
|
+
* @param loadCB - A callback to be triggered once the script has loaded.
|
|
196
|
+
*/
|
|
197
|
+
addTag(url: string, loadCB: () => void): void;
|
|
198
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { RepoInfo } from '../core/RepoInfo';
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new real-time connection to the server using whichever method works
|
|
20
|
+
* best in the current browser.
|
|
21
|
+
*/
|
|
22
|
+
export declare class Connection {
|
|
23
|
+
id: string;
|
|
24
|
+
private repoInfo_;
|
|
25
|
+
private applicationId_;
|
|
26
|
+
private appCheckToken_;
|
|
27
|
+
private authToken_;
|
|
28
|
+
private onMessage_;
|
|
29
|
+
private onReady_;
|
|
30
|
+
private onDisconnect_;
|
|
31
|
+
private onKill_;
|
|
32
|
+
lastSessionId?: string;
|
|
33
|
+
connectionCount: number;
|
|
34
|
+
pendingDataMessages: unknown[];
|
|
35
|
+
sessionId: string;
|
|
36
|
+
private conn_;
|
|
37
|
+
private healthyTimeout_;
|
|
38
|
+
private isHealthy_;
|
|
39
|
+
private log_;
|
|
40
|
+
private primaryResponsesRequired_;
|
|
41
|
+
private rx_;
|
|
42
|
+
private secondaryConn_;
|
|
43
|
+
private secondaryResponsesRequired_;
|
|
44
|
+
private state_;
|
|
45
|
+
private transportManager_;
|
|
46
|
+
private tx_;
|
|
47
|
+
/**
|
|
48
|
+
* @param id - an id for this connection
|
|
49
|
+
* @param repoInfo_ - the info for the endpoint to connect to
|
|
50
|
+
* @param applicationId_ - the Firebase App ID for this project
|
|
51
|
+
* @param appCheckToken_ - The App Check Token for this device.
|
|
52
|
+
* @param authToken_ - The auth token for this session.
|
|
53
|
+
* @param onMessage_ - the callback to be triggered when a server-push message arrives
|
|
54
|
+
* @param onReady_ - the callback to be triggered when this connection is ready to send messages.
|
|
55
|
+
* @param onDisconnect_ - the callback to be triggered when a connection was lost
|
|
56
|
+
* @param onKill_ - the callback to be triggered when this connection has permanently shut down.
|
|
57
|
+
* @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server
|
|
58
|
+
*/
|
|
59
|
+
constructor(id: string, repoInfo_: RepoInfo, applicationId_: string | undefined, appCheckToken_: string | undefined, authToken_: string | undefined, onMessage_: (a: {}) => void, onReady_: (a: number, b: string) => void, onDisconnect_: () => void, onKill_: (a: string) => void, lastSessionId?: string);
|
|
60
|
+
/**
|
|
61
|
+
* Starts a connection attempt
|
|
62
|
+
*/
|
|
63
|
+
private start_;
|
|
64
|
+
private nextTransportId_;
|
|
65
|
+
private disconnReceiver_;
|
|
66
|
+
private connReceiver_;
|
|
67
|
+
/**
|
|
68
|
+
* @param dataMsg - An arbitrary data message to be sent to the server
|
|
69
|
+
*/
|
|
70
|
+
sendRequest(dataMsg: object): void;
|
|
71
|
+
tryCleanupConnection(): void;
|
|
72
|
+
private onSecondaryControl_;
|
|
73
|
+
private onSecondaryMessageReceived_;
|
|
74
|
+
private upgradeIfSecondaryHealthy_;
|
|
75
|
+
private proceedWithUpgrade_;
|
|
76
|
+
private onPrimaryMessageReceived_;
|
|
77
|
+
private onDataMessage_;
|
|
78
|
+
private onPrimaryResponse_;
|
|
79
|
+
private onControl_;
|
|
80
|
+
/**
|
|
81
|
+
* @param handshake - The handshake data returned from the server
|
|
82
|
+
*/
|
|
83
|
+
private onHandshake_;
|
|
84
|
+
private tryStartUpgrade_;
|
|
85
|
+
private startUpgrade_;
|
|
86
|
+
private onReset_;
|
|
87
|
+
private onConnectionEstablished_;
|
|
88
|
+
private sendPingOnPrimaryIfNecessary_;
|
|
89
|
+
private onSecondaryConnectionLost_;
|
|
90
|
+
/**
|
|
91
|
+
* @param everConnected - Whether or not the connection ever reached a server. Used to determine if
|
|
92
|
+
* we should flush the host cache
|
|
93
|
+
*/
|
|
94
|
+
private onConnectionLost_;
|
|
95
|
+
private onConnectionShutdown_;
|
|
96
|
+
private sendData_;
|
|
97
|
+
/**
|
|
98
|
+
* Cleans up this connection, calling the appropriate callbacks
|
|
99
|
+
*/
|
|
100
|
+
close(): void;
|
|
101
|
+
private closeConnections_;
|
|
102
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export declare const PROTOCOL_VERSION = "5";
|
|
18
|
+
export declare const VERSION_PARAM = "v";
|
|
19
|
+
export declare const TRANSPORT_SESSION_PARAM = "s";
|
|
20
|
+
export declare const REFERER_PARAM = "r";
|
|
21
|
+
export declare const FORGE_REF = "f";
|
|
22
|
+
export declare const FORGE_DOMAIN_RE: RegExp;
|
|
23
|
+
export declare const LAST_SESSION_PARAM = "ls";
|
|
24
|
+
export declare const APPLICATION_ID_PARAM = "p";
|
|
25
|
+
export declare const APP_CHECK_TOKEN_PARAM = "ac";
|
|
26
|
+
export declare const WEBSOCKET = "websocket";
|
|
27
|
+
export declare const LONG_POLLING = "long_polling";
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { RepoInfo } from '../core/RepoInfo';
|
|
18
|
+
export interface TransportConstructor {
|
|
19
|
+
new (connId: string, repoInfo: RepoInfo, applicationId?: string, appCheckToken?: string, authToken?: string, transportSessionId?: string, lastSessionId?: string): Transport;
|
|
20
|
+
isAvailable: () => boolean;
|
|
21
|
+
responsesRequiredToBeHealthy?: number;
|
|
22
|
+
healthyTimeout?: number;
|
|
23
|
+
}
|
|
24
|
+
export declare abstract class Transport {
|
|
25
|
+
/**
|
|
26
|
+
* Bytes received since connection started.
|
|
27
|
+
*/
|
|
28
|
+
abstract bytesReceived: number;
|
|
29
|
+
/**
|
|
30
|
+
* Bytes sent since connection started.
|
|
31
|
+
*/
|
|
32
|
+
abstract bytesSent: number;
|
|
33
|
+
/**
|
|
34
|
+
* An identifier for this connection, used for logging
|
|
35
|
+
*/
|
|
36
|
+
abstract connId: string;
|
|
37
|
+
/**
|
|
38
|
+
* @param connId - An identifier for this connection, used for logging
|
|
39
|
+
* @param repoInfo - The info for the endpoint to send data to.
|
|
40
|
+
* @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport session
|
|
41
|
+
* @param lastSessionId - Optional lastSessionId if there was a previous connection
|
|
42
|
+
* @interface
|
|
43
|
+
*/
|
|
44
|
+
constructor(connId: string, repoInfo: RepoInfo, transportSessionId?: string, lastSessionId?: string);
|
|
45
|
+
/**
|
|
46
|
+
* @param onMessage - Callback when messages arrive
|
|
47
|
+
* @param onDisconnect - Callback with connection lost.
|
|
48
|
+
*/
|
|
49
|
+
abstract open(onMessage: (a: {}) => void, onDisconnect: (a?: boolean) => void): void;
|
|
50
|
+
abstract start(): void;
|
|
51
|
+
abstract close(): void;
|
|
52
|
+
/**
|
|
53
|
+
* @param data - The JSON data to transmit
|
|
54
|
+
*/
|
|
55
|
+
abstract send(data: {}): void;
|
|
56
|
+
abstract markConnectionHealthy(): void;
|
|
57
|
+
abstract markConnectionHealthy(): void;
|
|
58
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { RepoInfo } from '../core/RepoInfo';
|
|
18
|
+
import { BrowserPollConnection } from './BrowserPollConnection';
|
|
19
|
+
import { TransportConstructor } from './Transport';
|
|
20
|
+
import { WebSocketConnection } from './WebSocketConnection';
|
|
21
|
+
/**
|
|
22
|
+
* Currently simplistic, this class manages what transport a Connection should use at various stages of its
|
|
23
|
+
* lifecycle.
|
|
24
|
+
*
|
|
25
|
+
* It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if
|
|
26
|
+
* they are available.
|
|
27
|
+
*/
|
|
28
|
+
export declare class TransportManager {
|
|
29
|
+
private transports_;
|
|
30
|
+
static globalTransportInitialized_: boolean;
|
|
31
|
+
static get ALL_TRANSPORTS(): (typeof BrowserPollConnection | typeof WebSocketConnection)[];
|
|
32
|
+
/**
|
|
33
|
+
* Returns whether transport has been selected to ensure WebSocketConnection or BrowserPollConnection are not called after
|
|
34
|
+
* TransportManager has already set up transports_
|
|
35
|
+
*/
|
|
36
|
+
static get IS_TRANSPORT_INITIALIZED(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* @param repoInfo - Metadata around the namespace we're connecting to
|
|
39
|
+
*/
|
|
40
|
+
constructor(repoInfo: RepoInfo);
|
|
41
|
+
private initTransports_;
|
|
42
|
+
/**
|
|
43
|
+
* @returns The constructor for the initial transport to use
|
|
44
|
+
*/
|
|
45
|
+
initialTransport(): TransportConstructor;
|
|
46
|
+
/**
|
|
47
|
+
* @returns The constructor for the next transport, or null
|
|
48
|
+
*/
|
|
49
|
+
upgradeTransport(): TransportConstructor | null;
|
|
50
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { RepoInfo } from '../core/RepoInfo';
|
|
18
|
+
import { Transport } from './Transport';
|
|
19
|
+
export declare function setWebSocketImpl(impl: any): void;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new websocket connection with the given callbacks.
|
|
22
|
+
*/
|
|
23
|
+
export declare class WebSocketConnection implements Transport {
|
|
24
|
+
connId: string;
|
|
25
|
+
private applicationId?;
|
|
26
|
+
private appCheckToken?;
|
|
27
|
+
private authToken?;
|
|
28
|
+
keepaliveTimer: number | null;
|
|
29
|
+
frames: string[] | null;
|
|
30
|
+
totalFrames: number;
|
|
31
|
+
bytesSent: number;
|
|
32
|
+
bytesReceived: number;
|
|
33
|
+
connURL: string;
|
|
34
|
+
onDisconnect: (a?: boolean) => void;
|
|
35
|
+
onMessage: (msg: {}) => void;
|
|
36
|
+
mySock: WebSocket | null;
|
|
37
|
+
private log_;
|
|
38
|
+
private stats_;
|
|
39
|
+
private everConnected_;
|
|
40
|
+
private isClosed_;
|
|
41
|
+
private nodeAdmin;
|
|
42
|
+
/**
|
|
43
|
+
* @param connId identifier for this transport
|
|
44
|
+
* @param repoInfo The info for the websocket endpoint.
|
|
45
|
+
* @param applicationId The Firebase App ID for this project.
|
|
46
|
+
* @param appCheckToken The App Check Token for this client.
|
|
47
|
+
* @param authToken The Auth Token for this client.
|
|
48
|
+
* @param transportSessionId Optional transportSessionId if this is connecting
|
|
49
|
+
* to an existing transport session
|
|
50
|
+
* @param lastSessionId Optional lastSessionId if there was a previous
|
|
51
|
+
* connection
|
|
52
|
+
*/
|
|
53
|
+
constructor(connId: string, repoInfo: RepoInfo, applicationId?: string, appCheckToken?: string, authToken?: string, transportSessionId?: string, lastSessionId?: string);
|
|
54
|
+
/**
|
|
55
|
+
* @param repoInfo - The info for the websocket endpoint.
|
|
56
|
+
* @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport
|
|
57
|
+
* session
|
|
58
|
+
* @param lastSessionId - Optional lastSessionId if there was a previous connection
|
|
59
|
+
* @returns connection url
|
|
60
|
+
*/
|
|
61
|
+
private static connectionURL_;
|
|
62
|
+
/**
|
|
63
|
+
* @param onMessage - Callback when messages arrive
|
|
64
|
+
* @param onDisconnect - Callback with connection lost.
|
|
65
|
+
*/
|
|
66
|
+
open(onMessage: (msg: {}) => void, onDisconnect: (a?: boolean) => void): void;
|
|
67
|
+
/**
|
|
68
|
+
* No-op for websockets, we don't need to do anything once the connection is confirmed as open
|
|
69
|
+
*/
|
|
70
|
+
start(): void;
|
|
71
|
+
static forceDisallow_: boolean;
|
|
72
|
+
static forceDisallow(): void;
|
|
73
|
+
static isAvailable(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Number of response before we consider the connection "healthy."
|
|
76
|
+
*/
|
|
77
|
+
static responsesRequiredToBeHealthy: number;
|
|
78
|
+
/**
|
|
79
|
+
* Time to wait for the connection te become healthy before giving up.
|
|
80
|
+
*/
|
|
81
|
+
static healthyTimeout: number;
|
|
82
|
+
/**
|
|
83
|
+
* Returns true if we previously failed to connect with this transport.
|
|
84
|
+
*/
|
|
85
|
+
static previouslyFailed(): boolean;
|
|
86
|
+
markConnectionHealthy(): void;
|
|
87
|
+
private appendFrame_;
|
|
88
|
+
/**
|
|
89
|
+
* @param frameCount - The number of frames we are expecting from the server
|
|
90
|
+
*/
|
|
91
|
+
private handleNewFrameCount_;
|
|
92
|
+
/**
|
|
93
|
+
* Attempts to parse a frame count out of some text. If it can't, assumes a value of 1
|
|
94
|
+
* @returns Any remaining data to be process, or null if there is none
|
|
95
|
+
*/
|
|
96
|
+
private extractFrameCount_;
|
|
97
|
+
/**
|
|
98
|
+
* Process a websocket frame that has arrived from the server.
|
|
99
|
+
* @param mess - The frame data
|
|
100
|
+
*/
|
|
101
|
+
handleIncomingFrame(mess: {
|
|
102
|
+
[k: string]: unknown;
|
|
103
|
+
}): void;
|
|
104
|
+
/**
|
|
105
|
+
* Send a message to the server
|
|
106
|
+
* @param data - The JSON object to transmit
|
|
107
|
+
*/
|
|
108
|
+
send(data: {}): void;
|
|
109
|
+
private shutdown_;
|
|
110
|
+
private onClosed_;
|
|
111
|
+
/**
|
|
112
|
+
* External-facing close handler.
|
|
113
|
+
* Close the websocket and kill the connection.
|
|
114
|
+
*/
|
|
115
|
+
close(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after
|
|
118
|
+
* the last activity.
|
|
119
|
+
*/
|
|
120
|
+
resetKeepAlive(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Send a string over the websocket.
|
|
123
|
+
*
|
|
124
|
+
* @param str - String to send.
|
|
125
|
+
*/
|
|
126
|
+
private sendString_;
|
|
127
|
+
}
|