8000 GitHub - cheminfo/file-collection
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

cheminfo/file-collection

Repository files navigation

< 8000 div class="markdown-heading" dir="auto">

file-collection

NPM version build status Test coverage npm download

Library to manage large amount of files coming from different sources

Introduction

This library allows to manipulate a large amount of files coming from local or remote sources.

This library allows to have the same code in the browser and in nodejs.

This package allows to create a file-collection than can further be saved as a ium file (zip file containing all the data and an index.json file).

The structure of the zip file is at follow:

  • index.json
  • data/
    • all the files

Installation

npm i file-collection

Basic usage

Append a browser filelist

import { FileCollection } from 'file-collection';

const fileList; // a fileList resulting from a drag / drop in the browser
const fileCollection = new FileCollection();
await fileCollection.appendFileList(fileList);

// get a zip file that can be reload later
const iumFile = fileCollection.toIum();

// list the content of the fileCollection
for (const file of fileCollection) {
  console.log(file.name);
  console.log(await file.text());
}

Reload a 'ium' file

import { fromIum } from 'file-collection';

const fileCollection = await fromIum(iumFile);

for (const file of fileCollection) {
  console.log(file.name);
  console.log(await file.text());
}

Using in a react component

A webSource is a URL to data like for example https://image-js.github.io/image-dataset-demo/index.json:

<MyComponent webSource onchange={(fileCollection) => {}}></MyComponent>

Inside the component we should:

const fileCollection = new FileCollection();
if (webSource) fileCollection.appendWebSource(webSource);

If we drag / drop some files we should:

fileCollection.appendFileList(fileList);

If we drag / drop a 'ium' file we should replace the full fileCollection

const fileCollection = FileCollection.fromIum(iumArrayBuffer);
const state = fileCollection.get('state');

If we want to save as a ium file:

fileCollection.set('state', myCurrentState);
const toSave = fileCollection.toIum();

When fileCollection changes we can always retrieve the various files using:

const files = [...fileCollection]; // fileCollection is iterable on its files property

Referencing files in the fileCollection

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  
0