Skip to content

Commit b450295

Browse files
Master
2 parents 998152d + 3ad31c8 commit b450295

File tree

14 files changed

+66
-265
lines changed

14 files changed

+66
-265
lines changed

packages/database/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
# Unreleased
2+
- [changed] Internal cleanup to Node.JS support.
3+
4+
# 6.4.0
25
- [fixed] Fixed an issue that caused `.info/serverTimeOffset` events not to fire (#2043).
36
- [changed] Treat `ns` url query parameter as the default Realtime Database
47
namespace name.

packages/database/index.node.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@ import { enableLogging } from './src/core/util/util';
2525
import { RepoManager } from './src/core/RepoManager';
2626
import * as INTERNAL from './src/api/internal';
2727
import * as TEST_ACCESS from './src/api/test_access';
28-
import './src/nodePatches';
2928
import * as types from '@firebase/database-types';
3029
import { setSDKVersion } from './src/core/version';
3130
import { CONSTANTS, isNodeSdk } from '@firebase/util';
31+
import { setWebSocketImpl } from './src/realtime/WebSocketConnection';
32+
import { Client } from 'faye-websocket';
33+
34+
setWebSocketImpl(Client);
3235

3336
const ServerValue = Database.ServerValue;
3437

packages/database/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"test": "yarn test:emulator",
1717
"test:all": "run-p test:browser test:node",
1818
"test:browser": "karma start --single-run",
19-
"test:node": "TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file src/nodePatches.ts --opts ../../config/mocha.node.opts",
19+
"test:node": "TS_NODE_CACHE=NO TS_NODE_COMPILER_OPTIONS='{\"module\":\"commonjs\"}' nyc --reporter lcovonly -- mocha 'test/{,!(browser)/**/}*.test.ts' --file index.node.ts --opts ../../config/mocha.node.opts",
2020
"test:emulator": "ts-node --compiler-options='{\"module\":\"commonjs\"}' ../../scripts/emulator-testing/database-test-runner.ts",
2121
"prepare": "yarn build"
2222
},

packages/database/src/nodePatches.ts

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

packages/database/src/realtime/BrowserPollConnection.ts

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,6 @@ export class BrowserPollConnection implements Transport {
209209
urlParams[LAST_SESSION_PARAM] = this.lastSessionId;
210210
}
211211
if (
212-
!isNodeSdk() &&
213212
typeof location !== 'undefined' &&
214213
location.href &&
215214
location.href.indexOf(FORGE_DOMAIN) !== -1
@@ -252,17 +251,21 @@ export class BrowserPollConnection implements Transport {
252251

253252
// Static method, use string literal so it can be accessed in a generic way
254253
static isAvailable() {
255-
// NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in
256-
// the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).
257-
return (
258-
BrowserPollConnection.forceAllow_ ||
259-
(!BrowserPollConnection.forceDisallow_ &&
254+
if (isNodeSdk()) {
255+
return false;
256+
} else if (BrowserPollConnection.forceAllow_) {
257+
return true;
258+
} else {
259+
// NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in
260+
// the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).
261+
return (
262+
!BrowserPollConnection.forceDisallow_ &&
260263
typeof document !== 'undefined' &&
261264
document.createElement != null &&
262265
!isChromeExtensionContentScript() &&
263-
!isWindowsStoreApp() &&
264-
!isNodeSdk())
265-
);
266+
!isWindowsStoreApp()
267+
);
268+
}
266269
}
267270

268271
/**
@@ -542,15 +545,6 @@ export class FirebaseIFrameScriptHolder {
542545
}, Math.floor(0));
543546
}
544547

545-
if (isNodeSdk() && this.myID) {
546-
const urlParams: { [k: string]: string } = {};
547-
urlParams[FIREBASE_LONGPOLL_DISCONN_FRAME_PARAM] = 't';
548-
urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;
549-
urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;
550-
const theURL = this.urlFn(urlParams);
551-
(FirebaseIFrameScriptHolder as any).nodeRestRequest(theURL);
552-
}
553-
554548
// Protect from being called recursively.
555549
const onDisconnect = this.onDisconnect;
556550
if (onDisconnect) {

packages/firestore/src/local/indexeddb_persistence.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1271,9 +1271,7 @@ export class IndexedDbLruDelegate implements ReferenceDelegate, LruDelegate {
12711271
txn: PersistenceTransaction,
12721272
queryData: QueryData
12731273
): PersistencePromise<void> {
1274-
const updated = queryData.copy({
1275-
sequenceNumber: txn.currentSequenceNumber
1276-
});
1274+
const updated = queryData.withSequenceNumber(txn.currentSequenceNumber);
12771275
return this.db.getQueryCache().updateQueryData(txn, updated);
12781276
}
12791277

packages/firestore/src/local/local_store.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -481,10 +481,10 @@ export class LocalStore {
481481
const resumeToken = change.resumeToken;
482482
// Update the resume token if the change includes one.
483483
if (resumeToken.length > 0) {
484-
const newQueryData = oldQueryData.copy({
484+
const newQueryData = oldQueryData.withResumeToken(
485485
resumeToken,
486-
snapshotVersion: remoteVersion
487-
});
486+
remoteVersion
487+
);
488488
this.queryDataByTarget[targetId] = newQueryData;
489489

490490
// Update the query data if there are target changes (or if

packages/firestore/src/local/memory_persistence.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,9 +435,7 @@ export class MemoryLruDelegate implements ReferenceDelegate, LruDelegate {
435435
txn: PersistenceTransaction,
436436
queryData: QueryData
437437
): PersistencePromise<void> {
438-
const updated = queryData.copy({
439-
sequenceNumber: txn.currentSequenceNumber
440-
});
438+
const updated = queryData.withSequenceNumber(txn.currentSequenceNumber);
441439
return this.persistence.getQueryCache().updateQueryData(txn, updated);
442440
}
443441

packages/firestore/src/local/query_data.ts

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,28 +61,33 @@ export class QueryData {
6161
readonly resumeToken: ProtoByteString = emptyByteString()
6262
) {}
6363

64+
/** Creates a new query data instance with an updated sequence number. */
65+
withSequenceNumber(sequenceNumber: number): QueryData {
66+
return new QueryData(
67+
this.query,
68+
this.targetId,
69+
this.purpose,
70+
sequenceNumber,
71+
this.snapshotVersion,
72+
this.resumeToken
73+
);
74+
}
75+
6476
/**
65-
* Creates a new query data instance with an updated snapshot version and
66-
* resume token.
77+
* Creates a new query data instance with an updated resume token and
78+
* snapshot version.
6779
*/
68-
copy(overwrite: {
69-
resumeToken?: ProtoByteString;
70-
snapshotVersion?: SnapshotVersion;
71-
sequenceNumber?: ListenSequenceNumber;
72-
}): QueryData {
80+
withResumeToken(
81+
resumeToken: ProtoByteString,
82+
snapshotVersion: SnapshotVersion
83+
): QueryData {
7384
return new QueryData(
7485
this.query,
7586
this.targetId,
7687
this.purpose,
77-
overwrite.sequenceNumber === undefined
78-
? this.sequenceNumber
79-
: overwrite.sequenceNumber,
80-
overwrite.snapshotVersion === undefined
81-
? this.snapshotVersion
82-
: overwrite.snapshotVersion,
83-
overwrite.resumeToken === undefined
84-
? this.resumeToken
85-
: overwrite.resumeToken
88+
this.sequenceNumber,
89+
snapshotVersion,
90+
resumeToken
8691
);
8792
}
8893

0 commit comments

Comments
 (0)