empty-piral
Version:
An empty app shell with no dependencies.
110 lines (105 loc) • 2.71 kB
TypeScript
/**
* Defines the API accessible from pilets.
*/
export interface PiletApi extends EventEmitter {
/**
* Gets the metadata of the current pilet.
*/
meta: PiletMetadata;
}
/**
* The emitter for Piral app shell events.
*/
export interface EventEmitter {
/**
* Attaches a new event listener.
* @param type The type of the event to listen for.
* @param callback The callback to trigger.
*/
on<K extends keyof PiralEventMap>(type: K, callback: Listener<PiralEventMap[K]>): EventEmitter;
/**
* Attaches a new event listener that is removed once the event fired.
* @param type The type of the event to listen for.
* @param callback The callback to trigger.
*/
once<K extends keyof PiralEventMap>(type: K, callback: Listener<PiralEventMap[K]>): EventEmitter;
/**
* Detaches an existing event listener.
* @param type The type of the event to listen for.
* @param callback The callback to trigger.
*/
off<K extends keyof PiralEventMap>(type: K, callback: Listener<PiralEventMap[K]>): EventEmitter;
/**
* Emits a new event with the given type.
* @param type The type of the event to emit.
* @param arg The payload of the event.
*/
emit<K extends keyof PiralEventMap>(type: K, arg: PiralEventMap[K]): EventEmitter;
}
/**
* Describes the metadata of a pilet available in its API.
*/
export interface PiletMetadata {
/**
* The name of the pilet, i.e., the package id.
*/
name: string;
/**
* The version of the pilet. Should be semantically versioned.
*/
version: string;
/**
* Provides the version of the specification for this pilet.
*/
spec: string;
/**
* Provides some custom metadata for the pilet.
*/
custom?: any;
/**
* Optionally indicates the global require reference, if any.
*/
requireRef?: string;
/**
* Additional shared dependencies from the pilet.
*/
dependencies: Record<string, string>;
/**
* Provides some configuration to be used in the pilet.
*/
config: Record<string, any>;
/**
* The URL of the main script of the pilet.
*/
link: string;
/**
* The base path to the pilet. Can be used to make resource requests
* and override the public path.
*/
basePath: string;
}
/**
* Listener for Piral app shell events.
*/
export interface Listener<T> {
/**
* Receives an event of type T.
*/
(arg: T): void;
}
/**
* The map of known Piral app shell events.
*/
export interface PiralEventMap {
"unload-pilet": PiralUnloadPiletEvent;
[custom: string]: any;
}
/**
* Gets fired when a pilet gets unloaded.
*/
export interface PiralUnloadPiletEvent {
/**
* The name of the pilet to be unloaded.
*/
name: string;
}