eclipse-thingweb / playground

Browser or Node.js based tool for validating and playing with W3C Thing Descriptions
https://playground.thingweb.io/
Other
28 stars 22 forks source link
iot nodejs web web-of-things wot

Eclipse Thingweb logo with Playground

Playground

The place where you can create and play with WoT Thing Descriptions. Try it online at https://playground.thingweb.io/

Default CI & CD Pipeline CodeQL Discord npm Netlify Status

Installation

There are different ways to use Playground:

Structure

The structure of all Playground packages is shown here: packageStructure

All packages (except CLI and Web) are designed to be used as an imported package in a Node.js project or as a web bundle in a Web application. This allows them to be used in the Web package as part of a Web UI or inside the CLI.

Both packages are used by the Web and CLI packages to provide their functionalities, plus IO functionalities through a UI.

Packages

The packages in this repository are available under (packages folder) or on NPM under @thing-description-playground/packageName.

Reusable packages:

End Product Packages:

Examples

Examples are included in the core and in the examples folder at the root of the project.

Browser-based Thing Description Validation

Batch Testing

Please have a look at the cli package for batch testing of Thing Descriptions.

Script-based Assertion Tester

Please have a look at the cli package for script-based assertion testing, or at the assertions package, if you're planning to integrate the assertion testing as a dependency in your own NPM modules.

Script-based Thing Description Validation

Please have a look at the cli package for script-based TD validation, or at the core package, if you're planning to integrate the TD validation as a dependency in your own NPM modules.

License

All packages are licensed under the Eclipse Public License v. 2.0. You find a copy of the License here.

Publish a new version

  1. Run lerna bootstrap to install dependencies among the packages, even if a package has never been published before. Make sure you have not increased the dependency versions yet, e.g., you have a new package newExample and the oldExample depends on it. The newExample is on version 0.0.0 (since you want to publish it as 1.0.0) then in the oldExample package.json the dependency has to be on the same version (or lower) so "dependencies" { newExample: "^0.0.0"}}. Otherwise lerna will not accept linking the local newExample.
  2. If lerna bootstrap was successful you can now bump dependency versions (if required), e.g., you could now do "dependencies" { newExample: "^1.0.0"}} in the oldExample package.json.
  3. Run lerna publish to publish all the new package versions. Lerna will then ask for every changed package whether it received a patch, minor or major update. In our example, you should now select major for the newExample so that it will be published as 1.0.0 version. You should log in to npm via npm login before doing this.

Adapting Licenses

One can use the VS Code plugin at https://marketplace.visualstudio.com/items?itemName=angelo-breuer.license-header-manager to updating the copyright fields on top of each file.