19
19
* Firebase console uses firestore in its special way.
20
20
* This file creates a build target for it.
21
21
*/
22
+ const tmp = require ( 'tmp' ) ;
22
23
const rollup = require ( 'rollup' ) ;
23
- const typescriptPlugin = require ( 'rollup-plugin-typescript2' ) ;
24
- const typescript = require ( 'typescript' ) ;
25
- const json = require ( 'rollup-plugin-json' ) ;
26
- const alias = require ( '@rollup/plugin-alias' ) ;
27
- const resolve = require ( 'rollup-plugin-node-resolve' ) ;
28
- const { uglify } = require ( 'rollup-plugin-uglify' ) ;
29
24
const fs = require ( 'fs' ) ;
30
25
const util = require ( 'util' ) ;
31
26
const fs_writeFile = util . promisify ( fs . writeFile ) ;
32
27
33
28
const rollupUtil = require ( '../rollup.shared' ) ;
34
29
35
- const plugins = [
36
- alias ( rollupUtil . generateAliasConfig ( 'browser' ) ) ,
37
- resolve ( ) ,
38
- typescriptPlugin ( {
39
- typescript
40
- } ) ,
41
- json ( ) ,
42
- uglify ( {
43
- output : {
44
- ascii_only : true // escape unicode chars
45
- }
46
- } )
47
- ] ;
48
-
49
30
const EXPORTNAME = '__firestore_exports__' ;
50
31
51
- const inputOptions = {
32
+ const tmpFile = tmp . fileSync ( ) . name ;
33
+
34
+ const es2017InputOptions = {
52
35
input : 'index.console.ts' ,
53
- plugins
36
+ plugins : rollupUtil . es2017Plugins ( 'browser' , /* mangled= */ false ) ,
37
+ external : rollupUtil . resolveBrowserExterns ,
38
+ treeshake : {
39
+ moduleSideEffects : false
40
+ }
41
+ } ;
42
+
43
+ const es2017OutputOptions = {
44
+ file : tmpFile ,
45
+ format : 'es'
54
46
} ;
55
- const outputOptions = {
47
+
48
+ const es2017toEs5InputOptions = {
49
+ input : tmpFile ,
50
+ plugins : rollupUtil . es2017ToEs5Plugins ( /* mangled= */ true ) ,
51
+ external : rollupUtil . resolveBrowserExterns ,
52
+ treeshake : {
53
+ moduleSideEffects : false
54
+ }
55
+ } ;
56
+
57
+ const es2017toEs5OutputOptions = {
56
58
file : 'dist/standalone.js' ,
57
59
name : EXPORTNAME ,
58
60
format : 'iife'
@@ -65,17 +67,18 @@ exports = eval(`;
65
67
const POSTFIX = ` + '${ EXPORTNAME } ;');` ;
66
68
67
69
async function build ( ) {
68
- // create a bundle
69
- const bundle = await rollup . rollup ( inputOptions ) ;
70
+ // create an ES2017 bundle
71
+ const es2017Bundle = await rollup . rollup ( es2017InputOptions ) ;
72
+ await es2017Bundle . write ( es2017OutputOptions ) ;
73
+ console . log ( tmpFile ) ;
70
74
71
- // generate code
75
+ const es5Bundle = await rollup . rollup ( es2017toEs5InputOptions ) ;
72
76
const {
73
77
output : [ { code } ]
74
- } = await bundle . generate ( outputOptions ) ;
78
+ } = await es5Bundle . generate ( es2017toEs5OutputOptions ) ;
75
79
76
80
const output = `${ PREFIX } ${ JSON . stringify ( String ( code ) ) } ${ POSTFIX } ` ;
77
-
78
- await fs_writeFile ( outputOptions . file , output , 'utf-8' ) ;
81
+ await fs_writeFile ( es2017toEs5OutputOptions . file , output , 'utf-8' ) ;
79
82
}
80
83
81
84
build ( ) ;
0 commit comments