Webpackage
A Webpackage
A webpackage is a versioned container for artifacts. Each webpackage is described by its manifest file.
Version of artifacts
Note: A webpackage is intended to be used as a collection of related artifacts (e.g. a component library, a well structured compound or different variants of one component). Keep in mind, that all artifacts are versioned with the webpackage.
The manifest.webpackage file
The manifest.webpackage
file is the most important document of each webpackage since it contains all data describing the webpackage (and of each of its artifacts).
In the following sections we will describe the manifest file in a general way. If want a more detailed description of the manifest file please check our JSON schemas.
Model version
Please, note that this document is based on model version 9
. Check this to explore the valid structure, description and details of a whole manifest file for each model version.
Required properties
The required properties of a manifest file are:
Property | Observation |
---|---|
name | The name of the webpackage |
groupId | A namespace for the webpackage (e.g. org.example). It may also be "" |
version | Version number of the webpackage. Use -SNAPSHOT suffix for work in progress. |
modelVersion | Version of the webpackage specification |
docType | Type of this document (it must be "webpackage") |
author | The author of this webpackage |
license | License name. For recommended values see https://spdx.org/licenses/ |
artifacts | Artifacts represent independent parts of a webpackage - with an enclosed responsibility and usable as a dependency of other artifacts. (More details below) |
Optional properties
The optional properties of a manifest file are:
Property | Observation |
---|---|
description | A short description of the webpackage |
contributors | A list of contributors of this webpackage |
homepage | The url of the webpackage's related website |
keywords | Keywords which support other developers to find this webpackage |
man | 1 or more urls to external manual(s) related to this webpackage |
runnables | Resources that are actually runnable in a users webbrowser, e.g. html files |
{ "name": "my-webpackage", "version": "1.0", "modelVersion": "9.1.1", "docType": "webpackage", "author": { "name": "John Doe", "email": "john.doe@example.org" }, "contributors": [ { "name": "Jane Doe", "email": "jane.doe@example.org" } ], "license": "MIT", "homepage": "http://project.home.com", "keywords": [ "connectors", "energy" ], "runnables": [ { "name": "readme", "path": "/doc/readme.html", "description": "Read this ..." } ], "artifacts": { "apps": [ { "artifactId": "app-a1", "description": " ...", // ... } ], "compoundComponents": [ { "artifactId": "component-c2", "description": " ...", // ... } ], "elementaryComponents": [ { "artifactId": "component-c1", "description": " ...", // ... } ], "utilities": [ { "artifactId": "utility-u1", "description": " ...", // ... } ] }
The artifacts property
The artifacts
property of the manifest is object containing the definition of each app, compound component, elementary component and utility belonging to the webpackage (Check this for more information). Below we will provide a brief description of the properties used for defining an artifact within the manifest.
Property | Observation | Constraint | |||
---|---|---|---|---|---|
app | compoundComponent | elementaryComponent | utility | ||
artifactId | A name for this artifact. It should be unique within the webpackage | Required | Required | Required | Required |
description | Description of this artifact: responsibility, usage scenarios | Optional | Optional | Optional | Optional |
runnables | Resources that are actually runnable in a users web browser | Required | Optional | Optional | Optional |
resources | Contains the first-level resources, which will be used by the artifact | Optional | Required | Required | Required |
dependencies | 0 or more artifacts needed for this artifact to work properly. For the sake of backwards compatibility down to model version 8 you can reference endpoints as well. Note: 'webpackage': 'this' refers artifact(s) of this webpackage | Optional | Optional | Optional | Optional |
dependencyExcludes | 0 or more artifacts, which will be excluded from dependency tree. | Optional | Optional | Optional | Optional |
slots | 1 or more slots to exchange data with other elementaries or compounds | Not used | Optional | Optional | Not used |
members | Referenced components (elementaries or compounds) acting as members of this compound component | Not used | Required | Not used | Not used |
connections | List of connections between the members and between members and this compound component | Not used | Required | Not used | Not used |
inits | List of slot initializations of the compound and member component(s) | Not used | Optional | Not used | Not used |
An example of a compoundComponent
definition is presented:
{ ... "artifacts": { ... "compoundComponents": [ { "artifactId": "compound-component", "description": "This is a compound component", "runnables": [ { "name": "demo", "path": "/demo/index.html", "description": "Demo app..." } ], "slots": [ { "slotId": "input", "type": "string", "direction": [ "input" ], "value": "inputText" } ], "members": [ { "memberId": "firstMember", "artifactId": "member-artifact-id" } ], "connections": [ { "connectionId": "input", "source": { "slot": "input" }, "destination": { "memberIdRef": "firstMember", "slot": "firstMemberInput" } } ], "inits": [ { "slot": "type", "value": "text", "memberIdRef": "input" } ], "resources": [ "css/compound-component.css" ], "dependencies": [ { "artifactId": "member-artifact-id" } ] } ], ... }