You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Cat /dev/Nulo dd6c719809
1 week ago
src uploadBlobs: don't fail wrongly on verification 1 week ago
.gitignore chore: package with Babel 1 year ago
.npmrc @nulo registry 2 months ago
LICENSE Initial commit 1 year ago
README.adoc docs(README): consistent syntax, mark tentative API 1 year ago
package.json 0.2.7 1 week ago
pnpm-lock.yaml 0.2.0 pnpm 2 months ago
tsconfig.json Make it compatible with browser 2 months ago


This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

Aspirationally, a set of helpers

to simplify working with Git LFS through Isomorphic Git.

== Installation

Peer dependencies:

- Isomorphic Git ^1.7.0
- @aws-crypto/sha256-universal ^2.0.0

== Usage

As of 0.1.6, API offers the following functions:

- `downloadBlobFromPointer({ http, headers, url, auth }, lfsPointer) => Buffer`
where `http` is an `HttpClient` as supported by Isomorphic Git,
URL is repository URL
and `lfsPointer` is an object returned by `readPointer()`.
Uses cache, if the object had been previously retrieved.

- `uploadBlob({ http, headers, url, auth }, buffer) => LFSPointerInfo`
where first argument is the same as for the download function,
and returned pointer info can be used to write a pointer file in place
of actual object in Git repository (pass it through `formatPointerInfo()`).

- `readPointer({ dir, gitdir, content }) => LFSPointer`
where `dir`, `gitdir` behavior mimics that of Isomorphic Git,
and `content` is a `Buffer`.

- `readPointerInfo(buffer) => LFSPointerInfo`
reads a properly formatted LFS pointer within a Git repository.

- `formatPointerInfo(lfsPointerInfo) => Buffer`
converts pointer info to appropriately formatted blob
suitable to be stored in Git repository in place of actual object data.

- `populateCache(workDir, ref?)`
where `workDir` is a path to working directory,
and `ref` should probably be left at the default `"HEAD"`.
NOTE: Very tentative API.

== Known shortcomings

- Works in Node runtime only
- @aws-crypto/sha256-universal peer dependency is unnecessary.
If were Node-only we can probably achieve the same using Nodes `crypto` module,
and if not we should place it in actual `dependencies`.

== Considered within scope

- Implement batch uploads and downloads (parallelise requests? use native batch API?)
- Find a way to generalize UA header handling
- Make it work in browser runtime as well (if feasible?)