Code Monkey home page Code Monkey logo

deno_npm's Introduction

deno_npm

npm registry client and dependency resolver used in the Deno CLI.

deno_npm's People

Contributors

await-ovo avatar bartlomieju avatar denobot avatar dsherret avatar magurotuna avatar rnbguy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

deno_npm's Issues

Events for resolved npm packages

It would be useful to have events for each resolved package. This would allow the CLI to start immediately downloading packages and maybe partially setup the local node_modules directory.

Incorrect returning of `NpmPackageVersionDistInfo` integrity

When a NpmPackageVersionDistInfo doesn't have integrity, we return the integrity based on the shasum variable.
The issue is that the integrity is calculated and then encoded with base64 encoding, although the shasum is shown with a hex representation of the sha1 hash.

inconsistent npm version resolution

I am trying to an npm package that has a dependency antlr4ts@^0.5.0-alpha.4. 0.5.0-alpha.4 is marked as latest, but Deno pulls [email protected].

This doesn't work for me - as [email protected] has breaking changes from [email protected].

I do agree that 0.5.0-dev comes after 0.5.0-alpha.4 - even, node semver confirms this.

$ deno run npm:semver -h
Usage: semver [options] <version> [<version> [...]]
Prints valid versions sorted by SemVer precedence
$ deno run npm:semver ^0.5.0-alpha.4 0.5.0-beta
0.5.0-beta

But somehow pacote (used inside npm) resolves antlr4ts@^0.5.0-alpha.4 to 0.5.0-alpha.4.

$ deno run -A npm:pacote resolve antlr4ts@^0.5.0-alpha.4
http fetch GET 200 https://registry.npmjs.org/antlr4ts 1ms (cache revalidated)
https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz

So I did some digging and realized that pacote uses npm-pick-manifest, that has a particular logic, which indicates that if a given tag (defaults to latest) matches with the given version requirement, npm uses the tagged version directly - it doesn't iterate over the versions array.

So in my case, npm-pick-manifest was using the default latest tag and matching with ^0.5.0-alpha.4 and returning early. Whereas Deno npm resolver was going through the version array and picking the latest by semver spec i.e. 0.5.0-dev.

Deno import from npm ends up in infinite loop

Having the following imports

import AdminJS from "npm:adminjs";
import AdminJSExpress from "npm:@adminjs/express";
import express from "npm:express";

Deno ends up in an infinite loop. Debug output for the looping part is the following:

DEBUG RS - deno::npm::resolution::graph:1336 - Resolved peer dependency for @tiptap/core in @tiptap/[email protected]_@[email protected]__@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]_@[email protected]__@[email protected]___@[email protected][email protected][email protected][email protected]__@[email protected]___@[email protected]____@[email protected][email protected][email protected][email protected][email protected][email protected][email protected] to @tiptap/[email protected]_@[email protected]__@[email protected][email protected][email protected][email protected]_@[email protected]__@[email protected]___@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]
DEBUG RS - deno::npm::resolution::graph:1336 - Resolved peer dependency for @tiptap/pm in @tiptap/[email protected]_@[email protected]__@[email protected][email protected][email protected][email protected]_@[email protected]__@[email protected]___@[email protected][email protected][email protected][email protected][email protected][email protected][email protected] to @tiptap/[email protected]_@[email protected]__@[email protected][email protected][email protected][email protected][email protected][email protected][email protected]
DEBUG RS - deno::npm::resolution::graph:1336 - Resolved peer dependency for prosemirror-model in [email protected][email protected][email protected][email protected] to [email protected]
DEBUG RS - deno::npm::resolution::graph:1336 - Resolved peer dependency for prosemirror-state in [email protected][email protected][email protected][email protected] to [email protected]
DEBUG RS - deno::npm::resolution::graph:1336 - Resolved peer dependency for prosemirror-view in [email protected][email protected][email protected][email protected] to [email protected]

Using:
deno 1.31.3 (release, aarch64-apple-darwin)
v8 11.0.226.19
typescript 4.9.4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.