JSPM

  • Created
  • Published
  • Downloads 640
  • Score
    100M100P100Q110178F
  • License BSD-3-Clause

Readium 2 'streamer' for NodeJS (TypeScript)

Package Exports

  • r2-streamer-js
  • r2-streamer-js/dist/es5/src/http/server
  • r2-streamer-js/dist/es5/src/http/server-assets
  • r2-streamer-js/dist/es5/src/http/server-manifestjson
  • r2-streamer-js/dist/es5/src/http/server-mediaoverlays
  • r2-streamer-js/dist/es5/src/http/server-pub
  • r2-streamer-js/dist/es5/src/http/server-url
  • r2-streamer-js/dist/es6-es2015/src/http/server
  • r2-streamer-js/dist/es7-es2016/src/http/server
  • r2-streamer-js/dist/es8-es2017/src/http/server

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 (r2-streamer-js) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

NodeJS / TypeScript Readium-2 "streamer"

NodeJS implementation (written in TypeScript) and HTTP micro-services (Express middleware) for https://github.com/readium/architecture/tree/master/streamer

License

Build status

NPM David Travis Heroku Now.sh

THIS SOFTWARE IS ALPHA!

Public APIs are not stable. The internal logical architecture and physical code organization is changing frequently.

Prerequisites

  1. https://nodejs.org NodeJS >= 8, NPM >= 5 (check with command line node --version and npm --version)
  2. OPTIONAL: https://yarnpkg.com Yarn >= 1.0 (check with command line yarn --version)

GitHub repository

https://github.com/readium/r2-streamer-js

There is no github.io site for this project (no gh-pages branch).

Wiki documentation is not used, instead there are Markdown files inside the repository (docs folder).

Note that there are currently no API docs for the source code.

NPM package

https://www.npmjs.com/package/r2-streamer-js

Command line install:

npm install r2-streamer-js OR yarn add r2-streamer-js

...or manually add in your package.json:

  "dependencies": {
    "r2-streamer-js": "latest"
  }

The JavaScript code distributed in the NPM package is usable as-is (no transpilation required), as it is automatically-generated from the TypeScript source.

Several ECMAScript flavours are provided out-of-the-box: ES5, ES6-2015, ES7-2016, ES8-2017:

https://unpkg.com/r2-streamer-js/dist/

More information about NodeJS compatibility:

http://node.green

Note that web-browser Javascript is not supported (only NodeJS runtimes).

The type definitions (aka "typings") are included as *.d.ts files in ./node_modules/r2-streamer-js/dist/**, so this package can be used directly in a TypeScript project. Example usage (subject to change, as the APIs and module structure is not finalized yet):

import { * } from "r2-streamer-js";

// or:
import { Publication } from "r2-streamer-js/dist/es5/src/models/publication";

Dependencies

https://david-dm.org/readium/r2-streamer-js

A package-lock.json is provided (modern NPM alternative to npm-shrinkwrap.json).

A yarn.lock file is not provided at the root of the source tree (note that Yarn is not recommended anymore to manage this project's NPM dependencies, due to experiencing several build-breaking bugs in the past).

Continuous Integration

https://travis-ci.org/readium/r2-streamer-js

TravisCI builds are triggered automatically at every Git "push" in the develop branch.

The target runtime is NodeJS 8, and the test runners use the ES8-2017 code transpiled from TypeScript. Note that unit-tests are currently very incomplete.

Live demos

A test server app (not production-ready) is automatically deployed at Heroku, at every Git "push" in the develop branch:

https://readium2.herokuapp.com

A backup / redundant app is manually deployed at Now.sh:

https://readium2.now.sh

Both servers run NodeJS 8, and the apps are based on the ES8-2017 code transpiled from TypeScript.

HTTP CORS headers are served to allow cross-origin / remote API requests.

Version(s), Git revision(s)

NPM package (latest published):

https://unpkg.com/r2-streamer-js/dist/gitrev.json

GitHub "dist" repository (latest pushed):

https://rawgit.com/edrlab/r2-streamer-js-dist/develop/dist/gitrev.json

Heroku app (latest deployed):

https://readium2.herokuapp.com/version

Now app (latest deployed):

https://readium2.now.sh/version

Quick start

Command line steps (default NPM):

  1. cd r2-streamer-js
  2. git status (please ensure there are no local changes, especially in package-lock.json and the dependency versions in package.json)
  3. npm install (initialize local node_modules packages from dependencies declared in package-lock.json)
  4. npm run build:all (invoke the main build script: clean, lint, compile)
  5. npm run server-debug {PATH_TO_EPUB_OR_DIR} (path is relative or absolute)

Command line steps (optional Yarn):

  1. cd r2-streamer-js
  2. git status (please ensure there are no local changes, especially in package-lock.json and the dependency versions in package.json)
  3. yarn install (initialize local node_modules packages from dependencies declared in package.json)
  4. yarn run build:all (invoke the main build script: clean, lint, compile)
  5. yarn run server-debug {PATH_TO_EPUB_OR_DIR} (path is relative or absolute)

Documentation

HTTP API

https://github.com/readium/r2-streamer-js/blob/develop/docs/http.md

Support for remote publications

https://github.com/readium/r2-streamer-js/blob/develop/docs/remote-epub.md

Support for OPDS feeds

https://github.com/readium/r2-streamer-js/blob/develop/docs/opds.md

Support for encrypted content

https://github.com/readium/r2-streamer-js/blob/develop/docs/encryption.md