Projektstart
This commit is contained in:
361
backend/node_modules/encoding-japanese/src/util.js
generated
vendored
Normal file
361
backend/node_modules/encoding-japanese/src/util.js
generated
vendored
Normal file
@@ -0,0 +1,361 @@
|
||||
var config = require('./config');
|
||||
var fromCharCode = String.fromCharCode;
|
||||
var slice = Array.prototype.slice;
|
||||
var toString = Object.prototype.toString;
|
||||
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
var nativeIsArray = Array.isArray;
|
||||
var nativeObjectKeys = Object.keys;
|
||||
|
||||
|
||||
function isObject(x) {
|
||||
var type = typeof x;
|
||||
return type === 'function' || type === 'object' && !!x;
|
||||
}
|
||||
exports.isObject = isObject;
|
||||
|
||||
|
||||
function isArray(x) {
|
||||
return nativeIsArray ? nativeIsArray(x) : toString.call(x) === '[object Array]';
|
||||
}
|
||||
exports.isArray = isArray;
|
||||
|
||||
|
||||
function isString(x) {
|
||||
return typeof x === 'string' || toString.call(x) === '[object String]';
|
||||
}
|
||||
exports.isString = isString;
|
||||
|
||||
|
||||
function objectKeys(object) {
|
||||
if (nativeObjectKeys) {
|
||||
return nativeObjectKeys(object);
|
||||
}
|
||||
|
||||
var keys = [];
|
||||
for (var key in object) {
|
||||
if (hasOwnProperty.call(object, key)) {
|
||||
keys[keys.length] = key;
|
||||
}
|
||||
}
|
||||
|
||||
return keys;
|
||||
}
|
||||
exports.objectKeys = objectKeys;
|
||||
|
||||
|
||||
function createBuffer(bits, size) {
|
||||
if (config.HAS_TYPED) {
|
||||
switch (bits) {
|
||||
case 8: return new Uint8Array(size);
|
||||
case 16: return new Uint16Array(size);
|
||||
}
|
||||
}
|
||||
return new Array(size);
|
||||
}
|
||||
exports.createBuffer = createBuffer;
|
||||
|
||||
|
||||
function stringToBuffer(string) {
|
||||
var length = string.length;
|
||||
var buffer = createBuffer(16, length);
|
||||
|
||||
for (var i = 0; i < length; i++) {
|
||||
buffer[i] = string.charCodeAt(i);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
exports.stringToBuffer = stringToBuffer;
|
||||
|
||||
|
||||
function codeToString_fast(code) {
|
||||
if (config.CAN_CHARCODE_APPLY && config.CAN_CHARCODE_APPLY_TYPED) {
|
||||
var len = code && code.length;
|
||||
if (len < config.APPLY_BUFFER_SIZE && config.APPLY_BUFFER_SIZE_OK) {
|
||||
return fromCharCode.apply(null, code);
|
||||
}
|
||||
|
||||
if (config.APPLY_BUFFER_SIZE_OK === null) {
|
||||
try {
|
||||
var s = fromCharCode.apply(null, code);
|
||||
if (len > config.APPLY_BUFFER_SIZE) {
|
||||
config.APPLY_BUFFER_SIZE_OK = true;
|
||||
}
|
||||
return s;
|
||||
} catch (e) {
|
||||
// Ignore the RangeError "arguments too large"
|
||||
config.APPLY_BUFFER_SIZE_OK = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return codeToString_chunked(code);
|
||||
}
|
||||
exports.codeToString_fast = codeToString_fast;
|
||||
|
||||
|
||||
function codeToString_chunked(code) {
|
||||
var string = '';
|
||||
var length = code && code.length;
|
||||
var i = 0;
|
||||
var sub;
|
||||
|
||||
while (i < length) {
|
||||
if (code.subarray) {
|
||||
sub = code.subarray(i, i + config.APPLY_BUFFER_SIZE);
|
||||
} else {
|
||||
sub = code.slice(i, i + config.APPLY_BUFFER_SIZE);
|
||||
}
|
||||
i += config.APPLY_BUFFER_SIZE;
|
||||
|
||||
if (config.APPLY_BUFFER_SIZE_OK) {
|
||||
string += fromCharCode.apply(null, sub);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (config.APPLY_BUFFER_SIZE_OK === null) {
|
||||
try {
|
||||
string += fromCharCode.apply(null, sub);
|
||||
if (sub.length > config.APPLY_BUFFER_SIZE) {
|
||||
config.APPLY_BUFFER_SIZE_OK = true;
|
||||
}
|
||||
continue;
|
||||
} catch (e) {
|
||||
config.APPLY_BUFFER_SIZE_OK = false;
|
||||
}
|
||||
}
|
||||
|
||||
return codeToString_slow(code);
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
exports.codeToString_chunked = codeToString_chunked;
|
||||
|
||||
|
||||
function codeToString_slow(code) {
|
||||
var string = '';
|
||||
var length = code && code.length;
|
||||
|
||||
for (var i = 0; i < length; i++) {
|
||||
string += fromCharCode(code[i]);
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
exports.codeToString_slow = codeToString_slow;
|
||||
|
||||
|
||||
function stringToCode(string) {
|
||||
var code = [];
|
||||
var len = string && string.length;
|
||||
|
||||
for (var i = 0; i < len; i++) {
|
||||
code[i] = string.charCodeAt(i);
|
||||
}
|
||||
|
||||
return code;
|
||||
}
|
||||
exports.stringToCode = stringToCode;
|
||||
|
||||
|
||||
function codeToBuffer(code) {
|
||||
if (config.HAS_TYPED) {
|
||||
// Unicode code point (charCodeAt range) values have a range of 0-0xFFFF, so use Uint16Array
|
||||
return new Uint16Array(code);
|
||||
}
|
||||
|
||||
if (isArray(code)) {
|
||||
return code;
|
||||
}
|
||||
|
||||
var length = code && code.length;
|
||||
var buffer = [];
|
||||
|
||||
for (var i = 0; i < length; i++) {
|
||||
buffer[i] = code[i];
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
exports.codeToBuffer = codeToBuffer;
|
||||
|
||||
|
||||
function bufferToCode(buffer) {
|
||||
if (isArray(buffer)) {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
return slice.call(buffer);
|
||||
}
|
||||
exports.bufferToCode = bufferToCode;
|
||||
|
||||
/**
|
||||
* Canonicalize the passed encoding name to the internal encoding name
|
||||
*/
|
||||
function canonicalizeEncodingName(target) {
|
||||
var name = '';
|
||||
var expect = ('' + target).toUpperCase().replace(/[^A-Z0-9]+/g, '');
|
||||
var aliasNames = objectKeys(config.EncodingAliases);
|
||||
var len = aliasNames.length;
|
||||
var hit = 0;
|
||||
var encoding, encodingLen, j;
|
||||
|
||||
for (var i = 0; i < len; i++) {
|
||||
encoding = aliasNames[i];
|
||||
if (encoding === expect) {
|
||||
name = encoding;
|
||||
break;
|
||||
}
|
||||
|
||||
encodingLen = encoding.length;
|
||||
for (j = hit; j < encodingLen; j++) {
|
||||
if (encoding.slice(0, j) === expect.slice(0, j) ||
|
||||
encoding.slice(-j) === expect.slice(-j)) {
|
||||
name = encoding;
|
||||
hit = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasOwnProperty.call(config.EncodingAliases, name)) {
|
||||
return config.EncodingAliases[name];
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
exports.canonicalizeEncodingName = canonicalizeEncodingName;
|
||||
|
||||
// Base64
|
||||
/* Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp>
|
||||
* Version: 1.0
|
||||
* LastModified: Dec 25 1999
|
||||
* This library is free. You can redistribute it and/or modify it.
|
||||
*/
|
||||
// -- Masanao Izumo Copyright 1999 "free"
|
||||
// Added binary array support for the Encoding.js
|
||||
|
||||
var base64EncodeChars = [
|
||||
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
|
||||
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
|
||||
97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
|
||||
110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
|
||||
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47
|
||||
];
|
||||
|
||||
var base64DecodeChars = [
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
|
||||
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
|
||||
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
||||
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
|
||||
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
|
||||
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
|
||||
];
|
||||
|
||||
var base64EncodePadding = '='.charCodeAt(0);
|
||||
|
||||
|
||||
function base64encode(data) {
|
||||
var out, i, len;
|
||||
var c1, c2, c3;
|
||||
|
||||
len = data && data.length;
|
||||
i = 0;
|
||||
out = [];
|
||||
|
||||
while (i < len) {
|
||||
c1 = data[i++];
|
||||
if (i == len) {
|
||||
out[out.length] = base64EncodeChars[c1 >> 2];
|
||||
out[out.length] = base64EncodeChars[(c1 & 0x3) << 4];
|
||||
out[out.length] = base64EncodePadding;
|
||||
out[out.length] = base64EncodePadding;
|
||||
break;
|
||||
}
|
||||
|
||||
c2 = data[i++];
|
||||
if (i == len) {
|
||||
out[out.length] = base64EncodeChars[c1 >> 2];
|
||||
out[out.length] = base64EncodeChars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)];
|
||||
out[out.length] = base64EncodeChars[(c2 & 0xF) << 2];
|
||||
out[out.length] = base64EncodePadding;
|
||||
break;
|
||||
}
|
||||
|
||||
c3 = data[i++];
|
||||
out[out.length] = base64EncodeChars[c1 >> 2];
|
||||
out[out.length] = base64EncodeChars[((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)];
|
||||
out[out.length] = base64EncodeChars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)];
|
||||
out[out.length] = base64EncodeChars[c3 & 0x3F];
|
||||
}
|
||||
|
||||
return codeToString_fast(out);
|
||||
}
|
||||
exports.base64encode = base64encode;
|
||||
|
||||
|
||||
function base64decode(str) {
|
||||
var c1, c2, c3, c4;
|
||||
var i, len, out;
|
||||
|
||||
len = str && str.length;
|
||||
i = 0;
|
||||
out = [];
|
||||
|
||||
while (i < len) {
|
||||
/* c1 */
|
||||
do {
|
||||
c1 = base64DecodeChars[str.charCodeAt(i++) & 0xFF];
|
||||
} while (i < len && c1 == -1);
|
||||
|
||||
if (c1 == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* c2 */
|
||||
do {
|
||||
c2 = base64DecodeChars[str.charCodeAt(i++) & 0xFF];
|
||||
} while (i < len && c2 == -1);
|
||||
|
||||
if (c2 == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
out[out.length] = (c1 << 2) | ((c2 & 0x30) >> 4);
|
||||
|
||||
/* c3 */
|
||||
do {
|
||||
c3 = str.charCodeAt(i++) & 0xFF;
|
||||
if (c3 == 61) {
|
||||
return out;
|
||||
}
|
||||
c3 = base64DecodeChars[c3];
|
||||
} while (i < len && c3 == -1);
|
||||
|
||||
if (c3 == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
out[out.length] = ((c2 & 0xF) << 4) | ((c3 & 0x3C) >> 2);
|
||||
|
||||
/* c4 */
|
||||
do {
|
||||
c4 = str.charCodeAt(i++) & 0xFF;
|
||||
if (c4 == 61) {
|
||||
return out;
|
||||
}
|
||||
c4 = base64DecodeChars[c4];
|
||||
} while (i < len && c4 == -1);
|
||||
|
||||
if (c4 == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
out[out.length] = ((c3 & 0x03) << 6) | c4;
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
exports.base64decode = base64decode;
|
||||
Reference in New Issue
Block a user