diff --git a/packages/firestore/index.console.ts b/packages/firestore/index.console.ts index 1f2f6dfc4b2..47bbc312111 100644 --- a/packages/firestore/index.console.ts +++ b/packages/firestore/index.console.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -export { Firestore, FirestoreDatabase } from './src/api/database'; +export { Firestore } from './src/api/database'; export { CollectionReference, DocumentReference, @@ -24,7 +24,6 @@ export { } from './src/api/database'; export { Blob } from './src/api/blob'; export { GeoPoint } from './src/api/geo_point'; -export { FirstPartyCredentialsSettings } from './src/api/credentials'; export { FieldPath } from './src/api/field_path'; export { FieldValue } from './src/api/field_value'; export { Timestamp } from './src/api/timestamp'; diff --git a/packages/firestore/rollup.shared.js b/packages/firestore/rollup.shared.js index 0beaede5cb4..e5a89cd311d 100644 --- a/packages/firestore/rollup.shared.js +++ b/packages/firestore/rollup.shared.js @@ -175,8 +175,10 @@ exports.es2017ToEs5Plugins = function (mangled = false) { return [ typescriptPlugin({ typescript, - compilerOptions: { - allowJs: true + tsconfigOverride: { + compilerOptions: { + allowJs: true + } }, include: ['dist/*.js', 'dist/exp/*.js'] }), @@ -193,8 +195,10 @@ exports.es2017ToEs5Plugins = function (mangled = false) { return [ typescriptPlugin({ typescript, - compilerOptions: { - allowJs: true + tsconfigOverride: { + compilerOptions: { + allowJs: true + } }, include: ['dist/*.js', 'dist/exp/*.js'] }), diff --git a/packages/firestore/src/api/credentials.ts b/packages/firestore/src/api/credentials.ts index 1fff6c7e128..dd3d1653c83 100644 --- a/packages/firestore/src/api/credentials.ts +++ b/packages/firestore/src/api/credentials.ts @@ -29,14 +29,16 @@ import { logDebug } from '../util/log'; // moved to an auth/ folder to match other platforms. export interface FirstPartyCredentialsSettings { - type: 'gapi'; - client: unknown; - sessionIndex: string; + // These are external types. Prevent minification. + ['type']: 'gapi'; + ['client']: unknown; + ['sessionIndex']: string; } export interface ProviderCredentialsSettings { - type: 'provider'; - client: CredentialsProvider; + // These are external types. Prevent minification. + ['type']: 'provider'; + ['client']: CredentialsProvider; } /** Settings for private credentials */ @@ -295,7 +297,8 @@ export class FirstPartyToken implements Token { const headers: { [header: string]: string } = { 'X-Goog-AuthUser': this.sessionIndex }; - const authHeader = this.gapi.auth.getAuthHeaderValueForFirstParty([]); + // Use array notation to prevent minification + const authHeader = this.gapi['auth']['getAuthHeaderValueForFirstParty']([]); if (authHeader) { headers['Authorization'] = authHeader; } @@ -336,9 +339,9 @@ export function makeCredentialsProvider( return new EmptyCredentialsProvider(); } - switch (credentials.type) { + switch (credentials['type']) { case 'gapi': - const client = credentials.client as Gapi; + const client = credentials['client'] as Gapi; // Make sure this really is a Gapi client. hardAssert( !!( @@ -351,11 +354,11 @@ export function makeCredentialsProvider( ); return new FirstPartyCredentialsProvider( client, - credentials.sessionIndex || '0' + credentials['sessionIndex'] || '0' ); case 'provider': - return credentials.client; + return credentials['client']; default: throw new FirestoreError( diff --git a/packages/firestore/tools/console.build.js b/packages/firestore/tools/console.build.js index 2589ba5829a..e7bc7102393 100644 --- a/packages/firestore/tools/console.build.js +++ b/packages/firestore/tools/console.build.js @@ -20,40 +20,51 @@ * This file creates a build target for it. */ const rollup = require('rollup'); -const typescriptPlugin = require('rollup-plugin-typescript2'); -const typescript = require('typescript'); -const json = require('rollup-plugin-json'); -const alias = require('@rollup/plugin-alias'); -const resolve = require('rollup-plugin-node-resolve'); const { uglify } = require('rollup-plugin-uglify'); +const resolve = require('rollup-plugin-node-resolve'); const fs = require('fs'); const util = require('util'); const fs_writeFile = util.promisify(fs.writeFile); const rollupUtil = require('../rollup.shared'); -const plugins = [ - alias(rollupUtil.generateAliasConfig('browser')), - resolve(), - typescriptPlugin({ - typescript - }), - json(), - uglify({ - output: { - ascii_only: true // escape unicode chars - } - }) -]; - const EXPORTNAME = '__firestore_exports__'; -const inputOptions = { +const esm2017OutputFile = 'dist/standalone.esm2017.js'; +const esm5OutputFile = 'dist/standalone.js'; + +const es2017InputOptions = { input: 'index.console.ts', - plugins + plugins: rollupUtil.es2017Plugins('browser', /* mangled= */ true), + external: rollupUtil.resolveBrowserExterns, + treeshake: { + moduleSideEffects: false + } +}; + +const es2017OutputOptions = { + file: esm2017OutputFile, + format: 'es' +}; + +const es2017toEs5InputOptions = { + input: esm2017OutputFile, + plugins: [ + resolve(), + ...rollupUtil.es2017ToEs5Plugins(/* mangled= */ true), + uglify({ + output: { + ascii_only: true // escape unicode chars + } + }) + ], + treeshake: { + moduleSideEffects: false + } }; -const outputOptions = { - file: 'dist/standalone.js', + +const es2017toEs5OutputOptions = { + file: esm5OutputFile, name: EXPORTNAME, format: 'iife' }; @@ -65,17 +76,18 @@ exports = eval(`; const POSTFIX = ` + '${EXPORTNAME};');`; async function build() { - // create a bundle - const bundle = await rollup.rollup(inputOptions); + // Create an ES2017 bundle + const es2017Bundle = await rollup.rollup(es2017InputOptions); + await es2017Bundle.write(es2017OutputOptions); - // generate code + // Transpile down to ES5 + const es5Bundle = await rollup.rollup(es2017toEs5InputOptions); const { output: [{ code }] - } = await bundle.generate(outputOptions); + } = await es5Bundle.generate(es2017toEs5OutputOptions); const output = `${PREFIX}${JSON.stringify(String(code))}${POSTFIX}`; - - await fs_writeFile(outputOptions.file, output, 'utf-8'); + await fs_writeFile(es2017toEs5OutputOptions.file, output, 'utf-8'); } build();