This is part of the [ES-Git](https://github.com/es-git/es-git) project.


0.10.0a year ago4 years agoMinified + gzip package size for @es-git/load-as-mixin in KB



This is part of the ES-Git project.


npm install --save @es-git/load-as-mixin


Mix this in with an IObjectRepo.

This mixin makes it easier to load objects from the repo. Each method takes a hash and attempts to load the object with that hash. If the object does not exist or is not of the type exected, an Error is thrown.

import objectsMixin from '@es-git/objects-mixin';
import loadAsMixin from '@es-git/load-as-mixin';
import MemoryRepo from '@es-git/memory-repo';

const Repo = mix(MemoryRepo)

const repo = new Repo();
const text = await repo.loadText(hash);
const tree = await repo.loadTree(hash);



interface ILoadAsRepo {
  loadBlob(hash : Hash) : Promise<Uint8Array>
  loadText(hash : Hash) : Promise<string>
  loadTree(hash : Hash) : Promise<TreeBody>
  loadCommit(hash : Hash) : Promise<CommitBody>
  loadTag(hash : Hash) : Promise<TagBody>

type Hash = string;

type TreeBody = {
  [key : string] : ModeHash

type ModeHash = {
  readonly mode : Mode
  readonly hash : string

type CommitBody = {
  readonly tree : string
  readonly parents : string[]
  readonly author : Person
  readonly committer : Person
  readonly message : string

type Person = {
  readonly name : string
  readonly email : string
  readonly date : Date | SecondsWithOffset

type SecondsWithOffset = {
  readonly seconds : number
  readonly offset : number

type TagBody = {
  readonly object : string
  readonly type : string
  readonly tag : string
  readonly tagger : Person
  readonly message : string

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.