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