piral-base
Version:
The base library for creating a Piral instance.
80 lines (57 loc) • 3.04 kB
Markdown
[](https://piral.io)
This is the base library that is required for any Piral instance. It is independent of React, a state container, or anything else. It only brings functionality for loading and evaluating pilets.
For details on the provided API check out the [documentation at the Piral website](https://docs.piral.io) or [on GitHub](https://github.com/smapiot/piral/tree/main/docs).
Creating your own Piral app based on `piral-base` is in general **not recommended**.
The only exception is when a Piral-fork that is based on another technology than React should be created. In any other case please look at `piral-core` library or the full `piral` framework.
More information can be found in our [documentation at the Piral website](https://docs.piral.io).
By default, the loading of pilets assumes standard metadata. In general, however, the `loadPilet` option allows to bring in other ways.
One example of using `loadPilet` to extend Piral beyond its initial capabilities is to use SystemJS for loading the pilets.
```js
startLoadingPilets({
// ...
loadPilet(meta) {
return System.import(meta.name)
.catch((err) => {
// error
return {};
})
.then((moduleContent) => ({
...meta,
...moduleContent,
}))
.then((pilet: Pilet) => {
if (typeof pilet.setup !== 'function') {
pilet.setup = () => {};
}
return pilet;
});
},
});
```
Another example is to define loader overrides using the `spec` identifier.
The `loaders` option can be passed in an object where the spec to override is provided as key:
```js
startLoadingPilets({
// ...
loaders: {
'esm': (meta) => {
// ...
return pilet;
},
'systemjs': (meta) => {
// ...
return pilet;
}
},
});
```
The spec key is defined by the API response via the `spec` field. This is mostly used with custom specified pilet formats indicated via the `v:x` version marker. A version marker such as `//@pilet v:x(esm)` would lead to use the `esm` override given as an example above.
The two options, `loadPilet` and `loaders` are not exclusive. The `loadPilet` option defines the default, while `loaders` define spec-dependent overrides.
Piral is released using the MIT license. For more information see the [license file](./LICENSE).