Skip to content

Commit 6cde031

Browse files
authored
Merge 213d18a into 81ee516
2 parents 81ee516 + 213d18a commit 6cde031

File tree

20 files changed

+177
-218
lines changed

20 files changed

+177
-218
lines changed

common/api-review/data-connect.api.md

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export interface ConnectorConfig {
4646

4747
// @public (undocumented)
4848
export class DataConnect {
49-
constructor(app: FirebaseApp, dataConnectOptions: DataConnectOptions, authProvider: Provider<FirebaseAuthInternalName>);
49+
constructor(app: FirebaseApp, dataConnectOptions: DataConnectOptions, _authProvider: Provider<FirebaseAuthInternalName>);
5050
// (undocumented)
5151
readonly app: FirebaseApp;
5252
// (undocumented)
@@ -59,7 +59,7 @@ export class DataConnect {
5959
isEmulator: boolean;
6060
// (undocumented)
6161
setInitialized(): void;
62-
}
62+
}
6363

6464
// @public (undocumented)
6565
export interface DataConnectOptions extends ConnectorConfig {
@@ -115,7 +115,7 @@ export const FIREBASE_DATA_CONNECT_EMULATOR_HOST_VAR = "FIREBASE_DATA_CONNECT_EM
115115

116116
// @public (undocumented)
117117
export class FirebaseAuthProvider implements AuthTokenProvider {
118-
constructor(appName: string, options: FirebaseOptions, authProvider_: Provider<FirebaseAuthInternalName>);
118+
constructor(_appName: string, _options: FirebaseOptions, _authProvider: Provider<FirebaseAuthInternalName>);
119119
// (undocumented)
120120
addTokenChangeListener(listener: AuthTokenListener): void;
121121
// (undocumented)
@@ -130,28 +130,31 @@ export function getDataConnect(options: ConnectorConfig): DataConnect;
130130
// @public (undocumented)
131131
export function getDataConnect(app: FirebaseApp, options: ConnectorConfig): DataConnect;
132132

133+
// @public (undocumented)
134+
export const MUTATION_STR = "mutation";
135+
133136
// @public (undocumented)
134137
export class MutationManager {
135-
constructor(transport: DataConnectTransport);
138+
constructor(_transport: DataConnectTransport);
136139
// (undocumented)
137-
executeMutation<Response, Variables>(mutationRef: MutationRef<Response, Variables>): MutationPromise<Response, Variables>;
138-
}
140+
executeMutation<Data, Variables>(mutationRef: MutationRef<Data, Variables>): MutationPromise<Data, Variables>;
141+
}
139142

140143
// @public (undocumented)
141144
export interface MutationPromise<Data, Variables> extends PromiseLike<MutationResult<Data, Variables>> {
142145
}
143146

144147
// @public (undocumented)
145-
export interface MutationRef<Response, Variables> extends OperationRef<Response, Variables> {
148+
export interface MutationRef<Data, Variables> extends OperationRef<Data, Variables> {
146149
// (undocumented)
147-
refType: typeof MutationStr;
150+
refType: typeof MUTATION_STR;
148151
}
149152

150153
// @public (undocumented)
151-
export function mutationRef<Response>(dcInstance: DataConnect, queryName: string): MutationRef<Response, undefined>;
154+
export function mutationRef<Data>(dcInstance: DataConnect, queryName: string): MutationRef<Data, undefined>;
152155

153156
// @public (undocumented)
154-
export function mutationRef<Response, Variables>(dcInstance: DataConnect, queryName: string, variables: Variables): MutationRef<Response, Variables>;
157+
export function mutationRef<Data, Variables>(dcInstance: DataConnect, mutationName: string, variables: Variables): MutationRef<Data, Variables>;
155158

156159
// @public (undocumented)
157160
export interface MutationResponse<T> extends CancellableOperation<T> {
@@ -163,9 +166,6 @@ export interface MutationResult<Data, Variables> extends DataConnectResult<Data,
163166
ref: MutationRef<Data, Variables>;
164167
}
165168

166-
// @public (undocumented)
167-
export const MutationStr = "mutation";
168-
169169
// @public (undocumented)
170170
export type OnCompleteSubscription = () => void;
171171

@@ -198,16 +198,7 @@ export interface OpResult<Data> {
198198
}
199199

200200
// @public (undocumented)
201-
export interface ProjectOptions {
202-
// (undocumented)
203-
connector: string;
204-
// (undocumented)
205-
location: string;
206-
// (undocumented)
207-
projectId: string;
208-
// (undocumented)
209-
service: string;
210-
}
201+
export const QUERY_STR = "query";
211202

212203
// @public (undocumented)
213204
export interface QueryPromise<Data, Variables> extends PromiseLike<QueryResult<Data, Variables>> {
@@ -216,7 +207,7 @@ export interface QueryPromise<Data, Variables> extends PromiseLike<QueryResult<D
216207
// @public (undocumented)
217208
export interface QueryRef<Data, Variables> extends OperationRef<Data, Variables> {
218209
// (undocumented)
219-
refType: typeof QueryStr;
210+
refType: typeof QUERY_STR;
220211
}
221212

222213
// @public (undocumented)
@@ -237,14 +228,11 @@ export interface QueryResult<Data, Variables> extends DataConnectResult<Data, Va
237228
toJSON: () => SerializedRef<Data, Variables>;
238229
}
239230

240-
// @public (undocumented)
241-
export const QueryStr = "query";
242-
243231
// @public (undocumented)
244232
export type QueryUnsubscribe = () => void;
245233

246234
// @public (undocumented)
247-
export type ReferenceType = typeof QueryStr | typeof MutationStr;
235+
export type ReferenceType = typeof QUERY_STR | typeof MUTATION_STR;
248236

249237
// @public (undocumented)
250238
export interface RefInfo<Variables> {
@@ -296,7 +284,7 @@ export interface SubscriptionOptions<Data, Variables> {
296284
}
297285

298286
// @public (undocumented)
299-
export function terminate(dataConnect: DataConnect): void;
287+
export function terminate(dataConnect: DataConnect): Promise<void>;
300288

301289
// @public (undocumented)
302290
export function toQueryRef<Data, Variables>(serializedRef: SerializedRef<Data, Variables>): QueryRef<unknown, Variables>;

packages/data-connect/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"prettier": "prettier --write '*.js' '*.ts' '@(src|test)/**/*.ts'",
3434
"build:deps": "lerna run --scope @firebase/'{app,data-connect}' --include-dependencies build",
3535
"dev": "rollup -c -w",
36-
"test": "run-p --npm-path npm lint test:emulator",
36+
"test": "run-p --npm-path npm test:emulator",
3737
"test:ci": "node ../../scripts/run_tests_in_ci.js -s test:emulator",
3838
"test:all": "npm run test:node",
3939
"test:browser": "karma start --single-run",

packages/data-connect/src/api.browser.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export function subscribe<Data, Variables>(
6363
let ref: QueryRef<Data, Variables>;
6464
let initialCache: OpResult<Data> | undefined;
6565
if ('refInfo' in queryRefOrSerializedResult) {
66-
let serializedRef: SerializedRef<Data, Variables> =
66+
const serializedRef: SerializedRef<Data, Variables> =
6767
queryRefOrSerializedResult;
6868
const { data, source, fetchTime } = serializedRef;
6969
initialCache = {

packages/data-connect/src/api/DataConnect.ts

Lines changed: 28 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,18 @@ import {
2424
import { FirebaseAuthInternalName } from '@firebase/auth-interop-types';
2525
import { Provider } from '@firebase/component';
2626

27+
import { Code, DataConnectError } from '../core/error';
2728
import {
2829
AuthTokenProvider,
2930
FirebaseAuthProvider
3031
} from '../core/FirebaseAuthProvider';
3132
import { QueryManager } from '../core/QueryManager';
33+
import { logDebug, logError } from '../logger';
3234
import { DataConnectTransport, TransportClass } from '../network';
3335
import { RESTTransport } from '../network/transport/rest';
3436

3537
import { MutationManager } from './Mutation';
36-
import { Code, DataConnectError } from '../core/error';
37-
import { logDebug, logError } from '../logger';
3838

39-
export interface ProjectOptions {
40-
location: string;
41-
connector: string;
42-
service: string;
43-
projectId: string;
44-
}
4539

4640
export interface ConnectorConfig {
4741
location: string;
@@ -78,27 +72,28 @@ export interface DataConnectOptions extends ConnectorConfig {
7872
export class DataConnect {
7973
_queryManager!: QueryManager;
8074
_mutationManager!: MutationManager;
81-
public isEmulator = false;
75+
isEmulator = false;
8276
initialized = false;
8377
private _transport!: DataConnectTransport;
84-
private transportClass: TransportClass | undefined;
85-
private transportOptions?: TransportOptions;
86-
private authTokenProvider?: AuthTokenProvider;
78+
private _transportClass: TransportClass | undefined;
79+
private _transportOptions?: TransportOptions;
80+
private _authTokenProvider?: AuthTokenProvider;
8781
constructor(
8882
public readonly app: FirebaseApp,
83+
// TODO(mtewani): Replace with _dataConnectOptions in the future
8984
private readonly dataConnectOptions: DataConnectOptions,
90-
private readonly authProvider: Provider<FirebaseAuthInternalName>
85+
private readonly _authProvider: Provider<FirebaseAuthInternalName>
9186
) {
9287
if (typeof process !== 'undefined' && process.env) {
9388
const host = process.env[FIREBASE_DATA_CONNECT_EMULATOR_HOST_VAR];
9489
if (host) {
9590
logDebug('Found custom host. Using emulator');
9691
this.isEmulator = true;
97-
this.transportOptions = parseOptions(host);
92+
this._transportOptions = parseOptions(host);
9893
}
9994
}
10095
}
101-
_delete() {
96+
_delete(): Promise<void> {
10297
_removeServiceInstance(
10398
this.app,
10499
'data-connect',
@@ -113,49 +108,49 @@ export class DataConnect {
113108
return copy;
114109
}
115110

116-
setInitialized() {
111+
setInitialized(): void {
117112
if (this.initialized) {
118113
return;
119114
}
120-
if (this.transportClass === undefined) {
115+
if (this._transportClass === undefined) {
121116
logDebug('transportClass not provided. Defaulting to RESTTransport.');
122-
this.transportClass = RESTTransport;
117+
this._transportClass = RESTTransport;
123118
}
124119

125-
if (this.authProvider) {
126-
this.authTokenProvider = new FirebaseAuthProvider(
120+
if (this._authProvider) {
121+
this._authTokenProvider = new FirebaseAuthProvider(
127122
this.app.name,
128123
this.app.options,
129-
this.authProvider
124+
this._authProvider
130125
);
131126
}
132127

133128
this.initialized = true;
134-
this._transport = new this.transportClass(
129+
this._transport = new this._transportClass(
135130
this.dataConnectOptions,
136131
this.app.options.apiKey,
137-
this.authTokenProvider
132+
this._authTokenProvider
138133
);
139-
if (this.transportOptions) {
134+
if (this._transportOptions) {
140135
this._transport.useEmulator(
141-
this.transportOptions.host,
142-
this.transportOptions.port,
143-
this.transportOptions.sslEnabled
136+
this._transportOptions.host,
137+
this._transportOptions.port,
138+
this._transportOptions.sslEnabled
144139
);
145140
}
146141
this._queryManager = new QueryManager(this._transport);
147142
this._mutationManager = new MutationManager(this._transport);
148143
}
149144

150-
enableEmulator(transportOptions: TransportOptions) {
145+
enableEmulator(transportOptions: TransportOptions): void {
151146
if (this.initialized) {
152-
logError('enableEmulator called without initializing');
147+
logError('enableEmulator called after initialization');
153148
throw new DataConnectError(
154149
Code.ALREADY_INITIALIZED,
155150
'DataConnect instance already initialized!'
156151
);
157152
}
158-
this.transportOptions = transportOptions;
153+
this._transportOptions = transportOptions;
159154
this.isEmulator = true;
160155
}
161156
}
@@ -165,7 +160,7 @@ export function connectDataConnectEmulator(
165160
host: string,
166161
port?: number,
167162
sslEnabled = false
168-
) {
163+
): void {
169164
dc.enableEmulator({ host, port, sslEnabled });
170165
}
171166

@@ -213,7 +208,7 @@ export function getDataConnect(
213208
});
214209
}
215210

216-
export function terminate(dataConnect: DataConnect) {
217-
dataConnect._delete();
211+
export function terminate(dataConnect: DataConnect): Promise<void> {
212+
return dataConnect._delete();
218213
// TODO(mtewani): Stop pending tasks
219214
}

packages/data-connect/src/api/Mutation.ts

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,52 +20,52 @@ import { DataConnectTransport } from '../network/transport';
2020
import { DataConnect } from './DataConnect';
2121
import {
2222
DataConnectResult,
23-
MutationStr,
23+
MUTATION_STR,
2424
OperationRef,
2525
SOURCE_SERVER
2626
} from './Reference';
2727

28-
export interface MutationRef<Response, Variables>
29-
extends OperationRef<Response, Variables> {
30-
refType: typeof MutationStr;
28+
export interface MutationRef<Data, Variables>
29+
extends OperationRef<Data, Variables> {
30+
refType: typeof MUTATION_STR;
3131
}
3232

33-
export function mutationRef<Response>(
33+
export function mutationRef<Data>(
3434
dcInstance: DataConnect,
3535
queryName: string
36-
): MutationRef<Response, undefined>;
37-
export function mutationRef<Response, Variables>(
36+
): MutationRef<Data, undefined>;
37+
export function mutationRef<Data, Variables>(
3838
dcInstance: DataConnect,
39-
queryName: string,
39+
mutationName: string,
4040
variables: Variables
41-
): MutationRef<Response, Variables>;
42-
export function mutationRef<Response, Variables>(
41+
): MutationRef<Data, Variables>;
42+
export function mutationRef<Data, Variables>(
4343
dcInstance: DataConnect,
4444
queryName: string,
4545
variables?: Variables
46-
): MutationRef<Response, Variables> {
46+
): MutationRef<Data, Variables> {
4747
dcInstance.setInitialized();
48-
const ref: MutationRef<Response, Variables> = {
48+
const ref: MutationRef<Data, Variables> = {
4949
dataConnect: dcInstance,
5050
name: queryName,
51-
refType: MutationStr,
51+
refType: MUTATION_STR,
5252
variables: variables as Variables
5353
};
5454
return ref;
5555
}
5656

5757
export class MutationManager {
5858
private _inflight: Array<PromiseLike<unknown>> = [];
59-
constructor(private transport: DataConnectTransport) {}
60-
executeMutation<Response, Variables>(
61-
mutationRef: MutationRef<Response, Variables>
62-
): MutationPromise<Response, Variables> {
63-
const result = this.transport.invokeMutation<Response, Variables>(
59+
constructor(private _transport: DataConnectTransport) {}
60+
executeMutation<Data, Variables>(
61+
mutationRef: MutationRef<Data, Variables>
62+
): MutationPromise<Data, Variables> {
63+
const result = this._transport.invokeMutation<Data, Variables>(
6464
mutationRef.name,
6565
mutationRef.variables
6666
);
6767
const withRefPromise = result.then(res => {
68-
const obj: MutationResult<Response, Variables> = {
68+
const obj: MutationResult<Data, Variables> = {
6969
...res, // Double check that the result is result.data, not just result
7070
source: SOURCE_SERVER,
7171
ref: mutationRef,

packages/data-connect/src/api/Reference.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
*/
1717

1818
import { DataConnect, DataConnectOptions } from './DataConnect';
19-
export const QueryStr = 'query';
20-
export const MutationStr = 'mutation';
21-
export type ReferenceType = typeof QueryStr | typeof MutationStr;
19+
export const QUERY_STR = 'query';
20+
export const MUTATION_STR = 'mutation';
21+
export type ReferenceType = typeof QUERY_STR | typeof MUTATION_STR;
2222

2323
export const SOURCE_SERVER = 'SERVER';
2424
export const SOURCE_CACHE = 'CACHE';

0 commit comments

Comments
 (0)