Skip to content

Commit fcd22d5

Browse files
committed
Second pass
1 parent d86e71f commit fcd22d5

File tree

16 files changed

+113
-119
lines changed

16 files changed

+113
-119
lines changed

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

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,11 @@ import { LogLevelString } from '@firebase/logger';
1212
import { Provider } from '@firebase/component';
1313

1414
// @public (undocumented)
15-
export const CacheOnly = "cacheOnly";
16-
17-
// @public
1815
export interface CacheSettings {
1916
// (undocumented)
20-
maxSizeBytes: number;
17+
cacheProvider?: IndexedDBStub<StorageType>;
2118
// (undocumented)
22-
storage: DataConnectStorage;
19+
maxSizeBytes?: number;
2320
}
2421

2522
// @public
@@ -126,9 +123,6 @@ export interface DataConnectSettings {
126123
cacheSettings?: CacheSettings;
127124
}
128125

129-
// @public (undocumented)
130-
export type DataConnectStorage = typeof Memory | typeof Persistent;
131-
132126
// @public
133127
export interface DataConnectSubscription<Data, Variables> {
134128
// (undocumented)
@@ -167,7 +161,13 @@ export function getDataConnect(app: FirebaseApp, connectorConfig: ConnectorConfi
167161
export function getDataConnect(app: FirebaseApp, connectorConfig: ConnectorConfig, settings: DataConnectSettings): DataConnect;
168162

169163
// @public (undocumented)
170-
export const Memory = "memory";
164+
export class IndexedDBStub {
165+
// (undocumented)
166+
type: 'PERSISTENT';
167+
}
168+
169+
// @public (undocumented)
170+
export function makeMemoryCacheProvider(): IndexedDBStub<'MEMORY'>;
171171

172172
// @public (undocumented)
173173
export const MUTATION_STR = "mutation";
@@ -226,16 +226,23 @@ export interface OpResult<Data> {
226226
}
227227

228228
// @public (undocumented)
229-
export const Persistent = "persistent";
230-
231-
// @public (undocumented)
232-
export const PreferCache = "preferCache";
229+
export class PersistentStub {
230+
// (undocumented)
231+
type: 'MEMORY';
232+
}
233233

234234
// @public (undocumented)
235235
export const QUERY_STR = "query";
236236

237+
// @public
238+
export const QueryFetchPolicy: {
239+
PREFER_CACHE: string;
240+
CACHE_ONLY: string;
241+
SERVER_ONLY: string;
242+
};
243+
237244
// @public (undocumented)
238-
export type QueryFetchPolicy = typeof PreferCache | typeof CacheOnly | typeof ServerOnly;
245+
export type QueryFetchPolicy = (typeof QueryFetchPolicy)[keyof typeof QueryFetchPolicy];
239246

240247
// @public
241248
export interface QueryPromise<Data, Variables> extends Promise<QueryResult<Data, Variables>> {
@@ -283,9 +290,6 @@ export interface SerializedRef<Data, Variables> extends OpResult<Data> {
283290
refInfo: RefInfo<Variables>;
284291
}
285292

286-
// @public (undocumented)
287-
export const ServerOnly = "serverOnly";
288-
289293
// @public (undocumented)
290294
export function setLogLevel(logLevel: LogLevelString): void;
291295

@@ -295,6 +299,14 @@ export const SOURCE_CACHE = "CACHE";
295299
// @public (undocumented)
296300
export const SOURCE_SERVER = "SERVER";
297301

302+
// @public (undocumented)
303+
export const StorageType: {
304+
MEMORY: string;
305+
};
306+
307+
// @public (undocumented)
308+
export type StorageType = (typeof StorageType)[keyof typeof StorageType];
309+
298310
// @public
299311
export function subscribe<Data, Variables>(queryRefOrSerializedResult: QueryRef<Data, Variables> | SerializedRef<Data, Variables>, observer: SubscriptionOptions<Data, Variables>): QueryUnsubscribe;
300312

e2e/data-connect/dataconnect-generated/js/default-connector/.guides/usage.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ If a user is not using a supported framework, they can use the generated SDK dir
1414
Here's an example of how to use it with the first 5 operations:
1515

1616
```js
17-
import { listMovies, createMovie } from '@firebasegen/default-connector';
17+
import { createMovie, listMovies } from '@firebasegen/default-connector';
1818

1919

20-
// Operation ListMovies:
21-
const { data } = await ListMovies(dataConnect);
22-
2320
// Operation CreateMovie: For variables, look at type CreateMovieVars in ../index.d.ts
2421
const { data } = await CreateMovie(dataConnect, createMovieVars);
2522

23+
// Operation ListMovies:
24+
const { data } = await ListMovies(dataConnect);
25+
2626

2727
```

e2e/data-connect/dataconnect-generated/js/default-connector/esm/index.esm.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,6 @@ export const connectorConfig = {
66
location: 'us-central1'
77
};
88

9-
export const listMoviesRef = (dc) => {
10-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
11-
dcInstance._useGeneratedSdk();
12-
return queryRef(dcInstance, 'ListMovies');
13-
}
14-
listMoviesRef.operationName = 'ListMovies';
15-
16-
export function listMovies(dc) {
17-
return executeQuery(listMoviesRef(dc));
18-
}
19-
209
export const createMovieRef = (dcOrVars, vars) => {
2110
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
2211
dcInstance._useGeneratedSdk();
@@ -28,3 +17,14 @@ export function createMovie(dcOrVars, vars) {
2817
return executeMutation(createMovieRef(dcOrVars, vars));
2918
}
3019

20+
export const listMoviesRef = (dc) => {
21+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
22+
dcInstance._useGeneratedSdk();
23+
return queryRef(dcInstance, 'ListMovies');
24+
}
25+
listMoviesRef.operationName = 'ListMovies';
26+
27+
export function listMovies(dc) {
28+
return executeQuery(listMoviesRef(dc));
29+
}
30+

e2e/data-connect/dataconnect-generated/js/default-connector/index.cjs.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,6 @@ const connectorConfig = {
77
};
88
exports.connectorConfig = connectorConfig;
99

10-
const listMoviesRef = (dc) => {
11-
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
12-
dcInstance._useGeneratedSdk();
13-
return queryRef(dcInstance, 'ListMovies');
14-
}
15-
listMoviesRef.operationName = 'ListMovies';
16-
exports.listMoviesRef = listMoviesRef;
17-
18-
exports.listMovies = function listMovies(dc) {
19-
return executeQuery(listMoviesRef(dc));
20-
};
21-
2210
const createMovieRef = (dcOrVars, vars) => {
2311
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
2412
dcInstance._useGeneratedSdk();
@@ -30,3 +18,15 @@ exports.createMovieRef = createMovieRef;
3018
exports.createMovie = function createMovie(dcOrVars, vars) {
3119
return executeMutation(createMovieRef(dcOrVars, vars));
3220
};
21+
22+
const listMoviesRef = (dc) => {
23+
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
24+
dcInstance._useGeneratedSdk();
25+
return queryRef(dcInstance, 'ListMovies');
26+
}
27+
listMoviesRef.operationName = 'ListMovies';
28+
exports.listMoviesRef = listMoviesRef;
29+
30+
exports.listMovies = function listMovies(dc) {
31+
return executeQuery(listMoviesRef(dc));
32+
};

e2e/data-connect/dataconnect-generated/js/default-connector/index.d.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,6 @@ export interface Movie_Key {
3434
__typename?: 'Movie_Key';
3535
}
3636

37-
interface ListMoviesRef {
38-
/* Allow users to create refs without passing in DataConnect */
39-
(): QueryRef<ListMoviesData, undefined>;
40-
/* Allow users to pass in custom DataConnect instances */
41-
(dc: DataConnect): QueryRef<ListMoviesData, undefined>;
42-
operationName: string;
43-
}
44-
export const listMoviesRef: ListMoviesRef;
45-
46-
export function listMovies(): QueryPromise<ListMoviesData, undefined>;
47-
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData, undefined>;
48-
4937
interface CreateMovieRef {
5038
/* Allow users to create refs without passing in DataConnect */
5139
(vars: CreateMovieVariables): MutationRef<CreateMovieData, CreateMovieVariables>;
@@ -58,3 +46,15 @@ export const createMovieRef: CreateMovieRef;
5846
export function createMovie(vars: CreateMovieVariables): MutationPromise<CreateMovieData, CreateMovieVariables>;
5947
export function createMovie(dc: DataConnect, vars: CreateMovieVariables): MutationPromise<CreateMovieData, CreateMovieVariables>;
6048

49+
interface ListMoviesRef {
50+
/* Allow users to create refs without passing in DataConnect */
51+
(): QueryRef<ListMoviesData, undefined>;
52+
/* Allow users to pass in custom DataConnect instances */
53+
(dc: DataConnect): QueryRef<ListMoviesData, undefined>;
54+
operationName: string;
55+
}
56+
export const listMoviesRef: ListMoviesRef;
57+
58+
export function listMovies(): QueryPromise<ListMoviesData, undefined>;
59+
export function listMovies(dc: DataConnect): QueryPromise<ListMoviesData, undefined>;
60+

e2e/data-connect/dataconnect/.dataconnect/schema/main/relation.gql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,8 @@ extend type Movie {
4343
"""
4444
distinct: Boolean = false
4545
): Int! @fdc_generated(from: "Movie.title", purpose: QUERY_COUNT)
46+
"""
47+
A generated field that is used for caching results in SDKs.
48+
"""
49+
_id: ID! @fdc_generated(from: "Movie.id", purpose: GLOBAL_ID)
4650
}

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

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

1818
export * from './core/query/subscribe';
19+
export { IndexedDBStub, MemoryStub as PersistentStub } from './cache/Cache';
20+
export { makeMemoryCacheProvider } from './api/DataConnect';

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@
1616
*/
1717

1818
export { subscribe } from './api.browser';
19+
export { makeMemoryCacheProvider, CacheProvider } from './api/DataConnect';

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,10 @@ import {
3131
} from '@firebase/util';
3232

3333
import {
34-
CacheSettings,
3534
DataConnectCache,
3635
IndexedDBStub,
37-
PersistentStub,
36+
MemoryStub,
3837
} from '../cache/Cache';
39-
import { InternalCacheProvider } from '../cache/CacheProvider';
4038
import { AppCheckTokenProvider } from '../core/AppCheckTokenProvider';
4139
import { Code, DataConnectError } from '../core/error';
4240
import {
@@ -188,10 +186,9 @@ export class DataConnect {
188186
this._authTokenProvider,
189187
this.app.options.projectId,
190188
connectorConfig,
191-
this._transportOptions.host || PROD_HOST,
189+
this._transportOptions?.host || PROD_HOST,
192190
this.dataConnectOptions.cacheSettings
193191
);
194-
this.cache.setAuthProvider(this._authTokenProvider);
195192
if (this._appCheckProvider) {
196193
this._appCheckTokenProvider = new AppCheckTokenProvider(
197194
this.app,
@@ -315,7 +312,7 @@ export function getDataConnect(
315312
export function getDataConnect(
316313
appOrConnectorConfig: FirebaseApp | ConnectorConfig,
317314
settingsOrConnectorConfig?: ConnectorConfig | DataConnectSettings,
318-
settings?: DataConnectSettings
315+
settings?: DataConnectSettings // TODO: This doesn't serialize well because it has a function.
319316
): DataConnect {
320317
let app: FirebaseApp;
321318
let connectorConfig: ConnectorConfig;
@@ -389,25 +386,25 @@ export function terminate(dataConnect: DataConnect): Promise<void> {
389386
// TODO(mtewani): Stop pending tasks
390387
}
391388
export const StorageType = {
392-
PERSISTENT: 'PERSISTENT',
389+
// PERSISTENT: 'PERSISTENT',
393390
MEMORY: 'MEMORY'
394391
};
395392

396393
export type StorageType = (typeof StorageType)[keyof typeof StorageType];
397394

398395

396+
export interface CacheSettings {
397+
maxSizeBytes?: number;
398+
cacheProvider?: CacheProvider<StorageType>;
399+
}
399400
export interface CacheProvider<T extends StorageType> {
400401
type: T
401-
/**
402-
* @internal
403-
*/
404-
initialize(cacheId: string): InternalCacheProvider;
405402
}
406403

407404
export function makePersistentCacheProvider(): CacheProvider<'PERSISTENT'> {
408405
return new IndexedDBStub();
409406
}
410407
export function makeMemoryCacheProvider(): CacheProvider<'MEMORY'> {
411-
return new PersistentStub();
408+
return new MemoryStub();
412409
}
413410

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

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,11 @@
1616
*/
1717

1818
export * from '../network';
19-
export {
20-
CacheSettings,
21-
DataConnectStorage,
22-
Memory,
23-
Persistent
24-
} from '../cache/Cache';
2519
export {
2620
ExecuteQueryOptions,
2721
QueryFetchPolicy,
2822
} from '../core/query/queryOptions';
29-
export * from './DataConnect';
23+
export { CacheSettings, validateDCOptions, ConnectorConfig, DataConnect, DataConnectOptions, DataConnectSettings, StorageType, TransportOptions, areTransportOptionsEqual, connectDataConnectEmulator, getDataConnect, parseOptions, terminate } from './DataConnect';
3024
export * from './Reference';
3125
export * from './Mutation';
3226
export * from './query';

0 commit comments

Comments
 (0)