@firebase/firestore 3.3.0 → 3.3.1-canary.086df7c7e

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 +8 -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 +3401 -3347
  20. package/dist/index.esm2017.js.map +1 -1
  21. package/dist/index.esm5.js +3676 -3627
  22. package/dist/index.esm5.js.map +1 -1
  23. package/dist/index.node.cjs.js +194 -101
  24. package/dist/index.node.cjs.js.map +1 -1
  25. package/dist/index.node.mjs +191 -99
  26. package/dist/index.node.mjs.map +1 -1
  27. package/dist/index.rn.js +3394 -3340
  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 +9 -9
@@ -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/private.d.ts CHANGED
@@ -491,7 +491,8 @@ declare type Comparator<K> = (key1: K, key2: K) => number;
491
491
  declare interface ComponentConfiguration {
492
492
  asyncQueue: AsyncQueue;
493
493
  databaseInfo: DatabaseInfo;
494
- credentials: CredentialsProvider;
494
+ authCredentials: CredentialsProvider<User>;
495
+ appCheckCredentials: CredentialsProvider<string>;
495
496
  clientId: ClientId;
496
497
  initialUser: User;
497
498
  maxConcurrentLimboResolutions: number;
@@ -521,13 +522,13 @@ export declare function connectFirestoreEmulator(firestore: Firestore_2, host: s
521
522
  * token and may need to invalidate other state if the current user has also
522
523
  * changed.
523
524
  */
524
- declare type CredentialChangeListener = (user: User) => Promise<void>;
525
+ declare type CredentialChangeListener<T> = (credential: T) => Promise<void>;
525
526
 
526
527
  /**
527
528
  * Provides methods for getting the uid and token for the current user and
528
529
  * listening for changes.
529
530
  */
530
- declare interface CredentialsProvider {
531
+ declare interface CredentialsProvider<T> {
531
532
  /**
532
533
  * Starts the credentials provider and specifies a listener to be notified of
533
534
  * credential changes (sign-in / sign-out, token changes). It is immediately
@@ -535,7 +536,7 @@ declare interface CredentialsProvider {
535
536
  *
536
537
  * The change listener is invoked on the provided AsyncQueue.
537
538
  */
538
- start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener): void;
539
+ start(asyncQueue: AsyncQueue, changeListener: CredentialChangeListener<T>): void;
539
540
  /** Requests a token for the current user. */
540
541
  getToken(): Promise<Token | null>;
541
542
  /**
@@ -1052,7 +1053,9 @@ declare interface DocumentViewChange {
1052
1053
  doc: Document_2;
1053
1054
  }
1054
1055
 
1055
- /* Excluded from this release type: _EmptyCredentialsProvider */
1056
+ /* Excluded from this release type: _EmptyAppCheckTokenProvider */
1057
+
1058
+ /* Excluded from this release type: _EmptyAuthCredentialsProvider */
1056
1059
  export { EmulatorMockTokenOptions }
1057
1060
 
1058
1061
  /**
@@ -1278,7 +1281,7 @@ export declare class Firestore extends Firestore_2 {
1278
1281
  readonly _persistenceKey: string;
1279
1282
  _firestoreClient: FirestoreClient | undefined;
1280
1283
  /** @hideconstructor */
1281
- constructor(databaseIdOrApp: _DatabaseId | FirebaseApp, credentialsProvider: CredentialsProvider);
1284
+ constructor(databaseIdOrApp: _DatabaseId | FirebaseApp, authCredentialsProvider: CredentialsProvider<User>, appCheckCredentialsProvider: CredentialsProvider<string>);
1282
1285
  _terminate(): Promise<void>;
1283
1286
  }
1284
1287
 
@@ -1288,7 +1291,8 @@ export declare class Firestore extends Firestore_2 {
1288
1291
  * Do not call this constructor directly. Instead, use {@link getFirestore}.
1289
1292
  */
1290
1293
  declare class Firestore_2 implements FirestoreService {
1291
- _credentials: CredentialsProvider;
1294
+ _authCredentials: CredentialsProvider<User>;
1295
+ _appCheckCredentials: CredentialsProvider<string>;
1292
1296
  /**
1293
1297
  * Whether it's a Firestore or Firestore Lite instance.
1294
1298
  */
@@ -1300,7 +1304,7 @@ declare class Firestore_2 implements FirestoreService {
1300
1304
  private _terminateTask?;
1301
1305
  _app?: FirebaseApp;
1302
1306
  /** @hideconstructor */
1303
- constructor(databaseIdOrApp: _DatabaseId | FirebaseApp, _credentials: CredentialsProvider);
1307
+ constructor(databaseIdOrApp: _DatabaseId | FirebaseApp, _authCredentials: CredentialsProvider<User>, _appCheckCredentials: CredentialsProvider<string>);
1304
1308
  /**
1305
1309
  * The {@link @firebase/app#FirebaseApp} associated with this `Firestore` service
1306
1310
  * instance.
@@ -1330,7 +1334,8 @@ declare class Firestore_2 implements FirestoreService {
1330
1334
  * async queue that is shared by all of the other components in the system.
1331
1335
  */
1332
1336
  declare class FirestoreClient {
1333
- private credentials;
1337
+ private authCredentials;
1338
+ private appCheckCredentials;
1334
1339
  /**
1335
1340
  * Asynchronous queue responsible for all of our internal processing. When
1336
1341
  * we get incoming work from the user (via public API) or the network
@@ -1343,10 +1348,10 @@ declare class FirestoreClient {
1343
1348
  private databaseInfo;
1344
1349
  private user;
1345
1350
  private readonly clientId;
1346
- private credentialListener;
1351
+ private authCredentialListener;
1347
1352
  offlineComponents?: OfflineComponentProvider;
1348
1353
  onlineComponents?: OnlineComponentProvider;
1349
- constructor(credentials: CredentialsProvider,
1354
+ constructor(authCredentials: CredentialsProvider<User>, appCheckCredentials: CredentialsProvider<string>,
1350
1355
  /**
1351
1356
  * Asynchronous queue responsible for all of our internal processing. When
1352
1357
  * we get incoming work from the user (via public API) or the network
@@ -1603,7 +1608,8 @@ export declare type FirestoreErrorCode = 'cancelled' | 'unknown' | 'invalid-argu
1603
1608
  * This interface mainly exists to remove a cyclic dependency.
1604
1609
  */
1605
1610
  declare interface FirestoreService extends _FirebaseService {
1606
- _credentials: CredentialsProvider;
1611
+ _authCredentials: CredentialsProvider<User>;
1612
+ _appCheckCredentials: CredentialsProvider<string>;
1607
1613
  _persistenceKey: string;
1608
1614
  _databaseId: _DatabaseId;
1609
1615
  _terminated: boolean;
@@ -3463,7 +3469,7 @@ declare interface PrivateSettings extends FirestoreSettings_2 {
3463
3469
 
3464
3470
  declare interface ProviderCredentialsSettings {
3465
3471
  ['type']: 'provider';
3466
- ['client']: CredentialsProvider;
3472
+ ['client']: CredentialsProvider<User>;
3467
3473
  }
3468
3474
 
3469
3475
  /**
@@ -4924,15 +4930,14 @@ declare interface Token {
4924
4930
  /**
4925
4931
  * The user with which the token is associated (used for persisting user
4926
4932
  * state on disk, etc.).
4933
+ * This will be null for Tokens of the type 'AppCheck'.
4927
4934
  */
4928
- user: User;
4929
- /** Extra header values to be passed along with a request */
4930
- authHeaders: {
4931
- [header: string]: string;
4932
- };
4935
+ user?: User;
4936
+ /** Header values to set for this token */
4937
+ headers: Map<string, string>;
4933
4938
  }
4934
4939
 
4935
- declare type TokenType = 'OAuth' | 'FirstParty';
4940
+ declare type TokenType = 'OAuth' | 'FirstParty' | 'AppCheck';
4936
4941
 
4937
4942
  /**
4938
4943
  * A reference to a transaction.