mirror of https://github.com/kurisufriend/0x40-web
parent
c75dd94c3d
commit
64412c7ed7
@ -1,11 +0,0 @@ |
||||
{ |
||||
"browser": true, |
||||
"laxbreak": true, |
||||
"undef": true, |
||||
"globals": { |
||||
"console": false, |
||||
"escape": false, |
||||
"unescape": false, |
||||
"zip": false |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
@ -1,64 +0,0 @@ |
||||
/// wrapper for pako (https://github.com/nodeca/pako)
|
||||
|
||||
/* globals pako */ |
||||
(function(global) { |
||||
"use strict"; |
||||
|
||||
function Codec(isDeflater, options) { |
||||
var newOptions = { raw: true, chunkSize: 1024 * 1024 }; |
||||
if (options && typeof options.level === 'number') |
||||
newOptions.level = options.level; |
||||
this._backEnd = isDeflater? |
||||
new pako.Deflate(newOptions) : |
||||
new pako.Inflate(newOptions); |
||||
this._chunks = []; |
||||
this._dataLength = 0; |
||||
this._backEnd.onData = this._onData.bind(this); |
||||
} |
||||
Codec.prototype._onData = function _onData(chunk) { |
||||
this._chunks.push(chunk); |
||||
this._dataLength += chunk.length; |
||||
}; |
||||
Codec.prototype._fetchData = function _fetchData() { |
||||
var be = this._backEnd; |
||||
if (be.err !== 0) |
||||
throw new Error(be.msg); |
||||
var chunks = this._chunks; |
||||
var data; |
||||
if (chunks.length === 1) |
||||
data = chunks[0]; |
||||
else if (chunks.length > 1) { |
||||
data = new Uint8Array(this._dataLength); |
||||
for (var i = 0, n = chunks.length, off = 0; i < n; i++) { |
||||
var chunk = chunks[i]; |
||||
data.set(chunk, off); |
||||
off += chunk.length; |
||||
} |
||||
} |
||||
chunks.length = 0; |
||||
this._dataLength = 0; |
||||
return data; |
||||
}; |
||||
Codec.prototype.append = function append(bytes, onprogress) { |
||||
this._backEnd.push(bytes, false); |
||||
return this._fetchData(); |
||||
}; |
||||
Codec.prototype.flush = function flush() { |
||||
this._backEnd.push(new Uint8Array(0), true); |
||||
return this._fetchData(); |
||||
}; |
||||
|
||||
function Deflater(options) { |
||||
Codec.call(this, true, options); |
||||
} |
||||
Deflater.prototype = Object.create(Codec.prototype); |
||||
function Inflater() { |
||||
Codec.call(this, false); |
||||
} |
||||
Inflater.prototype = Object.create(Codec.prototype); |
||||
|
||||
// 'zip' may not be defined in z-worker and some tests
|
||||
var env = global.zip || global; |
||||
env.Deflater = env._pako_Deflater = Deflater; |
||||
env.Inflater = env._pako_Inflater = Inflater; |
||||
})(this); |
@ -1,242 +0,0 @@ |
||||
/* |
||||
Copyright (c) 2013 Gildas Lormeau. All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions are met: |
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, |
||||
this list of conditions and the following disclaimer. |
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in |
||||
the documentation and/or other materials provided with the distribution. |
||||
|
||||
3. The names of the authors may not be used to endorse or promote products |
||||
derived from this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, |
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
||||
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT, |
||||
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
||||
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
*/ |
||||
|
||||
(function() { |
||||
"use strict"; |
||||
|
||||
var ERR_HTTP_RANGE = "HTTP Range not supported."; |
||||
|
||||
var Reader = zip.Reader; |
||||
var Writer = zip.Writer; |
||||
|
||||
var ZipDirectoryEntry; |
||||
|
||||
var appendABViewSupported; |
||||
try { |
||||
appendABViewSupported = new Blob([ new DataView(new ArrayBuffer(0)) ]).size === 0; |
||||
} catch (e) { |
||||
} |
||||
|
||||
function HttpReader(url) { |
||||
var that = this; |
||||
|
||||
function getData(callback, onerror) { |
||||
var request; |
||||
if (!that.data) { |
||||
request = new XMLHttpRequest(); |
||||
request.addEventListener("load", function() { |
||||
if (!that.size) |
||||
that.size = Number(request.getResponseHeader("Content-Length")); |
||||
that.data = new Uint8Array(request.response); |
||||
callback(); |
||||
}, false); |
||||
request.addEventListener("error", onerror, false); |
||||
request.open("GET", url); |
||||
request.responseType = "arraybuffer"; |
||||
request.send(); |
||||
} else |
||||
callback(); |
||||
} |
||||
|
||||
function init(callback, onerror) { |
||||
var request = new XMLHttpRequest(); |
||||
request.addEventListener("load", function() { |
||||
that.size = Number(request.getResponseHeader("Content-Length")); |
||||
callback(); |
||||
}, false); |
||||
request.addEventListener("error", onerror, false); |
||||
request.open("HEAD", url); |
||||
request.send(); |
||||
} |
||||
|
||||
function readUint8Array(index, length, callback, onerror) { |
||||
getData(function() { |
||||
callback(new Uint8Array(that.data.subarray(index, index + length))); |
||||
}, onerror); |
||||
} |
||||
|
||||
that.size = 0; |
||||
that.init = init; |
||||
that.readUint8Array = readUint8Array; |
||||
} |
||||
HttpReader.prototype = new Reader(); |
||||
HttpReader.prototype.constructor = HttpReader; |
||||
|
||||
function HttpRangeReader(url) { |
||||
var that = this; |
||||
|
||||
function init(callback, onerror) { |
||||
var request = new XMLHttpRequest(); |
||||
request.addEventListener("load", function() { |
||||
that.size = Number(request.getResponseHeader("Content-Length")); |
||||
if (request.getResponseHeader("Accept-Ranges") == "bytes") |
||||
callback(); |
||||
else |
||||
onerror(ERR_HTTP_RANGE); |
||||
}, false); |
||||
request.addEventListener("error", onerror, false); |
||||
request.open("HEAD", url); |
||||
request.send(); |
||||
} |
||||
|
||||
function readArrayBuffer(index, length, callback, onerror) { |
||||
var request = new XMLHttpRequest(); |
||||
request.open("GET", url); |
||||
request.responseType = "arraybuffer"; |
||||
request.setRequestHeader("Range", "bytes=" + index + "-" + (index + length - 1)); |
||||
request.addEventListener("load", function() { |
||||
callback(request.response); |
||||
}, false); |
||||
request.addEventListener("error", onerror, false); |
||||
request.send(); |
||||
} |
||||
|
||||
function readUint8Array(index, length, callback, onerror) { |
||||
readArrayBuffer(index, length, function(arraybuffer) { |
||||
callback(new Uint8Array(arraybuffer)); |
||||
}, onerror); |
||||
} |
||||
|
||||
that.size = 0; |
||||
that.init = init; |
||||
that.readUint8Array = readUint8Array; |
||||
} |
||||
HttpRangeReader.prototype = new Reader(); |
||||
HttpRangeReader.prototype.constructor = HttpRangeReader; |
||||
|
||||
function ArrayBufferReader(arrayBuffer) { |
||||
var that = this; |
||||
|
||||
function init(callback, onerror) { |
||||
that.size = arrayBuffer.byteLength; |
||||
callback(); |
||||
} |
||||
|
||||
function readUint8Array(index, length, callback, onerror) { |
||||
callback(new Uint8Array(arrayBuffer.slice(index, index + length))); |
||||
} |
||||
|
||||
that.size = 0; |
||||
that.init = init; |
||||
that.readUint8Array = readUint8Array; |
||||
} |
||||
ArrayBufferReader.prototype = new Reader(); |
||||
ArrayBufferReader.prototype.constructor = ArrayBufferReader; |
||||
|
||||
function ArrayBufferWriter() { |
||||
var array, that = this; |
||||
|
||||
function init(callback, onerror) { |
||||
array = new Uint8Array(); |
||||
callback(); |
||||
} |
||||
|
||||
function writeUint8Array(arr, callback, onerror) { |
||||
var tmpArray = new Uint8Array(array.length + arr.length); |
||||
tmpArray.set(array); |
||||
tmpArray.set(arr, array.length); |
||||
array = tmpArray; |
||||
callback(); |
||||
} |
||||
|
||||
function getData(callback) { |
||||
callback(array.buffer); |
||||
} |
||||
|
||||
that.init = init; |
||||
that.writeUint8Array = writeUint8Array; |
||||
that.getData = getData; |
||||
} |
||||
ArrayBufferWriter.prototype = new Writer(); |
||||
ArrayBufferWriter.prototype.constructor = ArrayBufferWriter; |
||||
|
||||
function FileWriter(fileEntry, contentType) { |
||||
var writer, that = this; |
||||
|
||||
function init(callback, onerror) { |
||||
fileEntry.createWriter(function(fileWriter) { |
||||
writer = fileWriter; |
||||
callback(); |
||||
}, onerror); |
||||
} |
||||
|
||||
function writeUint8Array(array, callback, onerror) { |
||||
var blob = new Blob([ appendABViewSupported ? array : array.buffer ], { |
||||
type : contentType |
||||
}); |
||||
writer.onwrite = function() { |
||||
writer.onwrite = null; |
||||
callback(); |
||||
}; |
||||
writer.onerror = onerror; |
||||
writer.write(blob); |
||||
} |
||||
|
||||
function getData(callback) { |
||||
fileEntry.file(callback); |
||||
} |
||||
|
||||
that.init = init; |
||||
that.writeUint8Array = writeUint8Array; |
||||
that.getData = getData; |
||||
} |
||||
FileWriter.prototype = new Writer(); |
||||
FileWriter.prototype.constructor = FileWriter; |
||||
|
||||
zip.FileWriter = FileWriter; |
||||
zip.HttpReader = HttpReader; |
||||
zip.HttpRangeReader = HttpRangeReader; |
||||
zip.ArrayBufferReader = ArrayBufferReader; |
||||
zip.ArrayBufferWriter = ArrayBufferWriter; |
||||
|
||||
if (zip.fs) { |
||||
ZipDirectoryEntry = zip.fs.ZipDirectoryEntry; |
||||
ZipDirectoryEntry.prototype.addHttpContent = function(name, URL, useRangeHeader) { |
||||
function addChild(parent, name, params, directory) { |
||||
if (parent.directory) |
||||
return directory ? new ZipDirectoryEntry(parent.fs, name, params, parent) : new zip.fs.ZipFileEntry(parent.fs, name, params, parent); |
||||
else |
||||
throw "Parent entry is not a directory."; |
||||
} |
||||
|
||||
return addChild(this, name, { |
||||
data : URL, |
||||
Reader : useRangeHeader ? HttpRangeReader : HttpReader |
||||
}); |
||||
}; |
||||
ZipDirectoryEntry.prototype.importHttpContent = function(URL, useRangeHeader, onend, onerror) { |
||||
this.importZip(useRangeHeader ? new HttpRangeReader(URL) : new HttpReader(URL), onend, onerror); |
||||
}; |
||||
zip.fs.FS.prototype.importHttpContent = function(URL, useRangeHeader, onend, onerror) { |
||||
this.entries = []; |
||||
this.root = new ZipDirectoryEntry(this); |
||||
this.root.importHttpContent(URL, useRangeHeader, onend, onerror); |
||||
}; |
||||
} |
||||
|
||||
})(); |
@ -1,49 +0,0 @@ |
||||
/// wrapper for zlib-asm (https://github.com/ukyo/zlib-asm)
|
||||
|
||||
/* globals zlib */ |
||||
(function(global) { |
||||
"use strict"; |
||||
|
||||
function Codec(isDeflater, options) { |
||||
this._isDeflater = isDeflater; |
||||
if (options && typeof options.level === 'number') |
||||
this.level = options.level; |
||||
this._inputLength = 0; |
||||
this._input = []; |
||||
} |
||||
Codec.prototype.append = function append(bytes, onprogress) { |
||||
this._inputLength += bytes.length; |
||||
this._input.push(bytes); |
||||
}; |
||||
Codec.prototype.flush = function flush() { |
||||
var bytes; |
||||
var input = this._input; |
||||
if (input.length === 1) |
||||
bytes = input[0]; |
||||
else { |
||||
bytes = new Uint8Array(this._inputLength); |
||||
for (var i = 0, n = input.length, off = 0; i < n; i++) { |
||||
var slice = input[i]; |
||||
bytes.set(slice, off); |
||||
off += slice.length; |
||||
} |
||||
} |
||||
return this._isDeflater ? |
||||
zlib.rawDeflate(bytes, this.level) : |
||||
zlib.rawInflate(bytes); |
||||
}; |
||||
|
||||
function Deflater(options) { |
||||
Codec.call(this, true, options); |
||||
} |
||||
Deflater.prototype = Object.create(Codec.prototype); |
||||
function Inflater() { |
||||
Codec.call(this, false); |
||||
} |
||||
Inflater.prototype = Object.create(Codec.prototype); |
||||
|
||||
// 'zip' may not be defined in z-worker and some tests
|
||||
var env = global.zip || global; |
||||
env.Deflater = env._zlib_asm_Deflater = Deflater; |
||||
env.Inflater = env._zlib_asm_Inflater = Inflater; |
||||
})(this); |
Loading…
Reference in new issue