r2-shared-js
Version:
Readium 2 'shared' for NodeJS (TypeScript)
118 lines (71 loc) • 4.79 kB
Markdown
# NodeJS / TypeScript Readium-2 "shared" models
NodeJS implementation (written in TypeScript) of core models for the Readium2 architecture ( https://github.com/readium/architecture/ ).
[](/LICENSE)
## Build status
[](https://www.npmjs.com/package/r2-shared-js) [](https://david-dm.org/readium/r2-shared-js)
[Changelog](/CHANGELOG.md)
## 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-shared-js
There is no [github.io](https://readium.github.io/r2-shared-js) site for this project (no [gh-pages](https://github.com/readium/r2-shared-js/tree/gh-pages) branch).
## NPM package
https://www.npmjs.com/package/r2-shared-js
Command line install:
`npm install r2-shared-js`
OR
`yarn add r2-shared-js`
...or manually add in your `package.json`:
```json
"dependencies": {
"r2-shared-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-shared-js/dist/
(alternatively, GitHub mirror with semantic-versioning release tags: https://github.com/edrlab/r2-shared-js-dist/tree/develop/dist/ )
The JavaScript code is not bundled, and it uses `require()` statement for imports (NodeJS style).
More information about NodeJS compatibility:
http://node.green
Note that web-browser Javascript is currently not supported (only NodeJS runtimes).
The type definitions (aka "typings") are included as `*.d.ts` files in `./node_modules/r2-shared-js/dist/**`, so this package can be used directly in a TypeScript project.
Example usage:
```javascript
// from index file
import { Publication } from "r2-shared-js/dist/es5/src";
// ES5 import (assuming node_modules/r2-shared-js/):
import { Publication } from "r2-shared-js/dist/es5/src/models/publication";
// ... or alternatively using a convenient path alias in the TypeScript config (+ WebPack etc.):
import { Publication } from "@r2-shared-js/models/publication";
```
## Dependencies
https://david-dm.org/readium/r2-shared-js
A [package-lock.json](https://github.com/readium/r2-shared-js/blob/develop/package-lock.json) is provided (modern NPM replacement for `npm-shrinkwrap.json`).
A [yarn.lock](https://github.com/readium/r2-shared-js/blob/develop/yarn.lock) file is currently *not* provided at the root of the source tree.
## Continuous Integration
TODO (unit tests?)
https://travis-ci.org/readium/r2-shared-js
Badge: `[](https://travis-ci.org/readium/r2-shared-js)`
## Version(s), Git revision(s)
NPM package (latest published):
https://unpkg.com/r2-shared-js/dist/gitrev.json
Alternatively, GitHub mirror with semantic-versioning release tags:
https://raw.githack.com/edrlab/r2-shared-js-dist/develop/dist/gitrev.json
## Developer quick start
Command line steps (NPM, but similar with YARN):
1) `cd r2-shared-js`
2) `git status` (please ensure there are no local changes, especially in `package-lock.json` and the dependency versions in `package.json`)
3) `rm -rf node_modules` (to start from a clean slate)
4) `npm install`, or alternatively `npm ci` (both commands initialize the `node_modules` tree of package dependencies, based on the strict `package-lock.json` definition)
5) `npm run build:all` (invoke the main build script: clean, lint, compile)
6) `ls dist` (that's the build output which gets published as NPM package)
7) `npm run cli PATH_TO_PACKED_OR_EXPLODED_EPUB PATH_TO_OUTPUT_FOLDER OPTIONAL_DECRYPT_KEY` (to parse a publication and convert it to a Readium2 manifest with extracted resources, paths can be relative or absolute)
8) `npm run cli ./misc/epubs/wasteland-otf-obf_LCP_dan.lcpl.epub ./misc/epubs/ dan` (same as above, working example with built-in sample LCP basic/test profile)
9) `npm run cli ./misc/epubs/wasteland-otf-obf_LCP_dan.lcpl.epub ./misc/epubs/ ec4f2dbb3b140095550c9afbbb69b5d6fd9e814b9da82fad0b34e9fcbe56f1cb` (same as above, with SHA256 checksum/hex-digest to avoid plain-text passphrase in console)
10) `npm run cli https://raw.githubusercontent.com/readium/r2-shared-js/develop/misc/epubs/wasteland-otf-obf_LCP_dan.lcpl.epub ./misc/epubs/ dan` (same as above, but with a remote HTTP URL)
## Daisy Integration
[Daisy](/daisy.md)
## Documentation
TODO