npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@devpodio/json

v0.6.3

Published

Theia - JSON Extension

Downloads

49

Readme

JSON Extension for Theia

Capabilities

The JSON extension supports the following features:

  • Syntax Coloring for JSON including support for jsonc (i.e. comments)
  • Code completion for JSON properties and values based on the document's JSON schema or based on existing properties and values used at other places in the document. JSON schemas are configured through the server configuration options.
  • Hover for values based on descriptions in the document's JSON schema.
  • Document Symbols for quick navigation to properties in the document.
  • Document Colors for showing color decorators on values representing colors and Color Presentation for color presentation information to support color pickers. The location of colors is defined by the document's JSON schema. All values marked with "format": "color-hex" (VSCode specific, non-standard JSON Schema extension) are considered color values. The supported color formats are #rgb[a] and #rrggbb[aa].
  • Code Formatting supporting ranges and formatting the whole document.
  • Diagnostics (Validation) are pushed for all open documents
    • syntax errors
    • structural validation based on the document's JSON schema.

In order to load JSON schemas, the JSON server uses NodeJS http and fs modules. For all other features, the JSON server only relies on the documents and settings provided by the client through the LSP.

Configuration

Settings

Clients may send a workspace/didChangeConfiguration notification to notify the server of settings changes. The server supports the following settings:

  • http

    • proxy: The URL of the proxy server to use when fetching schema. When undefined or empty, no proxy is used.
    • proxyStrictSSL: Whether the proxy server certificate should be verified against the list of supplied CAs.
  • json

    • format
      • enable: Whether the server should register the formatting support. This option is only applicable if the client supports dynamicRegistration for rangeFormatting
      • schema: Configures association of file names to schema URL or schemas and/or associations of schema URL to schema content.
        • fileMatch: an array or file names or paths (separated by /). * can be used as a wildcard.
        • url: The URL of the schema, optional when also a schema is provided.
        • schema: The schema content.
	{
        "http": {
            "proxy": "",
            "proxyStrictSSL": true
        },
        "json": {
            "format": {
                "enable": true
            },
            "schemas": [
                {
                    "fileMatch": [
                        "foo.json",
                        "*.superfoo.json"
                    ],
                    "url": "http://json.schemastore.org/foo",
                    "schema": {
                    	"type": "array"
                    }
                }
            ]
        }
    }

Schema configuration and custom schema content delivery

JSON schemas are essential for code assist, hovers, color decorators to work and are required for structural validation.

To find the schema for a given JSON document, the server uses the following mechanisms:

  • JSON documents can define the schema URL using a $schema property
  • The settings define a schema association based on the documents URL. Settings can either associate a schema URL to a file or path pattern, and they can directly provide a schema.
  • Additionally, schema associations can also be provided by a custom 'schemaAssociations' configuration call.

Schemas are identified by URLs. To load the content of a schema, the JSON language server tries to load from that URL or path. The following URL schemas are supported:

  • http, https: Loaded using NodeJS's HTTP support. Proxies can be configured through the settings.
  • file: Loaded using NodeJS's fs support.
  • vscode: Loaded by an LSP call to the client.

Schema associations notification

In addition to the settings, schemas associations can also be provided through a notification from the client to the server. This notification is a JSON language server specific, non-standardized, extension to the LSP.

Notification:

  • method: 'json/schemaAssociations'
  • params: ISchemaAssociations defined as follows
interface ISchemaAssociations {
	[pattern: string]: string[];
}
  • keys: a file names or file path (separated by /). * can be used as a wildcard.
  • values: An array of schema URLs

Schema content request

The schema content for schema URLs that start with vscode:// will be requested from the client through an LSP request. This request is a JSON language server specific, non-standardized, extension to the LSP.

Request:

  • method: 'vscode/content'
  • params: string - The schema URL to request. The server will only ask for URLs that start with vscode://
  • response: string - The content of the schema with the given URL

Schema content change notification

When the client is aware that a schema content has changed, it will notify the server through a notification. This notification is a JSON language server specific, non-standardized, extension to the LSP. The server will, as a response, clear the schema content from the cache and reload the schema content when required again.

Notification:

  • method: 'json/schemaContent'
  • params: string the URL of the schema that has changed.