From f948d13d2df85efa8d276396e1e60da235523a0e Mon Sep 17 00:00:00 2001 From: Lenz Weber-Tronic Date: Wed, 17 Apr 2024 13:11:26 +0200 Subject: [PATCH] fix: give `node` export condition higher priority (#2134) --- config/scripts/validate-esm.js | 13 +++++++++++-- package.json | 18 +++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/config/scripts/validate-esm.js b/config/scripts/validate-esm.js index cc473820b..a1da8c7ae 100644 --- a/config/scripts/validate-esm.js +++ b/config/scripts/validate-esm.js @@ -90,7 +90,7 @@ function validatePackageExports() { console.log('✅ Validated package.json exports') } -function validateExportConditions(pointer, conditions) { +function validateExportConditions(pointer, conditions, level = 0) { if (typeof conditions === 'string') { invariant( fs.existsSync(conditions), @@ -103,7 +103,7 @@ function validateExportConditions(pointer, conditions) { const keys = Object.keys(conditions) - if (conditions[keys[0]] !== null) { + if (level == 0 && conditions[keys[0]] !== null) { invariant(keys[0] === 'types', 'FS') } @@ -115,6 +115,15 @@ function validateExportConditions(pointer, conditions) { return } + if (typeof relativeExportPath === 'object') { + validateExportConditions( + `${pointer}.${key}`, + relativeExportPath, + level + 1, + ) + return + } + const exportPath = fromRoot(relativeExportPath) invariant( fs.existsSync(exportPath), diff --git a/package.json b/package.json index 2b2c7ca41..66849b212 100644 --- a/package.json +++ b/package.json @@ -14,22 +14,34 @@ "default": "./lib/core/index.js" }, "./browser": { - "node": null, "types": "./lib/browser/index.d.ts", + "browser": { + "require": "./lib/browser/index.js", + "import": "./lib/browser/index.mjs" + }, + "node": null, "require": "./lib/browser/index.js", "import": "./lib/browser/index.mjs", "default": "./lib/browser/index.js" }, "./node": { - "browser": null, "types": "./lib/node/index.d.ts", + "node": { + "require": "./lib/node/index.js", + "import": "./lib/node/index.mjs" + }, + "browser": null, "require": "./lib/node/index.js", "import": "./lib/node/index.mjs", "default": "./lib/node/index.mjs" }, "./native": { - "browser": null, "types": "./lib/native/index.d.ts", + "react-native": { + "require": "./lib/native/index.js", + "import": "./lib/native/index.mjs" + }, + "browser": null, "require": "./lib/native/index.js", "import": "./lib/native/index.mjs", "default": "./lib/native/index.js"