Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

r2-streamer-js

readium6.5kBSD-3-Clause1.0.51TypeScript support: included

Readium 2 'streamer' for NodeJS (TypeScript)

readium, readium2, streamer, EPUB, TypeScript, JavaScript, ES5, ES6, ECMAScript 2015, ECMAScript 6, ES7, ECMAScript 2016, ECMAScript 7, ES8, ECMAScript 2017, ECMAScript 8

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

Changelog

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).

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/

(alternatively, GitHub mirror with semantic-versioning release tags: https://github.com/edrlab/r2-streamer-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-streamer-js/dist/**, so this package can be used directly in a TypeScript project.

Example usage:

// from the index file
import { Server } from "r2-streamer-js";

// ES5 import (assuming node_modules/r2-streamer-js/):
import { Server } from "r2-streamer-js/dist/es5/src/http/server";

// ... or alternatively using a convenient path alias in the TypeScript config (+ WebPack etc.):
import { Server } from "@r2-streamer-js/http/server";

Dependencies

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

A package-lock.json is provided (modern NPM replacement for npm-shrinkwrap.json).

A yarn.lock file is currently not provided at the root of the source tree.

Continuous Integration

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

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

Live demos

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

https://streamer.edrlab.org

Version(s), Git revision(s)

NPM package (latest published):

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

Alternatively, GitHub mirror with semantic-versioning release tags:

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

Latest deployment:

https://streamer.edrlab.org/version

Developer quick start

Command line steps (NPM, but similar with 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) 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 server-debug -- PATH_TO_EPUB_OR_DIR " -1" (ES8-2017 dist, path is relative or absolute, -1 means no limits for HTTP header prefetch Links) 8) or: npm run start -- 99 (ES6-2015 dist, default ./misc/epubs folder, the 99 value overrides the default maximum number of HTTP header prefetch Links)

Documentation

Basic usage

// ES5 import (assuming node_modules/r2-streamer-js/):
import { Server } from "r2-streamer-js/dist/es5/src/http/server";

// ... or alternatively using a convenient path alias in the TypeScript config (+ WebPack etc.):
import { Server } from "@r2-streamer-js/http/server";

// Constructor parameter is optional:
// disableDecryption: true
// disableOPDS
// disableReaders: true
// disableRemotePubUrl: true to deactivate
const server = new Server({
  disableDecryption: false, // deactivates the decryption of encrypted resources (Readium LCP).
  disableOPDS: true, // deactivates the HTTP routes for the OPDS "micro services" (browser, converter)
  disableReaders: true, // deactivates the built-in "readers" for ReadiumWebPubManifest (HTTP static host / route).
  disableRemotePubUrl: true, // deactivates the HTTP route for loading a remote publication.
  maxPrefetchLinks: 5, // Link HTTP header, with rel = prefetch, see server.ts MAX_PREFETCH_LINKS (default = 10)
});

// First parameter: port number, zero means default (3000),
// unless specified via the environment variable `PORT` (process.env.PORT).
// Tip: the NPM package `portfinder` can be used to automatically find an available port number.
const url = await server.start(3000, false);

// Second constructor parameter: if true, HTTPS instead of HTTP, using a randomly-generated self-signed certificate.
// Also validates encrypted HTTP header during request-request cycles, so should only be used in runtime
// contexts where the client side has access to the private encryption key (i.e. Electron app, see r2-navigator-js)
console.log(server.isSecured()); // false

// A client app that is capable of setting HTTP headers for every request originating from content webviews
// can obtain the special encrypted header using this function:
// (as used internally by the Electron-based `r2-navigator-js` component to secure the transport layer)
const nameValuePair = server.getSecureHTTPHeader(url + "/PATH_TO_RESOURCE");
console.log(nameValuePair.name);
console.log(nameValuePair.value);

// http://127.0.0.1:3000
// Note that ports 80 and 443 (HTTPS) are always implicit (ommitted).
console.log(url);

