@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.
Files changed (202) hide show
  1. package/README.md +31 -0
  2. package/changes.json +10 -0
  3. package/dist/index.cjs.js +14089 -0
  4. package/dist/index.cjs.js.map +1 -0
  5. package/dist/index.esm.js +14032 -0
  6. package/dist/index.esm.js.map +1 -0
  7. package/dist/index.node.cjs.js +14109 -0
  8. package/dist/index.node.cjs.js.map +1 -0
  9. package/dist/index.standalone.js +14052 -0
  10. package/dist/index.standalone.js.map +1 -0
  11. package/dist/internal.d.ts +2991 -0
  12. package/dist/node-esm/index.node.esm.js +14048 -0
  13. package/dist/node-esm/index.node.esm.js.map +1 -0
  14. package/dist/node-esm/package.json +1 -0
  15. package/dist/node-esm/src/api/Database.d.ts +137 -0
  16. package/dist/node-esm/src/api/OnDisconnect.d.ts +110 -0
  17. package/dist/node-esm/src/api/Reference.d.ts +124 -0
  18. package/dist/node-esm/src/api/Reference_impl.d.ts +1100 -0
  19. package/dist/node-esm/src/api/ServerValue.d.ts +30 -0
  20. package/dist/node-esm/src/api/Transaction.d.ts +83 -0
  21. package/dist/node-esm/src/api/test_access.d.ts +31 -0
  22. package/dist/node-esm/src/api.d.ts +18 -0
  23. package/dist/node-esm/src/api.standalone.d.ts +30 -0
  24. package/dist/node-esm/src/core/AppCheckTokenProvider.d.ts +32 -0
  25. package/dist/node-esm/src/core/AuthTokenProvider.d.ts +49 -0
  26. package/dist/node-esm/src/core/CompoundWrite.d.ts +81 -0
  27. package/dist/node-esm/src/core/PersistentConnection.d.ts +135 -0
  28. package/dist/node-esm/src/core/ReadonlyRestClient.d.ts +60 -0
  29. package/dist/node-esm/src/core/Repo.d.ts +144 -0
  30. package/dist/node-esm/src/core/RepoInfo.d.ts +61 -0
  31. package/dist/node-esm/src/core/ServerActions.d.ts +52 -0
  32. package/dist/node-esm/src/core/SnapshotHolder.d.ts +26 -0
  33. package/dist/node-esm/src/core/SparseSnapshotTree.d.ts +64 -0
  34. package/dist/node-esm/src/core/SyncPoint.d.ts +91 -0
  35. package/dist/node-esm/src/core/SyncTree.d.ts +166 -0
  36. package/dist/node-esm/src/core/WriteTree.d.ts +205 -0
  37. package/dist/node-esm/src/core/operation/AckUserWrite.d.ts +36 -0
  38. package/dist/node-esm/src/core/operation/ListenComplete.d.ts +26 -0
  39. package/dist/node-esm/src/core/operation/Merge.d.ts +33 -0
  40. package/dist/node-esm/src/core/operation/Operation.d.ts +45 -0
  41. package/dist/node-esm/src/core/operation/Overwrite.d.ts +28 -0
  42. package/dist/node-esm/src/core/snap/ChildrenNode.d.ts +112 -0
  43. package/dist/node-esm/src/core/snap/IndexMap.d.ts +43 -0
  44. package/dist/node-esm/src/core/snap/LeafNode.d.ts +83 -0
  45. package/dist/node-esm/src/core/snap/Node.d.ts +126 -0
  46. package/dist/node-esm/src/core/snap/childSet.d.ts +32 -0
  47. package/dist/node-esm/src/core/snap/comparators.d.ts +19 -0
  48. package/dist/node-esm/src/core/snap/indexes/Index.d.ts +50 -0
  49. package/dist/node-esm/src/core/snap/indexes/KeyIndex.d.ts +34 -0
  50. package/dist/node-esm/src/core/snap/indexes/PathIndex.d.ts +29 -0
  51. package/dist/node-esm/src/core/snap/indexes/PriorityIndex.d.ts +33 -0
  52. package/dist/node-esm/src/core/snap/indexes/ValueIndex.d.ts +31 -0
  53. package/dist/node-esm/src/core/snap/nodeFromJSON.d.ts +24 -0
  54. package/dist/node-esm/src/core/snap/snap.d.ts +23 -0
  55. package/dist/node-esm/src/core/stats/StatsCollection.d.ts +26 -0
  56. package/dist/node-esm/src/core/stats/StatsListener.d.ts +30 -0
  57. package/dist/node-esm/src/core/stats/StatsManager.d.ts +20 -0
  58. package/dist/node-esm/src/core/stats/StatsReporter.d.ts +28 -0
  59. package/dist/node-esm/src/core/storage/DOMStorageWrapper.d.ts +46 -0
  60. package/dist/node-esm/src/core/storage/MemoryStorage.d.ts +27 -0
  61. package/dist/node-esm/src/core/storage/storage.d.ts +22 -0
  62. package/dist/node-esm/src/core/util/EventEmitter.d.ts +39 -0
  63. package/dist/node-esm/src/core/util/ImmutableTree.d.ts +117 -0
  64. package/dist/node-esm/src/core/util/NextPushId.d.ts +33 -0
  65. package/dist/node-esm/src/core/util/OnlineMonitor.d.ts +31 -0
  66. package/dist/node-esm/src/core/util/Path.d.ts +94 -0
  67. package/dist/node-esm/src/core/util/ServerValues.d.ts +56 -0
  68. package/dist/node-esm/src/core/util/SortedMap.d.ts +324 -0
  69. package/dist/node-esm/src/core/util/Tree.d.ts +105 -0
  70. package/dist/node-esm/src/core/util/VisibilityMonitor.d.ts +23 -0
  71. package/dist/node-esm/src/core/util/libs/parser.d.ts +32 -0
  72. package/dist/node-esm/src/core/util/misc.d.ts +19 -0
  73. package/dist/node-esm/src/core/util/util.d.ts +176 -0
  74. package/dist/node-esm/src/core/util/validation.d.ts +70 -0
  75. package/dist/node-esm/src/core/version.d.ts +23 -0
  76. package/dist/node-esm/src/core/view/CacheNode.d.ts +41 -0
  77. package/dist/node-esm/src/core/view/Change.d.ts +46 -0
  78. package/dist/node-esm/src/core/view/ChildChangeAccumulator.d.ts +22 -0
  79. package/dist/node-esm/src/core/view/CompleteChildSource.d.ts +55 -0
  80. package/dist/node-esm/src/core/view/Event.d.ts +64 -0
  81. package/dist/node-esm/src/core/view/EventGenerator.d.ts +42 -0
  82. package/dist/node-esm/src/core/view/EventQueue.d.ts +67 -0
  83. package/dist/node-esm/src/core/view/EventRegistration.d.ts +87 -0
  84. package/dist/node-esm/src/core/view/QueryParams.d.ts +95 -0
  85. package/dist/node-esm/src/core/view/View.d.ts +59 -0
  86. package/dist/node-esm/src/core/view/ViewCache.d.ts +32 -0
  87. package/dist/node-esm/src/core/view/ViewProcessor.d.ts +32 -0
  88. package/dist/node-esm/src/core/view/filter/IndexedFilter.d.ts +35 -0
  89. package/dist/node-esm/src/core/view/filter/LimitedFilter.d.ts +47 -0
  90. package/dist/node-esm/src/core/view/filter/NodeFilter.d.ts +54 -0
  91. package/dist/node-esm/src/core/view/filter/RangedFilter.d.ts +47 -0
  92. package/dist/node-esm/src/index.d.ts +28 -0
  93. package/dist/node-esm/src/index.node.d.ts +17 -0
  94. package/dist/node-esm/src/index.standalone.d.ts +17 -0
  95. package/dist/node-esm/src/internal/index.d.ts +38 -0
  96. package/dist/node-esm/src/realtime/BrowserPollConnection.d.ts +198 -0
  97. package/dist/node-esm/src/realtime/Connection.d.ts +102 -0
  98. package/dist/node-esm/src/realtime/Constants.d.ts +27 -0
  99. package/dist/node-esm/src/realtime/Transport.d.ts +58 -0
  100. package/dist/node-esm/src/realtime/TransportManager.d.ts +50 -0
  101. package/dist/node-esm/src/realtime/WebSocketConnection.d.ts +127 -0
  102. package/dist/node-esm/src/realtime/polling/PacketReceiver.d.ts +38 -0
  103. package/dist/node-esm/src/register.d.ts +1 -0
  104. package/dist/node-esm/test/helpers/EventAccumulator.d.ts +35 -0
  105. package/dist/node-esm/test/helpers/syncpoint-util.d.ts +29 -0
  106. package/dist/node-esm/test/helpers/util.d.ts +36 -0
  107. package/dist/private.d.ts +2853 -0
  108. package/dist/public.d.ts +1405 -0
  109. package/dist/src/api/Database.d.ts +137 -0
  110. package/dist/src/api/OnDisconnect.d.ts +110 -0
  111. package/dist/src/api/Reference.d.ts +124 -0
  112. package/dist/src/api/Reference_impl.d.ts +1100 -0
  113. package/dist/src/api/ServerValue.d.ts +30 -0
  114. package/dist/src/api/Transaction.d.ts +83 -0
  115. package/dist/src/api/test_access.d.ts +31 -0
  116. package/dist/src/api.d.ts +18 -0
  117. package/dist/src/api.standalone.d.ts +30 -0
  118. package/dist/src/core/AppCheckTokenProvider.d.ts +32 -0
  119. package/dist/src/core/AuthTokenProvider.d.ts +49 -0
  120. package/dist/src/core/CompoundWrite.d.ts +81 -0
  121. package/dist/src/core/PersistentConnection.d.ts +135 -0
  122. package/dist/src/core/ReadonlyRestClient.d.ts +60 -0
  123. package/dist/src/core/Repo.d.ts +144 -0
  124. package/dist/src/core/RepoInfo.d.ts +61 -0
  125. package/dist/src/core/ServerActions.d.ts +52 -0
  126. package/dist/src/core/SnapshotHolder.d.ts +26 -0
  127. package/dist/src/core/SparseSnapshotTree.d.ts +64 -0
  128. package/dist/src/core/SyncPoint.d.ts +91 -0
  129. package/dist/src/core/SyncTree.d.ts +166 -0
  130. package/dist/src/core/WriteTree.d.ts +205 -0
  131. package/dist/src/core/operation/AckUserWrite.d.ts +36 -0
  132. package/dist/src/core/operation/ListenComplete.d.ts +26 -0
  133. package/dist/src/core/operation/Merge.d.ts +33 -0
  134. package/dist/src/core/operation/Operation.d.ts +45 -0
  135. package/dist/src/core/operation/Overwrite.d.ts +28 -0
  136. package/dist/src/core/snap/ChildrenNode.d.ts +112 -0
  137. package/dist/src/core/snap/IndexMap.d.ts +43 -0
  138. package/dist/src/core/snap/LeafNode.d.ts +83 -0
  139. package/dist/src/core/snap/Node.d.ts +126 -0
  140. package/dist/src/core/snap/childSet.d.ts +32 -0
  141. package/dist/src/core/snap/comparators.d.ts +19 -0
  142. package/dist/src/core/snap/indexes/Index.d.ts +50 -0
  143. package/dist/src/core/snap/indexes/KeyIndex.d.ts +34 -0
  144. package/dist/src/core/snap/indexes/PathIndex.d.ts +29 -0
  145. package/dist/src/core/snap/indexes/PriorityIndex.d.ts +33 -0
  146. package/dist/src/core/snap/indexes/ValueIndex.d.ts +31 -0
  147. package/dist/src/core/snap/nodeFromJSON.d.ts +24 -0
  148. package/dist/src/core/snap/snap.d.ts +23 -0
  149. package/dist/src/core/stats/StatsCollection.d.ts +26 -0
  150. package/dist/src/core/stats/StatsListener.d.ts +30 -0
  151. package/dist/src/core/stats/StatsManager.d.ts +20 -0
  152. package/dist/src/core/stats/StatsReporter.d.ts +28 -0
  153. package/dist/src/core/storage/DOMStorageWrapper.d.ts +46 -0
  154. package/dist/src/core/storage/MemoryStorage.d.ts +27 -0
  155. package/dist/src/core/storage/storage.d.ts +22 -0
  156. package/dist/src/core/util/EventEmitter.d.ts +39 -0
  157. package/dist/src/core/util/ImmutableTree.d.ts +117 -0
  158. package/dist/src/core/util/NextPushId.d.ts +33 -0
  159. package/dist/src/core/util/OnlineMonitor.d.ts +31 -0
  160. package/dist/src/core/util/Path.d.ts +94 -0
  161. package/dist/src/core/util/ServerValues.d.ts +56 -0
  162. package/dist/src/core/util/SortedMap.d.ts +324 -0
  163. package/dist/src/core/util/Tree.d.ts +105 -0
  164. package/dist/src/core/util/VisibilityMonitor.d.ts +23 -0
  165. package/dist/src/core/util/libs/parser.d.ts +32 -0
  166. package/dist/src/core/util/misc.d.ts +19 -0
  167. package/dist/src/core/util/util.d.ts +176 -0
  168. package/dist/src/core/util/validation.d.ts +70 -0
  169. package/dist/src/core/version.d.ts +23 -0
  170. package/dist/src/core/view/CacheNode.d.ts +41 -0
  171. package/dist/src/core/view/Change.d.ts +46 -0
  172. package/dist/src/core/view/ChildChangeAccumulator.d.ts +22 -0
  173. package/dist/src/core/view/CompleteChildSource.d.ts +55 -0
  174. package/dist/src/core/view/Event.d.ts +64 -0
  175. package/dist/src/core/view/EventGenerator.d.ts +42 -0
  176. package/dist/src/core/view/EventQueue.d.ts +67 -0
  177. package/dist/src/core/view/EventRegistration.d.ts +87 -0
  178. package/dist/src/core/view/QueryParams.d.ts +95 -0
  179. package/dist/src/core/view/View.d.ts +59 -0
  180. package/dist/src/core/view/ViewCache.d.ts +32 -0
  181. package/dist/src/core/view/ViewProcessor.d.ts +32 -0
  182. package/dist/src/core/view/filter/IndexedFilter.d.ts +35 -0
  183. package/dist/src/core/view/filter/LimitedFilter.d.ts +47 -0
  184. package/dist/src/core/view/filter/NodeFilter.d.ts +54 -0
  185. package/dist/src/core/view/filter/RangedFilter.d.ts +47 -0
  186. package/dist/src/index.d.ts +28 -0
  187. package/dist/src/index.node.d.ts +17 -0
  188. package/dist/src/index.standalone.d.ts +17 -0
  189. package/dist/src/internal/index.d.ts +38 -0
  190. package/dist/src/realtime/BrowserPollConnection.d.ts +198 -0
  191. package/dist/src/realtime/Connection.d.ts +102 -0
  192. package/dist/src/realtime/Constants.d.ts +27 -0
  193. package/dist/src/realtime/Transport.d.ts +58 -0
  194. package/dist/src/realtime/TransportManager.d.ts +50 -0
  195. package/dist/src/realtime/WebSocketConnection.d.ts +127 -0
  196. package/dist/src/realtime/polling/PacketReceiver.d.ts +38 -0
  197. package/dist/src/register.d.ts +1 -0
  198. package/dist/src/tsdoc-metadata.json +11 -0
  199. package/dist/test/helpers/EventAccumulator.d.ts +35 -0
  200. package/dist/test/helpers/syncpoint-util.d.ts +29 -0
  201. package/dist/test/helpers/util.d.ts +36 -0
  202. 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
+ }