npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

moontech-file-upload

v0.25.0

Published

## About Based on ng2-file-upload

Downloads

33

Readme

moontech-file-upload

About

Based on ng2-file-upload

Allow you to upload a file or files getting all info that you need

Allow paralel upload

Installation

To install this library, run:

$ npm install moontech-file-upload --save

Consuming your library

Once you have published your library to npm, you can import your library in any Angular application by running:

$ npm install @angular/moontech-file-upload

and then from your Angular AppModule:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';

// Import your library
import { MoontechFileUploadModule } from 'moontech-file-upload';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,

    // Specify your library as an import
    MoontechFileUploadModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

You can use FileItem class to instantiate a file and upload it for the configured server

import {FileItem, FileItemEventResponse, QueueController, UploadOptions, FilterFunction, FileLikeObject} from 'moontech-file-upload';
import {HttpHeaders} from '@angular/common/http';

const customValidator: FilterFunction = {
    name: 'Allways Valid',
    fn: (item: FileLikeObject, options: UploadOptions) => {
        console.log("Im valid");
        return true;
    }
}; 
const uploadOptions: UploadOptions = {
        allowedFileType: ['image', 'video'], //used for validation
        autoUpload: false, //if true on instantiate a file item it will start upload 
        filters: [customValidator], //custom validator used for validate method
        headers: new HttpHeaders({
                         'Content-Type': 'application/json',
                         'Authorization': 'Bearer ' + this.acessToken,
                         'Accept': 'application/vnd.vimeo.*+json;version=3.4',
                }),
        method: 'POST',
        maxFileSize: 100000, //used for validation
        url: "http://www.test.upload.com/upload", //url to send file
        disableMultipart: true, //if true will not send a form data in the request
        itemAlias: 'user-image', //name for form data
        formatDataFunction: (item: FileItem) => {
                                return item._file;
                            } //used to format file before upload
};
const fileItem = new FileItem(file, uploadOptions);
try {
    fileItem.validateFile(); //throw error with name of the validation function
    fileItem.onSuccess().subscribe((value: FileItemEventResponse) => {
       //on success 
    });
    fileItem.onPause().subscribe((value: FileItemEventResponse) => {
        //on pause
    });
    fileItem.onError().subscribe((value: FileItemEventResponse) => {
        // on error
    });
    fileItem.onCancel().subscribe((value: FileItemEventResponse) => {
        //on cancel
    });
    fileItem.onProgress().subscribe(value => {
        value.item; 
        value.progress;
        value.bytesSent;
    });
    fileItem.setOptions({});//override old options
    fileItem.upload(); //upload file
    fileItem.pause(); //pause file and slice actual file to start in fileItem.bytesSent
    fileItem.upload(); //will send file with sliced file
    fileItem.resetToOriginalFile(); //reset file
    fileItem.sliceFile(20); //slice file
    fileItem.cancel(); //cancel upload and reset file
    fileItem.progress //progress of upload
}catch (e) {
  console.log(e);
}

File Items can be used with a QueueController that will control total progress of all uploads upload all files in paralel if you want.

import {FileItem, FileItemEventResponse, QueueController, UploadOptions, FilterFunction, FileLikeObject} from 'moontech-file-upload';
import {HttpHeaders} from '@angular/common/http';

const queue = new QueueController({
    paralel: true, //upload in paralel
    removeAfterUpload: false, //remove fileItem from queue after upload success
    queueLimit: 200, //max fileItems in queue
});
const customValidator: FilterFunction = {
    name: 'Allways Valid',
    fn: (item: FileLikeObject, options: UploadOptions) => {
        console.log("Im valid");
        return true;
    }
}; 
const uploadOptions: UploadOptions = {
        allowedFileType: ['image', 'video'], //used for validation
        autoUpload: false, //if true on instantiate a file item it will start upload 
        filters: [customValidator], //custom validator used for validate method
        headers: new HttpHeaders({
                         'Content-Type': 'application/json',
                         'Authorization': 'Bearer ' + this.acessToken,
                         'Accept': 'application/vnd.vimeo.*+json;version=3.4',
                }),
        method: 'POST',
        maxFileSize: 100000, //used for validation
        url: "http://www.test.upload.com/upload", //url to send file
        disableMultipart: true, //if true will not send a form data in the request
        itemAlias: 'user-image', //name for form data
        formatDataFunction: (item: FileItem) => {
                                return item._file;
                            } //used to format file before upload
};
const fileItem = new FileItem(file, uploadOptions);
queue.addFileItemsToQueue([fileItem]);
queue.addFilesToQueue([file]); //create a file Item

queue.onItemCancel() //observable to item cancel
queue.onItemError() //observable to item error
queue.onItemPause() //observable to item pause
queue.onItemProgress() //observable to progress
queue.onItemUploaded() //observable to iten finish

queue.uploadAll();
queue.cancelAll(); //cancel all
queue.clearQueue(); //clear queue
queue.getNotUploadedItems();
queue.getNotUploadedItems();
queue.isUploading //if is any file uploading
queue.queueProgress //actual progress

Development

To generate all *.js, *.d.ts and *.metadata.json files:

$ npm run build

To lint all *.ts files:

$ npm run lint

License

MIT © Luã Faria