diff options
author | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:43:44 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2016-10-10 03:43:44 +0200 |
commit | abd94a7f5a50f43c797a11b53549ae48fff667c3 (patch) | |
tree | ab8ed457f65cdd72e13e0571d2975729428f1551 /node_modules/encoding | |
parent | a0247c6a3fd6a09a41a7e35a3441324c4dcb58be (diff) | |
download | wallet-core-abd94a7f5a50f43c797a11b53549ae48fff667c3.tar.xz |
add node_modules to address #4364
Diffstat (limited to 'node_modules/encoding')
-rw-r--r-- | node_modules/encoding/.npmignore | 1 | ||||
-rw-r--r-- | node_modules/encoding/.travis.yml | 25 | ||||
-rw-r--r-- | node_modules/encoding/LICENSE | 16 | ||||
-rw-r--r-- | node_modules/encoding/README.md | 52 | ||||
-rw-r--r-- | node_modules/encoding/lib/encoding.js | 113 | ||||
-rw-r--r-- | node_modules/encoding/lib/iconv-loader.js | 14 | ||||
-rw-r--r-- | node_modules/encoding/package.json | 84 | ||||
-rw-r--r-- | node_modules/encoding/test/test.js | 75 |
8 files changed, 380 insertions, 0 deletions
diff --git a/node_modules/encoding/.npmignore b/node_modules/encoding/.npmignore new file mode 100644 index 000000000..b512c09d4 --- /dev/null +++ b/node_modules/encoding/.npmignore @@ -0,0 +1 @@ +node_modules
\ No newline at end of file diff --git a/node_modules/encoding/.travis.yml b/node_modules/encoding/.travis.yml new file mode 100644 index 000000000..abc4f48cd --- /dev/null +++ b/node_modules/encoding/.travis.yml @@ -0,0 +1,25 @@ +language: node_js +sudo: false +node_js: + - "0.10" + - 0.12 + - iojs + - 4 + - 5 +env: + - CXX=g++-4.8 +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.8 +notifications: + email: + - andris@kreata.ee + webhooks: + urls: + - https://webhooks.gitter.im/e/0ed18fd9b3e529b3c2cc + on_success: change # options: [always|never|change] default: always + on_failure: always # options: [always|never|change] default: always + on_start: false # default: false diff --git a/node_modules/encoding/LICENSE b/node_modules/encoding/LICENSE new file mode 100644 index 000000000..33f5a9a36 --- /dev/null +++ b/node_modules/encoding/LICENSE @@ -0,0 +1,16 @@ +Copyright (c) 2012-2014 Andris Reinman + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/encoding/README.md b/node_modules/encoding/README.md new file mode 100644 index 000000000..62e6bf88f --- /dev/null +++ b/node_modules/encoding/README.md @@ -0,0 +1,52 @@ +# Encoding + +**encoding** is a simple wrapper around [node-iconv](https://github.com/bnoordhuis/node-iconv) and [iconv-lite](https://github.com/ashtuchkin/iconv-lite/) to convert strings from one encoding to another. If node-iconv is not available for some reason, +iconv-lite will be used instead of it as a fallback. + +[![Build Status](https://secure.travis-ci.org/andris9/encoding.svg)](http://travis-ci.org/andris9/Nodemailer) +[![npm version](https://badge.fury.io/js/encoding.svg)](http://badge.fury.io/js/encoding) + +## Install + +Install through npm + + npm install encoding + +## Usage + +Require the module + + var encoding = require("encoding"); + +Convert with encoding.convert() + + var resultBuffer = encoding.convert(text, toCharset, fromCharset); + +Where + + * **text** is either a Buffer or a String to be converted + * **toCharset** is the characterset to convert the string + * **fromCharset** (*optional*, defaults to UTF-8) is the source charset + +Output of the conversion is always a Buffer object. + +Example + + var result = encoding.convert("ÕÄÖÜ", "Latin_1"); + console.log(result); //<Buffer d5 c4 d6 dc> + +## iconv support + +By default only iconv-lite is bundled. If you need node-iconv support, you need to add it +as an additional dependency for your project: + + ..., + "dependencies":{ + "encoding": "*", + "iconv": "*" + }, + ... + +## License + +**MIT** diff --git a/node_modules/encoding/lib/encoding.js b/node_modules/encoding/lib/encoding.js new file mode 100644 index 000000000..cbea3ced2 --- /dev/null +++ b/node_modules/encoding/lib/encoding.js @@ -0,0 +1,113 @@ +'use strict'; + +var iconvLite = require('iconv-lite'); +// Load Iconv from an external file to be able to disable Iconv for webpack +// Add /\/iconv-loader$/ to webpack.IgnorePlugin to ignore it +var Iconv = require('./iconv-loader'); + +// Expose to the world +module.exports.convert = convert; + +/** + * Convert encoding of an UTF-8 string or a buffer + * + * @param {String|Buffer} str String to be converted + * @param {String} to Encoding to be converted to + * @param {String} [from='UTF-8'] Encoding to be converted from + * @param {Boolean} useLite If set to ture, force to use iconvLite + * @return {Buffer} Encoded string + */ +function convert(str, to, from, useLite) { + from = checkEncoding(from || 'UTF-8'); + to = checkEncoding(to || 'UTF-8'); + str = str || ''; + + var result; + + if (from !== 'UTF-8' && typeof str === 'string') { + str = new Buffer(str, 'binary'); + } + + if (from === to) { + if (typeof str === 'string') { + result = new Buffer(str); + } else { + result = str; + } + } else if (Iconv && !useLite) { + try { + result = convertIconv(str, to, from); + } catch (E) { + console.error(E); + try { + result = convertIconvLite(str, to, from); + } catch (E) { + console.error(E); + result = str; + } + } + } else { + try { + result = convertIconvLite(str, to, from); + } catch (E) { + console.error(E); + result = str; + } + } + + + if (typeof result === 'string') { + result = new Buffer(result, 'utf-8'); + } + + return result; +} + +/** + * Convert encoding of a string with node-iconv (if available) + * + * @param {String|Buffer} str String to be converted + * @param {String} to Encoding to be converted to + * @param {String} [from='UTF-8'] Encoding to be converted from + * @return {Buffer} Encoded string + */ +function convertIconv(str, to, from) { + var response, iconv; + iconv = new Iconv(from, to + '//TRANSLIT//IGNORE'); + response = iconv.convert(str); + return response.slice(0, response.length); +} + +/** + * Convert encoding of astring with iconv-lite + * + * @param {String|Buffer} str String to be converted + * @param {String} to Encoding to be converted to + * @param {String} [from='UTF-8'] Encoding to be converted from + * @return {Buffer} Encoded string + */ +function convertIconvLite(str, to, from) { + if (to === 'UTF-8') { + return iconvLite.decode(str, from); + } else if (from === 'UTF-8') { + return iconvLite.encode(str, to); + } else { + return iconvLite.encode(iconvLite.decode(str, from), to); + } +} + +/** + * Converts charset name if needed + * + * @param {String} name Character set + * @return {String} Character set name + */ +function checkEncoding(name) { + return (name || '').toString().trim(). + replace(/^latin[\-_]?(\d+)$/i, 'ISO-8859-$1'). + replace(/^win(?:dows)?[\-_]?(\d+)$/i, 'WINDOWS-$1'). + replace(/^utf[\-_]?(\d+)$/i, 'UTF-$1'). + replace(/^ks_c_5601\-1987$/i, 'CP949'). + replace(/^us[\-_]?ascii$/i, 'ASCII'). + toUpperCase(); +} diff --git a/node_modules/encoding/lib/iconv-loader.js b/node_modules/encoding/lib/iconv-loader.js new file mode 100644 index 000000000..8e925fd8e --- /dev/null +++ b/node_modules/encoding/lib/iconv-loader.js @@ -0,0 +1,14 @@ +'use strict'; + +var iconv_package; +var Iconv; + +try { + // this is to fool browserify so it doesn't try (in vain) to install iconv. + iconv_package = 'iconv'; + Iconv = require(iconv_package).Iconv; +} catch (E) { + // node-iconv not present +} + +module.exports = Iconv; diff --git a/node_modules/encoding/package.json b/node_modules/encoding/package.json new file mode 100644 index 000000000..21b1a6ffa --- /dev/null +++ b/node_modules/encoding/package.json @@ -0,0 +1,84 @@ +{ + "_args": [ + [ + { + "raw": "encoding@^0.1.11", + "scope": null, + "escapedName": "encoding", + "name": "encoding", + "rawSpec": "^0.1.11", + "spec": ">=0.1.11 <0.2.0", + "type": "range" + }, + "/home/dold/repos/taler/wallet-webex/node_modules/gettext-parser" + ] + ], + "_from": "encoding@>=0.1.11 <0.2.0", + "_id": "encoding@0.1.12", + "_inCache": true, + "_location": "/encoding", + "_nodeVersion": "5.3.0", + "_npmUser": { + "name": "andris", + "email": "andris@kreata.ee" + }, + "_npmVersion": "3.3.12", + "_phantomChildren": {}, + "_requested": { + "raw": "encoding@^0.1.11", + "scope": null, + "escapedName": "encoding", + "name": "encoding", + "rawSpec": "^0.1.11", + "spec": ">=0.1.11 <0.2.0", + "type": "range" + }, + "_requiredBy": [ + "/gettext-parser" + ], + "_resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "_shasum": "538b66f3ee62cd1ab51ec323829d1f9480c74beb", + "_shrinkwrap": null, + "_spec": "encoding@^0.1.11", + "_where": "/home/dold/repos/taler/wallet-webex/node_modules/gettext-parser", + "author": { + "name": "Andris Reinman" + }, + "bugs": { + "url": "https://github.com/andris9/encoding/issues" + }, + "dependencies": { + "iconv-lite": "~0.4.13" + }, + "description": "Convert encodings, uses iconv by default and fallbacks to iconv-lite if needed", + "devDependencies": { + "iconv": "~2.1.11", + "nodeunit": "~0.9.1" + }, + "directories": {}, + "dist": { + "shasum": "538b66f3ee62cd1ab51ec323829d1f9480c74beb", + "tarball": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz" + }, + "gitHead": "91ae950aaa854a119122c27cdbabd8c5585106f7", + "homepage": "https://github.com/andris9/encoding#readme", + "license": "MIT", + "main": "lib/encoding.js", + "maintainers": [ + { + "name": "andris", + "email": "andris@node.ee" + } + ], + "name": "encoding", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/andris9/encoding.git" + }, + "scripts": { + "test": "nodeunit test" + }, + "version": "0.1.12" +} diff --git a/node_modules/encoding/test/test.js b/node_modules/encoding/test/test.js new file mode 100644 index 000000000..0de4dcb17 --- /dev/null +++ b/node_modules/encoding/test/test.js @@ -0,0 +1,75 @@ +'use strict'; + +var Iconv = require('../lib/iconv-loader'); +var encoding = require('../lib/encoding'); + +exports['General tests'] = { + + 'Iconv is available': function (test) { + test.ok(Iconv); + test.done(); + }, + + 'From UTF-8 to Latin_1 with Iconv': function (test) { + var input = 'ÕÄÖÜ', + expected = new Buffer([0xd5, 0xc4, 0xd6, 0xdc]); + test.deepEqual(encoding.convert(input, 'latin1'), expected); + test.done(); + }, + + 'From Latin_1 to UTF-8 with Iconv': function (test) { + var input = new Buffer([0xd5, 0xc4, 0xd6, 0xdc]), + expected = 'ÕÄÖÜ'; + test.deepEqual(encoding.convert(input, 'utf-8', 'latin1').toString(), expected); + test.done(); + }, + + 'From UTF-8 to UTF-8 with Iconv': function (test) { + var input = 'ÕÄÖÜ', + expected = new Buffer('ÕÄÖÜ'); + test.deepEqual(encoding.convert(input, 'utf-8', 'utf-8'), expected); + test.done(); + }, + + 'From Latin_13 to Latin_15 with Iconv': function (test) { + var input = new Buffer([0xd5, 0xc4, 0xd6, 0xdc, 0xd0]), + expected = new Buffer([0xd5, 0xc4, 0xd6, 0xdc, 0xA6]); + test.deepEqual(encoding.convert(input, 'latin_15', 'latin13'), expected); + test.done(); + }, + + 'From ISO-2022-JP to UTF-8 with Iconv': function (test) { + var input = new Buffer('GyRCM1g5OzU7PVEwdzgmPSQ4IUYkMnFKczlwGyhC', 'base64'), + expected = new Buffer('5a2m5qCh5oqA6KGT5ZOh56CU5L+u5qSc6KiO5Lya5aCx5ZGK', 'base64'); + test.deepEqual(encoding.convert(input, 'utf-8', 'ISO-2022-JP'), expected); + test.done(); + }, + + 'From UTF-8 to Latin_1 with iconv-lite': function (test) { + var input = 'ÕÄÖÜ', + expected = new Buffer([0xd5, 0xc4, 0xd6, 0xdc]); + test.deepEqual(encoding.convert(input, 'latin1', false, true), expected); + test.done(); + }, + + 'From Latin_1 to UTF-8 with iconv-lite': function (test) { + var input = new Buffer([0xd5, 0xc4, 0xd6, 0xdc]), + expected = 'ÕÄÖÜ'; + test.deepEqual(encoding.convert(input, 'utf-8', 'latin1', true).toString(), expected); + test.done(); + }, + + 'From UTF-8 to UTF-8 with iconv-lite': function (test) { + var input = 'ÕÄÖÜ', + expected = new Buffer('ÕÄÖÜ'); + test.deepEqual(encoding.convert(input, 'utf-8', 'utf-8', true), expected); + test.done(); + }, + + 'From Latin_13 to Latin_15 with iconv-lite': function (test) { + var input = new Buffer([0xd5, 0xc4, 0xd6, 0xdc, 0xd0]), + expected = new Buffer([0xd5, 0xc4, 0xd6, 0xdc, 0xA6]); + test.deepEqual(encoding.convert(input, 'latin_15', 'latin13', true), expected); + test.done(); + } +}; |