Socket
Socket
Sign inDemoInstall

file-worker

Package Overview
Dependencies
0
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.0.7 to 0.0.10

.travis.yml

4

dist/amd/FileWorker.d.ts

@@ -6,7 +6,11 @@ declare module "types" {

export interface FileWorkerReader {
read(length: number): void;
readAll(): void;
onData: FileWorkerOnDataHandler;
onFinished: Function;
}
export interface FileWorkerWriter {
write(data: any): void;
writeOnce(data: any): void;
finish(): void;
}

@@ -13,0 +17,0 @@ export interface FileWorkerProcessor extends Function {

@@ -48,3 +48,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

this.file = file;
this.currentReader = 0;
}
FileWorkerReaderImplement.prototype.read = function (length) {
var maxLength = Math.min(this.file.size, this.currentReader + length);
if (this.currentReader == this.file.size) {
this.onFinished();
}
else {
var blob = this.file.slice(this.currentReader, maxLength);
this.currentReader = maxLength;
var fileReader = new FileReaderSync();
var arrayBuffer = fileReader.readAsArrayBuffer(blob);
this.onData(arrayBuffer);
if (this.currentReader == this.file.size) {
this.onFinished();
}
}
};
FileWorkerReaderImplement.prototype.readAll = function () {

@@ -54,2 +71,3 @@ var fileReader = new FileReaderSync();

this.onData(arrayBuffer);
this.onFinished();
};

@@ -60,6 +78,13 @@ return FileWorkerReaderImplement;

var file = e.data;
var writerBuffer = [];
var reader = new FileWorkerReaderImplement(file);
var writer = {
write: function (data) {
writerBuffer.push(data);
},
writeOnce: function (data) {
self.postMessage(data);
},
finish: function () {
self.postMessage(writerBuffer);
}

@@ -71,3 +96,3 @@ };

catch (e) {
self.postMessage(e);
self.postMessage({ error: e.toString() });
}

@@ -74,0 +99,0 @@ });

@@ -136,3 +136,19 @@ ;(function(global) {

this.file = file;
this.currentReader = 0;
}
FileWorkerReaderImplement.prototype.read = function (length) {
var maxLength = Math.min(this.file.size, this.currentReader + length);
if (this.currentReader == this.file.size) {
this.onFinished();
} else {
var blob = this.file.slice(this.currentReader, maxLength);
this.currentReader = maxLength;
var fileReader = new FileReaderSync();
var arrayBuffer = fileReader.readAsArrayBuffer(blob);
this.onData(arrayBuffer);
if (this.currentReader == this.file.size) {
this.onFinished();
}
}
};
FileWorkerReaderImplement.prototype.readAll = function () {

@@ -142,2 +158,3 @@ var fileReader = new FileReaderSync();

this.onData(arrayBuffer);
this.onFinished();
};

@@ -148,6 +165,13 @@ return FileWorkerReaderImplement;

var file = e.data;
var writerBuffer = [];
var reader = new FileWorkerReaderImplement(file);
var writer = {
write: function (data) {
writerBuffer.push(data);
},
writeOnce: function (data) {
self.postMessage(data);
},
finish: function () {
self.postMessage(writerBuffer);
}

@@ -158,3 +182,3 @@ };

} catch (e) {
self.postMessage(e);
self.postMessage({ error: e.toString() });
}

@@ -161,0 +185,0 @@ });

@@ -5,7 +5,11 @@ export interface FileWorkerOnDataHandler extends Function {

export interface FileWorkerReader {
read(length: number): void;
readAll(): void;
onData: FileWorkerOnDataHandler;
onFinished: Function;
}
export interface FileWorkerWriter {
write(data: any): void;
writeOnce(data: any): void;
finish(): void;
}

@@ -12,0 +16,0 @@ export interface FileWorkerProcessor extends Function {

@@ -8,3 +8,20 @@ "use strict";

this.file = file;
this.currentReader = 0;
}
FileWorkerReaderImplement.prototype.read = function (length) {
var maxLength = Math.min(this.file.size, this.currentReader + length);
if (this.currentReader == this.file.size) {
this.onFinished();
}
else {
var blob = this.file.slice(this.currentReader, maxLength);
this.currentReader = maxLength;
var fileReader = new FileReaderSync();
var arrayBuffer = fileReader.readAsArrayBuffer(blob);
this.onData(arrayBuffer);
if (this.currentReader == this.file.size) {
this.onFinished();
}
}
};
FileWorkerReaderImplement.prototype.readAll = function () {

@@ -14,2 +31,3 @@ var fileReader = new FileReaderSync();

this.onData(arrayBuffer);
this.onFinished();
};

@@ -20,6 +38,13 @@ return FileWorkerReaderImplement;

var file = e.data;
var writerBuffer = [];
var reader = new FileWorkerReaderImplement(file);
var writer = {
write: function (data) {
writerBuffer.push(data);
},
writeOnce: function (data) {
self.postMessage(data);
},
finish: function () {
self.postMessage(writerBuffer);
}

@@ -31,3 +56,3 @@ };

catch (e) {
self.postMessage(e);
self.postMessage({ error: e.toString() });
}

@@ -34,0 +59,0 @@ });

8

