@firebase/remote-config 0.6.6 → 0.7.0-canary.cb3bdd812

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.
@@ -14,7 +14,7 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { FirebaseApp } from '@firebase/app';
17
+ import { FirebaseApp, FirebaseError } from '@firebase/app';
18
18
  /**
19
19
  * The Firebase Remote Config service interface.
20
20
  *
@@ -48,6 +48,8 @@ export interface RemoteConfig {
48
48
  }
49
49
  /**
50
50
  * Defines a self-descriptive reference for config key-value pairs.
51
+ *
52
+ * @public
51
53
  */
52
54
  export interface FirebaseRemoteConfigObject {
53
55
  [key: string]: string;
@@ -57,6 +59,8 @@ export interface FirebaseRemoteConfigObject {
57
59
  *
58
60
  * <p>Modeled after the native `Response` interface, but simplified for Remote Config's
59
61
  * use case.
62
+ *
63
+ * @public
60
64
  */
61
65
  export interface FetchResponse {
62
66
  /**
@@ -82,6 +86,10 @@ export interface FetchResponse {
82
86
  * <p>Only defined for 200 responses.
83
87
  */
84
88
  config?: FirebaseRemoteConfigObject;
89
+ /**
90
+ * The version number of the config template fetched from the server.
91
+ */
92
+ templateVersion?: number;
85
93
  }
86
94
  /**
87
95
  * Options for Remote Config initialization.
@@ -189,6 +197,57 @@ export type LogLevel = 'debug' | 'error' | 'silent';
189
197
  export interface CustomSignals {
190
198
  [key: string]: string | number | null;
191
199
  }
200
+ /**
201
+ * Contains information about which keys have been updated.
202
+ *
203
+ * @public
204
+ */
205
+ export interface ConfigUpdate {
206
+ /**
207
+ * Parameter keys whose values have been updated from the currently activated values.
208
+ * Includes keys that are added, deleted, or whose value, value source, or metadata has changed.
209
+ */
210
+ getUpdatedKeys(): Set<string>;
211
+ }
212
+ /**
213
+ * Observer interface for receiving real-time Remote Config update notifications.
214
+ *
215
+ * NOTE: Although an `complete` callback can be provided, it will
216
+ * never be called because the ConfigUpdate stream is never-ending.
217
+ *
218
+ * @public
219
+ */
220
+ export interface ConfigUpdateObserver {
221
+ /**
222
+ * Called when a new ConfigUpdate is available.
223
+ */
224
+ next: (configUpdate: ConfigUpdate) => void;
225
+ /**
226
+ * Called if an error occurs during the stream.
227
+ */
228
+ error: (error: FirebaseError) => void;
229
+ /**
230
+ * Called when the stream is gracefully terminated.
231
+ */
232
+ complete: () => void;
233
+ }
234
+ /**
235
+ * A function that unsubscribes from a real-time event stream.
236
+ *
237
+ * @public
238
+ */
239
+ export type Unsubscribe = () => void;
240
+ /**
241
+ * Indicates the type of fetch request.
242
+ *
243
+ * <ul>
244
+ * <li>"BASE" indicates a standard fetch request.</li>
245
+ * <li>"REALTIME" indicates a fetch request triggered by a real-time update.</li>
246
+ * </ul>
247
+ *
248
+ * @public
249
+ */
250
+ export type FetchType = 'BASE' | 'REALTIME';
192
251
  declare module '@firebase/component' {
193
252
  interface NameServiceMapping {
194
253
  'remote-config': RemoteConfig;
@@ -20,6 +20,7 @@ import { StorageCache } from './storage/storage_cache';
20
20
  import { RemoteConfigFetchClient } from './client/remote_config_fetch_client';
21
21
  import { Storage } from './storage/storage';
22
22
  import { Logger } from '@firebase/logger';
23
+ import { RealtimeHandler } from './client/realtime_handler';
23
24
  /**
24
25
  * Encapsulates business logic mapping network and storage dependencies to the public SDK API.
25
26
  *
@@ -43,6 +44,10 @@ export declare class RemoteConfig implements RemoteConfigType {
43
44
  * @internal
44
45
  */
45
46
  readonly _logger: Logger;
47
+ /**
48
+ * @internal
49
+ */
50
+ readonly _realtimeHandler: RealtimeHandler;
46
51
  /**
47
52
  * Tracks completion of initialization promise.
48
53
  * @internal
@@ -75,5 +80,9 @@ export declare class RemoteConfig implements RemoteConfigType {
75
80
  /**
76
81
  * @internal
77
82
  */
78
- _logger: Logger);
83
+ _logger: Logger,
84
+ /**
85
+ * @internal
86
+ */
87
+ _realtimeHandler: RealtimeHandler);
79
88
  }
@@ -34,12 +34,16 @@ export interface ThrottleMetadata {
34
34
  backoffCount: number;
35
35
  throttleEndTimeMillis: number;
36
36
  }
37
+ export interface RealtimeBackoffMetadata {
38
+ numFailedStreams: number;
39
+ backoffEndTimeMillis: Date;
40
+ }
37
41
  /**
38
42
  * Provides type-safety for the "key" field used by {@link APP_NAMESPACE_STORE}.
39
43
  *
40
44
  * <p>This seems like a small price to avoid potentially subtle bugs caused by a typo.
41
45
  */
42
- type ProjectNamespaceKeyFieldValue = 'active_config' | 'active_config_etag' | 'last_fetch_status' | 'last_successful_fetch_timestamp_millis' | 'last_successful_fetch_response' | 'settings' | 'throttle_metadata' | 'custom_signals';
46
+ type ProjectNamespaceKeyFieldValue = 'active_config' | 'active_config_etag' | 'last_fetch_status' | 'last_successful_fetch_timestamp_millis' | 'last_successful_fetch_response' | 'settings' | 'throttle_metadata' | 'custom_signals' | 'realtime_backoff_metadata' | 'last_known_template_version';
43
47
  export declare function openDatabase(): Promise<IDBDatabase>;
44
48
  /**
45
49
  * Abstracts data persistence.
@@ -63,6 +67,10 @@ export declare abstract class Storage {
63
67
  abstract get<T>(key: ProjectNamespaceKeyFieldValue): Promise<T | undefined>;
64
68
  abstract set<T>(key: ProjectNamespaceKeyFieldValue, value: T): Promise<void>;
65
69
  abstract delete(key: ProjectNamespaceKeyFieldValue): Promise<void>;
70
+ getRealtimeBackoffMetadata(): Promise<RealtimeBackoffMetadata | undefined>;
71
+ setRealtimeBackoffMetadata(realtimeMetadata: RealtimeBackoffMetadata): Promise<void>;
72
+ getActiveConfigTemplateVersion(): Promise<number | undefined>;
73
+ setActiveConfigTemplateVersion(version: number): Promise<void>;
66
74
  }
67
75
  export declare class IndexedDbStorage extends Storage {
68
76
  private readonly appId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firebase/remote-config",
3
- "version": "0.6.6",
3
+ "version": "0.7.0-canary.cb3bdd812",
4
4
  "description": "The Remote Config package of the Firebase JS SDK",
5
5
  "author": "Firebase <firebase-support@google.com> (https://firebase.google.com/)",
6
6
  "main": "dist/index.cjs.js",
@@ -37,18 +37,18 @@
37
37
  "typings:internal": "node ../../scripts/build/use_typings.js ./dist/src/index.d.ts"
38
38
  },
39
39
  "peerDependencies": {
40
- "@firebase/app": "0.x"
40
+ "@firebase/app": "0.14.3-canary.cb3bdd812"
41
41
  },
42
42
  "dependencies": {
43
- "@firebase/installations": "0.6.19",
44
- "@firebase/logger": "0.5.0",
45
- "@firebase/util": "1.13.0",
46
- "@firebase/component": "0.7.0",
43
+ "@firebase/installations": "0.6.19-canary.cb3bdd812",
44
+ "@firebase/logger": "0.5.0-canary.cb3bdd812",
45
+ "@firebase/util": "1.13.0-canary.cb3bdd812",
46
+ "@firebase/component": "0.7.0-canary.cb3bdd812",
47
47
  "tslib": "^2.1.0"
48
48
  },
49
49
  "license": "Apache-2.0",
50
50
  "devDependencies": {
51
- "@firebase/app": "0.14.0",
51
+ "@firebase/app": "0.14.3-canary.cb3bdd812",
52
52
  "rollup": "2.79.2",
53
53
  "rollup-plugin-dts": "5.3.1",
54
54
  "rollup-plugin-typescript2": "0.36.0",