@firebase/firestore 3.3.1 → 3.4.0-2021111174650

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 (93) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/firestore/src/api/credentials.d.ts +64 -30
  3. package/dist/firestore/src/api/database.d.ts +2 -1
  4. package/dist/firestore/src/api.d.ts +2 -1
  5. package/dist/firestore/src/core/component_provider.d.ts +2 -1
  6. package/dist/firestore/src/core/firestore_client.d.ts +4 -3
  7. package/dist/firestore/src/lite-api/components.d.ts +3 -1
  8. package/dist/firestore/src/lite-api/database.d.ts +4 -2
  9. package/dist/firestore/src/platform/browser/webchannel_connection.d.ts +1 -1
  10. package/dist/firestore/src/platform/node/grpc_connection.d.ts +3 -3
  11. package/dist/firestore/src/remote/connection.d.ts +3 -3
  12. package/dist/firestore/src/remote/datastore.d.ts +2 -1
  13. package/dist/firestore/src/remote/persistent_stream.d.ts +9 -7
  14. package/dist/firestore/src/remote/rest_connection.d.ts +4 -4
  15. package/dist/firestore/test/integration/remote/stream.test.d.ts +2 -2
  16. package/dist/firestore/test/integration/util/internal_helpers.d.ts +5 -5
  17. package/dist/firestore/test/unit/remote/rest_connection.test.d.ts +1 -1
  18. package/dist/index.d.ts +2 -1
  19. package/dist/index.esm2017.js +3398 -3344
  20. package/dist/index.esm2017.js.map +1 -1
  21. package/dist/index.esm5.js +3673 -3624
  22. package/dist/index.esm5.js.map +1 -1
  23. package/dist/index.node.cjs.js +188 -95
  24. package/dist/index.node.cjs.js.map +1 -1
  25. package/dist/index.node.mjs +187 -95
  26. package/dist/index.node.mjs.map +1 -1
  27. package/dist/index.rn.js +3391 -3337
  28. package/dist/index.rn.js.map +1 -1
  29. package/dist/internal.d.ts +34 -20
  30. package/dist/lite/firestore/src/api/credentials.d.ts +64 -30
  31. package/dist/lite/firestore/src/api/database.d.ts +2 -1
  32. package/dist/lite/firestore/src/api.d.ts +2 -1
  33. package/dist/lite/firestore/src/core/component_provider.d.ts +2 -1
  34. package/dist/lite/firestore/src/core/firestore_client.d.ts +4 -3
  35. package/dist/lite/firestore/src/lite-api/components.d.ts +3 -1
  36. package/dist/lite/firestore/src/lite-api/database.d.ts +4 -2
  37. package/dist/lite/firestore/src/platform/browser/webchannel_connection.d.ts +1 -1
  38. package/dist/lite/firestore/src/platform/node/grpc_connection.d.ts +3 -3
  39. package/dist/lite/firestore/src/remote/connection.d.ts +3 -3
  40. package/dist/lite/firestore/src/remote/datastore.d.ts +2 -1
  41. package/dist/lite/firestore/src/remote/persistent_stream.d.ts +9 -7
  42. package/dist/lite/firestore/src/remote/rest_connection.d.ts +4 -4
  43. package/dist/lite/firestore/test/integration/remote/stream.test.d.ts +2 -2
  44. package/dist/lite/firestore/test/integration/util/internal_helpers.d.ts +5 -5
  45. package/dist/lite/firestore/test/unit/remote/rest_connection.test.d.ts +1 -1
  46. package/dist/lite/index.browser.esm2017.js +1378 -1364
  47. package/dist/lite/index.browser.esm2017.js.map +1 -1
  48. package/dist/lite/index.browser.esm5.js +933 -924
  49. package/dist/lite/index.browser.esm5.js.map +1 -1
  50. package/dist/lite/index.node.cjs.js +95 -60
  51. package/dist/lite/index.node.cjs.js.map +1 -1
  52. package/dist/lite/index.node.mjs +95 -60
  53. package/dist/lite/index.node.mjs.map +1 -1
  54. package/dist/lite/index.rn.esm2017.js +924 -910
  55. package/dist/lite/index.rn.esm2017.js.map +1 -1
  56. package/dist/lite/internal.d.ts +14 -13
  57. package/dist/lite/packages/firestore/dist/lite/index.browser.esm2017.d.ts +150 -149
  58. package/dist/lite/packages/firestore/src/api/credentials.d.ts +64 -30
  59. package/dist/lite/packages/firestore/src/api/database.d.ts +2 -1
  60. package/dist/lite/packages/firestore/src/api.d.ts +2 -1
  61. package/dist/lite/packages/firestore/src/core/component_provider.d.ts +2 -1
  62. package/dist/lite/packages/firestore/src/core/firestore_client.d.ts +4 -3
  63. package/dist/lite/packages/firestore/src/lite-api/components.d.ts +3 -1
  64. package/dist/lite/packages/firestore/src/lite-api/database.d.ts +4 -2
  65. package/dist/lite/packages/firestore/src/platform/browser/webchannel_connection.d.ts +1 -1
  66. package/dist/lite/packages/firestore/src/platform/node/grpc_connection.d.ts +3 -3
  67. package/dist/lite/packages/firestore/src/remote/connection.d.ts +3 -3
  68. package/dist/lite/packages/firestore/src/remote/datastore.d.ts +2 -1
  69. package/dist/lite/packages/firestore/src/remote/persistent_stream.d.ts +9 -7
  70. package/dist/lite/packages/firestore/src/remote/rest_connection.d.ts +4 -4
  71. package/dist/lite/packages/firestore/test/integration/remote/stream.test.d.ts +2 -2
  72. package/dist/lite/packages/firestore/test/integration/util/internal_helpers.d.ts +5 -5
  73. package/dist/lite/packages/firestore/test/unit/remote/rest_connection.test.d.ts +1 -1
  74. package/dist/lite/private.d.ts +14 -13
  75. package/dist/packages/firestore/dist/index.esm2017.d.ts +211 -195
  76. package/dist/packages/firestore/src/api/credentials.d.ts +64 -30
  77. package/dist/packages/firestore/src/api/database.d.ts +2 -1
  78. package/dist/packages/firestore/src/api.d.ts +2 -1
  79. package/dist/packages/firestore/src/core/component_provider.d.ts +2 -1
  80. package/dist/packages/firestore/src/core/firestore_client.d.ts +4 -3
  81. package/dist/packages/firestore/src/lite-api/components.d.ts +3 -1
  82. package/dist/packages/firestore/src/lite-api/database.d.ts +4 -2
  83. package/dist/packages/firestore/src/platform/browser/webchannel_connection.d.ts +1 -1
  84. package/dist/packages/firestore/src/platform/node/grpc_connection.d.ts +3 -3
  85. package/dist/packages/firestore/src/remote/connection.d.ts +3 -3
  86. package/dist/packages/firestore/src/remote/datastore.d.ts +2 -1
  87. package/dist/packages/firestore/src/remote/persistent_stream.d.ts +9 -7
  88. package/dist/packages/firestore/src/remote/rest_connection.d.ts +4 -4
  89. package/dist/packages/firestore/test/integration/remote/stream.test.d.ts +2 -2
  90. package/dist/packages/firestore/test/integration/util/internal_helpers.d.ts +5 -5
  91. package/dist/packages/firestore/test/unit/remote/rest_connection.test.d.ts +1 -1
  92. package/dist/private.d.ts +24 -19
  93. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @firebase/firestore
