From b8174ceef94eeb6ed45f76048092ff4e8a3e1ddb Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 21 Jun 2024 14:26:22 -0700
Subject: [PATCH 01/13] fix: Handle the scenario where a package.json#browser
 field could be set to {'./some-path': false}

---
 src/resolve-dependency.ts                         | 15 ++++++++++++++-
 .../unit/browser-remappings-false copy/.gitignore |  2 ++
 test/unit/browser-remappings-false copy/input.js  |  2 ++
 .../node_modules/pkg/browser.js                   |  1 +
 .../node_modules/pkg/index.js                     |  2 ++
 .../node_modules/pkg/package.json                 |  7 +++++++
 test/unit/browser-remappings-false copy/output.js |  7 +++++++
 .../browser-remappings-false copy/test-opts.json  |  3 +++
 test/unit/browser-remappings-false/.gitignore     |  2 ++
 test/unit/browser-remappings-false/input.js       |  2 ++
 .../node_modules/pkg/browser.js                   |  1 +
 .../node_modules/pkg/index.js                     |  2 ++
 .../node_modules/pkg/package.json                 |  7 +++++++
 test/unit/browser-remappings-false/output.js      |  7 +++++++
 test/unit/browser-remappings-false/test-opts.json |  3 +++
 15 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 test/unit/browser-remappings-false copy/.gitignore
 create mode 100644 test/unit/browser-remappings-false copy/input.js
 create mode 100644 test/unit/browser-remappings-false copy/node_modules/pkg/browser.js
 create mode 100644 test/unit/browser-remappings-false copy/node_modules/pkg/index.js
 create mode 100644 test/unit/browser-remappings-false copy/node_modules/pkg/package.json
 create mode 100644 test/unit/browser-remappings-false copy/output.js
 create mode 100644 test/unit/browser-remappings-false copy/test-opts.json
 create mode 100644 test/unit/browser-remappings-false/.gitignore
 create mode 100644 test/unit/browser-remappings-false/input.js
 create mode 100644 test/unit/browser-remappings-false/node_modules/pkg/browser.js
 create mode 100644 test/unit/browser-remappings-false/node_modules/pkg/index.js
 create mode 100644 test/unit/browser-remappings-false/node_modules/pkg/package.json
 create mode 100644 test/unit/browser-remappings-false/output.js
 create mode 100644 test/unit/browser-remappings-false/test-opts.json

