@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,144 @@
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 { ValueEventRegistration } from '../api/Reference_impl';
18
+ import { AppCheckTokenProvider } from './AppCheckTokenProvider';
19
+ import { AuthTokenProvider } from './AuthTokenProvider';
20
+ import { PersistentConnection } from './PersistentConnection';
21
+ import { RepoInfo } from './RepoInfo';
22
+ import { ServerActions } from './ServerActions';
23
+ import { Node } from './snap/Node';
24
+ import { SnapshotHolder } from './SnapshotHolder';
25
+ import { SparseSnapshotTree } from './SparseSnapshotTree';
26
+ import { StatsCollection } from './stats/StatsCollection';
27
+ import { StatsListener } from './stats/StatsListener';
28
+ import { StatsReporter } from './stats/StatsReporter';
29
+ import { SyncTree } from './SyncTree';
30
+ import { Indexable } from './util/misc';
31
+ import { Path } from './util/Path';
32
+ import { Tree } from './util/Tree';
33
+ import { EventQueue } from './view/EventQueue';
34
+ import { EventRegistration, QueryContext } from './view/EventRegistration';
35
+ declare const enum TransactionStatus {
36
+ RUN = 0,
37
+ SENT = 1,
38
+ COMPLETED = 2,
39
+ SENT_NEEDS_ABORT = 3,
40
+ NEEDS_ABORT = 4
41
+ }
42
+ interface Transaction {
43
+ path: Path;
44
+ update: (a: unknown) => unknown;
45
+ onComplete: (error: Error | null, committed: boolean, node: Node | null) => void;
46
+ status: TransactionStatus;
47
+ order: number;
48
+ applyLocally: boolean;
49
+ retryCount: number;
50
+ unwatcher: () => void;
51
+ abortReason: string | null;
52
+ currentWriteId: number;
53
+ currentInputSnapshot: Node | null;
54
+ currentOutputSnapshotRaw: Node | null;
55
+ currentOutputSnapshotResolved: Node | null;
56
+ }
57
+ /**
58
+ * A connection to a single data repository.
59
+ */
60
+ export declare class Repo {
61
+ repoInfo_: RepoInfo;
62
+ forceRestClient_: boolean;
63
+ authTokenProvider_: AuthTokenProvider;
64
+ appCheckProvider_: AppCheckTokenProvider;
65
+ /** Key for uniquely identifying this repo, used in RepoManager */
66
+ readonly key: string;
67
+ dataUpdateCount: number;
68
+ infoSyncTree_: SyncTree;
69
+ serverSyncTree_: SyncTree;
70
+ stats_: StatsCollection;
71
+ statsListener_: StatsListener | null;
72
+ eventQueue_: EventQueue;
73
+ nextWriteId_: number;
74
+ server_: ServerActions;
75
+ statsReporter_: StatsReporter;
76
+ infoData_: SnapshotHolder;
77
+ interceptServerDataCallback_: ((a: string, b: unknown) => void) | null;
78
+ /** A list of data pieces and paths to be set when this client disconnects. */
79
+ onDisconnect_: SparseSnapshotTree;
80
+ /** Stores queues of outstanding transactions for Firebase locations. */
81
+ transactionQueueTree_: Tree<Transaction[]>;
82
+ persistentConnection_: PersistentConnection | null;
83
+ constructor(repoInfo_: RepoInfo, forceRestClient_: boolean, authTokenProvider_: AuthTokenProvider, appCheckProvider_: AppCheckTokenProvider);
84
+ /**
85
+ * @returns The URL corresponding to the root of this Firebase.
86
+ */
87
+ toString(): string;
88
+ }
89
+ export declare function repoStart(repo: Repo, appId: string, authOverride?: object): void;
90
+ /**
91
+ * @returns The time in milliseconds, taking the server offset into account if we have one.
92
+ */
93
+ export declare function repoServerTime(repo: Repo): number;
94
+ /**
95
+ * Generate ServerValues using some variables from the repo object.
96
+ */
97
+ export declare function repoGenerateServerValues(repo: Repo): Indexable;
98
+ export declare function repoInterceptServerData(repo: Repo, callback: ((a: string, b: unknown) => unknown) | null): void;
99
+ /**
100
+ * The purpose of `getValue` is to return the latest known value
101
+ * satisfying `query`.
102
+ *
103
+ * This method will first check for in-memory cached values
104
+ * belonging to active listeners. If they are found, such values
105
+ * are considered to be the most up-to-date.
106
+ *
107
+ * If the client is not connected, this method will wait until the
108
+ * repo has established a connection and then request the value for `query`.
109
+ * If the client is not able to retrieve the query result for another reason,
110
+ * it reports an error.
111
+ *
112
+ * @param query - The query to surface a value for.
113
+ */
114
+ export declare function repoGetValue(repo: Repo, query: QueryContext, eventRegistration: ValueEventRegistration): Promise<Node>;
115
+ export declare function repoSetWithPriority(repo: Repo, path: Path, newVal: unknown, newPriority: number | string | null, onComplete: ((status: Error | null, errorReason?: string) => void) | null): void;
116
+ export declare function repoUpdate(repo: Repo, path: Path, childrenToMerge: {
117
+ [k: string]: unknown;
118
+ }, onComplete: ((status: Error | null, errorReason?: string) => void) | null): void;
119
+ export declare function repoOnDisconnectCancel(repo: Repo, path: Path, onComplete: ((status: Error | null, errorReason?: string) => void) | null): void;
120
+ export declare function repoOnDisconnectSet(repo: Repo, path: Path, value: unknown, onComplete: ((status: Error | null, errorReason?: string) => void) | null): void;
121
+ export declare function repoOnDisconnectSetWithPriority(repo: Repo, path: Path, value: unknown, priority: unknown, onComplete: ((status: Error | null, errorReason?: string) => void) | null): void;
122
+ export declare function repoOnDisconnectUpdate(repo: Repo, path: Path, childrenToMerge: {
123
+ [k: string]: unknown;
124
+ }, onComplete: ((status: Error | null, errorReason?: string) => void) | null): void;
125
+ export declare function repoAddEventCallbackForQuery(repo: Repo, query: QueryContext, eventRegistration: EventRegistration): void;
126
+ export declare function repoRemoveEventCallbackForQuery(repo: Repo, query: QueryContext, eventRegistration: EventRegistration): void;
127
+ export declare function repoInterrupt(repo: Repo): void;
128
+ export declare function repoResume(repo: Repo): void;
129
+ export declare function repoStats(repo: Repo, showDelta?: boolean): void;
130
+ export declare function repoStatsIncrementCounter(repo: Repo, metric: string): void;
131
+ export declare function repoCallOnCompleteCallback(repo: Repo, callback: ((status: Error | null, errorReason?: string) => void) | null, status: string, errorReason?: string | null): void;
132
+ /**
133
+ * Creates a new transaction, adds it to the transactions we're tracking, and
134
+ * sends it to the server if possible.
135
+ *
136
+ * @param path - Path at which to do transaction.
137
+ * @param transactionUpdate - Update callback.
138
+ * @param onComplete - Completion callback.
139
+ * @param unwatcher - Function that will be called when the transaction no longer
140
+ * need data updates for `path`.
141
+ * @param applyLocally - Whether or not to make intermediate results visible
142
+ */
143
+ export declare function repoStartTransaction(repo: Repo, path: Path, transactionUpdate: (a: unknown) => unknown, onComplete: ((error: Error, committed: boolean, node: Node) => void) | null, unwatcher: () => void, applyLocally: boolean): void;
144
+ export {};
@@ -0,0 +1,61 @@
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 { EmulatorMockTokenOptions } from '@firebase/util';
18
+ export interface RepoInfoEmulatorOptions {
19
+ mockUserToken?: string | EmulatorMockTokenOptions;
20
+ }
21
+ /**
22
+ * A class that holds metadata about a Repo object
23
+ */
24
+ export declare class RepoInfo {
25
+ readonly secure: boolean;
26
+ readonly namespace: string;
27
+ readonly webSocketOnly: boolean;
28
+ readonly nodeAdmin: boolean;
29
+ readonly persistenceKey: string;
30
+ readonly includeNamespaceInQueryParams: boolean;
31
+ readonly isUsingEmulator: boolean;
32
+ readonly emulatorOptions: RepoInfoEmulatorOptions | null;
33
+ private _host;
34
+ private _domain;
35
+ internalHost: string;
36
+ /**
37
+ * @param host - Hostname portion of the url for the repo
38
+ * @param secure - Whether or not this repo is accessed over ssl
39
+ * @param namespace - The namespace represented by the repo
40
+ * @param webSocketOnly - Whether to prefer websockets over all other transports (used by Nest).
41
+ * @param nodeAdmin - Whether this instance uses Admin SDK credentials
42
+ * @param persistenceKey - Override the default session persistence storage key
43
+ */
44
+ constructor(host: string, secure: boolean, namespace: string, webSocketOnly: boolean, nodeAdmin?: boolean, persistenceKey?: string, includeNamespaceInQueryParams?: boolean, isUsingEmulator?: boolean, emulatorOptions?: RepoInfoEmulatorOptions | null);
45
+ isCacheableHost(): boolean;
46
+ isCustomHost(): boolean;
47
+ get host(): string;
48
+ set host(newHost: string);
49
+ toString(): string;
50
+ toURLString(): string;
51
+ }
52
+ /**
53
+ * Returns the websocket URL for this repo
54
+ * @param repoInfo - RepoInfo object
55
+ * @param type - of connection
56
+ * @param params - list
57
+ * @returns The URL for this repo
58
+ */
59
+ export declare function repoInfoConnectionURL(repoInfo: RepoInfo, type: string, params: {
60
+ [k: string]: string;
61
+ }): string;
@@ -0,0 +1,52 @@
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 { QueryContext } from './view/EventRegistration';
18
+ /**
19
+ * Interface defining the set of actions that can be performed against the Firebase server
20
+ * (basically corresponds to our wire protocol).
21
+ *
22
+ * @interface
23
+ */
24
+ export declare abstract class ServerActions {
25
+ abstract listen(query: QueryContext, currentHashFn: () => string, tag: number | null, onComplete: (a: string, b: unknown) => void): void;
26
+ /**
27
+ * Remove a listen.
28
+ */
29
+ abstract unlisten(query: QueryContext, tag: number | null): void;
30
+ /**
31
+ * Get the server value satisfying this query.
32
+ */
33
+ abstract get(query: QueryContext): Promise<string>;
34
+ put(pathString: string, data: unknown, onComplete?: (a: string, b: string) => void, hash?: string): void;
35
+ merge(pathString: string, data: unknown, onComplete: (a: string, b: string | null) => void, hash?: string): void;
36
+ /**
37
+ * Refreshes the auth token for the current connection.
38
+ * @param token - The authentication token
39
+ */
40
+ refreshAuthToken(token: string): void;
41
+ /**
42
+ * Refreshes the app check token for the current connection.
43
+ * @param token The app check token
44
+ */
45
+ refreshAppCheckToken(token: string): void;
46
+ onDisconnectPut(pathString: string, data: unknown, onComplete?: (a: string, b: string) => void): void;
47
+ onDisconnectMerge(pathString: string, data: unknown, onComplete?: (a: string, b: string) => void): void;
48
+ onDisconnectCancel(pathString: string, onComplete?: (a: string, b: string) => void): void;
49
+ reportStats(stats: {
50
+ [k: string]: unknown;
51
+ }): void;
52
+ }
@@ -0,0 +1,26 @@
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 { Node } from './snap/Node';
18
+ import { Path } from './util/Path';
19
+ /**
20
+ * Mutable object which basically just stores a reference to the "latest" immutable snapshot.
21
+ */
22
+ export declare class SnapshotHolder {
23
+ private rootNode_;
24
+ getNode(path: Path): Node;
25
+ updateSnapshot(path: Path, newSnapshotNode: Node): void;
26
+ }
@@ -0,0 +1,64 @@
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 { Node } from './snap/Node';
18
+ import { Path } from './util/Path';
19
+ /**
20
+ * Helper class to store a sparse set of snapshots.
21
+ */
22
+ export interface SparseSnapshotTree {
23
+ value: Node | null;
24
+ readonly children: Map<string, SparseSnapshotTree>;
25
+ }
26
+ export declare function newSparseSnapshotTree(): SparseSnapshotTree;
27
+ /**
28
+ * Gets the node stored at the given path if one exists.
29
+ * Only seems to be used in tests.
30
+ *
31
+ * @param path - Path to look up snapshot for.
32
+ * @returns The retrieved node, or null.
33
+ */
34
+ export declare function sparseSnapshotTreeFind(sparseSnapshotTree: SparseSnapshotTree, path: Path): Node | null;
35
+ /**
36
+ * Stores the given node at the specified path. If there is already a node
37
+ * at a shallower path, it merges the new data into that snapshot node.
38
+ *
39
+ * @param path - Path to look up snapshot for.
40
+ * @param data - The new data, or null.
41
+ */
42
+ export declare function sparseSnapshotTreeRemember(sparseSnapshotTree: SparseSnapshotTree, path: Path, data: Node): void;
43
+ /**
44
+ * Purge the data at path from the cache.
45
+ *
46
+ * @param path - Path to look up snapshot for.
47
+ * @returns True if this node should now be removed.
48
+ */
49
+ export declare function sparseSnapshotTreeForget(sparseSnapshotTree: SparseSnapshotTree, path: Path): boolean;
50
+ /**
51
+ * Recursively iterates through all of the stored tree and calls the
52
+ * callback on each one.
53
+ *
54
+ * @param prefixPath - Path to look up node for.
55
+ * @param func - The function to invoke for each tree.
56
+ */
57
+ export declare function sparseSnapshotTreeForEachTree(sparseSnapshotTree: SparseSnapshotTree, prefixPath: Path, func: (a: Path, b: Node) => unknown): void;
58
+ /**
59
+ * Iterates through each immediate child and triggers the callback.
60
+ * Only seems to be used in tests.
61
+ *
62
+ * @param func - The function to invoke for each child.
63
+ */
64
+ export declare function sparseSnapshotTreeForEachChild(sparseSnapshotTree: SparseSnapshotTree, func: (a: string, b: SparseSnapshotTree) => void): void;
@@ -0,0 +1,91 @@
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 { ReferenceConstructor } from '../api/Reference';
18
+ import { Operation } from './operation/Operation';
19
+ import { Node } from './snap/Node';
20
+ import { Path } from './util/Path';
21
+ import { Event } from './view/Event';
22
+ import { EventRegistration, QueryContext } from './view/EventRegistration';
23
+ import { View } from './view/View';
24
+ import { WriteTreeRef } from './WriteTree';
25
+ /**
26
+ * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to
27
+ * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes
28
+ * and user writes (set, transaction, update).
29
+ *
30
+ * It's responsible for:
31
+ * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).
32
+ * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,
33
+ * applyUserOverwrite, etc.)
34
+ */
35
+ export declare class SyncPoint {
36
+ /**
37
+ * The Views being tracked at this location in the tree, stored as a map where the key is a
38
+ * queryId and the value is the View for that query.
39
+ *
40
+ * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).
41
+ */
42
+ readonly views: Map<string, View>;
43
+ }
44
+ export declare function syncPointSetReferenceConstructor(val: ReferenceConstructor): void;
45
+ export declare function syncPointIsEmpty(syncPoint: SyncPoint): boolean;
46
+ export declare function syncPointApplyOperation(syncPoint: SyncPoint, operation: Operation, writesCache: WriteTreeRef, optCompleteServerCache: Node | null): Event[];
47
+ /**
48
+ * Get a view for the specified query.
49
+ *
50
+ * @param query - The query to return a view for
51
+ * @param writesCache
52
+ * @param serverCache
53
+ * @param serverCacheComplete
54
+ * @returns Events to raise.
55
+ */
56
+ export declare function syncPointGetView(syncPoint: SyncPoint, query: QueryContext, writesCache: WriteTreeRef, serverCache: Node | null, serverCacheComplete: boolean): View;
57
+ /**
58
+ * Add an event callback for the specified query.
59
+ *
60
+ * @param query
61
+ * @param eventRegistration
62
+ * @param writesCache
63
+ * @param serverCache - Complete server cache, if we have it.
64
+ * @param serverCacheComplete
65
+ * @returns Events to raise.
66
+ */
67
+ export declare function syncPointAddEventRegistration(syncPoint: SyncPoint, query: QueryContext, eventRegistration: EventRegistration, writesCache: WriteTreeRef, serverCache: Node | null, serverCacheComplete: boolean): Event[];
68
+ /**
69
+ * Remove event callback(s). Return cancelEvents if a cancelError is specified.
70
+ *
71
+ * If query is the default query, we'll check all views for the specified eventRegistration.
72
+ * If eventRegistration is null, we'll remove all callbacks for the specified view(s).
73
+ *
74
+ * @param eventRegistration - If null, remove all callbacks.
75
+ * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.
76
+ * @returns removed queries and any cancel events
77
+ */
78
+ export declare function syncPointRemoveEventRegistration(syncPoint: SyncPoint, query: QueryContext, eventRegistration: EventRegistration | null, cancelError?: Error): {
79
+ removed: QueryContext[];
80
+ events: Event[];
81
+ };
82
+ export declare function syncPointGetQueryViews(syncPoint: SyncPoint): View[];
83
+ /**
84
+ * @param path - The path to the desired complete snapshot
85
+ * @returns A complete cache, if it exists
86
+ */
87
+ export declare function syncPointGetCompleteServerCache(syncPoint: SyncPoint, path: Path): Node | null;
88
+ export declare function syncPointViewForQuery(syncPoint: SyncPoint, query: QueryContext): View | null;
89
+ export declare function syncPointViewExistsForQuery(syncPoint: SyncPoint, query: QueryContext): boolean;
90
+ export declare function syncPointHasCompleteView(syncPoint: SyncPoint): boolean;
91
+ export declare function syncPointGetCompleteView(syncPoint: SyncPoint): View | null;
@@ -0,0 +1,166 @@
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 { ReferenceConstructor } from '../api/Reference';
18
+ import { Node } from './snap/Node';
19
+ import { SyncPoint } from './SyncPoint';
20
+ import { ImmutableTree } from './util/ImmutableTree';
21
+ import { Path } from './util/Path';
22
+ import { Event } from './view/Event';
23
+ import { EventRegistration, QueryContext } from './view/EventRegistration';
24
+ import { WriteTree } from './WriteTree';
25
+ export declare function syncTreeSetReferenceConstructor(val: ReferenceConstructor): void;
26
+ export interface ListenProvider {
27
+ startListening(query: QueryContext, tag: number | null, hashFn: () => string, onComplete: (a: string, b?: unknown) => Event[]): Event[];
28
+ stopListening(a: QueryContext, b: number | null): void;
29
+ }
30
+ export declare function resetSyncTreeTag(): void;
31
+ /**
32
+ * SyncTree is the central class for managing event callback registration, data caching, views
33
+ * (query processing), and event generation. There are typically two SyncTree instances for
34
+ * each Repo, one for the normal Firebase data, and one for the .info data.
35
+ *
36
+ * It has a number of responsibilities, including:
37
+ * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).
38
+ * - Applying and caching data changes for user set(), transaction(), and update() calls
39
+ * (applyUserOverwrite(), applyUserMerge()).
40
+ * - Applying and caching data changes for server data changes (applyServerOverwrite(),
41
+ * applyServerMerge()).
42
+ * - Generating user-facing events for server and user changes (all of the apply* methods
43
+ * return the set of events that need to be raised as a result).
44
+ * - Maintaining the appropriate set of server listens to ensure we are always subscribed
45
+ * to the correct set of paths and queries to satisfy the current set of user event
46
+ * callbacks (listens are started/stopped using the provided listenProvider).
47
+ *
48
+ * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual
49
+ * events are returned to the caller rather than raised synchronously.
50
+ *
51
+ */
52
+ export declare class SyncTree {
53
+ listenProvider_: ListenProvider;
54
+ /**
55
+ * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.
56
+ */
57
+ syncPointTree_: ImmutableTree<SyncPoint>;
58
+ /**
59
+ * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).
60
+ */
61
+ pendingWriteTree_: WriteTree;
62
+ readonly tagToQueryMap: Map<number, string>;
63
+ readonly queryToTagMap: Map<string, number>;
64
+ /**
65
+ * @param listenProvider_ - Used by SyncTree to start / stop listening
66
+ * to server data.
67
+ */
68
+ constructor(listenProvider_: ListenProvider);
69
+ }
70
+ /**
71
+ * Apply the data changes for a user-generated set() or transaction() call.
72
+ *
73
+ * @returns Events to raise.
74
+ */
75
+ export declare function syncTreeApplyUserOverwrite(syncTree: SyncTree, path: Path, newData: Node, writeId: number, visible?: boolean): Event[];
76
+ /**
77
+ * Apply the data from a user-generated update() call
78
+ *
79
+ * @returns Events to raise.
80
+ */
81
+ export declare function syncTreeApplyUserMerge(syncTree: SyncTree, path: Path, changedChildren: {
82
+ [k: string]: Node;
83
+ }, writeId: number): Event[];
84
+ /**
85
+ * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().
86
+ *
87
+ * @param revert - True if the given write failed and needs to be reverted
88
+ * @returns Events to raise.
89
+ */
90
+ export declare function syncTreeAckUserWrite(syncTree: SyncTree, writeId: number, revert?: boolean): Event[];
91
+ /**
92
+ * Apply new server data for the specified path..
93
+ *
94
+ * @returns Events to raise.
95
+ */
96
+ export declare function syncTreeApplyServerOverwrite(syncTree: SyncTree, path: Path, newData: Node): Event[];
97
+ /**
98
+ * Apply new server data to be merged in at the specified path.
99
+ *
100
+ * @returns Events to raise.
101
+ */
102
+ export declare function syncTreeApplyServerMerge(syncTree: SyncTree, path: Path, changedChildren: {
103
+ [k: string]: Node;
104
+ }): Event[];
105
+ /**
106
+ * Apply a listen complete for a query
107
+ *
108
+ * @returns Events to raise.
109
+ */
110
+ export declare function syncTreeApplyListenComplete(syncTree: SyncTree, path: Path): Event[];
111
+ /**
112
+ * Apply a listen complete for a tagged query
113
+ *
114
+ * @returns Events to raise.
115
+ */
116
+ export declare function syncTreeApplyTaggedListenComplete(syncTree: SyncTree, path: Path, tag: number): Event[];
117
+ /**
118
+ * Remove event callback(s).
119
+ *
120
+ * If query is the default query, we'll check all queries for the specified eventRegistration.
121
+ * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.
122
+ *
123
+ * @param eventRegistration - If null, all callbacks are removed.
124
+ * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.
125
+ * @param skipListenerDedup - When performing a `get()`, we don't add any new listeners, so no
126
+ * deduping needs to take place. This flag allows toggling of that behavior
127
+ * @returns Cancel events, if cancelError was provided.
128
+ */
129
+ export declare function syncTreeRemoveEventRegistration(syncTree: SyncTree, query: QueryContext, eventRegistration: EventRegistration | null, cancelError?: Error, skipListenerDedup?: boolean): Event[];
130
+ /**
131
+ * Apply new server data for the specified tagged query.
132
+ *
133
+ * @returns Events to raise.
134
+ */
135
+ export declare function syncTreeApplyTaggedQueryOverwrite(syncTree: SyncTree, path: Path, snap: Node, tag: number): Event[];
136
+ /**
137
+ * Apply server data to be merged in for the specified tagged query.
138
+ *
139
+ * @returns Events to raise.
140
+ */
141
+ export declare function syncTreeApplyTaggedQueryMerge(syncTree: SyncTree, path: Path, changedChildren: {
142
+ [k: string]: Node;
143
+ }, tag: number): Event[];
144
+ /**
145
+ * Add an event callback for the specified query.
146
+ *
147
+ * @returns Events to raise.
148
+ */
149
+ export declare function syncTreeAddEventRegistration(syncTree: SyncTree, query: QueryContext, eventRegistration: EventRegistration, skipSetupListener?: boolean): Event[];
150
+ /**
151
+ * Returns a complete cache, if we have one, of the data at a particular path. If the location does not have a
152
+ * listener above it, we will get a false "null". This shouldn't be a problem because transactions will always
153
+ * have a listener above, and atomic operations would correctly show a jitter of <increment value> ->
154
+ * <incremented total> as the write is applied locally and then acknowledged at the server.
155
+ *
156
+ * Note: this method will *include* hidden writes from transaction with applyLocally set to false.
157
+ *
158
+ * @param path - The path to the data we want
159
+ * @param writeIdsToExclude - A specific set to be excluded
160
+ */
161
+ export declare function syncTreeCalcCompleteEventCache(syncTree: SyncTree, path: Path, writeIdsToExclude?: number[]): Node;
162
+ export declare function syncTreeGetServerValue(syncTree: SyncTree, query: QueryContext): Node | null;
163
+ /**
164
+ * Return the tag associated with the given query.
165
+ */
166
+ export declare function syncTreeTagForQuery(syncTree: SyncTree, query: QueryContext): number | null;