2
2
 
3
+ ## 3.4.0-2021111174650
4
+
5
+ ### Minor Changes
6
+
7
+ - [`086df7c7e`](https://github.com/firebase/firebase-js-sdk/commit/086df7c7e0299cedd9f3cff9080f46ca25cab7cd) [#5634](https://github.com/firebase/firebase-js-sdk/pull/5634) - AppCheck integration for Firestore
8
+
3
9
  ## 3.3.1
4
10
 
5
11
  ### Patch Changes
@@ -14,6 +14,7 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
+ import { AppCheckInternalComponentName } from '@firebase/app-check-interop-types';
17
18
  import { FirebaseAuthInternalName } from '@firebase/auth-interop-types';
18
19
  import { Provider } from '@firebase/component';
19
20
  import { User } from '../auth/user';
@@ -26,30 +27,27 @@ export interface FirstPartyCredentialsSettings {
26
27
  }
27
28
  export interface ProviderCredentialsSettings {
28
29
  ['type']: 'provider';
29
- ['client']: CredentialsProvider;
30
+ ['client']: CredentialsProvider<User>;
30
31
  }
31
32
  /** Settings for private credentials */
32
33
  export declare type CredentialsSettings = FirstPartyCredentialsSettings | ProviderCredentialsSettings;
33
- export declare type TokenType = 'OAuth' | 'FirstParty';
34
+ export declare type TokenType = 'OAuth' | 'FirstParty' | 'AppCheck';
34
35
  export interface Token {
35
36
  /** Type of token. */
36
37
  type: TokenType;
37
38
  /**
38
39
  * The user with which the token is associated (used for persisting user
39
40
  * state on disk, etc.).
41
+ * This will be null for Tokens of the type 'AppCheck'.
40
42
  */
41
- user: User;
42
- /** Extra header values to be passed along with a request */
43
- authHeaders: {
44
- [header: string]: string;
45
- };
43
+ user?: User;
44
+ /** Header values to set for this token */
45
+ headers: Map<string, string>;
46
46
  }
47
47
  export declare class OAuthToken implements Token {
48
48
  user: User;
49
49
  type: TokenType;
50
- authHeaders: {
51
- [header: string]: string;
52
- };
50
+ headers: Map<any, any>;
53
51
  constructor(value: string, user: User);
54
52
  }
55
53
  /**
@@ -57,12 +55,12 @@ export declare class OAuthToken implements Token {
57
55
  * token and may need to invalidate other state if the current user has also
58
56
  * changed.
59
57
  */
60
- export declare type CredentialChangeListener = (user: User) => Promise<void>;
58
+ export declare type CredentialChangeListener<T> = (credential: T) => Promise<void>;
61
59
  /**
62
60
  * Provides methods for getting the uid and token for the current user and
63
61
  * listening for changes.
64
62
  */
65
- export interface CredentialsProvider {
63
+ export interface CredentialsProvider<T> {
66
64
  /**
67
65
  * Starts the credentials provider and specifies a listener to be notified of
68
66
  * credential changes (sign-in / sign-out, token changes). It is immediately
@@ -70,7 +68,7 @@ export interface CredentialsProvider {
70
68
  *
71
69
  * The change listener is invoked on the provided AsyncQueue.
72
70
  */
73
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
71
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<T>): void;
74
72
  /** Requests a token for the current user. */
75
73
  getToken(): Promise<Token | null>;
76
74
  /**
@@ -84,17 +82,17 @@ export interface CredentialsProvider {
84
82
  * A CredentialsProvider that always yields an empty token.
85
83
  * @internal
86
84
  */
87
- export declare class EmptyCredentialsProvider implements CredentialsProvider {
85
+ export declare class EmptyAuthCredentialsProvider implements CredentialsProvider<User> {
88
86
  getToken(): Promise<Token | null>;
89
87
  invalidateToken(): void;
90
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
88
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<User>): void;
91
89
  shutdown(): void;
92
90
  }
93
91
  /**
94
92
  * A CredentialsProvider that always returns a constant token. Used for
95
93
  * emulator token mocking.
96
94
  */
97
- export declare class EmulatorCredentialsProvider implements CredentialsProvider {
95
+ export declare class EmulatorAuthCredentialsProvider implements CredentialsProvider<User> {
98
96
  private token;
99
97
  constructor(token: Token);
100
98
  /**
@@ -105,19 +103,19 @@ export declare class EmulatorCredentialsProvider implements CredentialsProvider
105
103
  private changeListener;
106
104
  getToken(): Promise<Token | null>;
107
105
  invalidateToken(): void;
108
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
106
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<User>): void;
109
107
  shutdown(): void;
110
108
  }
111
109
  /** Credential provider for the Lite SDK. */
112
- export declare class LiteCredentialsProvider implements CredentialsProvider {
110
+ export declare class LiteAuthCredentialsProvider implements CredentialsProvider<User> {
113
111
  private auth;
114
112
  constructor(authProvider: Provider<FirebaseAuthInternalName>);
115
113
  getToken(): Promise<Token | null>;
116
114
  invalidateToken(): void;
117
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
115
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<User>): void;
118
116
  shutdown(): void;
119
117
  }
120
- export declare class FirebaseCredentialsProvider implements CredentialsProvider {
118
+ export declare class FirebaseAuthCredentialsProvider implements CredentialsProvider<User> {
121
119
  private authProvider;
122
120
  /**
123
121
  * The auth token listener registered with FirebaseApp, retained here so we
@@ -134,7 +132,7 @@ export declare class FirebaseCredentialsProvider implements CredentialsProvider
134
132
  private forceRefresh;
135
133
  private auth;
136
134
  constructor(authProvider: Provider<FirebaseAuthInternalName>);
137
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
135
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<User>): void;
138
136
  getToken(): Promise<Token | null>;
139
137
  invalidateToken(): void;
140
138
  shutdown(): void;
@@ -148,29 +146,65 @@ interface Gapi {
148
146
  };
149
147
  }
150
148
  export declare class FirstPartyToken implements Token {
151
- private gapi;
152
- private sessionIndex;
153
- private iamToken;
154
149
  type: TokenType;
155
150
  user: User;
151
+ headers: Map<any, any>;
156
152
  constructor(gapi: Gapi, sessionIndex: string, iamToken: string | null);
157
- get authHeaders(): {
158
- [header: string]: string;
159
- };
160
153
  }
161
- export declare class FirstPartyCredentialsProvider implements CredentialsProvider {
154
+ export declare class FirstPartyAuthCredentialsProvider implements CredentialsProvider<User> {
162
155
  private gapi;
163
156
  private sessionIndex;
164
157
  private iamToken;
165
158
  constructor(gapi: Gapi, sessionIndex: string, iamToken: string | null);
166
159
  getToken(): Promise<Token | null>;
167
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
160
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<User>): void;
161
+ shutdown(): void;
162
+ invalidateToken(): void;
163
+ }
164
+ export declare class AppCheckToken implements Token {
165
+ private value;
166
+ type: TokenType;
167
+ headers: Map<any, any>;
168
+ constructor(value: string);
169
+ }
170
+ export declare class FirebaseAppCheckTokenProvider implements CredentialsProvider<string> {
171
+ private appCheckProvider;
172
+ /**
173
+ * The AppCheck token listener registered with FirebaseApp, retained here so
174
+ * we can unregister it.
175
+ */
176
+ private tokenListener;
177
+ private forceRefresh;
178
+ private appCheck;
179
+ constructor(appCheckProvider: Provider<AppCheckInternalComponentName>);
180
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<string>): void;
181
+ getToken(): Promise<Token | null>;
182
+ invalidateToken(): void;
183
+ shutdown(): void;
184
+ }
185
+ /**
186
+ * An AppCheck token provider that always yields an empty token.
187
+ * @internal
188
+ */
189
+ export declare class EmptyAppCheckTokenProvider implements CredentialsProvider<string> {
190
+ getToken(): Promise<Token | null>;
191
+ invalidateToken(): void;
192
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<string>): void;
168
193
  shutdown(): void;
194
+ }
195
+ /** AppCheck token provider for the Lite SDK. */
196
+ export declare class LiteAppCheckTokenProvider implements CredentialsProvider<string> {
197
+ private appCheckProvider;
198
+ private appCheck;
199
+ constructor(appCheckProvider: Provider<AppCheckInternalComponentName>);
200
+ getToken(): Promise<Token | null>;
169
201
  invalidateToken(): void;
202
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<string>): void;
203
+ shutdown(): void;
170
204
  }
171
205
  /**
172
206
  * Builds a CredentialsProvider depending on the type of
173
207
  * the credentials passed in.
174
208
  */
175
- export declare function makeCredentialsProvider(credentials?: CredentialsSettings): CredentialsProvider;
209
+ export declare function makeAuthCredentialsProvider(credentials?: CredentialsSettings): CredentialsProvider<User>;
176
210
  export {};
@@ -15,6 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { FirebaseApp } from '@firebase/app';
18
+ import { User } from '../auth/user';
18
19
  import { DatabaseId } from '../core/database_info';
19
20
  import { FirestoreClient } from '../core/firestore_client';
20
21
  import { Firestore as LiteFirestore } from '../lite-api/database';
@@ -49,7 +50,7 @@ export declare class Firestore extends LiteFirestore {
49
50
  readonly _persistenceKey: string;
50
51
  _firestoreClient: FirestoreClient | undefined;
51
52
  /** @hideconstructor */
52
- constructor(databaseIdOrApp: DatabaseId | FirebaseApp, credentialsProvider: CredentialsProvider);
53
+ constructor(databaseIdOrApp: DatabaseId | FirebaseApp, authCredentialsProvider: CredentialsProvider<User>, appCheckCredentialsProvider: CredentialsProvider<string>);
53
54
  _terminate(): Promise<void>;
54
55
  }
55
56
  /**
@@ -47,4 +47,5 @@ export { FieldPath as _FieldPath } from './model/path';
47
47
  export type { ResourcePath as _ResourcePath } from './model/path';
48
48
  export type { ByteString as _ByteString } from './util/byte_string';
49
49
  export { logWarn as _logWarn } from './util/log';
50
- export { EmptyCredentialsProvider as _EmptyCredentialsProvider } from './api/credentials';
50
+ export { EmptyAuthCredentialsProvider as _EmptyAuthCredentialsProvider } from './api/credentials';
51
+ export { EmptyAppCheckTokenProvider as _EmptyAppCheckTokenProvider } from './api/credentials';
@@ -30,7 +30,8 @@ import { SyncEngine } from './sync_engine';
30
30
  export interface ComponentConfiguration {
31
31
  asyncQueue: AsyncQueue;
32
32
  databaseInfo: DatabaseInfo;
33
- credentials: CredentialsProvider;
33
+ authCredentials: CredentialsProvider<User>;
34
+ appCheckCredentials: CredentialsProvider<string>;
34
35
  clientId: ClientId;
35
36
  initialUser: User;
36
37
  maxConcurrentLimboResolutions: number;
@@ -38,7 +38,8 @@ export declare const MAX_CONCURRENT_LIMBO_RESOLUTIONS = 100;
38
38
  * async queue that is shared by all of the other components in the system.
39
39
  */
40
40
  export declare class FirestoreClient {
41
- private credentials;
41
+ private authCredentials;
42
+ private appCheckCredentials;
42
43
  /**
43
44
  * Asynchronous queue responsible for all of our internal processing. When
44
45
  * we get incoming work from the user (via public API) or the network
@@ -51,10 +52,10 @@ export declare class FirestoreClient {
51
52
  private databaseInfo;
52
53
  private user;
53
54
  private readonly clientId;
54
- private credentialListener;
55
+ private authCredentialListener;
55
56
  offlineComponents?: OfflineComponentProvider;
56
57
  onlineComponents?: OnlineComponentProvider;
57
- constructor(credentials: CredentialsProvider,
58
+ constructor(authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>,
58
59
  /**
59
60
  * Asynchronous queue responsible for all of our internal processing. When
60
61
  * we get incoming work from the user (via public API) or the network
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import { _FirebaseService } from '@firebase/app';
18
18
  import { CredentialsProvider } from '../api/credentials';
19
+ import { User } from '../auth/user';
19
20
  import { DatabaseId, DatabaseInfo } from '../core/database_info';
20
21
  import { Datastore } from '../remote/datastore';
21
22
  import { FirestoreSettingsImpl } from './settings';
@@ -27,7 +28,8 @@ export declare const LOG_TAG = "ComponentProvider";
27
28
  * This interface mainly exists to remove a cyclic dependency.
28
29
  */
29
30
  export interface FirestoreService extends _FirebaseService {
30
- _credentials: CredentialsProvider;
31
+ _authCredentials: CredentialsProvider<User>;
32
+ _appCheckCredentials: CredentialsProvider<string>;
31
33
  _persistenceKey: string;
32
34
  _databaseId: DatabaseId;
33
35
  _terminated: boolean;
@@ -17,6 +17,7 @@
17
17
  import { FirebaseApp } from '@firebase/app';
18
18
  import { EmulatorMockTokenOptions } from '@firebase/util';
19
19
  import { CredentialsProvider } from '../api/credentials';
20
+ import { User } from '../auth/user';
20
21
  import { DatabaseId } from '../core/database_info';
21
22
  import { FirestoreService } from './components';
22
23
  import { FirestoreSettingsImpl, PrivateSettings, FirestoreSettings } from './settings';
@@ -31,7 +32,8 @@ declare module '@firebase/component' {
31
32
  * Do not call this constructor directly. Instead, use {@link getFirestore}.
32
33
  */
33
34
  export declare class Firestore implements FirestoreService {
34
- _credentials: CredentialsProvider;
35
+ _authCredentials: CredentialsProvider<User>;
36
+ _appCheckCredentials: CredentialsProvider<string>;
35
37
  /**
36
38
  * Whether it's a Firestore or Firestore Lite instance.
37
39
  */
@@ -43,7 +45,7 @@ export declare class Firestore implements FirestoreService {
43
45
  private _terminateTask?;
44
46
  _app?: FirebaseApp;
45
47
  /** @hideconstructor */
46
- constructor(databaseIdOrApp: DatabaseId | FirebaseApp, _credentials: CredentialsProvider);
48
+ constructor(databaseIdOrApp: DatabaseId | FirebaseApp, _authCredentials: CredentialsProvider<User>, _appCheckCredentials: CredentialsProvider<string>);
47
49
  /**
48
50
  * The {@link @firebase/app#FirebaseApp} associated with this `Firestore` service
49
51
  * instance.
@@ -25,5 +25,5 @@ export declare class WebChannelConnection extends RestConnection {
25
25
  private readonly useFetchStreams;
26
26
  constructor(info: DatabaseInfo);
27
27
  protected performRPCRequest<Req, Resp>(rpcName: string, url: string, headers: StringMap, body: Req): Promise<Resp>;
28
- openStream<Req, Resp>(rpcName: string, token: Token | null): Stream<Req, Resp>;
28
+ openStream<Req, Resp>(rpcName: string, authToken: Token | null, appCheckToken: Token | null): Stream<Req, Resp>;
29
29
  }
@@ -28,7 +28,7 @@ export declare class GrpcConnection implements Connection {
28
28
  private cachedStub;
29
29
  constructor(protos: GrpcObject, databaseInfo: DatabaseInfo);
30
30
  private ensureActiveStub;
31
- invokeRPC<Req, Resp>(rpcName: string, path: string, request: Req, token: Token | null): Promise<Resp>;
32
- invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, token: Token | null): Promise<Resp[]>;
33
- openStream<Req, Resp>(rpcName: string, token: Token | null): Stream<Req, Resp>;
31
+ invokeRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp>;
32
+ invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp[]>;
33
+ openStream<Req, Resp>(rpcName: string, authToken: Token | null, appCheckToken: Token | null): Stream<Req, Resp>;
34
34
  }
@@ -41,7 +41,7 @@ export interface Connection {
41
41
  * @param token - the Token to use for the RPC.
42
42
  * @returns a Promise containing the JSON object encoding of the response
43
43
  */
44
- invokeRPC<Req, Resp>(rpcName: string, path: string, request: Req, token: Token | null): Promise<Resp>;
44
+ invokeRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp>;
45
45
  /**
46
46
  * Invokes a streaming RPC by name, given a request message as a JavaScript
47
47
  * object representing the JSON to send. The responses will be consumed to
@@ -54,14 +54,14 @@ export interface Connection {
54
54
  * @returns a Promise containing an array with the JSON object encodings of the
55
55
  * responses
56
56
  */
57
- invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, token: Token | null): Promise<Resp[]>;
57
+ invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp[]>;
58
58
  /**
59
59
  * Opens a stream to the given stream RPC endpoint. Returns a stream which
60
60
  * will try to open itself.
61
61
  * @param rpcName - the name of the RPC to open the stream on
62
62
  * @param token - the Token to use for the RPC.
63
63
  */
64
- openStream<Req, Resp>(rpcName: string, token: Token | null): Stream<Req, Resp>;
64
+ openStream<Req, Resp>(rpcName: string, authToken: Token | null, appCheckToken: Token | null): Stream<Req, Resp>;
65
65
  }
66
66
  /**
67
67
  * A bidirectional stream that can be used to send an receive messages.
@@ -15,6 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { CredentialsProvider } from '../api/credentials';
18
+ import { User } from '../auth/user';
18
19
  import { Query } from '../core/query';
19
20
  import { Document } from '../model/document';
20
21
  import { DocumentKey } from '../model/document_key';
@@ -31,7 +32,7 @@ import { JsonProtoSerializer } from './serializer';
31
32
  export declare abstract class Datastore {
32
33
  abstract terminate(): void;
33
34
  }
34
- export declare function newDatastore(credentials: CredentialsProvider, connection: Connection, serializer: JsonProtoSerializer): Datastore;
35
+ export declare function newDatastore(authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>, connection: Connection, serializer: JsonProtoSerializer): Datastore;
35
36
  export declare function invokeCommitRpc(datastore: Datastore, mutations: Mutation[]): Promise<void>;
36
37
  export declare function invokeBatchGetDocumentsRpc(datastore: Datastore, keys: DocumentKey[]): Promise<Document[]>;
37
38
  export declare function invokeRunQueryRpc(datastore: Datastore, query: Query): Promise<Document[]>;
@@ -15,6 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { CredentialsProvider, Token } from '../api/credentials';
18
+ import { User } from '../auth/user';
18
19
  import { SnapshotVersion } from '../core/snapshot_version';
19
20
  import { TargetId } from '../core/types';
20
21
  import { TargetData } from '../local/target_data';
@@ -82,7 +83,8 @@ export declare abstract class PersistentStream<SendType, ReceiveType, ListenerTy
82
83
  private idleTimerId;
83
84
  private healthTimerId;
84
85
  protected connection: Connection;
85
- private credentialsProvider;
86
+ private authCredentialsProvider;
87
+ private appCheckCredentialsProvider;
86
88
  protected listener: ListenerType;
87
89
  private state;
88
90
  /**
@@ -95,7 +97,7 @@ export declare abstract class PersistentStream<SendType, ReceiveType, ListenerTy
95
97
  private healthCheck;
96
98
  private stream;
97
99
  protected backoff: ExponentialBackoff;
98
- constructor(queue: AsyncQueue, connectionTimerId: TimerId, idleTimerId: TimerId, healthTimerId: TimerId, connection: Connection, credentialsProvider: CredentialsProvider, listener: ListenerType);
100
+ constructor(queue: AsyncQueue, connectionTimerId: TimerId, idleTimerId: TimerId, healthTimerId: TimerId, connection: Connection, authCredentialsProvider: CredentialsProvider<User>, appCheckCredentialsProvider: CredentialsProvider<string>, listener: ListenerType);
99
101
  /**
100
102
  * Returns true if start() has been called and no error has occurred. True
101
103
  * indicates the stream is open or in the process of opening (which
@@ -175,7 +177,7 @@ export declare abstract class PersistentStream<SendType, ReceiveType, ListenerTy
175
177
  * Used by subclasses to start the concrete RPC and return the underlying
176
178
  * connection stream.
177
179
  */
178
- protected abstract startRpc(token: Token | null): Stream<SendType, ReceiveType>;
180
+ protected abstract startRpc(authToken: Token | null, appCheckToken: Token | null): Stream<SendType, ReceiveType>;
179
181
  /**
180
182
  * Called after the stream has received a message. The function will be
181
183
  * called on the right queue and must return a Promise.
@@ -211,8 +213,8 @@ export interface WatchStreamListener extends PersistentStreamListener {
211
213
  */
212
214
  export declare class PersistentListenStream extends PersistentStream<ProtoListenRequest, ProtoListenResponse, WatchStreamListener> {
213
215
  private serializer;
214
- constructor(queue: AsyncQueue, connection: Connection, credentials: CredentialsProvider, serializer: JsonProtoSerializer, listener: WatchStreamListener);
215
- protected startRpc(token: Token | null): Stream<ProtoListenRequest, ProtoListenResponse>;
216
+ constructor(queue: AsyncQueue, connection: Connection, authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>, serializer: JsonProtoSerializer, listener: WatchStreamListener);
217
+ protected startRpc(authToken: Token | null, appCheckToken: Token | null): Stream<ProtoListenRequest, ProtoListenResponse>;
216
218
  protected onMessage(watchChangeProto: ProtoListenResponse): Promise<void>;
217
219
  /**
218
220
  * Registers interest in the results of the given target. If the target
@@ -260,7 +262,7 @@ export interface WriteStreamListener extends PersistentStreamListener {
260
262
  export declare class PersistentWriteStream extends PersistentStream<ProtoWriteRequest, ProtoWriteResponse, WriteStreamListener> {
261
263
  private serializer;
262
264
  private handshakeComplete_;
263
- constructor(queue: AsyncQueue, connection: Connection, credentials: CredentialsProvider, serializer: JsonProtoSerializer, listener: WriteStreamListener);
265
+ constructor(queue: AsyncQueue, connection: Connection, authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>, serializer: JsonProtoSerializer, listener: WriteStreamListener);
264
266
  /**
265
267
  * The last received stream token from the server, used to acknowledge which
266
268
  * responses the client has processed. Stream tokens are opaque checkpoint
@@ -277,7 +279,7 @@ export declare class PersistentWriteStream extends PersistentStream<ProtoWriteRe
277
279
  get handshakeComplete(): boolean;
278
280
  start(): void;
279
281
  protected tearDown(): void;
280
- protected startRpc(token: Token | null): Stream<ProtoWriteRequest, ProtoWriteResponse>;
282
+ protected startRpc(authToken: Token | null, appCheckToken: Token | null): Stream<ProtoWriteRequest, ProtoWriteResponse>;
281
283
  protected onMessage(responseProto: ProtoWriteResponse): Promise<void>;
282
284
  /**
283
285
  * Sends an initial streamToken to the server, performing the handshake
@@ -28,14 +28,14 @@ export declare abstract class RestConnection implements Connection {
28
28
  protected readonly baseUrl: string;
29
29
  private readonly databaseRoot;
30
30
  constructor(databaseInfo: DatabaseInfo);
31
- invokeRPC<Req, Resp>(rpcName: string, path: string, req: Req, token: Token | null): Promise<Resp>;
32
- invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, token: Token | null): Promise<Resp[]>;
33
- abstract openStream<Req, Resp>(rpcName: string, token: Token | null): Stream<Req, Resp>;
31
+ invokeRPC<Req, Resp>(rpcName: string, path: string, req: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp>;
32
+ invokeStreamingRPC<Req, Resp>(rpcName: string, path: string, request: Req, authToken: Token | null, appCheckToken: Token | null): Promise<Resp[]>;
33
+ abstract openStream<Req, Resp>(rpcName: string, authToken: Token | null, appCheckToken: Token | null): Stream<Req, Resp>;
34
34
  /**
35
35
  * Modifies the headers for a request, adding any authorization token if
36
36
  * present and any additional headers for the request.
37
37
  */
38
- protected modifyHeadersForRequest(headers: StringMap, token: Token | null): void;
38
+ protected modifyHeadersForRequest(headers: StringMap, authToken: Token | null, appCheckToken: Token | null): void;
39
39
  /**
40
40
  * Performs an RPC request using an implementation specific networking layer.
41
41
  */
@@ -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 { EmptyCredentialsProvider } from '../../../src/api/credentials';
17
+ import { EmptyAuthCredentialsProvider } from '../../../src/api/credentials';
18
18
  import { SnapshotVersion } from '../../../src/core/snapshot_version';
19
19
  import { MutationResult } from '../../../src/model/mutation';
20
20
  import { PersistentListenStream, PersistentWriteStream, WatchStreamListener, WriteStreamListener } from '../../../src/remote/persistent_stream';
@@ -48,6 +48,6 @@ declare class StreamStatusListener implements WatchStreamListener, WriteStreamLi
48
48
  onClose(err?: FirestoreError): Promise<void>;
49
49
  private resolvePending;
50
50
  }
51
- export declare function withTestWriteStream(fn: (writeStream: PersistentWriteStream, streamListener: StreamStatusListener, queue: AsyncQueueImpl) => Promise<void>, credentialsProvider?: EmptyCredentialsProvider): Promise<void>;
51
+ export declare function withTestWriteStream(fn: (writeStream: PersistentWriteStream, streamListener: StreamStatusListener, queue: AsyncQueueImpl) => Promise<void>, credentialsProvider?: EmptyAuthCredentialsProvider): Promise<void>;
52
52
  export declare function withTestWatchStream(fn: (watchStream: PersistentListenStream, streamListener: StreamStatusListener) => Promise<void>): Promise<void>;
53
53
  export {};
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import * as firestore from '@firebase/firestore-types';
18
- import { CredentialChangeListener, CredentialsProvider, EmptyCredentialsProvider } from '../../../src/api/credentials';
18
+ import { CredentialChangeListener, CredentialsProvider, EmptyAuthCredentialsProvider } from '../../../src/api/credentials';
19
19
  import { User } from '../../../src/auth/user';
20
20
  import { DatabaseInfo } from '../../../src/core/database_info';
21
21
  import { Datastore } from '../../../src/remote/datastore';
@@ -23,11 +23,11 @@ import { AsyncQueue } from '../../../src/util/async_queue';
23
23
  import { AsyncQueueImpl } from '../../../src/util/async_queue_impl';
24
24
  export declare function asyncQueue(db: firestore.FirebaseFirestore): AsyncQueueImpl;
25
25
  export declare function getDefaultDatabaseInfo(): DatabaseInfo;
26
- export declare function withTestDatastore(fn: (datastore: Datastore) => Promise<void>, credentialsProvider?: CredentialsProvider): Promise<void>;
27
- export declare class MockCredentialsProvider extends EmptyCredentialsProvider {
26
+ export declare function withTestDatastore(fn: (datastore: Datastore) => Promise<void>, authCredentialsProvider?: CredentialsProvider<User>, appCheckTokenProvider?: CredentialsProvider<string>): Promise<void>;
27
+ export declare class MockAuthCredentialsProvider extends EmptyAuthCredentialsProvider {
28
28
  private listener;
29
29
  private asyncQueue;
30
30
  triggerUserChange(newUser: User): void;
31
- start(asyncQueue: AsyncQueue, listener: CredentialChangeListener): void;
31
+ start(asyncQueue: AsyncQueue, listener: CredentialChangeListener<User>): void;
32
32
  }
33
- export declare function withMockCredentialProviderTestDb(persistence: boolean, fn: (db: firestore.FirebaseFirestore, mockCredential: MockCredentialsProvider) => Promise<void>): Promise<void>;
33
+ export declare function withMockCredentialProviderTestDb(persistence: boolean, fn: (db: firestore.FirebaseFirestore, mockCredential: MockAuthCredentialsProvider) => Promise<void>): Promise<void>;
@@ -23,6 +23,6 @@ export declare class TestRestConnection extends RestConnection {
23
23
  lastHeaders: StringMap;
24
24
  lastRequestBody: unknown;
25
25
  nextResponse: Promise<unknown>;
26
- openStream<Req, Resp>(rpcName: string, token: Token | null): Stream<Req, Resp>;
26
+ openStream<Req, Resp>(rpcName: string, authToken: Token | null, appCheckToken: Token | null): Stream<Req, Resp>;
27
27
  protected performRPCRequest<Req, Resp>(rpcName: string, url: string, headers: StringMap, body: Req): Promise<Resp>;
28
28
  }
package/dist/index.d.ts CHANGED
@@ -457,7 +457,8 @@ export declare class DocumentSnapshot<T = DocumentData> {
457
457
  */
458
458
  get ref(): DocumentReference<T>;
459
459
  }
460
- /* Excluded from this release type: _EmptyCredentialsProvider */
460
+ /* Excluded from this release type: _EmptyAppCheckTokenProvider */
461
+ /* Excluded from this release type: _EmptyAuthCredentialsProvider */
461
462
  export { EmulatorMockTokenOptions };
462
463
  /**
463
464
  * Attempts to enable persistent storage, if possible.