// `serverInfo.urlScheme` ("http")
// `serverInfo.urlHost` ("127.0.0.1")
// `serverInfo.urlPort` (3000)
console.log(server.serverInfo());

// Calls `uncachePublications()` (see below)
server.stop();

console.log(server.isStarted()); // false

To serve a /robots.txt file that completely disables search robots:

// Call this before `server.start()`
server.preventRobots();

To add custom HTTP routes:

// Call these before `server.start()`.
// They are equivalent to `app.use()` and `app.get()`, where `app` is the underlying Express instance:

server.expressUse("/static-files", express.static("/path/to/files", {
  dotfiles: "ignore",
  etag: true,
  fallthrough: false,
  immutable: true,
  index: false,
  maxAge: "1d",
  redirect: false,
}));

server.expressGet(["/hello.html"], (req: express.Request, res: express.Response) => {

  // Optionally, to add permissive CORS headers to the HTTP response
  server.setResponseCORS(res);

  res.status(200).send("<html><body>Hello</body></html>");
});

To register publications references (local filesystem paths) inside the internal server state (which is used to create the OPDS2 feed, see below):

// This can be called before or after `server.start()`:

// the returned array contains URL routes to the ReadiumWebPubManifests,
// e.g. `/pub/ID/manifest.json`, where `ID` is the base64 encoding of the registered path.
// Note that the returned base64 URL path components are already URI-encoded (escaped).
// (`=` and `/` are typically problematic edge-cases)
const publicationURLs = server.addPublications(["/path/to/book.epub"]);

// ...then:
const publicationPaths = server.getPublications(); // ["/path/to/book.epub"]

// ...and (calls `uncachePublication()`, see below):
const publicationURLs = server.removePublications(["/path/to/book.epub"]);

To get the OPDS2 feed for the currently registered publications:

// This launches a potentially time-consuming Node process that scans (loads) each registered Publication,
// and stores the generated OPDS2 feed inside a temporary filesystem location.
// So this returns `undefined` at the first call, and the client must invoke the function again later.
// Note that both `addPublications()` and `removePublications()` clear the OPDS2 feed entirely,
// requiring its subsequent re-generation (full scan of registered publication paths).
// (poor design, but at this stage really just an OPDS2 demo without real use-case)
const opds2 = server.publicationsOPDS();

To actually load+parse a publication reference (local filesystem path) into a ReadiumWebPubManifest Publication instance, stored in the server's state:

// The Publication object model is defined in `r2-shared-js`
const publication = await server.loadOrGetCachedPublication("/path/to/book.epub");

// The above is basically a lazy-loader that checks the cache before loading+parsing a publication,
// equivalent to:
const publication = server.cachedPublication("/path/to/book.epub");
if (!publication) {
  publication = ...; // load and parse "/path/to/book.epub"
  server.cachePublication("/path/to/book.epub", publication);
}

console.log(server.isPublicationCached("/path/to/book.epub")); // true

// see also:
// (calls `publication.freeDestroy()` to cleanup allocated objects in the Publication,
// particularly the file handle to the underlying zip/EPUB/CBZ file)
server.uncachePublication("/path/to/book.epub");
server.uncachePublications();

Note that HTTP/remote publications URLs can be loaded into the server's cache and subsequently served by the streamer without prior registration via addPublications(). However, publications from the local filesytem will only be served when registered, even if they are cached (in other words, the HTTP route is disabled when the publication is non-registered).

HTTP API (built-in routes / micro-services)

docs/http.md

Support for remote publications

docs/remote-epub.md

Support for OPDS feeds

docs/opds.md

Support for encrypted content

docs/encryption.md

changelog

Next

Git diff:

Changes:

  • TODO

1.0.51

Build environment: NodeJS 22.14.0, NPM 11.4.2

Changes:

  • NPM package updates, notably Express 5 with breaking changes in route syntax parsing (path-to-regexp)

Git revision info:

Git commit history:

Git diff:

1.0.50

Build environment: NodeJS 22.12.0, NPM 11.0.0

