@applicaster/zapp-pipes-dev-kit
v1.4.7
Published
Development Kit for applicaster Zapp-Pipes datasource plugins
Downloads
2,258
Readme
zapp-pipes-dev-kit
This project contains the Zapp-pipes development kit to develop, test, and deploy zapp-pipes bundles.
How to use
The dev kit enables to different modes for running a zapp-pipes bundle :
- server mode : creates a node.js server which can be used for testing requests.
- library mode : creates a bundle which can be used directly inside an app
the Dev Kit is not intended to build production bundles - but only as a way to develop and test new providers.
Installation
- with npm : run
yarn add @applicaster/zapp-pipes-dev-kit
or - clone this repo locally, install dependencies, and require it by its path
API :
server mode
- Import the
createZappPipesServer
function from the dev kit. This function takes an configuration object as parameter, and returns the full hapi server object, plus a function to start the server
// signature
const config = {
options: { port: 8080, host: "localhost" }, // optionnal. these are the default values
providers: [providers] // array of providers to load
};
// returns
server = {
...hapiServerObject, // hapi server
startServer // function to start the server
};
- Import your provider(s) from other packages or local code, then invoke the method.
import { createZappPipesServer } from "zapp-pipes-dev-kit";
import provider from "your-provider-packeage";
const zappPipesServer = createZappPipesServer({ providers: [provider] });
// zappPipesServer contains the full Hapi properties so you can add routes, invoke the start function directly, etc...
// or simply start the server with its basic configuration
zappPipesServer.startServer();
you can then visit http://{host}:{port}
to test the requests
Library mode
The library mode is used to package the provider(s) as they would when they are built for the app follow these steps :
- Import the
createZappPipesLibrary
function. This functions take an array of providers and the release name (used to identify the library in Sentry) as parameters, and returns aZappPipesGetter
class which is the entry point of the zapp-pipes js bundle
import { createZappPipesLibrary } form 'zapp-pipes-dev-kit';
import provider form 'path-to-your-provider';
class ZappPipesGetter = {
constructor() {
this.get = createZappPipesLibrary({ providers: [provider], release: 'release-name' });
}
}
export { ZappPipesGetter };
// you can now use this class to perform request like the app would.
const zappPipes = new ZappPipesGetter();
zappPipes.get('provider-name://fetchData?type=XXX&url=YYY', console.log);
native bridge injection
In each mode, server or library, you can inject a custom native bridge to allow providers to interact with the environment. the native bridge is a module which is injected in the provider's handler function, and provides several features.
In Zapp-iOS and Zapp-Android, there is no need to define a custom native bridge. But if you're using this package locally, on the server, or on any other environment, you have the ability to do so. Here's what a custom native bridge module looks like, and how to inject it :
// All methods are optional since the custom nativeBridge is merged with the
// default one. Customizing the appData() function will do in most cases
const nativeBridge = {
sendResponse(response, code) {}, // hook invoked when the provider returns its data
log(...messages) {}, // log function which can be used in providers and customised dependending on the environment
throwError(reason) {}, // hook invoked when the providers returns an error
appData() {} // function which gives the provider some data regarding the native environment (platform, bundle identifier, account Id, broadcaster Id, uuid...);
};
// library mode
const zappPipesGetter = createZappPipesLibrary({
providers,
release,
nativeBridge
});
// server mode
const zappPipesServer = createZappPipesServer({
providers,
release,
nativeBridge
});
For development
- Clone this repo
- Install dependencies with
yarn
ornpm install