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


0.10.0a year ago5 years agoMinified + gzip package size for @es-git/path-to-object-mixin in KB



This is part of the ES-Git project.


npm install --save @es-git/path-to-object-mixin


Mix this in with an IObjectRepo.

This mixin makes it easier to load an object from a commit by path. Provide the hash of the tree and the path, either as a string or as an array of string segments. It returns either a tree, a blob or, if nothing is found, undefined.

import objectsMixin from '@es-git/objects-mixin';
import pathToObject from '@es-git/path-to-object-mixin';
import MemoryRepo from '@es-git/memory-repo';

const Repo = mix(MemoryRepo)

const repo = new Repo();
const object = await repo.loadObjectByPath(hash, 'folder/directory/file.txt');
const object = await repo.loadObjectByPath(hash, ['folder', 'directory', 'file.txt']);

const content = await repo.loadTextByPath(hash, ['folder', 'directory', 'file.txt']);



interface IPathToObjectRepo {
  loadObjectByPath(rootTree : Hash, path : string | string[]) : Promise<TreeObject | BlobObject | undefined>
  loadBlobByPath(rootTree : Hash, path : string | string[]) : Promise<Uint8Array | undefined>
  loadTextByPath(rootTree : Hash, path : string | string[]) : Promise<string | undefined>


type Hash = string;

type BlobObject = {
  readonly type : Type.blob
  readonly body : Uint8Array

type TreeObject = {
  readonly type : Type.tree
  readonly body : TreeBody

type TreeBody = {
  [key : string] : ModeHash

type ModeHash = {
  readonly mode : Mode
  readonly hash : 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.