diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-11-16 13:44:31 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-16 18:44:31 +0000 |
commit | 40a72f35550ad2fd995b1d176540cc4fa0858370 (patch) | |
tree | 3df4ffd26170fc1b05ee4e465317da57a9de89a3 /core/async_cell.rs | |
parent | 1d85c2520575ae3a10c21b6559c58127e0bd489a (diff) |
fix(npm): support non-all lowercase package names (#16669)
Supports package names that aren't all lowercase.
This stores the package with a leading underscore (since that's not
allowed in npm's registry and no package exists with a leading
underscore) then base32 encoded (A-Z0-9) so it can be lowercased and
avoid collisions.
Global cache dir:
```
$DENO_DIR/npm/registry.npmjs.org/_{base32_encode(package_name).to_lowercase()}/{version}
```
node_modules dir `.deno` folder:
```
node_modules/.deno/_{base32_encode(package_name).to_lowercase()}@{version}/node_modules/<package-name>
```
Within node_modules folder:
```
node_modules/<package-name>
```
So, direct childs of the node_modules folder can have collisions between
packages like `JSON` vs `json`, but this is already something npm itself
doesn't handle well. Plus, Deno doesn't actually ever resolve to the
`node_modules/<package-name>` folder, but just has that for
compatibility. Additionally, packages in the `.deno` dir could have
collissions if they have multiple dependencies that only differ in
casing or a dependency that has different casing, but if someone is
doing that then they're already going to have trouble with npm and they
are asking for trouble in general.
Diffstat (limited to 'core/async_cell.rs')
0 files changed, 0 insertions, 0 deletions