Changes:

  • NPM package updates
  • Updated Flox/Nix (dev)

Git revision info:

Git commit history:

Git diff:

1.0.49

Build environment: NodeJS 22.11.0, NPM 11.0.0

Changes:

  • Docker update
  • Fix: invalidation of in-memory cache of parsed publication manifests, when co-located userkey file is created/deleted/changed (concreate use-case: no need to restart the server when adding LCP userkey to an existing filesystem store of served publications)
  • Support for co-located userkey(s) stores
  • Support for raw encrypted EPUBs (or other LCP publication formats, but only encrypted package resources, not LCP-licensed / no license.lcpl), using co-located contentkey(s) stores
  • NPM package updates
  • Flox/Nix support (dev)

Git revision info:

Git commit history:

Git diff:

1.0.48

Build environment: NodeJS 20.17.0, NPM 10.8.3

Changes:

  • NPM package updates

Git revision info:

Git commit history:

Git diff:

1.0.47

Build environment: NodeJS 20.10.0, NPM 10.2.5

Changes:

  • NPM package updates

Git revision info:

Git commit history:

Git diff:

1.0.46

Build environment: NodeJS 18.16.0, NPM 9.8.0

Changes:

  • NPM package updates
  • Updated JSON Schemas

Git revision info:

Git commit history:

Git diff:

1.0.45

Build environment: NodeJS 18.14.2, NPM 9.5.1

Changes:

  • NPM package updates

Git revision info:

Git commit history:

Git diff:

1.0.44

Build environment: NodeJS 18.12.1, NPM 9.1.1

Changes:

  • NPM package updates
  • Docker deploy (was Heroku)

Git revision info:

Git commit history:

Git diff:

1.0.43

Build environment: NodeJS 16.16.0, NPM 8.15.0

Changes:

  • Streamer server watch mode in publication directory (note: initial scan is flat / not recursive as per the original design brief, but the watcher triggers on deep added/removed files and updates the streamer accordingly)

Git revision info:

Git commit history:

Git diff:

1.0.42

Build environment: NodeJS 16.14.0, NPM 8.5.4

Changes:

  • NPM package updates
  • Fixed cpy-cli (--flat)

Git revision info:

Git commit history:

Git diff:

1.0.41

Build environment: NodeJS 16.14.0, NPM 8.5.4

Changes:

  • NPM package updates
  • Added a new server mode where publication resources exposed in the manifest.json can optionally carry a URL query parameter ("token") that provides a signed expiry timestamp, which the server can validate or reject.

Git revision info:

Git commit history:

Git diff:

1.0.40

Build environment: NodeJS 16.13.1, NPM 8.3.0

Changes:

  • NPM package updates
  • safeguard against callbacks that do not capture async / await thrown errors (exceptions do not automatically transit up the call chain) avoids UnhandledPromiseRejectionWarning

Git revision info:

Git commit history:

Git diff:

1.0.39

Build environment: NodeJS 16.13.1, NPM 8.3.0

Changes:

  • NPM package updates

Git revision info:

Git commit history:

Git diff:

1.0.38

Build environment: NodeJS 16.13.0, NPM 8.1.4

Changes:

  • NPM package updates
  • Handling of sibling _manifest.json ReadiumWebPubManifest for unaltered source publications (DAISY audiobooks use case)

Git revision info:

Git commit history:

Git diff:

1.0.37

Build environment: NodeJS 16.13.0, NPM 8.1.3

Changes:

  • NPM package updates (Node 16 + NPM 8)

Git revision info:

Git commit history:

Git diff:

1.0.36

Build environment: NodeJS 14.18.1, NPM 6.14.15

Changes:

  • NPM package updates
  • NodeJS v14 minimum requirement
  • Removed FileHound lib in TypeScript code

Git revision info:

Git commit history:

Git diff:

1.0.35

Build environment: NodeJS 14.17.5, NPM 6.14.14

Changes:

  • NPM package updates

Git revision info:

Git commit history:

Git diff:

