filelist-utils

filelist-utils

NPM version build status Test coverage npm download

Create a FileCollection from various sources.

Introduction

In order to make compatible code between the browser and node and to allow drag and drop of a folder it is useful to an abstraction level.

This package allows to create a FileCollection from various sources:

  • a FileList (that implements an Iterator of File).
  • a relative path (with its basedir)
  • a webservice that returns a JSON containing an array of object that has the following properties: relativePath, name, lastModified, size

A FileCollection has an iterator on FileCollectionItem that has the following properties:

  • lastModified: number;
  • name: string;
  • relativePath: string;
  • size: number;
  • arrayBuffer(): Promise;
  • stream(): ReadableStream;
  • text(): Promise;

Load and Save from remote server

// You should have a webservice that returns this kind of object

const source = {
files: [
{
name: 'data.zip',
size: 1589,
relativePath: 'dataUnzip/data.zip',
lastModified: 1664430693588,
},
{
name: 'a.txt',
size: 1,
relativePath: 'dataUnzip/dir1/a.txt',
lastModified: 1664430693588,
},
],
baseURL: 'http://localhost/',
};
const fileCollection = fileCollectionFromSource(source);

Installation

npm i filelist-utils

Usage

import { fileCollectionFromPath } from 'filelist-utils';

const fileCollection = fileCollectionFromPath(__dirname);
import { fileCollectionFromZip } from 'filelist-utils';

const zip = readFileSync(join(__dirname, 'test.zip'));
const fileCollection = fileCollectionFromZip(zip);

License

MIT