diff --git a/fixtures/pnpm8/package.json b/fixtures/pnpm8/package.json index df53f01..16b6a16 100644 --- a/fixtures/pnpm8/package.json +++ b/fixtures/pnpm8/package.json @@ -7,6 +7,7 @@ }, "packageManager": "pnpm@8.10.5", "devDependencies": { + "axios": "1.6.2", "styled-components": "6.1.1" } } diff --git a/fixtures/pnpm8/pnpm-lock.yaml b/fixtures/pnpm8/pnpm-lock.yaml index 09e8bb3..a6ef8c5 100644 --- a/fixtures/pnpm8/pnpm-lock.yaml +++ b/fixtures/pnpm8/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false devDependencies: + axios: + specifier: 1.6.2 + version: 1.6.2 styled-components: specifier: 6.1.1 version: 6.1.1(react-dom@18.2.0)(react@18.2.0) @@ -29,10 +32,31 @@ packages: resolution: {integrity: sha512-36ZrGJ8fgtBr6nwNnuJ9jXIj+bn/pF6UoqmrQT7+Y99+tFFeHHsoR54+194dHdyhPjgbeoNz3Qru0oRt0l6ASQ==} dev: true + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + /camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + /css-color-keywords@1.0.0: resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} engines: {node: '>=4'} @@ -50,6 +74,30 @@ packages: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: true + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true @@ -61,6 +109,18 @@ packages: js-tokens: 4.0.0 dev: true + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -84,6 +144,10 @@ packages: source-map-js: 1.0.2 dev: true + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + /react-dom@18.2.0(react@18.2.0): resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: diff --git a/tests/resolve_test.rs b/tests/resolve_test.rs index 9e2afb7..4160530 100644 --- a/tests/resolve_test.rs +++ b/tests/resolve_test.rs @@ -18,13 +18,17 @@ fn chinese() { fn styled_components() { let dir = dir(); let path = dir.join("fixtures/pnpm8"); + let module_path = path.join("node_modules/.pnpm/styled-components@6.1.1_react-dom@18.2.0_react@18.2.0/node_modules/styled-components"); let specifier = "styled-components"; // cjs let options = ResolveOptions { alias_fields: vec![vec!["browser".into()]], ..ResolveOptions::default() }; let resolution = Resolver::new(options).resolve(&path, specifier); - assert_eq!(resolution.map(|r| r.into_path_buf()), Ok(path.join("node_modules/.pnpm/styled-components@6.1.1_react-dom@18.2.0_react@18.2.0/node_modules/styled-components/dist/styled-components.browser.cjs.js"))); + assert_eq!( + resolution.map(|r| r.into_path_buf()), + Ok(module_path.join("dist/styled-components.browser.cjs.js")) + ); // esm let options = ResolveOptions { @@ -33,5 +37,40 @@ fn styled_components() { ..ResolveOptions::default() }; let resolution = Resolver::new(options).resolve(&path, specifier); - assert_eq!(resolution.map(|r| r.into_path_buf()), Ok(path.join("node_modules/.pnpm/styled-components@6.1.1_react-dom@18.2.0_react@18.2.0/node_modules/styled-components/dist/styled-components.browser.esm.js"))); + assert_eq!( + resolution.map(|r| r.into_path_buf()), + Ok(module_path.join("dist/styled-components.browser.esm.js")) + ); +} + +#[test] +fn axios() { + let dir = dir(); + let path = dir.join("fixtures/pnpm8"); + let module_path = path.join("node_modules/.pnpm/axios@1.6.2/node_modules/axios"); + let specifier = "axios"; + + // default + let options = ResolveOptions::default(); + let resolution = Resolver::new(options).resolve(&path, specifier); + assert_eq!(resolution.map(|r| r.into_path_buf()), Ok(module_path.join("index.js"))); + + // browser + let options = ResolveOptions { + condition_names: vec!["browser".into(), "require".into()], + ..ResolveOptions::default() + }; + let resolution = Resolver::new(options).resolve(&path, specifier); + assert_eq!( + resolution.map(|r| r.into_path_buf()), + Ok(module_path.join("dist/browser/axios.cjs")) + ); + + // cjs + let options = ResolveOptions { + condition_names: vec!["node".into(), "require".into()], + ..ResolveOptions::default() + }; + let resolution = Resolver::new(options).resolve(&path, specifier); + assert_eq!(resolution.map(|r| r.into_path_buf()), Ok(module_path.join("dist/node/axios.cjs"))); }