azure-adls-uploader
TypeScript icon, indicating that this package has built-in type declarations

0.0.2 • Public • Published

Azure Data Lake Storage Uploader

Overview

This is a small client library to upload files to Azure Data Lake Storage (ADLS) using SAS URL. Library uses @azure/storage-file-datalake package to communicate with ADLS.

Installation

  • npm i --save azure-adls-uploader

API

ADLSConfig

Config for ADLSUploader.

  • chunkSize: number - Optional. Default: 104857600 (100mb). It is the max size of chunk to be uppended to ADLS file. ADLSUploader splits files to chunks using this param.
  • chunkUploadRetries: number - Optional. Default: 5. It is the count of retries of one chunk appending.

  • getItemUploadUrl(item: FileItem): Promise<string> | string - Required. Will be executed to get SAS URL for file.

  • onItemStart(item: FileItem): Promise<void> | void - Optional. Will be executed before starting file upload.
  • onItemProgress(item: FileItem): Promise<void> | void - Optional. Will be executed when file uploading progress has updated.
  • onItemComplete(item: FileItem): Promise<void> | void - Optional. Will be executed when file uploading has completed.
  • onItemError(item: FileItem): Promise<void> | void - Optional. Will be executed when file uploading has failed.

  • onStart(): Promise<void> | void - Optional. Will be executed before starting uploading process.
  • onProgress(progress: number): Promise<void> | void - Optional. Will be executed when uploading progress has updated.
  • onComplete(): Promise<void> | void - Optional. Will be executed when uploading process has completed.

FileItem

Represents a file with additional information in ADLSUploader queue.

  • file: File - Readonly. File object.
  • progress: number - Readonly. Uploading progress in percent.
  • uploadedBytes: number - Readonly. Uploaded bytes.
  • isUploading: boolean - Readonly. If FileItem uploading process in progress.
  • payload: any - Optional. Useful to transfer some data between hooks.

ADLSUploader

File uploader. To create use const uploader = new ADLSUploader(adlsConfig);.

  • queue: ReadonlyArray<FileItem> - Readonly. Queue of files to upload.
  • isUploading: boolean - Readonly. If uploading in progress.
  • size: number - Readonly. Size of files in queue.
  • uploadedBytes: number - Readonly. Uploaded bytes from current uploading process.
  • progress: number - Readonly. Progress of current uploading process.

  • addFiles(files: File[] | FileList): void - Add files to queue. Files in queue should have unique names. Adding files with names that have already existed will do nothing.
  • addFile(file: File): void - Add file to queue. Files in queue should have unique names. Adding file with name that has already existed will do nothing.
  • removeItem(file: FileItem): void - Remove FileItem from queue. Will not be removed if uploader currently uploads this file. Will do nothing if file doesn't exist in queue.
  • removeFile(file: File): void - Remove file from queue. Will not be removed if uploader currently uploads this file. Will do nothing if file doesn't exist in queue.
  • clearQueue(): void - Remove all files from queue. If uploader currently uploads file, this file will not be removed.

  • upload(): Promise<void> - Upload files from queue to ADLS.
  • cancel(): void - Cancel uploading process.

Usage example

import {ADLSUploader, ADLSConfig} from 'azure-adls-uploader';

const config: ADLSConfig = {
  getItemUploadUrl: (item: FileItem) => {
    // get sas url functionality
  },
  onItemStart: (item: FileItem) => {
    console.log(`File ${item.file.name}: upload progress start`);
  },
  onItemProgress: (item: FileItem) => {
    console.log(`File ${item.file.name}: upload progress ${item.progress}%`);
  },
  onItemComplete: (item: FileItem) => {
    console.log(`File ${item.file.name}: upload complete`);
  },
  onItemError: (item: FileItem, error) => {
    console.log(`File ${item.file.name}: upload error occured`, error);
  },
  onStart: () => {
    console.log(`Upload start`);
  },
  onProgress: (progress: number) => {
    console.log(`Progress: ${progress}%`);
  },
  onComplete: () => {
    console.log(`Upload complete`);
  }
};

const uploader = new ADLSUploader(config);

// on add file action
function addFile(file: File): void {
  uploader.addFile(file);
}

// on remove file
function removeFile(file: File): void {
  uploader.removeFile(file);
}

// on remove all files
function removeFiles(): void {
  uploader.clearQueue();
}

// on submit
function uploadFiles(): Promise<void> {
  return uploader.upload();
}

// on cancel
function cancelUploading(): void {
  uploader.cancel();
}

Also, you can find basic example on github.

Dependencies (1)

Dev Dependencies (5)

Package Sidebar

Install

npm i azure-adls-uploader

Weekly Downloads

0

Version

0.0.2

License

MIT

Unpacked Size

31.8 kB

Total Files

19

Last publish

Collaborators

  • btitov