Ask A Question

View Question

Hello,

I am having an issue trying to create a feed to https://registry.npm.telerik.com/

Once the feed is set up and i provide credentials in the connector url, I have no available packages.

Product: ProGet
Version: 4.7.6

Once a connector is added, it needs to be indexed; you can check the status of this index job on the ADmin > Tasks page, and also find any errors that occurred.

Hi Alana,

This is what I see in the log of the index:

DEBUG: Getting metadata from https://registry.npm.telerik.com/-/all/since?stale=update_after&startkey=1489987740510

Error: processing JSON: System.Exception: Expected StartArray token.
at Inedo.ProGet.ScheduledTasks.Npm.IncrementalNpmConnectorIndexScheduledTask.<IndexConnectorAsync>d__1.MoveNext()

So in this case, the URL you have entered into the connector is not returning JSON. Hence the error about a bad start token. It could be the wrong URL, it could be an authentication error form Telerik, or even a proxy server on your end that's blocking it.

I get a different result almost each time I check the index, however I still am not seeing any packages in the feed. Here is the newest result

3/21/2017 12:42:27 AM
DEBUG: Getting metadata from https://registry.npm.telerik.com/-/all
DEBUG: Finished downloading metadata. Indexing packages...

So, it appears the connector works then, but there's probably no packages to index. This is because telerik uses scoped packages.

Unfortunately, the npm API does not support listing or searching scoped packages at all. That is to say, there is simply no way for us to ask that API endpoint at telerik what packages exist there. So, this is by design… albeit a poor one by npm.

You will find the same is the case if you try to search for a scoped package on npmjs.org, for example this one: https://www.npmjs.com/package/@types/react

So, in this case, you won't be able to find telerik packages in a search or from the UI. You can only know the exact name.

We also tried configuring an NPM connector for https://registry.npm.telerik.com/ including the correct credentials, but when accessing the feed we get the following error:
The remote server returned an error: (404) Not Found.
When leaving the credentials empty we get the same error.

About scoping: I think the connector just requires an input field to define the scope like this: npm login --registry=https://registry.npm.telerik.com/ --scope=@progress

See also https://docs.npmjs.com/misc/scope "You can associate a scope with a registry at login"

Hello Yannick,

Telerik is using a custom NPM repository that has two incompatibilities with ProGet:

  1. It uses the email address to authenticate. I've added support for this for the next version of ProGet (4.7.10) PG-1012.
  2. It doesn't support the NPM search API. This means the feed page will show a big red box with The remote server returned an error: (404) Not Found. in it, but you should still be able to download packages if you know their name (once ProGet 4.7.10 is released).

Thanks a lot! I will report the NPM search API issue to Telerik.

I just upgraded to ProGet 4.7.10 which includes following items:
PG-1012 - Support for NPM feeds that authenticate via email address
PG-1013 - Support for NPM connectors that don't provide the search API

It seems that the error when viewing the feed is gone (so authentication seems to work). The packages are still not listed, although I'm not sure if that's supposed to be the case?
What exactly does PG-1013 solve?

The connector is showing " Error (as of 13:10)" now though and npm install throws this error:

npm ERR! 404 Package not found. Package was not found.: npm
npm ERR! 404
npm ERR! 404 'npm' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 It was specified as a dependency of 'xxx'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

We got rid of the error above by modifying the connector url by removing the trailing "/-/all". Now the feed indexing task succeeds, and npm install throws this error:

npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-data-query/-/kendo-data-query-0.5.1.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-angular-l10n/-/kendo-angular-l10n-0.3.0.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-angular-dialog/-/kendo-angular-dialog-0.19.0.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-angular-popup/-/kendo-angular-popup-0.17.0.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-angular-upload/-/kendo-angular-upload-0.20.0.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-angular-intl/-/kendo-angular-intl-0.12.0.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-angular-buttons/-/kendo-angular-buttons-0.24.0.tgz

Hello Yannick,

Telerik's repository isn't listing the publishing date of the packages, and ProGet is getting confused and assuming that means the packages were never published. This will be fixed in the next version of ProGet (4.7.11) [PG-1019]

Thanks, but will that solve the npm fetch error as well?
The paths seem to be unexisting:
/@progress/kendo-data-query/-/kendo-data-query-0.5.1.tgz

Current situation:

  • connector URL is https://registry.npm.telerik.com/ (before it was https://registry.npm.telerik.com/-/all)
  • connector shows "Error"
  • feed shows no error but no packages (before it was showing a "(404) Not Found" error)
  • npm install shows errors (the paths seem to be invalid (404) or the tgz files are missing):
    npm ERR! fetch failed https://packages.xxx.be:443/npm/npm-telerik-proxy/@progress/kendo-data-query/-/kendo-data-query-0.5.1.tgz
    => the path https://packages.tobania.be/npm/npm-telerik-proxy/@progress/kendo-data-query/ seems to produce some JSON content though that contains relatively built URL's like the tgz file URL above

Have you brought these issues to the attention of Telerik?

It's clear to me they wrote their own implementation of a proprietary npm registry, and I'm not keen on supporting their quirks in addition to all the npmjs.org quirks...

I already did and pointed them to this support question. Their reply: "We will log your feedback in our backlog and consider it when planning our future releases."

We get different errors now (500 instead of 404) during npm install:

npm ERR! fetch failed https://packages.tobania.be:443/npm/npm-telerik-proxy/@progress/kendo-data-query/-/kendo-data-query-0.5.2.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 500
npm ERR! fetch failed https://packages.tobania.be:443/npm/npm-telerik-proxy/@progress/kendo-theme-default/-/kendo-theme-default-2.31.3.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 500

I'll let Telerik know.

PG-1019 doesn't seem to be solved:

Getting metadata from https://registry.npm.telerik.com/-/all
Finished downloading metadata. Indexing packages...
Error indexing @progress/kendo-angular-buttons: "modified" property on "time" is missing or invalid.

Well.. if "making a npm registry that works with universal package managers" is not a priority for them, then I think continuing down this rabbithole is a pointles exercize.

I would suggest to just manually store their packages.

Alex,

The response Yannick received from Telerik is their generic response to pretty much every request. By no means are they saying supporting Universal Package Managers isn't a priority, they are a large company with many irons in the fire (like many others, ours included) so I'm sure it will be added to their list and prioritized how they see fit.

As corporate, paying users of your product, it is very important that we can use it with pretty much any feed (including Telerik’s). As such, we would greatly appreciate if someone from Inedo would contact Telerik directly to resolve any outstanding issues. If that is not an option, I would appreciate if someone would contact me directly to resolve the issue.

Thanks

Please understand that these issues are entirely on Telerik's end. Simply put, they did not implement a proper npm registry (feed). This is why it's not working in ProGet.

If they did, they would not be doing things like sending invalid index data (such packages without publish dates). We made a few small changes to try to get it working, but we can't keep adding special handling and work-arounds for Telerik's proprietary implementation.

We have no relationship with Telerik, so we can't contact them on our users' behalf. However, we would certainly welcome a dialog with them, and we've worked with Microsoft (to ensure NuGet keeps working w/ ProGet), as well as Telerik's competitors to ensure their private feeds work with private repository managers.

Answer Question