diff --git a/src/resolve-dependency.ts b/src/resolve-dependency.ts
index 826e86c7..179f5432 100644
--- a/src/resolve-dependency.ts
+++ b/src/resolve-dependency.ts
@@ -128,7 +128,7 @@ interface PkgCfg {
   main: string | undefined;
   exports: PackageTarget;
   imports: { [key: string]: PackageTarget };
-  browser?: string | { [key: string]: string };
+  browser?: unknown;
 }
 
 async function getPkgCfg(
@@ -259,8 +259,21 @@ async function resolveRemappings(
 ): Promise<void> {
   if (job.conditions?.includes('browser')) {
     const { browser: pkgBrowser } = pkgCfg;
+    if (!pkgBrowser) {
+      return;
+    }
+    if (typeof pkgBrowser === 'string') {
+      return;
+    }
     if (typeof pkgBrowser === 'object') {
       for (const [key, value] of Object.entries(pkgBrowser)) {
+        if (typeof value !== 'string') {
+          /**
+           * `false` can be used to specify that a file is not meant to be included.
+           * Downstream processing is expected to handle this case, and it should remain in the mapping result
+           */
+          continue;
+        }
         if (!key.startsWith('./') || !value.startsWith('./')) {
           continue;
         }
diff --git a/test/unit/browser-remappings-false copy/.gitignore b/test/unit/browser-remappings-false copy/.gitignore
new file mode 100644
index 00000000..a9412d2d
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/.gitignore	
@@ -0,0 +1,2 @@
+# include node_modules for testing
+!node_modules 
diff --git a/test/unit/browser-remappings-false copy/input.js b/test/unit/browser-remappings-false copy/input.js
new file mode 100644
index 00000000..76b86cf7
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/input.js	
@@ -0,0 +1,2 @@
+require('pkg');
+
diff --git a/test/unit/browser-remappings-false copy/node_modules/pkg/browser.js b/test/unit/browser-remappings-false copy/node_modules/pkg/browser.js
new file mode 100644
index 00000000..a5ceac31
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/node_modules/pkg/browser.js	
@@ -0,0 +1 @@
+module.exports = 'browser code';
diff --git a/test/unit/browser-remappings-false copy/node_modules/pkg/index.js b/test/unit/browser-remappings-false copy/node_modules/pkg/index.js
new file mode 100644
index 00000000..da058b11
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/node_modules/pkg/index.js	
@@ -0,0 +1,2 @@
+module.exports = 'legacy index';
+require("./browser")
diff --git a/test/unit/browser-remappings-false copy/node_modules/pkg/package.json b/test/unit/browser-remappings-false copy/node_modules/pkg/package.json
new file mode 100644
index 00000000..33d8de58
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/node_modules/pkg/package.json	
@@ -0,0 +1,7 @@
+{
+  "name": "pkg",
+  "main": "index.js",
+  "browser": {
+    "./browser.js": false
+  }
+}
diff --git a/test/unit/browser-remappings-false copy/output.js b/test/unit/browser-remappings-false copy/output.js
new file mode 100644
index 00000000..bc5f3405
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/output.js	
@@ -0,0 +1,7 @@
+[
+  "package.json",
+  "test/unit/browser-remappings-false/input.js",
+  "test/unit/browser-remappings-false/node_modules/pkg/browser.js",
+  "test/unit/browser-remappings-false/node_modules/pkg/index.js",
+  "test/unit/browser-remappings-false/node_modules/pkg/package.json"
+]
diff --git a/test/unit/browser-remappings-false copy/test-opts.json b/test/unit/browser-remappings-false copy/test-opts.json
new file mode 100644
index 00000000..9e01628e
--- /dev/null
+++ b/test/unit/browser-remappings-false copy/test-opts.json	
@@ -0,0 +1,3 @@
+{
+  "conditions": ["browser"]
+}
diff --git a/test/unit/browser-remappings-false/.gitignore b/test/unit/browser-remappings-false/.gitignore
new file mode 100644
index 00000000..a9412d2d
--- /dev/null
+++ b/test/unit/browser-remappings-false/.gitignore
@@ -0,0 +1,2 @@
+# include node_modules for testing
+!node_modules 
diff --git a/test/unit/browser-remappings-false/input.js b/test/unit/browser-remappings-false/input.js
new file mode 100644
index 00000000..76b86cf7
--- /dev/null
+++ b/test/unit/browser-remappings-false/input.js
@@ -0,0 +1,2 @@
+require('pkg');
+
diff --git a/test/unit/browser-remappings-false/node_modules/pkg/browser.js b/test/unit/browser-remappings-false/node_modules/pkg/browser.js
new file mode 100644
index 00000000..a5ceac31
--- /dev/null
+++ b/test/unit/browser-remappings-false/node_modules/pkg/browser.js
@@ -0,0 +1 @@
+module.exports = 'browser code';
diff --git a/test/unit/browser-remappings-false/node_modules/pkg/index.js b/test/unit/browser-remappings-false/node_modules/pkg/index.js
new file mode 100644
index 00000000..da058b11
--- /dev/null
+++ b/test/unit/browser-remappings-false/node_modules/pkg/index.js
@@ -0,0 +1,2 @@
+module.exports = 'legacy index';
+require("./browser")
diff --git a/test/unit/browser-remappings-false/node_modules/pkg/package.json b/test/unit/browser-remappings-false/node_modules/pkg/package.json
new file mode 100644
index 00000000..33d8de58
--- /dev/null
+++ b/test/unit/browser-remappings-false/node_modules/pkg/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "pkg",
+  "main": "index.js",
+  "browser": {
+    "./browser.js": false
+  }
+}
diff --git a/test/unit/browser-remappings-false/output.js b/test/unit/browser-remappings-false/output.js
new file mode 100644
index 00000000..bc5f3405
--- /dev/null
+++ b/test/unit/browser-remappings-false/output.js
@@ -0,0 +1,7 @@
+[
+  "package.json",
+  "test/unit/browser-remappings-false/input.js",
+  "test/unit/browser-remappings-false/node_modules/pkg/browser.js",
+  "test/unit/browser-remappings-false/node_modules/pkg/index.js",
+  "test/unit/browser-remappings-false/node_modules/pkg/package.json"
+]
diff --git a/test/unit/browser-remappings-false/test-opts.json b/test/unit/browser-remappings-false/test-opts.json
new file mode 100644
index 00000000..9e01628e
--- /dev/null
+++ b/test/unit/browser-remappings-false/test-opts.json
@@ -0,0 +1,3 @@
+{
+  "conditions": ["browser"]
+}

From a68c80ae6423315225b7f524a11e9d751262418a Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 21 Jun 2024 14:36:58 -0700
Subject: [PATCH 02/13] Update src/resolve-dependency.ts

Co-authored-by: Steven <steven@ceriously.com>
---
 src/resolve-dependency.ts | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/resolve-dependency.ts b/src/resolve-dependency.ts
index 179f5432..3695f5a0 100644
--- a/src/resolve-dependency.ts
+++ b/src/resolve-dependency.ts
@@ -262,9 +262,6 @@ async function resolveRemappings(
     if (!pkgBrowser) {
       return;
     }
-    if (typeof pkgBrowser === 'string') {
-      return;
-    }
     if (typeof pkgBrowser === 'object') {
       for (const [key, value] of Object.entries(pkgBrowser)) {
         if (typeof value !== 'string') {

From 30fcf6048da88f22056dfb43288f776f4da202df Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 21 Jun 2024 15:05:50 -0700
Subject: [PATCH 03/13] Remove extra test fixture

---
 test/unit/browser-remappings-false copy/.gitignore         | 2 --
 test/unit/browser-remappings-false copy/input.js           | 2 --
 .../node_modules/pkg/browser.js                            | 1 -
 .../node_modules/pkg/index.js                              | 2 --
 .../node_modules/pkg/package.json                          | 7 -------
 test/unit/browser-remappings-false copy/output.js          | 7 -------
 test/unit/browser-remappings-false copy/test-opts.json     | 3 ---
 7 files changed, 24 deletions(-)
 delete mode 100644 test/unit/browser-remappings-false copy/.gitignore
 delete mode 100644 test/unit/browser-remappings-false copy/input.js
 delete mode 100644 test/unit/browser-remappings-false copy/node_modules/pkg/browser.js
 delete mode 100644 test/unit/browser-remappings-false copy/node_modules/pkg/index.js
 delete mode 100644 test/unit/browser-remappings-false copy/node_modules/pkg/package.json
 delete mode 100644 test/unit/browser-remappings-false copy/output.js
 delete mode 100644 test/unit/browser-remappings-false copy/test-opts.json

diff --git a/test/unit/browser-remappings-false copy/.gitignore b/test/unit/browser-remappings-false copy/.gitignore
deleted file mode 100644
index a9412d2d..00000000
--- a/test/unit/browser-remappings-false copy/.gitignore	
+++ /dev/null
@@ -1,2 +0,0 @@
-# include node_modules for testing
-!node_modules 
diff --git a/test/unit/browser-remappings-false copy/input.js b/test/unit/browser-remappings-false copy/input.js
deleted file mode 100644
index 76b86cf7..00000000
--- a/test/unit/browser-remappings-false copy/input.js	
+++ /dev/null
@@ -1,2 +0,0 @@
-require('pkg');
-
diff --git a/test/unit/browser-remappings-false copy/node_modules/pkg/browser.js b/test/unit/browser-remappings-false copy/node_modules/pkg/browser.js
deleted file mode 100644
index a5ceac31..00000000
--- a/test/unit/browser-remappings-false copy/node_modules/pkg/browser.js	
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = 'browser code';
diff --git a/test/unit/browser-remappings-false copy/node_modules/pkg/index.js b/test/unit/browser-remappings-false copy/node_modules/pkg/index.js
deleted file mode 100644
index da058b11..00000000
--- a/test/unit/browser-remappings-false copy/node_modules/pkg/index.js	
+++ /dev/null
@@ -1,2 +0,0 @@
-module.exports = 'legacy index';
-require("./browser")
diff --git a/test/unit/browser-remappings-false copy/node_modules/pkg/package.json b/test/unit/browser-remappings-false copy/node_modules/pkg/package.json
deleted file mode 100644
index 33d8de58..00000000
--- a/test/unit/browser-remappings-false copy/node_modules/pkg/package.json	
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "name": "pkg",
-  "main": "index.js",
-  "browser": {
-    "./browser.js": false
-  }
-}
diff --git a/test/unit/browser-remappings-false copy/output.js b/test/unit/browser-remappings-false copy/output.js
deleted file mode 100644
index bc5f3405..00000000
--- a/test/unit/browser-remappings-false copy/output.js	
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-  "package.json",
-  "test/unit/browser-remappings-false/input.js",
-  "test/unit/browser-remappings-false/node_modules/pkg/browser.js",
-  "test/unit/browser-remappings-false/node_modules/pkg/index.js",
-  "test/unit/browser-remappings-false/node_modules/pkg/package.json"
-]
diff --git a/test/unit/browser-remappings-false copy/test-opts.json b/test/unit/browser-remappings-false copy/test-opts.json
deleted file mode 100644
index 9e01628e..00000000
--- a/test/unit/browser-remappings-false copy/test-opts.json	
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "conditions": ["browser"]
-}

From 103aac35ec1dda42d326e11198ce7c555f0d6769 Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 21 Jun 2024 15:07:59 -0700
Subject: [PATCH 04/13] Bump after editing pr title


From d36adc4f24e4f769edd262c037117eef3a300cda Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Mon, 24 Jun 2024 15:49:57 -0700
Subject: [PATCH 05/13] Add test where browser setting is undefined

---
 .DS_Store                                        | Bin 0 -> 6148 bytes
 test/unit.test.js                                |   1 +
 .../unit/browser-remappings-undefined/.gitignore |   2 ++
 test/unit/browser-remappings-undefined/input.js  |   2 ++
 .../node_modules/pkg/index.js                    |   1 +
 .../node_modules/pkg/package.json                |  13 +++++++++++++
 .../node_modules/pkg/require-main.cjs            |   2 ++
 .../pkg/subdir/import-main-browser.js            |   1 +
 .../node_modules/pkg/subdir/import-main.js       |   1 +
 .../node_modules/pkg/subdir/package.json         |   1 +
 test/unit/browser-remappings-undefined/output.js |   9 +++++++++
 .../browser-remappings-undefined/test-opts.json  |   3 +++
 test/unit/browser-remappings/output.js           |   2 +-
 13 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 .DS_Store
 create mode 100644 test/unit/browser-remappings-undefined/.gitignore
 create mode 100644 test/unit/browser-remappings-undefined/input.js
 create mode 100644 test/unit/browser-remappings-undefined/node_modules/pkg/index.js
 create mode 100644 test/unit/browser-remappings-undefined/node_modules/pkg/package.json
 create mode 100644 test/unit/browser-remappings-undefined/node_modules/pkg/require-main.cjs
 create mode 100644 test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main-browser.js
 create mode 100644 test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main.js
 create mode 100644 test/unit/browser-remappings-undefined/node_modules/pkg/subdir/package.json
 create mode 100644 test/unit/browser-remappings-undefined/output.js
 create mode 100644 test/unit/browser-remappings-undefined/test-opts.json

diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..1ad899dbcdc748036dd701eacb0ec11e243703d4
GIT binary patch
literal 6148
zcmeHKyJ`bL3>+mc4$`<xxxbJ<Sd8-p{sEiBxCu5G?D{HyS3b?72O;L1CXgnKK$=~x
zW{;cVbOK<D)B6iB2Qbhbaq%!UKX;$lLuHIe=N(6Eu*3GeI_@Xc_Y=+?@P-4<*na1K
z9QM1s_dZcsDIf);fE17dQs7q#c<-eRPl<|BKnh5KF9rPj(CCi6a7>I(2Sbbi#2M3J
zT*oXyY@Q(Y!ZDE<nkAK(RI3rglFodqx?VUYCLLD8ht-p<CKQXO^Zpj)u%4(W1*E{O
z0*|?!d;fo>|1kgGlC+ZoQs7@HV6)|Fx!@~RZ=JlH_u58Z)4k@C?#6Xc7@{2$qaAbO
f?f5y0vab1>=e=-D3_9~cC+cUwb&*MdzgFN1-fR_w

literal 0
HcmV?d00001

diff --git a/test/unit.test.js b/test/unit.test.js
index 0bf62b1b..70092eb6 100644
--- a/test/unit.test.js
+++ b/test/unit.test.js
@@ -65,6 +65,7 @@ function resetFileIOMocks() {
 }
 
 afterEach(resetFileIOMocks);
+// const unitTests2 = [{ testName: 'browser-remappings-string', isRoot: false }];
 
 for (const { testName, isRoot } of unitTests) {
   const testSuffix = `${testName} from ${isRoot ? 'root' : 'cwd'}`;
diff --git a/test/unit/browser-remappings-undefined/.gitignore b/test/unit/browser-remappings-undefined/.gitignore
new file mode 100644
index 00000000..a9412d2d
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/.gitignore
@@ -0,0 +1,2 @@
+# include node_modules for testing
+!node_modules 
diff --git a/test/unit/browser-remappings-undefined/input.js b/test/unit/browser-remappings-undefined/input.js
new file mode 100644
index 00000000..76b86cf7
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/input.js
@@ -0,0 +1,2 @@
+require('pkg');
+
diff --git a/test/unit/browser-remappings-undefined/node_modules/pkg/index.js b/test/unit/browser-remappings-undefined/node_modules/pkg/index.js
new file mode 100644
index 00000000..914a7c58
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/node_modules/pkg/index.js
@@ -0,0 +1 @@
+module.exports = 'legacy index';
diff --git a/test/unit/browser-remappings-undefined/node_modules/pkg/package.json b/test/unit/browser-remappings-undefined/node_modules/pkg/package.json
new file mode 100644
index 00000000..a43212cb
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/node_modules/pkg/package.json
@@ -0,0 +1,13 @@
+{
+  "name": "pkg",
+  "main": "index.js",
+  "exports": {
+    ".": {
+      "import": "./subdir/import-main.js",
+      "require": "./require-main.cjs"
+    },
+    "./asdf": {
+      "import": "./subdir/import-main.js"
+    }
+  }
+}
diff --git a/test/unit/browser-remappings-undefined/node_modules/pkg/require-main.cjs b/test/unit/browser-remappings-undefined/node_modules/pkg/require-main.cjs
new file mode 100644
index 00000000..43b69844
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/node_modules/pkg/require-main.cjs
@@ -0,0 +1,2 @@
+import('pkg/asdf');
+module.exports = 'require main';
diff --git a/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main-browser.js b/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main-browser.js
new file mode 100644
index 00000000..72b9016b
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main-browser.js
@@ -0,0 +1 @@
+export default 'import main browser';
diff --git a/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main.js b/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main.js
new file mode 100644
index 00000000..95bc9efa
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main.js
@@ -0,0 +1 @@
+export default 'import main';
diff --git a/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/package.json b/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/package.json
new file mode 100644
index 00000000..6990891f
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/node_modules/pkg/subdir/package.json
@@ -0,0 +1 @@
+{"type": "module"}
diff --git a/test/unit/browser-remappings-undefined/output.js b/test/unit/browser-remappings-undefined/output.js
new file mode 100644
index 00000000..f94da2b5
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/output.js
@@ -0,0 +1,9 @@
+[
+  "package.json",
+  "test/unit/browser-remappings-undefined/input.js",
+  "test/unit/browser-remappings-undefined/node_modules/pkg/index.js",
+  "test/unit/browser-remappings-undefined/node_modules/pkg/package.json",
+  "test/unit/browser-remappings-undefined/node_modules/pkg/require-main.cjs",
+  "test/unit/browser-remappings-undefined/node_modules/pkg/subdir/import-main.js",
+  "test/unit/browser-remappings-undefined/node_modules/pkg/subdir/package.json"
+]
diff --git a/test/unit/browser-remappings-undefined/test-opts.json b/test/unit/browser-remappings-undefined/test-opts.json
new file mode 100644
index 00000000..9e01628e
--- /dev/null
+++ b/test/unit/browser-remappings-undefined/test-opts.json
@@ -0,0 +1,3 @@
+{
+  "conditions": ["browser"]
+}
diff --git a/test/unit/browser-remappings/output.js b/test/unit/browser-remappings/output.js
index 9864d640..546aa4a8 100644
--- a/test/unit/browser-remappings/output.js
+++ b/test/unit/browser-remappings/output.js
@@ -7,4 +7,4 @@
   "test/unit/browser-remappings/node_modules/pkg/subdir/import-main-browser.js",
   "test/unit/browser-remappings/node_modules/pkg/subdir/import-main.js",
   "test/unit/browser-remappings/node_modules/pkg/subdir/package.json"
-]
\ No newline at end of file
+]

From 416fca33215e6b774e1a763a05ca72d04d606856 Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Mon, 24 Jun 2024 16:00:34 -0700
Subject: [PATCH 06/13] Cleanup

---
 .DS_Store         | Bin 6148 -> 0 bytes
 test/unit.test.js |   1 -
 2 files changed, 1 deletion(-)
 delete mode 100644 .DS_Store

diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 1ad899dbcdc748036dd701eacb0ec11e243703d4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmeHKyJ`bL3>+mc4$`<xxxbJ<Sd8-p{sEiBxCu5G?D{HyS3b?72O;L1CXgnKK$=~x
zW{;cVbOK<D)B6iB2Qbhbaq%!UKX;$lLuHIe=N(6Eu*3GeI_@Xc_Y=+?@P-4<*na1K
z9QM1s_dZcsDIf);fE17dQs7q#c<-eRPl<|BKnh5KF9rPj(CCi6a7>I(2Sbbi#2M3J
zT*oXyY@Q(Y!ZDE<nkAK(RI3rglFodqx?VUYCLLD8ht-p<CKQXO^Zpj)u%4(W1*E{O
z0*|?!d;fo>|1kgGlC+ZoQs7@HV6)|Fx!@~RZ=JlH_u58Z)4k@C?#6Xc7@{2$qaAbO
f?f5y0vab1>=e=-D3_9~cC+cUwb&*MdzgFN1-fR_w

diff --git a/test/unit.test.js b/test/unit.test.js
index 70092eb6..0bf62b1b 100644
--- a/test/unit.test.js
+++ b/test/unit.test.js
@@ -65,7 +65,6 @@ function resetFileIOMocks() {
 }
 
 afterEach(resetFileIOMocks);
-// const unitTests2 = [{ testName: 'browser-remappings-string', isRoot: false }];
 
 for (const { testName, isRoot } of unitTests) {
   const testSuffix = `${testName} from ${isRoot ? 'root' : 'cwd'}`;

From 5f5e7f678c204041d8c680ec64776c4d18080cdd Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 28 Jun 2024 09:04:36 -0700
Subject: [PATCH 07/13] Debug windows-specific issue

---
 src/resolve-dependency.ts | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/resolve-dependency.ts b/src/resolve-dependency.ts
index 3695f5a0..5859a5d3 100644
--- a/src/resolve-dependency.ts
+++ b/src/resolve-dependency.ts
@@ -250,6 +250,7 @@ function resolveExportsImports(
   }
   return undefined;
 }
+import os from 'os';
 
 async function resolveRemappings(
   pkgPath: string,
@@ -259,18 +260,24 @@ async function resolveRemappings(
 ): Promise<void> {
   if (job.conditions?.includes('browser')) {
     const { browser: pkgBrowser } = pkgCfg;
-    if (!pkgBrowser) {
-      return;
+    if (os.platform() !== 'win32') {
+      if (!pkgBrowser) {
+        return;
+      }
     }
     if (typeof pkgBrowser === 'object') {
+      // @ts-ignore
       for (const [key, value] of Object.entries(pkgBrowser)) {
-        if (typeof value !== 'string') {
-          /**
-           * `false` can be used to specify that a file is not meant to be included.
-           * Downstream processing is expected to handle this case, and it should remain in the mapping result
-           */
-          continue;
+        if (os.platform() !== 'win32') {
+          if (typeof value !== 'string') {
+            /**
+             * `false` can be used to specify that a file is not meant to be included.
+             * Downstream processing is expected to handle this case, and it should remain in the mapping result
+             */
+            continue;
+          }
         }
+        // @ts-ignore
         if (!key.startsWith('./') || !value.startsWith('./')) {
           continue;
         }

From 4e3ece6b2a12e9248c0e4b89a3b901661826fe8b Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 28 Jun 2024 11:31:34 -0700
Subject: [PATCH 08/13] Undo windows debug

---
 src/resolve-dependency.ts | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/src/resolve-dependency.ts b/src/resolve-dependency.ts
index 5859a5d3..3695f5a0 100644
--- a/src/resolve-dependency.ts
+++ b/src/resolve-dependency.ts
@@ -250,7 +250,6 @@ function resolveExportsImports(
   }
   return undefined;
 }
-import os from 'os';
 
 async function resolveRemappings(
   pkgPath: string,
@@ -260,24 +259,18 @@ async function resolveRemappings(
 ): Promise<void> {
   if (job.conditions?.includes('browser')) {
     const { browser: pkgBrowser } = pkgCfg;
-    if (os.platform() !== 'win32') {
-      if (!pkgBrowser) {
-        return;
-      }
+    if (!pkgBrowser) {
+      return;
     }
     if (typeof pkgBrowser === 'object') {
-      // @ts-ignore
       for (const [key, value] of Object.entries(pkgBrowser)) {
-        if (os.platform() !== 'win32') {
-          if (typeof value !== 'string') {
-            /**
-             * `false` can be used to specify that a file is not meant to be included.
-             * Downstream processing is expected to handle this case, and it should remain in the mapping result
-             */
-            continue;
-          }
+        if (typeof value !== 'string') {
+          /**
+           * `false` can be used to specify that a file is not meant to be included.
+           * Downstream processing is expected to handle this case, and it should remain in the mapping result
+           */
+          continue;
         }
-        // @ts-ignore
         if (!key.startsWith('./') || !value.startsWith('./')) {
           continue;
         }

From 154b2036b6d5d91289ca45440ff35a15f4b3ff66 Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Mon, 1 Jul 2024 09:54:11 -0700
Subject: [PATCH 09/13] Bump


From c2016325454f1d763135db10ded7b94ea4baf171 Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 5 Jul 2024 10:24:56 -0700
Subject: [PATCH 10/13] Add test for when the browser field is a string

---
 test/unit.test.js                                          | 4 +++-
 test/unit/browser-remappings-string/.gitignore             | 2 ++
 test/unit/browser-remappings-string/input.js               | 2 ++
 .../browser-remappings-string/node_modules/pkg/browser.js  | 1 +
 .../browser-remappings-string/node_modules/pkg/index.js    | 2 ++
 .../node_modules/pkg/package.json                          | 7 +++++++
 test/unit/browser-remappings-string/output.js              | 7 +++++++
 test/unit/browser-remappings-string/test-opts.json         | 3 +++
 8 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 test/unit/browser-remappings-string/.gitignore
 create mode 100644 test/unit/browser-remappings-string/input.js
 create mode 100644 test/unit/browser-remappings-string/node_modules/pkg/browser.js
 create mode 100644 test/unit/browser-remappings-string/node_modules/pkg/index.js
 create mode 100644 test/unit/browser-remappings-string/node_modules/pkg/package.json
 create mode 100644 test/unit/browser-remappings-string/output.js
 create mode 100644 test/unit/browser-remappings-string/test-opts.json

diff --git a/test/unit.test.js b/test/unit.test.js
index 0bf62b1b..7dad91e5 100644
--- a/test/unit.test.js
+++ b/test/unit.test.js
@@ -66,7 +66,9 @@ function resetFileIOMocks() {
 
 afterEach(resetFileIOMocks);
 
-for (const { testName, isRoot } of unitTests) {
+const unitTests2 = [{ testName: 'browser-remappings-string', isRoot: false }];
+
+for (const { testName, isRoot } of unitTests2) {
   const testSuffix = `${testName} from ${isRoot ? 'root' : 'cwd'}`;
   if (
     process.platform === 'win32' &&
diff --git a/test/unit/browser-remappings-string/.gitignore b/test/unit/browser-remappings-string/.gitignore
new file mode 100644
index 00000000..a9412d2d
--- /dev/null
+++ b/test/unit/browser-remappings-string/.gitignore
@@ -0,0 +1,2 @@
+# include node_modules for testing
+!node_modules 
diff --git a/test/unit/browser-remappings-string/input.js b/test/unit/browser-remappings-string/input.js
new file mode 100644
index 00000000..76b86cf7
--- /dev/null
+++ b/test/unit/browser-remappings-string/input.js
@@ -0,0 +1,2 @@
+require('pkg');
+
diff --git a/test/unit/browser-remappings-string/node_modules/pkg/browser.js b/test/unit/browser-remappings-string/node_modules/pkg/browser.js
new file mode 100644
index 00000000..a5ceac31
--- /dev/null
+++ b/test/unit/browser-remappings-string/node_modules/pkg/browser.js
@@ -0,0 +1 @@
+module.exports = 'browser code';
diff --git a/test/unit/browser-remappings-string/node_modules/pkg/index.js b/test/unit/browser-remappings-string/node_modules/pkg/index.js
new file mode 100644
index 00000000..41deffde
--- /dev/null
+++ b/test/unit/browser-remappings-string/node_modules/pkg/index.js
@@ -0,0 +1,2 @@
+module.exports = 'legacy index';
+require("pkg/browser")
diff --git a/test/unit/browser-remappings-string/node_modules/pkg/package.json b/test/unit/browser-remappings-string/node_modules/pkg/package.json
new file mode 100644
index 00000000..d8f9bb94
--- /dev/null
+++ b/test/unit/browser-remappings-string/node_modules/pkg/package.json
@@ -0,0 +1,7 @@
+{
+  "name": "pkg",
+  "main": "index.js",
+  "browser": {
+    "./browser.js": "browser.js"
+  }
+}
diff --git a/test/unit/browser-remappings-string/output.js b/test/unit/browser-remappings-string/output.js
new file mode 100644
index 00000000..1f3ecac2
--- /dev/null
+++ b/test/unit/browser-remappings-string/output.js
@@ -0,0 +1,7 @@
+[
+  "package.json",
+  "test/unit/browser-remappings-string/input.js",
+  "test/unit/browser-remappings-string/node_modules/pkg/browser.js",
+  "test/unit/browser-remappings-string/node_modules/pkg/index.js",
+  "test/unit/browser-remappings-string/node_modules/pkg/package.json"
+]
diff --git a/test/unit/browser-remappings-string/test-opts.json b/test/unit/browser-remappings-string/test-opts.json
new file mode 100644
index 00000000..9e01628e
--- /dev/null
+++ b/test/unit/browser-remappings-string/test-opts.json
@@ -0,0 +1,3 @@
+{
+  "conditions": ["browser"]
+}

From 18927d8ee942f4f9b1ef72e74c63ac3955798726 Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Fri, 5 Jul 2024 10:26:30 -0700
Subject: [PATCH 11/13] Undo test fixture change

---
 test/unit.test.js | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/test/unit.test.js b/test/unit.test.js
index 7dad91e5..0bf62b1b 100644
--- a/test/unit.test.js
+++ b/test/unit.test.js
@@ -66,9 +66,7 @@ function resetFileIOMocks() {
 
 afterEach(resetFileIOMocks);
 
-const unitTests2 = [{ testName: 'browser-remappings-string', isRoot: false }];
-
-for (const { testName, isRoot } of unitTests2) {
+for (const { testName, isRoot } of unitTests) {
   const testSuffix = `${testName} from ${isRoot ? 'root' : 'cwd'}`;
   if (
     process.platform === 'win32' &&

From 1d48d953972beff712a5a9610741614993e03edb Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Tue, 9 Jul 2024 16:52:29 -0700
Subject: [PATCH 12/13] Change browser string test to a string value

---
 test/unit.test.js                                             | 4 +++-
 .../browser-remappings-string/node_modules/pkg/package.json   | 4 +---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/test/unit.test.js b/test/unit.test.js
index 0bf62b1b..7dad91e5 100644
--- a/test/unit.test.js
+++ b/test/unit.test.js
@@ -66,7 +66,9 @@ function resetFileIOMocks() {
 
 afterEach(resetFileIOMocks);
 
-for (const { testName, isRoot } of unitTests) {
+const unitTests2 = [{ testName: 'browser-remappings-string', isRoot: false }];
+
+for (const { testName, isRoot } of unitTests2) {
   const testSuffix = `${testName} from ${isRoot ? 'root' : 'cwd'}`;
   if (
     process.platform === 'win32' &&
diff --git a/test/unit/browser-remappings-string/node_modules/pkg/package.json b/test/unit/browser-remappings-string/node_modules/pkg/package.json
index d8f9bb94..5300cb04 100644
--- a/test/unit/browser-remappings-string/node_modules/pkg/package.json
+++ b/test/unit/browser-remappings-string/node_modules/pkg/package.json
@@ -1,7 +1,5 @@
 {
   "name": "pkg",
   "main": "index.js",
-  "browser": {
-    "./browser.js": "browser.js"
-  }
+  "browser": "./browser.js"
 }

From 4195963d54ab64f31727ad67861c3fac26cf8f38 Mon Sep 17 00:00:00 2001
From: Jeff See <jeffsee.55@gmail.com>
Date: Tue, 9 Jul 2024 16:53:41 -0700
Subject: [PATCH 13/13] Fix unit test

---
 test/unit.test.js | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/test/unit.test.js b/test/unit.test.js
index 7dad91e5..0bf62b1b 100644
--- a/test/unit.test.js
+++ b/test/unit.test.js
@@ -66,9 +66,7 @@ function resetFileIOMocks() {
 
 afterEach(resetFileIOMocks);
 
-const unitTests2 = [{ testName: 'browser-remappings-string', isRoot: false }];
-
-for (const { testName, isRoot } of unitTests2) {
+for (const { testName, isRoot } of unitTests) {
   const testSuffix = `${testName} from ${isRoot ? 'root' : 'cwd'}`;
   if (
     process.platform === 'win32' &&