Skip to content

Commit e38066b

Browse files
Try to avoid link issue
1 parent 829de71 commit e38066b

File tree

6 files changed

+49
-66
lines changed

6 files changed

+49
-66
lines changed

packages/firestore/exp/src/api/reference.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ import {
5555
NextFn,
5656
PartialObserver,
5757
Unsubscribe
58-
} from '../../../src/api/observer';
58+
} from '../../../src/core/event_manager';
5959
import { getFirestoreClient } from './components';
6060
import { AsyncObserver } from '../../../src/util/async_observer';
6161
import { newQueryForPath } from '../../../src/core/query';

packages/firestore/exp/test/shim.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ import {
6969
where
7070
} from '../../exp/index';
7171
import { UntypedFirestoreDataConverter } from '../../src/api/user_data_reader';
72-
import { isPartialObserver, PartialObserver } from '../../src/api/observer';
72+
import {
73+
isPartialObserver,
74+
PartialObserver
75+
} from '../../src/core/event_manager';
7376
import { isPlainObject } from '../../src/util/input_validation';
7477

7578
export { GeoPoint, Blob, Timestamp } from '../index';

packages/firestore/src/api/observer.ts

Lines changed: 0 additions & 58 deletions
This file was deleted.

packages/firestore/src/core/event_manager.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { SyncEngine, SyncEngineListener } from './sync_engine';
2323
import { OnlineState } from './types';
2424
import { ChangeType, DocumentViewChange, ViewSnapshot } from './view_snapshot';
2525
import { wrapInUserErrorIfRecoverable } from '../util/async_queue';
26+
import { JsonObject } from '../model/object_value';
2627

2728
/**
2829
* Holds the listeners and the last received ViewSnapshot for a query being
@@ -41,6 +42,28 @@ export interface Observer<T> {
4142
error: EventHandler<Error>;
4243
}
4344

45+
/**
46+
* Observer/Subscribe interfaces.
47+
*/
48+
export type NextFn<T> = (value: T) => void;
49+
export type ErrorFn = (error: Error) => void;
50+
export type CompleteFn = () => void;
51+
52+
// Allow for any of the Observer methods to be undefined.
53+
export interface PartialObserver<T> {
54+
next?: NextFn<T>;
55+
error?: ErrorFn;
56+
complete?: CompleteFn;
57+
}
58+
59+
export interface Unsubscribe {
60+
(): void;
61+
}
62+
63+
export function isPartialObserver(obj: unknown): boolean {
64+
return implementsAnyMethods(obj, ['next', 'error', 'complete']);
65+
}
66+
4467
/**
4568
* EventManager is responsible for mapping queries to query event emitters.
4669
* It handles "fan-out". -- Identical queries will re-use the same watch on the
@@ -357,3 +380,21 @@ export class QueryListener {
357380
this.queryObserver.next(snap);
358381
}
359382
}
383+
384+
/**
385+
* Returns true if obj is an object and contains at least one of the specified
386+
* methods.
387+
*/
388+
function implementsAnyMethods(obj: unknown, methods: string[]): boolean {
389+
if (typeof obj !== 'object' || obj === null) {
390+
return false;
391+
}
392+
393+
const object = obj as JsonObject<unknown>;
394+
for (const method of methods) {
395+
if (method in object && typeof object[method] === 'function') {
396+
return true;
397+
}
398+
}
399+
return false;
400+
}

packages/firestore/src/core/firestore_client.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@ import { Deferred } from '../util/promise';
3030
import {
3131
EventManager,
3232
ListenOptions,
33-
Observer,
34-
QueryListener
33+
QueryListener,
34+
Unsubscribe
3535
} from './event_manager';
3636
import { SyncEngine } from './sync_engine';
3737
import { View } from './view';
38-
3938
import { SharedClientState } from '../local/shared_client_state';
4039
import { AutoId } from '../util/misc';
4140
import { DatabaseId, DatabaseInfo } from './database_info';
@@ -47,7 +46,6 @@ import {
4746
OfflineComponentProvider,
4847
OnlineComponentProvider
4948
} from './component_provider';
50-
import { Unsubscribe } from '../api/observer';
5149
import { AsyncObserver } from '../util/async_observer';
5250

5351
const LOG_TAG = 'FirestoreClient';

packages/firestore/src/util/async_observer.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { Observer } from '../core/event_manager';
18+
import { Observer, PartialObserver } from '../core/event_manager';
1919
import { EventHandler } from './misc';
20-
import { PartialObserver } from '../api/observer';
2120

2221
/*
2322
* A wrapper implementation of Observer<T> that will dispatch events

0 commit comments

Comments
 (0)