1.0.34

Build environment: NodeJS 14.16.1, NPM 6.14.13

Changes:

  • NPM package updates

Git revision info:

Git commit history:

Git diff:

1.0.33

Build environment: NodeJS 14.15.5, NPM 6.14.11

Changes:

  • NPM package updates
  • Workaround for badly-authored publication relative URLs (double slashes), now route paths automatically collapse multiple slashes in addition to normalising dot segments
  • OPDS browser micro service: added support for LCP license links
  • OPDS samples: added more v1 and v2 feeds, plus convenient browser link of OPDS v2

Git revision info:

Git commit history:

Git diff:

1.0.32

Build environment: NodeJS 14.15.4, NPM 6.14.11

Changes:

  • NPM package updates
  • Updated OPDS documentation / references
  • HTTP caching is now disabled for encrypted resources
  • Updated JSON Schemas for OPDS2, ReadiumWebPubManifest, and LCP/LSD
  • New LCP/LSD "micro service" to visualize JSON (same principles as existing OPDS browser/converter, etc.)

Git revision info:

Git commit history:

Git diff:

1.0.31

Build environment: NodeJS 12.18.2, NPM 6.14.7

Changes:

  • NPM package updates
  • Added Spanish OPDS feed
  • Support for Divina Readium webpub manifest
  • Support for Link Alternate and Children (publication resources integrity check, recursive links)

Git revision info:

Git commit history:

Git diff:

1.0.30

Build environment: NodeJS 12.18.2, NPM 6.14.5

Changes:

  • NPM package updates
  • TypeScript const enum safeguard (isolated modules)

Git revision info:

Git commit history:

Git diff:

1.0.29

Build environment: NodeJS 12.18.1, NPM 6.14.5

Changes:

  • NPM package updates
  • OPDS samples in doc

Git revision info:

Git commit history:

Git diff:

1.0.28

Build environment: NodeJS 12.16.3, NPM 6.14.5

Changes:

  • NPM package updates
  • W3C Sync Media + Media Overlays alignment

Git revision info:

Git commit history:

Git diff:

1.0.27

Build environment: NodeJS 12.16.1, NPM 6.14.4

