@overlayed-app/contributes

1.3.0 • Public • Published

contributes

Build Status Coverage Status

Parse JSONSchema contribution entries, and validate data against them ✔️

Why

Overlayed makes use of a common format for defining settings as an extension author. It's very similar to the vscode configuration contribution point, so if you're familiar with that you'll understand this easily. This module is specifically designed to allow one to work with this schema - to enumerate expected settings (and what they're for) and to validate settings objects.

How

npm i @overlayed-app/contributes

Then in code (if js):

const contributes = require('@overlayed-app/contributes')

// load a schema (validating it's legit too)
const contrib = contributes
  .from('path/to/package.json/with/contributes/section')

// get the title for these settings
const title = contrib.title 

// get the settings data objects (describing each setting)
const data = contrib.data

// access one particular setting
const mySetting = data[0]

// prints '{name: 'mySetting', type: 'string', default: 'hi mom', description: 'your setting' }'
console.log(mySetting)

or (if ts):

import contributes from '@overlayed-app/contributes'

// load a schema (validating it's legit too)
const contrib = contributes
  .from('path/to/package.json/with/contributes/section')

// get the title for these settings
const title = contrib.title 

// get the settings data objects (describing each setting)
const data = contrib.data

// access one particular setting
const mySetting = data[0]

// prints '{name: 'mySetting', type: 'string', default: 'hi mom', description: 'your setting' }'
console.log(mySetting)

API

Create a contributes object from your package.json file:

// will throw if there's an error
const contrib = contributes.from('path/to/file')

This will validate that the included schema is legit, and then expose some ways to use the data.

To access the title, use title:

const title = contrib.title

To access the settings description data, as an array:

const data = contrib.data

You can use map to manipulate the data without pulling it out beforehand:

const names = contrib.map(entry => entry.data)

Note that each data entry contains the following data format:

{
  "name": "settingName, from the schema properties key",
  "description": "describing the settings purpose",
  "default": "a default value",
  "type": "string"
}

Where type is a valid json schema type.

If you wish to validate some settings object against the schema:

const settings = { settingName: 'settingValue' }

// will throw if there's an error
contib.validate(settings)

Note that when you validate settings objects, types may be coerced automatically to ensure consistency with the schema. If you wish to prevent this freeze your object.

Contributing

  • To build npm run build.
  • To publish npm run publish.
  • To test npm test.

Authors

Ben Greenier - Initial work - bengreenier

License

Contributes is licensed under the MIT License - Click here for details

Readme

Keywords

Package Sidebar

Install

npm i @overlayed-app/contributes

Weekly Downloads

0

Version

1.3.0

License

MIT

Unpacked Size

13.5 kB

Total Files

6

Last publish

Collaborators

  • bengreenier