From e97c6c0d9d9b604facb24e634a5a0766e56ef8bc Mon Sep 17 00:00:00 2001 From: Feiyang1 Date: Tue, 16 Nov 2021 11:37:43 -0800 Subject: [PATCH 1/3] better meta url polyfill --- packages/firestore/rollup.config.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/firestore/rollup.config.js b/packages/firestore/rollup.config.js index 286b05ce293..773694959ac 100644 --- a/packages/firestore/rollup.config.js +++ b/packages/firestore/rollup.config.js @@ -29,6 +29,22 @@ import { generateBuildTargetReplaceConfig } from '../../scripts/build/rollup_rep const util = require('./rollup.shared'); +// Customize how import.meta.url is polyfilled in cjs nodejs build. We use it to be able to use require() in esm. +// It only generates the nodejs version of the polyfill, as opposed to the default polyfill which +// supports both browser and nodejs. The browser support is unnecessary and doesn't work well with Jest. See https://github.com/firebase/firebase-js-sdk/issues/5687 +function importMetaUrlPolyfillPlugin() { + return { + name: 'import-meta-url-current-module', + resolveImportMeta(property, { moduleId }) { + if (property === 'url') { + // copied from rollup output + return `new (require('u' + 'rl').URL)('file:' + __filename).href`; + } + return null; + } + }; +} + const nodePlugins = function () { return [ typescriptPlugin({ @@ -105,7 +121,8 @@ const allBuilds = [ }, plugins: [ ...util.es2017ToEs5Plugins(/* mangled= */ false), - replace(generateBuildTargetReplaceConfig('cjs', 2017)) + replace(generateBuildTargetReplaceConfig('cjs', 2017)), + importMetaUrlPolyfillPlugin() ], external: util.resolveNodeExterns, treeshake: { From 3f91c357d5993feda951abe5e514f91d5ac07d8c Mon Sep 17 00:00:00 2001 From: Feiyang Date: Tue, 16 Nov 2021 22:10:55 -0800 Subject: [PATCH 2/3] Create quick-experts-shave.md --- .changeset/quick-experts-shave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/quick-experts-shave.md diff --git a/.changeset/quick-experts-shave.md b/.changeset/quick-experts-shave.md new file mode 100644 index 00000000000..c77153ccf9e --- /dev/null +++ b/.changeset/quick-experts-shave.md @@ -0,0 +1,5 @@ +--- +"@firebase/firestore": patch +--- + +better meta url polyfill From 48ffb4edb97e5a70cfc5d303a2ba71720da8a068 Mon Sep 17 00:00:00 2001 From: Feiyang1 Date: Wed, 17 Nov 2021 09:31:35 -0800 Subject: [PATCH 3/3] update --- packages/firestore/rollup.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firestore/rollup.config.js b/packages/firestore/rollup.config.js index 773694959ac..7deee0e78d1 100644 --- a/packages/firestore/rollup.config.js +++ b/packages/firestore/rollup.config.js @@ -38,7 +38,7 @@ function importMetaUrlPolyfillPlugin() { resolveImportMeta(property, { moduleId }) { if (property === 'url') { // copied from rollup output - return `new (require('u' + 'rl').URL)('file:' + __filename).href`; + return `new (require('url').URL)('file:' + __filename).href`; } return null; }