Changes:

  • NPM package updates
  • Now.sh deployment removal (new model incompatible with the streamer's Express server)

Git revision info:

Git commit history:

Git diff:

1.0.26

Build environment: NodeJS 12.16.1, NPM 6.14.4

Changes:

  • NPM package updates
  • added no-cache to HTTP headers for byte range requests, and added HTTP status 416 for non-supported range
  • added error logging for response streaming
  • added new URL parameter to transformer

Git revision info:

Git commit history:

Git diff:

1.0.25

Build environment: NodeJS 12.15.0, NPM 6.13.7

Changes:

  • NPM package update: UUID (breaking API change)
  • Fixed Travis script and Heroku + Now deployment

Git revision info:

Git commit history:

Git diff:

1.0.24

Build environment: NodeJS 12.15.0, NPM 6.13.7

Changes:

  • NPM package updates
  • Content transformers now pass "session info" semantic-agnostic data (serialized string) so that anonymous HTTP requests can be correlated with specific publications and with their reading session (multiple readers scenario). Also see changes in r2-shared, and of course r2-navigator.
  • Support for AudioBook serving/streaming, local-packed (zipped), local-exploded (unzipped), and remote-exploded.
  • OPDS browse micro-service: OAuth token-based authentication and refresh support.

Git revision info:

Git commit history:

Git diff:

1.0.23

Build environment: NodeJS 12.13.0, NPM 6.12.0

Changes:

  • NPM package updates
  • TAJSON now parses/generates arbitrary JSON properties with typed object
  • OPDS2 browser (with data:image/xxx,Base64 handling, and navigation into the v1-v2 converter / inspector)

Git revision info:

Git commit history:

Git diff:

1.0.22

Build environment: NodeJS 12.13.0, NPM 6.12.0

Changes:

  • NPM updates (OPDS, Shared-JS)

Git revision info:

Git commit history:

Git diff:

1.0.21

Build environment: NodeJS 12.13.0, NPM 6.12.0

Changes:

  • HTTP server CORS preflight support (options method)

Git revision info:

Git commit history:

Git diff:

1.0.20

Build environment: NodeJS 12.13.0, NPM 6.12.0

Changes:

  • NPM updates

Git revision info:

Git commit history:

Git diff:

1.0.19

Build environment: NodeJS 10.16.3, NPM 6.12.0

Changes:

  • HTTP request headers for OPDS fetch, as some servers reject missing UserAgent, etc.
  • Added 3 new test OPDS feeds in documentation
  • NPM updates (including NodeJS v12 for Electron v6)

Git revision info:

Git commit history:

Git diff:

1.0.18

Build environment: NodeJS 10.16.3, NPM 6.11.3

Changes:

  • NPM updates
  • Fixed JSON validator schemas order

Git revision info:

Git commit history:

Git diff:

1.0.17

Build environment: NodeJS 10.16.3, NPM 6.11.3

Changes:

  • NPM updates
  • TypeScript sort imports

Git revision info:

Git commit history:

Git diff:

1.0.16

Build environment: NodeJS 10.16.3, NPM 6.11.3

Changes:

  • NPM updates
  • Fixed OPDS GitBook URL (doc)

Git revision info:

Git commit history:

Git diff:

1.0.15

Build environment: NodeJS 10.16.0, NPM 6.10.2

Changes:

  • NPM updates
  • Buffer.from() API to remove deprecation messages

Git revision info:

Git commit history:

Git diff:

1.0.14

Build environment: NodeJS 10.16.0, NPM 6.9.0

Changes:

  • NPM updates

Git revision info:

Git commit history:

Git diff:

1.0.13

Build environment: NodeJS 10.15.3, NPM 6.9.0

Changes:

  • rel=prefetch HTTP header Links now generated based on ordered sequence of supported media types, rather than order of authored JSON resource array / EPUB manifest items (fixed limitation still applies: maximum number of headers).
  • Build env update: switched from uglify-es to terser (ECMAScript-2015 / ES6 minifier for optional bundled app scripts)

Git revision info:

Git commit history:

Git diff:

1.0.12

Build environment: NodeJS 10.15.3, NPM 6.9.0

Changes:

  • Added CLI parameter handling for server's maximum number of rel=prefetch HTTP header Links

Git revision info:

Git commit history:

Git diff:

1.0.11

Build environment: NodeJS 10.15.3, NPM 6.9.0

Changes:

  • Added server parameter for maximum number of rel=prefetch HTTP header Links

Git revision info:

Git commit history:

Git diff:

1.0.10

Build environment: NodeJS 10.15.3, NPM 6.9.0

Changes:

  • NPM updates

Git revision info:

Git commit history:

Git diff:

1.0.9

Build environment: NodeJS 8.15.1, NPM 6.4.1

Changes:

  • NPM updates
  • JSON Schema updates

Git revision info:

Git commit history:

Git diff:

1.0.8

Build environment: NodeJS 8.15.1, NPM 6.4.1

Changes:

  • NPM updates
  • JSON Schema updates

Git revision info:

Git commit history:

Git diff:

1.0.7

Build environment: NodeJS 8.14.1, NPM 6.4.1

Changes:

  • NPM updates
  • Minor JSON Schema and documentation updates
  • Improved JSON Schema validation reports
  • Fixed JSON Schema cache handling (switch between OPDS2 and ReadiumWebPubManifest)

Git revision info:

Git commit history:

Git diff:

1.0.6

Build environment: NodeJS 8.14.1, NPM 6.4.1

Changes:

  • Updated documentation
  • NPM 6.5.* has regression bugs for global package installs, so revert back to NPM 6.4.1 (which is officially shipped with the NodeJS installer).
  • Now correctly reset LCP basic/test profile userkey when incorrect value passed in URL (used for testing, not real-world usage pattern, not LCP 1.0/production profile)

Git revision info:

Git commit history:

Git diff:

1.0.5

Build environment: NodeJS 8.14.0, NPM 6.5.0

Changes:

  • NPM updates
  • Minor documentation fixes

Git revision info:

Git commit history:

Git diff:

1.0.4

Build environment: NodeJS 8.14.0, NPM 6.5.0

Changes:

  • Fixed regression bug due to the previous base64 pub ID encoding bugfix (slashes). Depending on what lib is used, URLs and URLs components do not necessarilly get automatically decoded/encoded (percent escape for base64 chars, e.g. = and /). We must be very careful because we pass around both full URLs, and URLs components that require encoding (thus the double-encoding issues).

Git revision info:

Git commit history:

Git diff:

1.0.3

Build environment: NodeJS 8.14.0, NPM 6.5.0

Changes:

  • NPM updates (r2-xxx-js)
  • Fixed nasty Base64 encoding edge case with slash character in URLs
  • Moved "secure" HTTP code from navigator to streamer

Git revision info:

Git commit history:

Git diff:

1.0.2

Build environment: NodeJS 8.14.0, NPM 6.5.0

Changes:

  • NPM updates (minor)
  • Replaced deprecated RawGit URLs
  • Removed unnecessary TypeScript import aliases
  • Fixed OPDS2 links in the doc
  • Updated OPDS2 and ReadiumWebPubManifest schemas
  • Improved documentation
  • Improved EPUB type detection in the CLI (local, remote, packed, exploded)

Git revision info:

Git commit history:

Git diff:

1.0.1

Build environment: NodeJS 8.14.0, NPM 6.5.0

Changes:

  • Removed rogue debug console log

Git revision info:

Git commit history:

Git diff:

1.0.0

Build environment: NodeJS 8.14.0, NPM 6.5.0

Changes:

  • Support for chainable transformers (aka content filters), for example decrypt followed by HTML injection (CSS, etc.)
  • NPM updates (minor)
  • README info
  • VisualStudio code tweaks (developer workflow)
  • Semantic versioning bump 1.. (3-digit style now, "-alphaX" suffix caused issues with NPM tooling: updates, lockfile, etc.)

Git revision info:

Git commit history:

Git diff:

1.0.0-alpha.6

Build environment: NodeJS 8.12.0, NPM 6.4.1

Changes:

  • NPM updates (minor)
  • Git revision JSON info now includes NodeJS and NPM version (build environment)
  • OPDS v1 to v2 converter micros-service now supports publication/entry display (+JSON validation)
  • NYPL and Hadrien demo readers updated for spine+readingOrder support

Git revision info:

Git commit history:

Git diff:

1.0.0-alpha.5

Changes:

  • Dependency "ta-json" GitHub semver dependency becomes "ta-json-x" NPM package (fixes https://github.com/readium/r2-testapp-js/issues/10 )
  • Removed TypeScript linter warning message (checks for no unused variables)
  • NPM updates related to the Node TypeScript typings
  • Fixed TypeScript regression bug (3.0.3 -> 3.1.1) related to XML / HTML DOM typings

Git revision info:

Git commit history:

Git diff:

1.0.0-alpha.4

Changes:

  • OPDS micro-services updates (URL routes / paths, added support for OPDS2 browse, absolute URLs)
  • HTML templates, formatted (pretty-print)
  • npm updates (external deps)

Git revision info:

Git commit history:

Git diff:

1.0.0-alpha.3

Changes:

  • correct version in package-lock.json

Git revision info:

Git commit history:

Git diff:

1.0.0-alpha.2

Changes (NPM updates):

  • @types/node
  • @types/uuid
  • r2-utils-js
  • r2-shared-js
  • r2-opds-js
  • r2-lcp-js

Git revision info:

Git commit history:

Git diff:

1.0.0-alpha.1

Changes:

  • initial NPM publish

Git revision info:

Git commit history:

Git diff:

  • initial NPM publish