diff --git a/.changeset/big-cooks-drum.md b/.changeset/big-cooks-drum.md new file mode 100644 index 00000000000..40ec6a61fb3 --- /dev/null +++ b/.changeset/big-cooks-drum.md @@ -0,0 +1,5 @@ +--- +'@firebase/firestore': minor +--- + +Fix exports field to also point to Node ESM builds. This change requires Node.js version 10+. diff --git a/packages/firestore/lite/package.json b/packages/firestore/lite/package.json index 662f61080cc..dbef6c78d6c 100644 --- a/packages/firestore/lite/package.json +++ b/packages/firestore/lite/package.json @@ -2,7 +2,7 @@ "name": "@firebase/firestore-lite", "description": "A lite version of the Firestore SDK", "main": "../dist/lite/index.node.cjs.js", - "main-esm": "../dist/lite/index.node.esm2017.js", + "main-esm": "../dist/lite/index.node.mjs", "module": "../dist/lite/index.browser.esm2017.js", "browser": "../dist/lite/index.browser.esm2017.js", "react-native": "../dist/lite/index.rn.esm2017.js", diff --git a/packages/firestore/package.json b/packages/firestore/package.json index 6b8a37aae09..81b42119bd5 100644 --- a/packages/firestore/package.json +++ b/packages/firestore/package.json @@ -2,7 +2,7 @@ "name": "@firebase/firestore", "version": "3.1.0", "engines": { - "node": "^8.13.0 || >=10.10.0" + "node": ">=10.10.0" }, "description": "The Cloud Firestore component of the Firebase JS SDK.", "author": "Firebase (https://firebase.google.com/)", @@ -49,16 +49,22 @@ }, "exports": { ".": { - "node": "./dist/index.node.cjs.js", + "node": { + "require": "./dist/index.node.cjs.js", + "import": "./dist/index.node.mjs" + }, "default": "./dist/index.esm2017.js" }, "./lite": { - "node": "./dist/lite/index.node.cjs.js", + "node": { + "require": "./dist/lite/index.node.cjs.js", + "import": "./dist/lite/index.node.mjs" + }, "default": "./dist/lite/index.browser.esm2017.js" } }, "main": "dist/index.node.cjs.js", - "main-esm": "dist/index.node.cjs.esm2017.js", + "main-esm": "dist/index.node.mjs", "react-native": "dist/index.rn.js", "browser": "dist/index.esm2017.js", "module": "dist/index.esm2017.js", diff --git a/packages/firestore/src/platform/node/grpc_connection.ts b/packages/firestore/src/platform/node/grpc_connection.ts index c217ec16658..613d4e3f8cb 100644 --- a/packages/firestore/src/platform/node/grpc_connection.ts +++ b/packages/firestore/src/platform/node/grpc_connection.ts @@ -15,13 +15,16 @@ * limitations under the License. */ +// This is a hack fix for Node ES modules to use `require`. +// @ts-ignore To avoid using `allowSyntheticDefaultImports` flag. +import module from 'module'; + import { Metadata, GrpcObject, credentials as GrpcCredentials, ServiceError } from '@grpc/grpc-js'; -import { version as grpcVersion } from '@grpc/grpc-js/package.json'; import { Token } from '../../api/credentials'; import { DatabaseInfo } from '../../core/database_info'; @@ -35,6 +38,12 @@ import { logError, logDebug, logWarn } from '../../util/log'; import { NodeCallback, nodePromise } from '../../util/node_api'; import { Deferred } from '../../util/promise'; +// This is a hack fix for Node ES modules to use `require`. +// @ts-ignore To avoid using `--module es2020` flag. +const require = module.createRequire(import.meta.url); +// eslint-disable-next-line @typescript-eslint/no-require-imports +const { version: grpcVersion } = require('@grpc/grpc-js/package.json'); + const LOG_TAG = 'Connection'; const X_GOOG_API_CLIENT_VALUE = `gl-node/${process.versions.node} fire/${SDK_VERSION} grpc/${grpcVersion}`;