Giter Site home page Giter Site logo

theia-ide / extension-registry Goto Github PK

View Code? Open in Web Editor NEW
11.0 7.0 5.0 552 KB

An open-source registry for VS Code extensions

License: Eclipse Public License 2.0

JavaScript 0.94% HTML 0.10% TypeScript 49.96% Dockerfile 0.17% Java 48.82%
theia vscode extension registry

extension-registry's People

Contributors

geropl avatar jbicker avatar spoenemann avatar svenefftinge avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

extension-registry's Issues

[webui] Don't include credentials when fetching resources unless necessary

When the server has an upstream registry configured, the resources may be fetched directly from the upstream instance. In that case I get

Access to fetch at 'https://…/api/DotJoshJohnson/xml/file/README.md' from origin '…' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

This should be avoided by not including credentials except where necessary.

Improve search

The search feature should be fine-tuned. Currently the order of results is not optimal: e.g. using the provided test extensions, searching for "powershell" lists the powershell extension at the third position, after php-intellisense and code-runner. Probably it has to do with the configuration of the ngram token filter.

[webui] Display API errors

Errors that occur when requesting stuff from the API are currently only visible in the console. They should be shown to the user somehow.

Further details to be shown on the extension detail page

See the VS Code Extension Manifest format.

  • preview: whether the last published version is a preview
  • markdown: control the Markdown rendering engine
  • galleryColor, galleryTheme: control the gallery banner style
  • qna: handle special values false and marketplace
  • badges: render a list of badges
  • dependencies, bundledExtensions: show links to extensions listed as dependencies

Migrate to Spring

I started migrating the server application to Spring on the spring branch. I marked commented-out code with //XXX so it's easier to find. What is left to do:

  • Reimplement client routes
    • Configure view controllers in RouteConfig
    • Previous approach:
      • reroute paths like /foo/bar to /
      • reroute paths like /foo/bar/bundle.js to /bundle.js (detected when there is a . character in the last path segment)
      • don't touch paths with prefix /api
  • Reimplement the Elasticsearch integration
    • Write search query in LocalRegistryService
    • Adapt search-related annotations in entities Extension, ExtensionVersion and Publisher
    • Previous analysis config is in AnalysisConfig (may be done differently)
    • Additional dependencies in build.gradle (not sure whether we'll need that)
    • Maybe fix #3 on the way
  • Implement the upstream registry mode (#2)
    • An upstream registry instance should be configurable via environment variable (e.g. REGISTRY_UPSTREAM_URL)
    • Implement the IUpstreamRegistry interface by sending requests to the configured registry
    • Include that implementation in the getRegistries() method of RegistryAPI.
  • Implement authentication (#1)
    • I commented out the previous basic login in UserAPI
    • Probably we can remove UserSessionReaper

[webui] Debounce search input

When typing into the search input field, a lot of requests are sent even when typing quickly. The user input should be debounced.

Implement "proxy mode" with an upstream registry instance

It should be possible to configure an upstream registry URL that is queried when the local database does not find any result. E.g. for the endpoint api/{publisher}/{extension}, first the database shall be queried, and if that fails the server shall send a request to {upstreamUrl}/api/{publisher}/{extension}.

Show 404 pages in web UI

Two scenarios where a 404 page should be shown:

  • The route does not exist.
  • The extension or other resource does not exist (the server API returned 404).

Auth with GitHub

The registry currently features basic login functionality with a hard-coded dummy user. We should use an OAuth service. It would be great to set up a dummy OAuth implementation in Gitpod so we can test the login.

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.