package.json
{
"name": "file-worker",
"version": "0.0.7",
"version": "0.0.10",
"description": "Process files asynchronous at browser with web worker.",

@@ -20,5 +20,8 @@ "main": "dist/commonjs/index.js",

"gulp-amdclean": "^1.1.1",
"gulp-rename": "^1.2.2",
"gulp-typescript": "^3.1.5",
"gulp-uglify": "^2.1.0",
"gulp-webserver": "^0.9.1",
"jasmine-core": "^2.5.2",
"karma": "^1.5.0",
"karma-chrome-launcher": "^2.0.0",

@@ -31,6 +34,3 @@ "karma-firefox-launcher": "^1.0.1",

"typescript": "^2.2.1"
},
"dependencies": {
"karma": "^1.5.0"
}
}
JavaScript File Worker
======================
*Process file asynchronously at Web Worker at browser.*
***Process files asynchronously by Web Worker in browsers.***

@@ -20,13 +20,18 @@ Web Worker is a browser technology that allow some JavaScript code

[![Build Status](https://travis-ci.org/imdreamrunner/js-file-worker.svg?branch=master)](https://travis-ci.org/imdreamrunner/js-file-worker)
## Usage
*Step 1: Import the file*
**Step 1: Import the file**
You can do it in HTML.
You can [download the latest release](https://github.com/imdreamrunner/js-file-worker/releases)
for browser and import it in HTML.
```html
<script src="../../dist/browser/FileWorker.js"></script>
<script src="FileWorker.js"></script>
```
Or using NPM if you use webpack or TypeScript.
Or using NPM if you use webpack or TypeScript. This package
is available on NPM called [file-worker](https://www.npmjs.com/package/file-worker)
as well.

@@ -37,4 +42,20 @@ ```bash

*Step 2: Write file processor*
To use this package in JavaScript, you can require it
```javascript
var FileWorker = require("file-worker");
```
or import it.
```javascript
import FileWorker from "file-worker";
```
Because this library is written in TypeScript, if you are using
an editor like WebStorm, you shall be able to get the handy
auto-completion.
**Step 2: Write file processor**
Assuming you want to compute the MD5 of your file, you can write

@@ -48,3 +69,3 @@ a processor like this. However there is an existing library

reader.onData = function (bytes) {
writer.write(computeMD5(bytes));
writer.writeOnce(computeMD5(bytes));
};

@@ -62,3 +83,3 @@ reader.readAll();

*Step 3: Get processed content*
**Step 3: Get processed content**

@@ -68,4 +89,9 @@ Assuming you get a File object from the browser's FileAPI. You can

```
FileWorker.readFile(file, byteProcessor)
`FileWorker.readFile` is an `async` function, i.e. it is non-blocking and
will return a promise. You can either use `.then` and callback to get the result.
If you use it in browser or prefer traditional `.then`:
```javascript
FileWorker.readFile(file, md5Processor)
.then(function(result) {

@@ -76,3 +102,24 @@ console.log(result);

`FileWorker.readFile` is an `async` function. You can either use `.then`
and callback to get the result.
Or call it with await.
```javascript
const getMD5(file) = async () => { await FileWorker.readFile(file, md5Processor); }
```
## License
**ISC License**
Copyright (c) 2017, FileWorker Authors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

@@ -6,4 +6,6 @@ export interface FileWorkerOnDataHandler extends Function {

export interface FileWorkerReader {
read(length:number):void;
readAll():void;
onData: FileWorkerOnDataHandler;
onFinished: Function;
}

@@ -13,2 +15,4 @@

write(data:any):void;
writeOnce(data:any):void;
finish():void;
}

@@ -15,0 +19,0 @@

@@ -11,9 +11,29 @@ import {FileWorkerWriter, FileWorkerProcessor, FileWorkerReader, FileWorkerOnDataHandler} from "./types";

class FileWorkerReaderImplement implements FileWorkerReader {
onFinished: Function;
onData: FileWorkerOnDataHandler;
private file : File;
private currentReader : number;
constructor(file: File) {
this.file = file;
this.currentReader = 0;
}
read(length:number) {
const maxLength = Math.min(this.file.size, this.currentReader + length);
if (this.currentReader == this.file.size) {
this.onFinished();
} else {
const blob = this.file.slice(this.currentReader, maxLength);
this.currentReader = maxLength;
const fileReader = new FileReaderSync();
const arrayBuffer = fileReader.readAsArrayBuffer(blob);
this.onData(arrayBuffer);
if (this.currentReader == this.file.size) {
this.onFinished();
}
}
}
readAll() {

@@ -23,2 +43,3 @@ const fileReader = new FileReaderSync();

this.onData(arrayBuffer);
this.onFinished();
}

@@ -29,6 +50,13 @@ }

const file: File = <File>e.data;
const writerBuffer : any[] = [];
const reader : FileWorkerReader = <FileWorkerReader>new FileWorkerReaderImplement(file);
const writer : FileWorkerWriter = <FileWorkerWriter>{
write: (data: any) => {
writerBuffer.push(data);
},
writeOnce: (data: any) => {
self.postMessage(data);
},
finish: () => {
self.postMessage(writerBuffer);
}

@@ -39,3 +67,3 @@ };

} catch (e) {
self.postMessage(e);
self.postMessage({error: e.toString()});
}

@@ -42,0 +70,0 @@ });

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc