JSPM

  • Created
  • Published
  • Downloads 323
  • Score
    100M100P100Q109939F
  • License ISC

Development Kit for applicaster Zapp-Pipes datasource plugins

Package Exports

  • @applicaster/zapp-pipes-dev-kit
  • @applicaster/zapp-pipes-dev-kit/lib/app-pipes

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@applicaster/zapp-pipes-dev-kit) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

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 a ZappPipesGetter 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 or npm install