mirror of
https://github.com/swc-project/swc.git
synced 2024-12-20 20:22:26 +03:00
bbaf619f63
swc_bundler: - [x] Fix wrapped esms. (denoland/deno#9307) - [x] Make test secure.
90 lines
2.1 KiB
TypeScript
90 lines
2.1 KiB
TypeScript
// Loaded from https://dev.jspm.io/npm:jszip@3.5.0/lib/crc32.dew.js
|
|
|
|
|
|
import { dew as _utilsDewDew } from "./utils.dew.js";
|
|
var exports = {},
|
|
_dewExec = false;
|
|
export function dew() {
|
|
if (_dewExec) return exports;
|
|
_dewExec = true;
|
|
|
|
var utils = _utilsDewDew();
|
|
/**
|
|
* The following functions come from pako, from pako/lib/zlib/crc32.js
|
|
* released under the MIT license, see pako https://github.com/nodeca/pako/
|
|
*/
|
|
// Use ordinary array, since untyped makes no boost here
|
|
|
|
|
|
function makeTable() {
|
|
var c,
|
|
table = [];
|
|
|
|
for (var n = 0; n < 256; n++) {
|
|
c = n;
|
|
|
|
for (var k = 0; k < 8; k++) {
|
|
c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1;
|
|
}
|
|
|
|
table[n] = c;
|
|
}
|
|
|
|
return table;
|
|
} // Create table on load. Just 255 signed longs. Not a problem.
|
|
|
|
|
|
var crcTable = makeTable();
|
|
|
|
function crc32(crc, buf, len, pos) {
|
|
var t = crcTable,
|
|
end = pos + len;
|
|
crc = crc ^ -1;
|
|
|
|
for (var i = pos; i < end; i++) {
|
|
crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 0xFF];
|
|
}
|
|
|
|
return crc ^ -1; // >>> 0;
|
|
} // That's all for the pako functions.
|
|
|
|
/**
|
|
* Compute the crc32 of a string.
|
|
* This is almost the same as the function crc32, but for strings. Using the
|
|
* same function for the two use cases leads to horrible performances.
|
|
* @param {Number} crc the starting value of the crc.
|
|
* @param {String} str the string to use.
|
|
* @param {Number} len the length of the string.
|
|
* @param {Number} pos the starting position for the crc32 computation.
|
|
* @return {Number} the computed crc32.
|
|
*/
|
|
|
|
|
|
function crc32str(crc, str, len, pos) {
|
|
var t = crcTable,
|
|
end = pos + len;
|
|
crc = crc ^ -1;
|
|
|
|
for (var i = pos; i < end; i++) {
|
|
crc = crc >>> 8 ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];
|
|
}
|
|
|
|
return crc ^ -1; // >>> 0;
|
|
}
|
|
|
|
exports = function crc32wrapper(input, crc) {
|
|
if (typeof input === "undefined" || !input.length) {
|
|
return 0;
|
|
}
|
|
|
|
var isArray = utils.getTypeOf(input) !== "string";
|
|
|
|
if (isArray) {
|
|
return crc32(crc | 0, input, input.length, 0);
|
|
} else {
|
|
return crc32str(crc | 0, input, input.length, 0);
|
|
}
|
|
};
|
|
|
|
return exports;
|
|
} |