Skip to content

Commit a7dc96f

Browse files
Replace Platform injection with source preprocessor
1 parent 731a695 commit a7dc96f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+599
-487
lines changed

config/webpack.test.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
22
* @license
3-
* Copyright 2017 Google Inc.
3+
* Copyright 2017 Google LLC
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
66
* you may not use this file except in compliance with the License.
@@ -52,6 +52,28 @@ module.exports = {
5252
enforce: 'post',
5353
exclude: [/\.test\.ts$/, /\btest(ing)?\//]
5454
},
55+
{
56+
test: /packages\/firestore\/.*\.tsx?$/,
57+
use: {
58+
loader: 'string-replace-loader',
59+
options: {
60+
multiple: [
61+
{
62+
search: '/platform/platform',
63+
replace: '/platform_browser/browser_platform'
64+
},
65+
{
66+
search: '/platform/format_json',
67+
replace: '/platform_browser/browser_format_json'
68+
},
69+
{
70+
search: '/platform/random_bytes',
71+
replace: '/platform_browser/browser_random_bytes'
72+
}
73+
]
74+
}
75+
}
76+
},
5577
{
5678
test: /\.js$/,
5779
include: [/node_modules\/chai-as-promised/],

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
"sinon": "9.0.2",
130130
"sinon-chai": "3.5.0",
131131
"source-map-loader": "0.2.4",
132+
"string-replace-loader": "2.3.0",
132133
"terser": "4.6.13",
133134
"ts-loader": "6.2.2",
134135
"ts-node": "8.10.1",

packages/firestore/index.console.ts

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

18-
import './src/platform_browser/browser_init';
18+
// TODO(mrschmidt): Once imported into Google3, fix
19+
// third_party/javascript/firebase/src/packages/firestore/tools/console.build.js
1920

2021
export { Firestore, FirestoreDatabase } from './src/api/database';
2122
export {

packages/firestore/index.memory.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import { MemoryComponentProvider } from './src/core/component_provider';
2323
import { configureForFirebase } from './src/platform/config';
2424

2525
import './register-module';
26-
import './src/platform_browser/browser_init';
2726

2827
import { name, version } from './package.json';
2928

packages/firestore/index.node.memory.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import { Firestore } from './src/api/database';
2222
import { MemoryComponentProvider } from './src/core/component_provider';
2323
import { configureForFirebase } from './src/platform/config';
2424
import './register-module';
25-
import './src/platform_node/node_init';
2625

2726
import { name, version } from './package.json';
2827

packages/firestore/index.node.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import { IndexedDbComponentProvider } from './src/core/component_provider';
2222
import { configureForFirebase } from './src/platform/config';
2323

2424
import './register-module';
25-
import './src/platform_node/node_init';
2625

2726
import { name, version } from './package.json';
2827

packages/firestore/index.rn.memory.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import { MemoryComponentProvider } from './src/core/component_provider';
2323
import { configureForFirebase } from './src/platform/config';
2424

2525
import './register-module';
26-
import './src/platform_rn/rn_init';
2726

2827
import { name, version } from './package.json';
2928

packages/firestore/index.rn.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ import { IndexedDbComponentProvider } from './src/core/component_provider';
2222
import { configureForFirebase } from './src/platform/config';
2323

2424
import './register-module';
25-
import './src/platform_rn/rn_init';
26-
2725
import { name, version } from './package.json';
2826

2927
/**

packages/firestore/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import { configureForFirebase } from './src/platform/config';
2424
import { name, version } from './package.json';
2525

2626
import './register-module';
27-
import './src/platform_browser/browser_init';
2827

2928
/**
3029
* Registers the main Firestore build with the components framework.

packages/firestore/lite/index.node.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import { Firestore } from './src/api/database';
2020
import { version } from '../package.json';
2121
import { Component, ComponentType } from '@firebase/component';
2222

23-
import '../src/platform_node/node_init';
24-
2523
export {
2624
Firestore,
2725
initializeFirestore,

packages/firestore/lite/src/api/database.ts

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
newDatastore,
3434
terminateDatastore
3535
} from '../../../src/remote/datastore';
36-
import { PlatformSupport } from '../../../src/platform/platform';
36+
import { loadConnection, newSerializer } from '../../../src/platform/platform';
3737
import { Deferred } from '../../../src/util/promise';
3838
import { cast } from './util';
3939

@@ -83,19 +83,11 @@ export class Firestore implements firestore.FirebaseFirestore {
8383

8484
// Kick off initializing the datastore but don't actually wait for it.
8585
// eslint-disable-next-line @typescript-eslint/no-floating-promises
86-
PlatformSupport.getPlatform()
87-
.loadConnection(databaseInfo)
88-
.then(connection => {
89-
const serializer = PlatformSupport.getPlatform().newSerializer(
90-
databaseInfo.databaseId
91-
);
92-
const datastore = newDatastore(
93-
connection,
94-
this._credentials,
95-
serializer
96-
);
97-
this._datastoreDeferred.resolve(datastore);
98-
});
86+
loadConnection(databaseInfo).then(connection => {
87+
const serializer = newSerializer(databaseInfo.databaseId);
88+
const datastore = newDatastore(connection, this._credentials, serializer);
89+
this._datastoreDeferred.resolve(datastore);
90+
});
9991
}
10092

10193
_ensureClientConfigured(): Promise<Datastore> {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import {
3535
} from '../../../src/remote/datastore';
3636
import { hardAssert } from '../../../src/util/assert';
3737
import { DeleteMutation, Precondition } from '../../../src/model/mutation';
38-
import { PlatformSupport } from '../../../src/platform/platform';
38+
import { newSerializer } from '../../../src/platform/platform';
3939
import { applyFirestoreDataConverter } from '../../../src/api/database';
4040
import { DatabaseId } from '../../../src/core/database_info';
4141
import { FieldPath } from './field_path';
@@ -422,7 +422,7 @@ export function newUserDataReader(
422422
databaseId: DatabaseId,
423423
settings: firestore.Settings
424424
): UserDataReader {
425-
const serializer = PlatformSupport.getPlatform().newSerializer(databaseId);
425+
const serializer = newSerializer(databaseId);
426426
return new UserDataReader(
427427
databaseId,
428428
!!settings.ignoreUndefinedProperties,

packages/firestore/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"devDependencies": {
6969
"@firebase/app-exp": "0.x",
7070
"@firebase/app-types-exp": "0.x",
71+
"@rollup/plugin-alias": "3.1.1",
7172
"@types/json-stable-stringify": "1.0.32",
7273
"json-stable-stringify": "1.0.1",
7374
"protobufjs": "6.9.0",

packages/firestore/rollup.config.es2017.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import * as path from 'path';
1919

2020
import json from 'rollup-plugin-json';
21+
import alias from '@rollup/plugin-alias';
2122
import typescriptPlugin from 'rollup-plugin-typescript2';
2223
import replace from 'rollup-plugin-replace';
2324
import copy from 'rollup-plugin-copy-assets';
@@ -31,7 +32,8 @@ import {
3132
firestoreTransformers,
3233
manglePrivatePropertiesOptions,
3334
resolveNodeExterns,
34-
resolveBrowserExterns
35+
resolveBrowserExterns,
36+
generateAliasConfig
3537
} from './rollup.shared';
3638

3739
// Firestore is released in a number of different build configurations:
@@ -61,6 +63,7 @@ import {
6163
// MARK: Browser builds
6264

6365
const browserBuildPlugins = [
66+
alias(generateAliasConfig('browser')),
6467
typescriptPlugin({
6568
typescript,
6669
tsconfigOverride: {
@@ -100,6 +103,11 @@ const browserBuilds = [
100103
}
101104
];
102105

106+
const reactNativeBuildPlugins = [
107+
alias(generateAliasConfig('rn')),
108+
...browserBuildPlugins.slice(1)
109+
];
110+
103111
const reactNativeBuilds = [
104112
// Persistence build
105113
{
@@ -109,7 +117,7 @@ const reactNativeBuilds = [
109117
format: 'es',
110118
sourcemap: true
111119
},
112-
plugins: browserBuildPlugins,
120+
plugins: reactNativeBuildPlugins,
113121
external: resolveBrowserExterns
114122
},
115123
// Memory-only build
@@ -120,14 +128,15 @@ const reactNativeBuilds = [
120128
format: 'es',
121129
sourcemap: true
122130
},
123-
plugins: browserBuildPlugins,
131+
plugins: reactNativeBuildPlugins,
124132
external: resolveBrowserExterns
125133
}
126134
];
127135

128136
// MARK: Node builds
129137

130138
const nodeBuildPlugins = [
139+
alias(generateAliasConfig('node')),
131140
typescriptPlugin({
132141
typescript,
133142
tsconfigOverride: {

packages/firestore/rollup.config.lite.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@
1616
*/
1717

1818
import json from 'rollup-plugin-json';
19+
import alias from '@rollup/plugin-alias';
1920
import typescriptPlugin from 'rollup-plugin-typescript2';
2021
import typescript from 'typescript';
2122

22-
import { resolveNodeExterns } from './rollup.shared';
23+
import { resolveNodeExterns, generateAliasConfig } from './rollup.shared';
2324

2425
import pkg from './lite/package.json';
2526
import path from 'path';
2627

2728
const defaultPlugins = [
29+
alias(generateAliasConfig('node')),
2830
typescriptPlugin({
2931
typescript,
3032
tsconfigOverride: {

packages/firestore/rollup.shared.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,30 @@ import { removeAsserts } from './scripts/remove-asserts';
2424

2525
import pkg from './package.json';
2626

27+
/**
28+
* Returns an replacement configuration for `@rollup/plugin-alias` that replaces
29+
* references to platform-specific files with implementations for the provided
30+
* target platform.
31+
*/
32+
export function generateAliasConfig(platform) {
33+
return {
34+
entries: [
35+
{
36+
find: /(.*)\/platform\/platform(.*)/,
37+
replacement: `$1/platform_${platform}/${platform}_platform$2`
38+
},
39+
{
40+
find: /(.*)\/platform\/random_bytes(.*)/,
41+
replacement: `$1/platform_${platform}/${platform}_random_bytes$2`
42+
},
43+
{
44+
find: /(.*)\/platform\/format_json(.*)/,
45+
replacement: `$1/platform_${platform}/${platform}_format_json$2`
46+
}
47+
]
48+
};
49+
}
50+
2751
const browserDeps = Object.keys(
2852
Object.assign({}, pkg.peerDependencies, pkg.dependencies)
2953
);

packages/firestore/src/api/blob.ts

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

18-
import { PlatformSupport } from '../platform/platform';
18+
import { isBase64Available } from '../platform/platform';
1919
import { Code, FirestoreError } from '../util/error';
2020
import {
2121
invalidClassError,
@@ -36,7 +36,7 @@ function assertUint8ArrayAvailable(): void {
3636

3737
/** Helper function to assert Base64 functions are available at runtime. */
3838
function assertBase64Available(): void {
39-
if (!PlatformSupport.getPlatform().base64Available) {
39+
if (!isBase64Available()) {
4040
throw new FirestoreError(
4141
Code.UNIMPLEMENTED,
4242
'Blobs are unavailable in Firestore in this environment.'

packages/firestore/src/api/database.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import { DeleteMutation, Mutation, Precondition } from '../model/mutation';
4646
import { FieldPath, ResourcePath } from '../model/path';
4747
import { isServerTimestamp } from '../model/server_timestamps';
4848
import { refValue } from '../model/values';
49-
import { PlatformSupport } from '../platform/platform';
5049
import { debugAssert, fail } from '../util/assert';
5150
import { AsyncObserver } from '../util/async_observer';
5251
import { AsyncQueue } from '../util/async_queue';
@@ -529,7 +528,6 @@ export class Firestore implements firestore.FirebaseFirestore, FirebaseService {
529528
const databaseInfo = this.makeDatabaseInfo();
530529

531530
this._firestoreClient = new FirestoreClient(
532-
PlatformSupport.getPlatform(),
533531
databaseInfo,
534532
this._credentials,
535533
this._queue

packages/firestore/src/api/user_data_reader.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import { Blob } from './blob';
4242
import { BaseFieldPath, fromDotSeparatedString } from './field_path';
4343
import { DeleteFieldValueImpl, SerializableFieldValue } from './field_value';
4444
import { GeoPoint } from './geo_point';
45-
import { PlatformSupport } from '../platform/platform';
45+
import { newSerializer } from '../platform/platform';
4646

4747
const RESERVED_FIELD_REGEX = /^__.*__$/;
4848

@@ -302,8 +302,7 @@ export class UserDataReader {
302302
private readonly ignoreUndefinedProperties: boolean,
303303
serializer?: JsonProtoSerializer
304304
) {
305-
this.serializer =
306-
serializer || PlatformSupport.getPlatform().newSerializer(databaseId);
305+
this.serializer = serializer || newSerializer(databaseId);
307306
}
308307

309308
/** Parse document data from a set() call. */

0 commit comments

Comments
 (0)