diff --git a/README.md b/README.md index 9097924..d9bc082 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,11 @@ 1. 把 demo/lib/cos-wx-sdk-v5.js 复制到自己小程序项目代码里,在需要上传文件的地方贴以下代码 ```javascript + +// 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket var Bucket = 'test-1250000000'; +// 存储桶Region可以在COS控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/ +// 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224 var Region = 'ap-guangzhou'; // 初始化实例 @@ -68,8 +72,10 @@ wx.chooseImage({ }); ``` -## 说明文档 +## 说明文档 + +[使用例子](demo/demo-sdk.js) -完整文档有待完善,不支持分片相关接口,上传下载相关方法请查看源码和例子 [使用例子](demo/demo-sdk.js) +[快速入门](https://cloud.tencent.com/document/product/436/31953) -其他大部分接口可以参考以下 JS SDK 文档 [接口文档](https://cloud.tencent.com/document/product/436/12260) +[接口文档](https://cloud.tencent.com/document/product/436/31953) diff --git a/build.js b/build.js index 334c713..00d6aca 100644 --- a/build.js +++ b/build.js @@ -45,7 +45,10 @@ var config = { rules: [ { test: /\.m?js$/, - exclude: /(node_modules|bower_components)/, + loader: 'babel-loader', + options: { + presets: ['es2015'] + } } ] }, @@ -66,7 +69,7 @@ if (process.env.NODE_ENV === 'production') { 'demo-album/project.config.json', ]); config.watch = false; - config.output.filename = 'cos-wx-sdk-v5.js'; + config.output.filename = 'cos-wx-sdk-v5.min.js'; config.plugins = (config.plugins || []).concat([ new webpack.DefinePlugin({ 'process.env': { @@ -92,7 +95,10 @@ webpack(config, function (err, stats) { // 每次运行 npm run build,将 sourcePath 代码复制一份放入 targetPath var sourcePath = path.resolve(__dirname, './demo/lib/cos-wx-sdk-v5.js'); var targetPath = path.resolve(__dirname, './demo-album/lib/cos-wx-sdk-v5.js'); + var minSourcePath = path.resolve(__dirname, './demo/lib/cos-wx-sdk-v5.min.js'); + var mintTargetPath = path.resolve(__dirname, './demo-album/lib/cos-wx-sdk-v5.min.js'); fs.createReadStream(sourcePath).pipe(fs.createWriteStream(targetPath)); + fs.createReadStream(minSourcePath).pipe(fs.createWriteStream(mintTargetPath)); if (err) throw err process.stdout.write(stats.toString({ colors: true, diff --git a/demo-album/lib/cos-wx-sdk-v5.js b/demo-album/lib/cos-wx-sdk-v5.js index 69be5ba..8deeac6 100644 --- a/demo-album/lib/cos-wx-sdk-v5.js +++ b/demo-album/lib/cos-wx-sdk-v5.js @@ -80,53 +80,70 @@ return /******/ (function(modules) { // webpackBootstrap "use strict"; /* WEBPACK VAR INJECTION */(function(global) { +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + var md5 = __webpack_require__(8); -var CryptoJS = __webpack_require__(11); -var xml2json = __webpack_require__(12); -var json2xml = __webpack_require__(15); +var CryptoJS = __webpack_require__(12); +var xml2json = __webpack_require__(13); +var json2xml = __webpack_require__(16); var base64 = __webpack_require__(3); var btoa = base64.btoa; var wxfs = wx.getFileSystemManager(); function camSafeUrlEncode(str) { - return encodeURIComponent(str) - .replace(/!/g, '%21') - .replace(/'/g, '%27') - .replace(/\(/g, '%28') - .replace(/\)/g, '%29') - .replace(/\*/g, '%2A'); + return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A'); } function getObjectKeys(obj, forKey) { - var list = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - list.push(forKey ? camSafeUrlEncode(key).toLowerCase() : key); - } - } - return list.sort(function (a, b) { - a = a.toLowerCase(); - b = b.toLowerCase(); - return a === b ? 0 : (a > b ? 1 : -1); - }); + var list = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + list.push(forKey ? camSafeUrlEncode(key).toLowerCase() : key); + } + } + return list.sort(function (a, b) { + a = a.toLowerCase(); + b = b.toLowerCase(); + return a === b ? 0 : a > b ? 1 : -1; + }); }; -var obj2str = function (obj) { - var i, key, val; - var list = []; - var keyList = getObjectKeys(obj); - for (i = 0; i < keyList.length; i++) { - key = keyList[i]; - val = (obj[key] === undefined || obj[key] === null) ? '' : ('' + obj[key]); - key = camSafeUrlEncode(key).toLowerCase(); - val = camSafeUrlEncode(val) || ''; - list.push(key + '=' + val) - } - return list.join('&'); +/** + * obj转为string + * @param {Object} obj 需要转的对象,必须 + * @param {Boolean} lowerCaseKey key是否转为小写,默认false,非必须 + * @return {String} data 返回字符串 + */ +var obj2str = function obj2str(obj, lowerCaseKey) { + var i, key, val; + var list = []; + var keyList = getObjectKeys(obj); + for (i = 0; i < keyList.length; i++) { + key = keyList[i]; + val = obj[key] === undefined || obj[key] === null ? '' : '' + obj[key]; + key = lowerCaseKey ? camSafeUrlEncode(key).toLowerCase() : camSafeUrlEncode(key); + val = camSafeUrlEncode(val) || ''; + list.push(key + '=' + val); + } + return list.join('&'); +}; + +// 可以签入签名的headers +var signHeaders = ['content-disposition', 'content-encoding', 'content-length', 'content-md5', 'expect', 'expires', 'host', 'if-match', 'if-modified-since', 'if-none-match', 'if-unmodified-since', 'origin', 'range', 'response-cache-control', 'response-content-disposition', 'response-content-encoding', 'response-content-language', 'response-content-type', 'response-expires', 'transfer-encoding', 'versionid']; + +var getSignHeaderObj = function getSignHeaderObj(headers) { + var signHeaderObj = {}; + for (var i in headers) { + var key = i.toLowerCase(); + if (key.indexOf('x-cos-') > -1 || signHeaders.indexOf(key) > -1) { + signHeaderObj[i] = headers[i]; + } + } + return signHeaderObj; }; //测试用的key后面可以去掉 -var getAuth = function (opt) { +var getAuth = function getAuth(opt) { opt = opt || {}; var SecretId = opt.SecretId; @@ -134,7 +151,7 @@ var getAuth = function (opt) { var KeyTime = opt.KeyTime; var method = (opt.method || opt.Method || 'get').toLowerCase(); var queryParams = clone(opt.Query || opt.params || {}); - var headers = clone(opt.Headers || opt.headers || {}); + var headers = getSignHeaderObj(clone(opt.Headers || opt.headers || {})); var Key = opt.Key || ''; var pathname; @@ -145,6 +162,9 @@ var getAuth = function (opt) { pathname.indexOf('/') !== 0 && (pathname = '/' + pathname); } + // 如果有传入存储桶,那么签名默认加 Host 参与计算,避免跨桶访问 + if (!headers.Host && !headers.host && opt.Bucket && opt.Region) headers.Host = opt.Bucket + '.cos.' + opt.Region + '.myqcloud.com'; + if (!SecretId) return console.error('missing param SecretId'); if (!SecretKey) return console.error('missing param SecretKey'); @@ -156,7 +176,7 @@ var getAuth = function (opt) { if (Expires === undefined) { exp += 900; // 签名过期时间为当前 + 900s } else { - exp += (Expires * 1) || 0; + exp += Expires * 1 || 0; } // 要用到的 Authorization 参数列表 @@ -172,7 +192,7 @@ var getAuth = function (opt) { var signKey = CryptoJS.HmacSHA1(qKeyTime, SecretKey).toString(); // 步骤二:构成 FormatString - var formatString = [method, pathname, util.obj2str(queryParams), util.obj2str(headers), ''].join('\n'); + var formatString = [method, pathname, util.obj2str(queryParams, true), util.obj2str(headers, true), ''].join('\n'); // 步骤三:计算 StringToSign var stringToSign = ['sha1', qSignTime, CryptoJS.SHA1(formatString).toString(), ''].join('\n'); @@ -181,26 +201,15 @@ var getAuth = function (opt) { var qSignature = CryptoJS.HmacSHA1(stringToSign, signKey).toString(); // 步骤五:构造 Authorization - var authorization = [ - 'q-sign-algorithm=' + qSignAlgorithm, - 'q-ak=' + qAk, - 'q-sign-time=' + qSignTime, - 'q-key-time=' + qKeyTime, - 'q-header-list=' + qHeaderList, - 'q-url-param-list=' + qUrlParamList, - 'q-signature=' + qSignature - ].join('&'); + var authorization = ['q-sign-algorithm=' + qSignAlgorithm, 'q-ak=' + qAk, 'q-sign-time=' + qSignTime, 'q-key-time=' + qKeyTime, 'q-header-list=' + qHeaderList, 'q-url-param-list=' + qUrlParamList, 'q-signature=' + qSignature].join('&'); return authorization; - }; -var noop = function () { - -}; +var noop = function noop() {}; // 清除对象里值为的 undefined 或 null 的属性 -var clearKey = function (obj) { +var clearKey = function clearKey(obj) { var retObj = {}; for (var key in obj) { if (obj.hasOwnProperty(key) && obj[key] !== undefined && obj[key] !== null) { @@ -211,18 +220,18 @@ var clearKey = function (obj) { }; // 获取文件分片 -var fileSlice = function (FilePath, start, end, callback) { +var fileSlice = function fileSlice(FilePath, start, end, callback) { if (FilePath) { wxfs.readFile({ filePath: FilePath, position: start, length: end - start, - success: function (res) { + success: function success(res) { callback(res.data); }, - fail: function () { + fail: function fail() { callback(null); - }, + } }); } else { callback(null); @@ -230,7 +239,7 @@ var fileSlice = function (FilePath, start, end, callback) { }; // 获取文件内容的 MD5 -var getBodyMd5 = function (UploadCheckContentMd5, Body, callback) { +var getBodyMd5 = function getBodyMd5(UploadCheckContentMd5, Body, callback) { callback = callback || noop; if (UploadCheckContentMd5) { if (Body && Body instanceof ArrayBuffer) { @@ -246,7 +255,7 @@ var getBodyMd5 = function (UploadCheckContentMd5, Body, callback) { }; // 获取文件 md5 值 -var getFileMd5 = function (body, callback) { +var getFileMd5 = function getFileMd5(body, callback) { var hash = md5(body); callback && callback(hash); return hash; @@ -254,7 +263,7 @@ var getFileMd5 = function (body, callback) { function clone(obj) { return map(obj, function (v) { - return typeof v === 'object' && v !== null ? clone(v) : v; + return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null ? clone(v) : v; }); } @@ -323,22 +332,25 @@ function filter(obj, fn) { return o; } -var binaryBase64 = function (str) { - var i, len, char, res = ''; +var binaryBase64 = function binaryBase64(str) { + var i, + len, + char, + res = ''; for (i = 0, len = str.length / 2; i < len; i++) { char = parseInt(str[i * 2] + str[i * 2 + 1], 16); res += String.fromCharCode(char); } return btoa(res); }; -var uuid = function () { - var S4 = function () { - return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1); +var uuid = function uuid() { + var S4 = function S4() { + return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1); }; - return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4()); + return S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4(); }; -var hasMissingParams = function (apiName, params) { +var hasMissingParams = function hasMissingParams(apiName, params) { var Bucket = params.Bucket; var Region = params.Region; var Key = params.Key; @@ -353,7 +365,7 @@ var hasMissingParams = function (apiName, params) { return false; }; -var formatParams = function (apiName, params) { +var formatParams = function formatParams(apiName, params) { // 复制参数对象 params = extend({}, params); @@ -361,7 +373,7 @@ var formatParams = function (apiName, params) { // 统一处理 Headers if (apiName !== 'getAuth' && apiName !== 'getV4Auth' && apiName !== 'getObjectUrl') { var Headers = params.Headers || {}; - if (params && typeof params === 'object') { + if (params && (typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object') { (function () { for (var key in params) { if (params.hasOwnProperty(key) && key.indexOf('x-cos-') > -1) { @@ -407,7 +419,7 @@ var formatParams = function (apiName, params) { // SSE-COS、SSE-KMS 'x-cos-server-side-encryption': 'ServerSideEncryption', 'x-cos-server-side-encryption-cos-kms-key-id': 'SSEKMSKeyId', - 'x-cos-server-side-encryption-context': 'SSEContext', + 'x-cos-server-side-encryption-context': 'SSEContext' }; util.each(headerMap, function (paramKey, headerKey) { if (params[paramKey] !== undefined) { @@ -422,7 +434,7 @@ var formatParams = function (apiName, params) { return params; }; -var apiWrapper = function (apiName, apiFn) { +var apiWrapper = function apiWrapper(apiName, apiFn) { return function (params, callback) { var self = this; @@ -437,21 +449,21 @@ var apiWrapper = function (apiName, apiFn) { params = formatParams(apiName, params); // 代理回调函数 - var formatResult = function (result) { + var formatResult = function formatResult(result) { if (result && result.headers) { result.headers['x-cos-version-id'] && (result.VersionId = result.headers['x-cos-version-id']); result.headers['x-cos-delete-marker'] && (result.DeleteMarker = result.headers['x-cos-delete-marker']); } return result; }; - var _callback = function (err, data) { + var _callback = function _callback(err, data) { callback && callback(formatResult(err), formatResult(data)); }; - var checkParams = function () { + var checkParams = function checkParams() { if (apiName !== 'getService' && apiName !== 'abortUploadTask') { // 判断参数是否完整 - var missingResult = hasMissingParams(apiName, params) + var missingResult = hasMissingParams(apiName, params); if (missingResult) { return 'missing param ' + missingResult; } @@ -463,11 +475,7 @@ var apiWrapper = function (apiName, apiFn) { return 'Region format error.'; } // 判断 region 格式 - if (!self.options.CompatibilityMode - && params.Region.indexOf('-') === -1 - && params.Region !== 'yfb' - && params.Region !== 'default' - && params.Region !== 'accelerate') { + if (!self.options.CompatibilityMode && params.Region.indexOf('-') === -1 && params.Region !== 'yfb' && params.Region !== 'default' && params.Region !== 'accelerate') { console.warn('warning: param Region format error, find help here: https://cloud.tencent.com/document/product/436/6224'); } } @@ -499,21 +507,21 @@ var apiWrapper = function (apiName, apiFn) { var Promise = global.Promise; if (!isSync && Promise && !callback) { return new Promise(function (resolve, reject) { - callback = function (err, data) { + callback = function callback(err, data) { err ? reject(err) : resolve(data); }; - if (errMsg) return _callback({error: errMsg}); + if (errMsg) return _callback({ error: errMsg }); apiFn.call(self, params, _callback); }); } else { - if (errMsg) return _callback({error: errMsg}); + if (errMsg) return _callback({ error: errMsg }); var res = apiFn.call(self, params, _callback); if (isSync) return res; } - } + }; }; -var throttleOnProgress = function (total, onProgress) { +var throttleOnProgress = function throttleOnProgress(total, onProgress) { var self = this; var size0 = 0; var size1 = 0; @@ -523,7 +531,7 @@ var throttleOnProgress = function (total, onProgress) { function update() { timer = 0; - if (onProgress && (typeof onProgress === 'function')) { + if (onProgress && typeof onProgress === 'function') { time1 = Date.now(); var speed = Math.max(0, Math.round((size1 - size0) / ((time1 - time0) / 1000) * 100) / 100) || 0; var percent; @@ -535,9 +543,8 @@ var throttleOnProgress = function (total, onProgress) { time0 = time1; size0 = size1; try { - onProgress({loaded: size1, total: total, speed: speed, percent: percent}); - } catch (e) { - } + onProgress({ loaded: size1, total: total, speed: speed, percent: percent }); + } catch (e) {} } } @@ -556,7 +563,7 @@ var throttleOnProgress = function (total, onProgress) { }; }; -var getFileSize = function (api, params, callback) { +var getFileSize = function getFileSize(api, params, callback) { if (api === 'postObject') { callback(); } else if (api === 'putObject') { @@ -564,13 +571,13 @@ var getFileSize = function (api, params, callback) { params.ContentLength = params.Body.byteLength; callback(null, params.ContentLength); } else { - callback({error: 'missing param Body'}); + callback({ error: 'missing param Body' }); } } else { if (params.FilePath) { wxfs.stat({ path: params.FilePath, - success: function (res) { + success: function success(res) { var stats = res.stats; params.FileStat = stats; params.FileStat.FilePath = params.FilePath; @@ -578,47 +585,47 @@ var getFileSize = function (api, params, callback) { params.ContentLength = size = size || 0; callback(null, size); }, - fail: function (err) { + fail: function fail(err) { callback(err); - }, + } }); } else { - callback({error: 'missing param FilePath'}); + callback({ error: 'missing param FilePath' }); } } }; -var getSkewTime = function (offset) { +var getSkewTime = function getSkewTime(offset) { return Date.now() + (offset || 0); }; -var compareVersion = function (v1, v2) { - v1 = v1.split('.') - v2 = v2.split('.') - var len = Math.max(v1.length, v2.length) +var compareVersion = function compareVersion(v1, v2) { + v1 = v1.split('.'); + v2 = v2.split('.'); + var len = Math.max(v1.length, v2.length); while (v1.length < len) { - v1.push('0') + v1.push('0'); } while (v2.length < len) { - v2.push('0') + v2.push('0'); } for (var i = 0; i < len; i++) { - var num1 = parseInt(v1[i]) - var num2 = parseInt(v2[i]) + var num1 = parseInt(v1[i]); + var num2 = parseInt(v2[i]); if (num1 > num2) { - return 1 + return 1; } else if (num1 < num2) { - return -1 + return -1; } } - return 0 + return 0; }; -var canFileSlice = (function () { +var canFileSlice = function () { var systemInfo = wx.getSystemInfoSync(); var support = compareVersion(systemInfo.SDKVersion, '2.10.0') >= 0; var needWarning = !support && systemInfo.platform === "devtools"; @@ -627,11 +634,12 @@ var canFileSlice = (function () { needWarning = false; return support; }; -})(); +}(); -var isCIHost = function(url) { - return /^https?:\/\/([^/]+\.)?ci\.[^/]+/.test(url); -} +var isCIHost = function isCIHost(url) { + return (/^https?:\/\/([^/]+\.)?ci\.[^/]+/.test(url) + ); +}; var util = { noop: noop, @@ -663,44 +671,51 @@ var util = { getAuth: getAuth, compareVersion: compareVersion, canFileSlice: canFileSlice, - isCIHost: isCIHost, + isCIHost: isCIHost }; module.exports = util; -xml2json - +xml2json; /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1))) /***/ }), /* 1 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || Function("return this")() || (1,eval)("this"); -} catch(e) { - // This works if the window reference is available - if(typeof window === "object") - g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; +var g; + +// This works in non-strict mode +g = function () { + return this; +}(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1, eval)("this"); +} catch (e) { + // This works if the window reference is available + if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; /***/ }), /* 2 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /* * DOM Level 2 @@ -709,8 +724,8 @@ module.exports = g; * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html */ -function copy(src,dest){ - for(var p in src){ +function copy(src, dest) { + for (var p in src) { dest[p] = src[p]; } } @@ -718,238 +733,239 @@ function copy(src,dest){ ^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));? ^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));? */ -function _extends(Class,Super){ +function _extends(Class, Super) { var pt = Class.prototype; - if(Object.create){ - var ppt = Object.create(Super.prototype) + if (Object.create) { + var ppt = Object.create(Super.prototype); pt.__proto__ = ppt; } - if(!(pt instanceof Super)){ - function t(){}; + if (!(pt instanceof Super)) { + var t = function t() {}; + + ; t.prototype = Super.prototype; t = new t(); - copy(pt,t); + copy(pt, t); Class.prototype = pt = t; } - if(pt.constructor != Class){ - if(typeof Class != 'function'){ - console.error("unknow Class:"+Class) + if (pt.constructor != Class) { + if (typeof Class != 'function') { + console.error("unknow Class:" + Class); } - pt.constructor = Class + pt.constructor = Class; } } -var htmlns = 'http://www.w3.org/1999/xhtml' ; +var htmlns = 'http://www.w3.org/1999/xhtml'; // Node Types -var NodeType = {} -var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; -var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; -var TEXT_NODE = NodeType.TEXT_NODE = 3; -var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; -var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; -var ENTITY_NODE = NodeType.ENTITY_NODE = 6; +var NodeType = {}; +var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1; +var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2; +var TEXT_NODE = NodeType.TEXT_NODE = 3; +var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4; +var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5; +var ENTITY_NODE = NodeType.ENTITY_NODE = 6; var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7; -var COMMENT_NODE = NodeType.COMMENT_NODE = 8; -var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; -var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; -var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; -var NOTATION_NODE = NodeType.NOTATION_NODE = 12; +var COMMENT_NODE = NodeType.COMMENT_NODE = 8; +var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9; +var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10; +var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11; +var NOTATION_NODE = NodeType.NOTATION_NODE = 12; // ExceptionCode -var ExceptionCode = {} +var ExceptionCode = {}; var ExceptionMessage = {}; -var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = ((ExceptionMessage[1]="Index size error"),1); -var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = ((ExceptionMessage[2]="DOMString size error"),2); -var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = ((ExceptionMessage[3]="Hierarchy request error"),3); -var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = ((ExceptionMessage[4]="Wrong document"),4); -var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = ((ExceptionMessage[5]="Invalid character"),5); -var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = ((ExceptionMessage[6]="No data allowed"),6); -var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]="No modification allowed"),7); -var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = ((ExceptionMessage[8]="Not found"),8); -var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = ((ExceptionMessage[9]="Not supported"),9); -var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = ((ExceptionMessage[10]="Attribute in use"),10); +var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = (ExceptionMessage[1] = "Index size error", 1); +var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = (ExceptionMessage[2] = "DOMString size error", 2); +var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = (ExceptionMessage[3] = "Hierarchy request error", 3); +var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = (ExceptionMessage[4] = "Wrong document", 4); +var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = (ExceptionMessage[5] = "Invalid character", 5); +var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = (ExceptionMessage[6] = "No data allowed", 6); +var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = (ExceptionMessage[7] = "No modification allowed", 7); +var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = (ExceptionMessage[8] = "Not found", 8); +var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = (ExceptionMessage[9] = "Not supported", 9); +var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = (ExceptionMessage[10] = "Attribute in use", 10); //level2 -var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = ((ExceptionMessage[11]="Invalid state"),11); -var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = ((ExceptionMessage[12]="Syntax error"),12); -var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = ((ExceptionMessage[13]="Invalid modification"),13); -var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = ((ExceptionMessage[14]="Invalid namespace"),14); -var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = ((ExceptionMessage[15]="Invalid access"),15); - +var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = (ExceptionMessage[11] = "Invalid state", 11); +var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = (ExceptionMessage[12] = "Syntax error", 12); +var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = (ExceptionMessage[13] = "Invalid modification", 13); +var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = (ExceptionMessage[14] = "Invalid namespace", 14); +var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = (ExceptionMessage[15] = "Invalid access", 15); function DOMException(code, message) { - if(message instanceof Error){ + if (message instanceof Error) { var error = message; - }else{ + } else { error = this; Error.call(this, ExceptionMessage[code]); this.message = ExceptionMessage[code]; - if(Error.captureStackTrace) Error.captureStackTrace(this, DOMException); + if (Error.captureStackTrace) Error.captureStackTrace(this, DOMException); } error.code = code; - if(message) this.message = this.message + ": " + message; + if (message) this.message = this.message + ": " + message; return error; }; DOMException.prototype = Error.prototype; -copy(ExceptionCode,DOMException) +copy(ExceptionCode, DOMException); /** * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177 * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live. * The items in the NodeList are accessible via an integral index, starting from 0. */ -function NodeList() { -}; +function NodeList() {}; NodeList.prototype = { /** - * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. - * @standard level1 - */ - length:0, + * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. + * @standard level1 + */ + length: 0, /** - * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. - * @standard level1 - * @param index unsigned long - * Index into the collection. - * @return Node - * The node at the indexth position in the NodeList, or null if that is not a valid index. - */ - item: function(index) { + * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. + * @standard level1 + * @param index unsigned long + * Index into the collection. + * @return Node + * The node at the indexth position in the NodeList, or null if that is not a valid index. + */ + item: function item(index) { return this[index] || null; }, - toString:function(isHTML,nodeFilter){ - for(var buf = [], i = 0;i=0){ - var lastIndex = list.length-1 - while(i= 0) { + var lastIndex = list.length - 1; + while (i < lastIndex) { + list[i] = list[++i]; } list.length = lastIndex; - if(el){ + if (el) { var doc = el.ownerDocument; - if(doc){ - _onRemoveAttribute(doc,el,attr); + if (doc) { + _onRemoveAttribute(doc, el, attr); attr.ownerElement = null; } } - }else{ - throw DOMException(NOT_FOUND_ERR,new Error(el.tagName+'@'+attr)) + } else { + throw DOMException(NOT_FOUND_ERR, new Error(el.tagName + '@' + attr)); } } NamedNodeMap.prototype = { - length:0, - item:NodeList.prototype.item, - getNamedItem: function(key) { -// if(key.indexOf(':')>0 || key == 'xmlns'){ -// return null; -// } + length: 0, + item: NodeList.prototype.item, + getNamedItem: function getNamedItem(key) { + // if(key.indexOf(':')>0 || key == 'xmlns'){ + // return null; + // } //console.log() var i = this.length; - while(i--){ + while (i--) { var attr = this[i]; //console.log(attr.nodeName,key) - if(attr.nodeName == key){ + if (attr.nodeName == key) { return attr; } } }, - setNamedItem: function(attr) { + setNamedItem: function setNamedItem(attr) { var el = attr.ownerElement; - if(el && el!=this._ownerElement){ + if (el && el != this._ownerElement) { throw new DOMException(INUSE_ATTRIBUTE_ERR); } var oldAttr = this.getNamedItem(attr.nodeName); - _addNamedNode(this._ownerElement,this,attr,oldAttr); + _addNamedNode(this._ownerElement, this, attr, oldAttr); return oldAttr; }, /* returns Node */ - setNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR - var el = attr.ownerElement, oldAttr; - if(el && el!=this._ownerElement){ + setNamedItemNS: function setNamedItemNS(attr) { + // raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR + var el = attr.ownerElement, + oldAttr; + if (el && el != this._ownerElement) { throw new DOMException(INUSE_ATTRIBUTE_ERR); } - oldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName); - _addNamedNode(this._ownerElement,this,attr,oldAttr); + oldAttr = this.getNamedItemNS(attr.namespaceURI, attr.localName); + _addNamedNode(this._ownerElement, this, attr, oldAttr); return oldAttr; }, /* returns Node */ - removeNamedItem: function(key) { + removeNamedItem: function removeNamedItem(key) { var attr = this.getNamedItem(key); - _removeNamedNode(this._ownerElement,this,attr); + _removeNamedNode(this._ownerElement, this, attr); return attr; - - - },// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR - + }, // raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR + //for level2 - removeNamedItemNS:function(namespaceURI,localName){ - var attr = this.getNamedItemNS(namespaceURI,localName); - _removeNamedNode(this._ownerElement,this,attr); + removeNamedItemNS: function removeNamedItemNS(namespaceURI, localName) { + var attr = this.getNamedItemNS(namespaceURI, localName); + _removeNamedNode(this._ownerElement, this, attr); return attr; }, - getNamedItemNS: function(namespaceURI, localName) { + getNamedItemNS: function getNamedItemNS(namespaceURI, localName) { var i = this.length; - while(i--){ + while (i--) { var node = this[i]; - if(node.localName == localName && node.namespaceURI == namespaceURI){ + if (node.localName == localName && node.namespaceURI == namespaceURI) { return node; } } @@ -959,17 +975,17 @@ NamedNodeMap.prototype = { /** * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 */ -function DOMImplementation(/* Object */ features) { +function DOMImplementation( /* Object */features) { this._features = {}; if (features) { for (var feature in features) { - this._features = features[feature]; + this._features = features[feature]; } } }; DOMImplementation.prototype = { - hasFeature: function(/* string */ feature, /* string */ version) { + hasFeature: function hasFeature( /* string */feature, /* string */version) { var versions = this._features[feature.toLowerCase()]; if (versions && (!version || version in versions)) { return true; @@ -978,22 +994,24 @@ DOMImplementation.prototype = { } }, // Introduced in DOM Level 2: - createDocument:function(namespaceURI, qualifiedName, doctype){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR + createDocument: function createDocument(namespaceURI, qualifiedName, doctype) { + // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR var doc = new Document(); doc.implementation = this; doc.childNodes = new NodeList(); doc.doctype = doctype; - if(doctype){ + if (doctype) { doc.appendChild(doctype); } - if(qualifiedName){ - var root = doc.createElementNS(namespaceURI,qualifiedName); + if (qualifiedName) { + var root = doc.createElementNS(namespaceURI, qualifiedName); doc.appendChild(root); } return doc; }, // Introduced in DOM Level 2: - createDocumentType:function(qualifiedName, publicId, systemId){// raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR + createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) { + // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR var node = new DocumentType(); node.name = qualifiedName; node.nodeName = qualifiedName; @@ -1001,7 +1019,7 @@ DOMImplementation.prototype = { node.systemId = systemId; // Introduced in DOM Level 2: //readonly attribute DOMString internalSubset; - + //TODO:.. // readonly attribute NamedNodeMap entities; // readonly attribute NamedNodeMap notations; @@ -1009,171 +1027,164 @@ DOMImplementation.prototype = { } }; - /** * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 */ -function Node() { -}; +function Node() {}; Node.prototype = { - firstChild : null, - lastChild : null, - previousSibling : null, - nextSibling : null, - attributes : null, - parentNode : null, - childNodes : null, - ownerDocument : null, - nodeValue : null, - namespaceURI : null, - prefix : null, - localName : null, + firstChild: null, + lastChild: null, + previousSibling: null, + nextSibling: null, + attributes: null, + parentNode: null, + childNodes: null, + ownerDocument: null, + nodeValue: null, + namespaceURI: null, + prefix: null, + localName: null, // Modified in DOM Level 2: - insertBefore:function(newChild, refChild){//raises - return _insertBefore(this,newChild,refChild); + insertBefore: function insertBefore(newChild, refChild) { + //raises + return _insertBefore(this, newChild, refChild); }, - replaceChild:function(newChild, oldChild){//raises - this.insertBefore(newChild,oldChild); - if(oldChild){ + replaceChild: function replaceChild(newChild, oldChild) { + //raises + this.insertBefore(newChild, oldChild); + if (oldChild) { this.removeChild(oldChild); } }, - removeChild:function(oldChild){ - return _removeChild(this,oldChild); + removeChild: function removeChild(oldChild) { + return _removeChild(this, oldChild); }, - appendChild:function(newChild){ - return this.insertBefore(newChild,null); + appendChild: function appendChild(newChild) { + return this.insertBefore(newChild, null); }, - hasChildNodes:function(){ + hasChildNodes: function hasChildNodes() { return this.firstChild != null; }, - cloneNode:function(deep){ - return cloneNode(this.ownerDocument||this,this,deep); + cloneNode: function cloneNode(deep) { + return _cloneNode(this.ownerDocument || this, this, deep); }, // Modified in DOM Level 2: - normalize:function(){ + normalize: function normalize() { var child = this.firstChild; - while(child){ + while (child) { var next = child.nextSibling; - if(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){ + if (next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE) { this.removeChild(next); child.appendData(next.data); - }else{ + } else { child.normalize(); child = next; } } }, - // Introduced in DOM Level 2: - isSupported:function(feature, version){ - return this.ownerDocument.implementation.hasFeature(feature,version); + // Introduced in DOM Level 2: + isSupported: function isSupported(feature, version) { + return this.ownerDocument.implementation.hasFeature(feature, version); }, - // Introduced in DOM Level 2: - hasAttributes:function(){ - return this.attributes.length>0; - }, - lookupPrefix:function(namespaceURI){ - var el = this; - while(el){ - var map = el._nsMap; - //console.dir(map) - if(map){ - for(var n in map){ - if(map[n] == namespaceURI){ - return n; - } - } - } - el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; - } - return null; - }, - // Introduced in DOM Level 3: - lookupNamespaceURI:function(prefix){ - var el = this; - while(el){ - var map = el._nsMap; - //console.dir(map) - if(map){ - if(prefix in map){ - return map[prefix] ; - } - } - el = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode; - } - return null; - }, - // Introduced in DOM Level 3: - isDefaultNamespace:function(namespaceURI){ - var prefix = this.lookupPrefix(namespaceURI); - return prefix == null; - } + // Introduced in DOM Level 2: + hasAttributes: function hasAttributes() { + return this.attributes.length > 0; + }, + lookupPrefix: function lookupPrefix(namespaceURI) { + var el = this; + while (el) { + var map = el._nsMap; + //console.dir(map) + if (map) { + for (var n in map) { + if (map[n] == namespaceURI) { + return n; + } + } + } + el = el.nodeType == ATTRIBUTE_NODE ? el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + lookupNamespaceURI: function lookupNamespaceURI(prefix) { + var el = this; + while (el) { + var map = el._nsMap; + //console.dir(map) + if (map) { + if (prefix in map) { + return map[prefix]; + } + } + el = el.nodeType == ATTRIBUTE_NODE ? el.ownerDocument : el.parentNode; + } + return null; + }, + // Introduced in DOM Level 3: + isDefaultNamespace: function isDefaultNamespace(namespaceURI) { + var prefix = this.lookupPrefix(namespaceURI); + return prefix == null; + } }; - -function _xmlEncoder(c){ - return c == '<' && '<' || - c == '>' && '>' || - c == '&' && '&' || - c == '"' && '"' || - '&#'+c.charCodeAt()+';' +function _xmlEncoder(c) { + return c == '<' && '<' || c == '>' && '>' || c == '&' && '&' || c == '"' && '"' || '&#' + c.charCodeAt() + ';'; } - -copy(NodeType,Node); -copy(NodeType,Node.prototype); +copy(NodeType, Node); +copy(NodeType, Node.prototype); /** * @param callback return true for continue,false for break * @return boolean true: break visit; */ -function _visitNode(node,callback){ - if(callback(node)){ +function _visitNode(node, callback) { + if (callback(node)) { return true; } - if(node = node.firstChild){ - do{ - if(_visitNode(node,callback)){return true} - }while(node=node.nextSibling) - } + if (node = node.firstChild) { + do { + if (_visitNode(node, callback)) { + return true; + } + } while (node = node.nextSibling); + } } - - -function Document(){ -} -function _onAddAttribute(doc,el,newAttr){ +function Document() {} +function _onAddAttribute(doc, el, newAttr) { doc && doc._inc++; - var ns = newAttr.namespaceURI ; - if(ns == 'http://www.w3.org/2000/xmlns/'){ + var ns = newAttr.namespaceURI; + if (ns == 'http://www.w3.org/2000/xmlns/') { //update namespace - el._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value + el._nsMap[newAttr.prefix ? newAttr.localName : ''] = newAttr.value; } } -function _onRemoveAttribute(doc,el,newAttr,remove){ +function _onRemoveAttribute(doc, el, newAttr, remove) { doc && doc._inc++; - var ns = newAttr.namespaceURI ; - if(ns == 'http://www.w3.org/2000/xmlns/'){ + var ns = newAttr.namespaceURI; + if (ns == 'http://www.w3.org/2000/xmlns/') { //update namespace - delete el._nsMap[newAttr.prefix?newAttr.localName:''] + delete el._nsMap[newAttr.prefix ? newAttr.localName : '']; } } -function _onUpdateChild(doc,el,newChild){ - if(doc && doc._inc){ +function _onUpdateChild(doc, el, newChild) { + if (doc && doc._inc) { doc._inc++; //update childNodes var cs = el.childNodes; - if(newChild){ + if (newChild) { cs[cs.length++] = newChild; - }else{ + } else { //console.log(1) var child = el.firstChild; var i = 0; - while(child){ + while (child) { cs[i++] = child; - child =child.nextSibling; + child = child.nextSibling; } cs.length = i; } @@ -1188,205 +1199,205 @@ function _onUpdateChild(doc,el,newChild){ * nodeValue,Attr:value,CharacterData:data * prefix */ -function _removeChild(parentNode,child){ +function _removeChild(parentNode, child) { var previous = child.previousSibling; var next = child.nextSibling; - if(previous){ + if (previous) { previous.nextSibling = next; - }else{ - parentNode.firstChild = next + } else { + parentNode.firstChild = next; } - if(next){ + if (next) { next.previousSibling = previous; - }else{ + } else { parentNode.lastChild = previous; } - _onUpdateChild(parentNode.ownerDocument,parentNode); + _onUpdateChild(parentNode.ownerDocument, parentNode); return child; } /** * preformance key(refChild == null) */ -function _insertBefore(parentNode,newChild,nextChild){ +function _insertBefore(parentNode, newChild, nextChild) { var cp = newChild.parentNode; - if(cp){ - cp.removeChild(newChild);//remove and update + if (cp) { + cp.removeChild(newChild); //remove and update } - if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ + if (newChild.nodeType === DOCUMENT_FRAGMENT_NODE) { var newFirst = newChild.firstChild; if (newFirst == null) { return newChild; } var newLast = newChild.lastChild; - }else{ + } else { newFirst = newLast = newChild; } var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; newFirst.previousSibling = pre; newLast.nextSibling = nextChild; - - - if(pre){ + + if (pre) { pre.nextSibling = newFirst; - }else{ + } else { parentNode.firstChild = newFirst; } - if(nextChild == null){ + if (nextChild == null) { parentNode.lastChild = newLast; - }else{ + } else { nextChild.previousSibling = newLast; } - do{ + do { newFirst.parentNode = parentNode; - }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) - _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); + } while (newFirst !== newLast && (newFirst = newFirst.nextSibling)); + _onUpdateChild(parentNode.ownerDocument || parentNode, parentNode); //console.log(parentNode.lastChild.nextSibling == null) if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { newChild.firstChild = newChild.lastChild = null; } return newChild; } -function _appendSingleChild(parentNode,newChild){ +function _appendSingleChild(parentNode, newChild) { var cp = newChild.parentNode; - if(cp){ + if (cp) { var pre = parentNode.lastChild; - cp.removeChild(newChild);//remove and update + cp.removeChild(newChild); //remove and update var pre = parentNode.lastChild; } var pre = parentNode.lastChild; newChild.parentNode = parentNode; newChild.previousSibling = pre; newChild.nextSibling = null; - if(pre){ + if (pre) { pre.nextSibling = newChild; - }else{ + } else { parentNode.firstChild = newChild; } parentNode.lastChild = newChild; - _onUpdateChild(parentNode.ownerDocument,parentNode,newChild); + _onUpdateChild(parentNode.ownerDocument, parentNode, newChild); return newChild; //console.log("__aa",parentNode.lastChild.nextSibling == null) } Document.prototype = { //implementation : null, - nodeName : '#document', - nodeType : DOCUMENT_NODE, - doctype : null, - documentElement : null, - _inc : 1, - - insertBefore : function(newChild, refChild){//raises - if(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){ + nodeName: '#document', + nodeType: DOCUMENT_NODE, + doctype: null, + documentElement: null, + _inc: 1, + + insertBefore: function insertBefore(newChild, refChild) { + //raises + if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { var child = newChild.firstChild; - while(child){ + while (child) { var next = child.nextSibling; - this.insertBefore(child,refChild); + this.insertBefore(child, refChild); child = next; } return newChild; } - if(this.documentElement == null && newChild.nodeType == ELEMENT_NODE){ + if (this.documentElement == null && newChild.nodeType == ELEMENT_NODE) { this.documentElement = newChild; } - - return _insertBefore(this,newChild,refChild),(newChild.ownerDocument = this),newChild; + + return _insertBefore(this, newChild, refChild), newChild.ownerDocument = this, newChild; }, - removeChild : function(oldChild){ - if(this.documentElement == oldChild){ + removeChild: function removeChild(oldChild) { + if (this.documentElement == oldChild) { this.documentElement = null; } - return _removeChild(this,oldChild); + return _removeChild(this, oldChild); }, // Introduced in DOM Level 2: - importNode : function(importedNode,deep){ - return importNode(this,importedNode,deep); + importNode: function importNode(importedNode, deep) { + return _importNode(this, importedNode, deep); }, // Introduced in DOM Level 2: - getElementById : function(id){ + getElementById: function getElementById(id) { var rtv = null; - _visitNode(this.documentElement,function(node){ - if(node.nodeType == ELEMENT_NODE){ - if(node.getAttribute('id') == id){ + _visitNode(this.documentElement, function (node) { + if (node.nodeType == ELEMENT_NODE) { + if (node.getAttribute('id') == id) { rtv = node; return true; } } - }) + }); return rtv; }, - + //document factory method: - createElement : function(tagName){ + createElement: function createElement(tagName) { var node = new Element(); node.ownerDocument = this; node.nodeName = tagName; node.tagName = tagName; node.childNodes = new NodeList(); - var attrs = node.attributes = new NamedNodeMap(); + var attrs = node.attributes = new NamedNodeMap(); attrs._ownerElement = node; return node; }, - createDocumentFragment : function(){ + createDocumentFragment: function createDocumentFragment() { var node = new DocumentFragment(); node.ownerDocument = this; node.childNodes = new NodeList(); return node; }, - createTextNode : function(data){ + createTextNode: function createTextNode(data) { var node = new Text(); node.ownerDocument = this; - node.appendData(data) + node.appendData(data); return node; }, - createComment : function(data){ + createComment: function createComment(data) { var node = new Comment(); node.ownerDocument = this; - node.appendData(data) + node.appendData(data); return node; }, - createCDATASection : function(data){ + createCDATASection: function createCDATASection(data) { var node = new CDATASection(); node.ownerDocument = this; - node.appendData(data) + node.appendData(data); return node; }, - createProcessingInstruction : function(target,data){ + createProcessingInstruction: function createProcessingInstruction(target, data) { var node = new ProcessingInstruction(); node.ownerDocument = this; node.tagName = node.target = target; - node.nodeValue= node.data = data; + node.nodeValue = node.data = data; return node; }, - createAttribute : function(name){ + createAttribute: function createAttribute(name) { var node = new Attr(); - node.ownerDocument = this; + node.ownerDocument = this; node.name = name; - node.nodeName = name; + node.nodeName = name; node.localName = name; node.specified = true; return node; }, - createEntityReference : function(name){ + createEntityReference: function createEntityReference(name) { var node = new EntityReference(); - node.ownerDocument = this; - node.nodeName = name; + node.ownerDocument = this; + node.nodeName = name; return node; }, // Introduced in DOM Level 2: - createElementNS : function(namespaceURI,qualifiedName){ + createElementNS: function createElementNS(namespaceURI, qualifiedName) { var node = new Element(); var pl = qualifiedName.split(':'); - var attrs = node.attributes = new NamedNodeMap(); + var attrs = node.attributes = new NamedNodeMap(); node.childNodes = new NodeList(); node.ownerDocument = this; node.nodeName = qualifiedName; node.tagName = qualifiedName; node.namespaceURI = namespaceURI; - if(pl.length == 2){ + if (pl.length == 2) { node.prefix = pl[0]; node.localName = pl[1]; - }else{ + } else { //el.prefix = null; node.localName = qualifiedName; } @@ -1394,7 +1405,7 @@ Document.prototype = { return node; }, // Introduced in DOM Level 2: - createAttributeNS : function(namespaceURI,qualifiedName){ + createAttributeNS: function createAttributeNS(namespaceURI, qualifiedName) { var node = new Attr(); var pl = qualifiedName.split(':'); node.ownerDocument = this; @@ -1402,261 +1413,241 @@ Document.prototype = { node.name = qualifiedName; node.namespaceURI = namespaceURI; node.specified = true; - if(pl.length == 2){ + if (pl.length == 2) { node.prefix = pl[0]; node.localName = pl[1]; - }else{ + } else { //el.prefix = null; node.localName = qualifiedName; } return node; } }; -_extends(Document,Node); - +_extends(Document, Node); function Element() { this._nsMap = {}; }; Element.prototype = { - nodeType : ELEMENT_NODE, - hasAttribute : function(name){ - return this.getAttributeNode(name)!=null; + nodeType: ELEMENT_NODE, + hasAttribute: function hasAttribute(name) { + return this.getAttributeNode(name) != null; }, - getAttribute : function(name){ + getAttribute: function getAttribute(name) { var attr = this.getAttributeNode(name); return attr && attr.value || ''; }, - getAttributeNode : function(name){ + getAttributeNode: function getAttributeNode(name) { return this.attributes.getNamedItem(name); }, - setAttribute : function(name, value){ + setAttribute: function setAttribute(name, value) { var attr = this.ownerDocument.createAttribute(name); attr.value = attr.nodeValue = "" + value; - this.setAttributeNode(attr) + this.setAttributeNode(attr); }, - removeAttribute : function(name){ - var attr = this.getAttributeNode(name) + removeAttribute: function removeAttribute(name) { + var attr = this.getAttributeNode(name); attr && this.removeAttributeNode(attr); }, - + //four real opeartion method - appendChild:function(newChild){ - if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ - return this.insertBefore(newChild,null); - }else{ - return _appendSingleChild(this,newChild); + appendChild: function appendChild(newChild) { + if (newChild.nodeType === DOCUMENT_FRAGMENT_NODE) { + return this.insertBefore(newChild, null); + } else { + return _appendSingleChild(this, newChild); } }, - setAttributeNode : function(newAttr){ + setAttributeNode: function setAttributeNode(newAttr) { return this.attributes.setNamedItem(newAttr); }, - setAttributeNodeNS : function(newAttr){ + setAttributeNodeNS: function setAttributeNodeNS(newAttr) { return this.attributes.setNamedItemNS(newAttr); }, - removeAttributeNode : function(oldAttr){ + removeAttributeNode: function removeAttributeNode(oldAttr) { //console.log(this == oldAttr.ownerElement) return this.attributes.removeNamedItem(oldAttr.nodeName); }, //get real attribute name,and remove it by removeAttributeNode - removeAttributeNS : function(namespaceURI, localName){ + removeAttributeNS: function removeAttributeNS(namespaceURI, localName) { var old = this.getAttributeNodeNS(namespaceURI, localName); old && this.removeAttributeNode(old); }, - - hasAttributeNS : function(namespaceURI, localName){ - return this.getAttributeNodeNS(namespaceURI, localName)!=null; + + hasAttributeNS: function hasAttributeNS(namespaceURI, localName) { + return this.getAttributeNodeNS(namespaceURI, localName) != null; }, - getAttributeNS : function(namespaceURI, localName){ + getAttributeNS: function getAttributeNS(namespaceURI, localName) { var attr = this.getAttributeNodeNS(namespaceURI, localName); return attr && attr.value || ''; }, - setAttributeNS : function(namespaceURI, qualifiedName, value){ + setAttributeNS: function setAttributeNS(namespaceURI, qualifiedName, value) { var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName); attr.value = attr.nodeValue = "" + value; - this.setAttributeNode(attr) + this.setAttributeNode(attr); }, - getAttributeNodeNS : function(namespaceURI, localName){ + getAttributeNodeNS: function getAttributeNodeNS(namespaceURI, localName) { return this.attributes.getNamedItemNS(namespaceURI, localName); }, - - getElementsByTagName : function(tagName){ - return new LiveNodeList(this,function(base){ + + getElementsByTagName: function getElementsByTagName(tagName) { + return new LiveNodeList(this, function (base) { var ls = []; - _visitNode(base,function(node){ - if(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){ + _visitNode(base, function (node) { + if (node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)) { ls.push(node); } }); return ls; }); }, - getElementsByTagNameNS : function(namespaceURI, localName){ - return new LiveNodeList(this,function(base){ + getElementsByTagNameNS: function getElementsByTagNameNS(namespaceURI, localName) { + return new LiveNodeList(this, function (base) { var ls = []; - _visitNode(base,function(node){ - if(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){ + _visitNode(base, function (node) { + if (node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)) { ls.push(node); } }); return ls; - }); } }; Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName; Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS; - -_extends(Element,Node); -function Attr() { -}; +_extends(Element, Node); +function Attr() {}; Attr.prototype.nodeType = ATTRIBUTE_NODE; -_extends(Attr,Node); +_extends(Attr, Node); - -function CharacterData() { -}; +function CharacterData() {}; CharacterData.prototype = { - data : '', - substringData : function(offset, count) { - return this.data.substring(offset, offset+count); + data: '', + substringData: function substringData(offset, count) { + return this.data.substring(offset, offset + count); }, - appendData: function(text) { - text = this.data+text; + appendData: function appendData(text) { + text = this.data + text; this.nodeValue = this.data = text; this.length = text.length; }, - insertData: function(offset,text) { - this.replaceData(offset,0,text); - + insertData: function insertData(offset, text) { + this.replaceData(offset, 0, text); }, - appendChild:function(newChild){ - throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]) + appendChild: function appendChild(newChild) { + throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]); }, - deleteData: function(offset, count) { - this.replaceData(offset,count,""); + deleteData: function deleteData(offset, count) { + this.replaceData(offset, count, ""); }, - replaceData: function(offset, count, text) { - var start = this.data.substring(0,offset); - var end = this.data.substring(offset+count); + replaceData: function replaceData(offset, count, text) { + var start = this.data.substring(0, offset); + var end = this.data.substring(offset + count); text = start + text + end; this.nodeValue = this.data = text; this.length = text.length; } -} -_extends(CharacterData,Node); -function Text() { }; +_extends(CharacterData, Node); +function Text() {}; Text.prototype = { - nodeName : "#text", - nodeType : TEXT_NODE, - splitText : function(offset) { + nodeName: "#text", + nodeType: TEXT_NODE, + splitText: function splitText(offset) { var text = this.data; var newText = text.substring(offset); text = text.substring(0, offset); this.data = this.nodeValue = text; this.length = text.length; var newNode = this.ownerDocument.createTextNode(newText); - if(this.parentNode){ + if (this.parentNode) { this.parentNode.insertBefore(newNode, this.nextSibling); } return newNode; } -} -_extends(Text,CharacterData); -function Comment() { }; +_extends(Text, CharacterData); +function Comment() {}; Comment.prototype = { - nodeName : "#comment", - nodeType : COMMENT_NODE -} -_extends(Comment,CharacterData); - -function CDATASection() { + nodeName: "#comment", + nodeType: COMMENT_NODE }; -CDATASection.prototype = { - nodeName : "#cdata-section", - nodeType : CDATA_SECTION_NODE -} -_extends(CDATASection,CharacterData); - +_extends(Comment, CharacterData); -function DocumentType() { +function CDATASection() {}; +CDATASection.prototype = { + nodeName: "#cdata-section", + nodeType: CDATA_SECTION_NODE }; +_extends(CDATASection, CharacterData); + +function DocumentType() {}; DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE; -_extends(DocumentType,Node); +_extends(DocumentType, Node); -function Notation() { -}; +function Notation() {}; Notation.prototype.nodeType = NOTATION_NODE; -_extends(Notation,Node); +_extends(Notation, Node); -function Entity() { -}; +function Entity() {}; Entity.prototype.nodeType = ENTITY_NODE; -_extends(Entity,Node); +_extends(Entity, Node); -function EntityReference() { -}; +function EntityReference() {}; EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE; -_extends(EntityReference,Node); - -function DocumentFragment() { -}; -DocumentFragment.prototype.nodeName = "#document-fragment"; -DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; -_extends(DocumentFragment,Node); +_extends(EntityReference, Node); +function DocumentFragment() {}; +DocumentFragment.prototype.nodeName = "#document-fragment"; +DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE; +_extends(DocumentFragment, Node); -function ProcessingInstruction() { -} +function ProcessingInstruction() {} ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE; -_extends(ProcessingInstruction,Node); -function XMLSerializer(){} -XMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){ - return nodeSerializeToString.call(node,isHtml,nodeFilter); -} +_extends(ProcessingInstruction, Node); +function XMLSerializer() {} +XMLSerializer.prototype.serializeToString = function (node, isHtml, nodeFilter) { + return nodeSerializeToString.call(node, isHtml, nodeFilter); +}; Node.prototype.toString = nodeSerializeToString; -function nodeSerializeToString(isHtml,nodeFilter){ +function nodeSerializeToString(isHtml, nodeFilter) { var buf = []; - var refNode = this.nodeType == 9?this.documentElement:this; + var refNode = this.nodeType == 9 ? this.documentElement : this; var prefix = refNode.prefix; var uri = refNode.namespaceURI; - - if(uri && prefix == null){ + + if (uri && prefix == null) { //console.log(prefix) var prefix = refNode.lookupPrefix(uri); - if(prefix == null){ + if (prefix == null) { //isHTML = true; - var visibleNamespaces=[ - {namespace:uri,prefix:null} - //{namespace:uri,prefix:''} - ] + var visibleNamespaces = [{ namespace: uri, prefix: null + //{namespace:uri,prefix:''} + }]; } } - serializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces); + serializeToString(this, buf, isHtml, nodeFilter, visibleNamespaces); //console.log('###',this.nodeType,uri,prefix,buf.join('')) return buf.join(''); } -function needNamespaceDefine(node,isHTML, visibleNamespaces) { - var prefix = node.prefix||''; +function needNamespaceDefine(node, isHTML, visibleNamespaces) { + var prefix = node.prefix || ''; var uri = node.namespaceURI; - if (!prefix && !uri){ + if (!prefix && !uri) { return false; } - if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" - || uri == 'http://www.w3.org/2000/xmlns/'){ + if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" || uri == 'http://www.w3.org/2000/xmlns/') { return false; } - - var i = visibleNamespaces.length + + var i = visibleNamespaces.length; //console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces) while (i--) { var ns = visibleNamespaces[i]; // get namespace prefix //console.log(node.nodeType,node.tagName,ns.prefix,prefix) - if (ns.prefix == prefix){ + if (ns.prefix == prefix) { return ns.namespace != uri; } } @@ -1668,174 +1659,171 @@ function needNamespaceDefine(node,isHTML, visibleNamespaces) { //console.error(3,true,node.flag,node.prefix,node.namespaceURI) return true; } -function serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){ - if(nodeFilter){ +function serializeToString(node, buf, isHTML, nodeFilter, visibleNamespaces) { + if (nodeFilter) { node = nodeFilter(node); - if(node){ - if(typeof node == 'string'){ + if (node) { + if (typeof node == 'string') { buf.push(node); return; } - }else{ + } else { return; } //buf.sort.apply(attrs, attributeSorter); } - switch(node.nodeType){ - case ELEMENT_NODE: - if (!visibleNamespaces) visibleNamespaces = []; - var startVisibleNamespaces = visibleNamespaces.length; - var attrs = node.attributes; - var len = attrs.length; - var child = node.firstChild; - var nodeName = node.tagName; - - isHTML = (htmlns === node.namespaceURI) ||isHTML - buf.push('<',nodeName); - - - - for(var i=0;i'); - //if is cdata child node - if(isHTML && /^script$/i.test(nodeName)){ - while(child){ - if(child.data){ - buf.push(child.data); - }else{ - serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); + + if (child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)) { + buf.push('>'); + //if is cdata child node + if (isHTML && /^script$/i.test(nodeName)) { + while (child) { + if (child.data) { + buf.push(child.data); + } else { + serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces); + } + child = child.nextSibling; + } + } else { + while (child) { + serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces); + child = child.nextSibling; } - child = child.nextSibling; - } - }else - { - while(child){ - serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); - child = child.nextSibling; } + buf.push(''); + } else { + buf.push('/>'); } - buf.push(''); - }else{ - buf.push('/>'); - } - // remove added visible namespaces - //visibleNamespaces.length = startVisibleNamespaces; - return; - case DOCUMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: - var child = node.firstChild; - while(child){ - serializeToString(child,buf,isHTML,nodeFilter,visibleNamespaces); - child = child.nextSibling; - } - return; - case ATTRIBUTE_NODE: - return buf.push(' ',node.name,'="',node.value.replace(/[<&"]/g,_xmlEncoder),'"'); - case TEXT_NODE: - return buf.push(node.data.replace(/[<&]/g,_xmlEncoder)); - case CDATA_SECTION_NODE: - return buf.push( ''); - case COMMENT_NODE: - return buf.push( ""); - case DOCUMENT_TYPE_NODE: - var pubid = node.publicId; - var sysid = node.systemId; - buf.push(''); - }else if(sysid && sysid!='.'){ - buf.push(' SYSTEM "',sysid,'">'); - }else{ - var sub = node.internalSubset; - if(sub){ - buf.push(" [",sub,"]"); + return; + case ATTRIBUTE_NODE: + return buf.push(' ', node.name, '="', node.value.replace(/[<&"]/g, _xmlEncoder), '"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g, _xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push(''); + case COMMENT_NODE: + return buf.push(""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + } else if (sysid && sysid != '.') { + buf.push(' SYSTEM "', sysid, '">'); + } else { + var sub = node.internalSubset; + if (sub) { + buf.push(" [", sub, "]"); + } + buf.push(">"); } - buf.push(">"); - } - return; - case PROCESSING_INSTRUCTION_NODE: - return buf.push( ""); - case ENTITY_REFERENCE_NODE: - return buf.push( '&',node.nodeName,';'); - //case ENTITY_NODE: - //case NOTATION_NODE: - default: - buf.push('??',node.nodeName); + return; + case PROCESSING_INSTRUCTION_NODE: + return buf.push(""); + case ENTITY_REFERENCE_NODE: + return buf.push('&', node.nodeName, ';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + buf.push('??', node.nodeName); } } -function importNode(doc,node,deep){ +function _importNode(doc, node, deep) { var node2; switch (node.nodeType) { - case ELEMENT_NODE: - node2 = node.cloneNode(false); - node2.ownerDocument = doc; + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; //var attrs = node2.attributes; //var len = attrs.length; //for(var i=0;i>> 6)) - + fromCharCode(0x80 | (cc & 0x3f))) - : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) - + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) - + fromCharCode(0x80 | ( cc & 0x3f))); + return cc < 0x80 ? c : cc < 0x800 ? fromCharCode(0xc0 | cc >>> 6) + fromCharCode(0x80 | cc & 0x3f) : fromCharCode(0xe0 | cc >>> 12 & 0x0f) + fromCharCode(0x80 | cc >>> 6 & 0x3f) + fromCharCode(0x80 | cc & 0x3f); } else { - var cc = 0x10000 - + (c.charCodeAt(0) - 0xD800) * 0x400 - + (c.charCodeAt(1) - 0xDC00); - return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07)) - + fromCharCode(0x80 | ((cc >>> 12) & 0x3f)) - + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) - + fromCharCode(0x80 | ( cc & 0x3f))); + var cc = 0x10000 + (c.charCodeAt(0) - 0xD800) * 0x400 + (c.charCodeAt(1) - 0xDC00); + return fromCharCode(0xf0 | cc >>> 18 & 0x07) + fromCharCode(0x80 | cc >>> 12 & 0x3f) + fromCharCode(0x80 | cc >>> 6 & 0x3f) + fromCharCode(0x80 | cc & 0x3f); } }; var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; - var utob = function(u) { + var utob = function utob(u) { return u.replace(re_utob, cb_utob); }; - var cb_encode = function(ccc) { + var cb_encode = function cb_encode(ccc) { var padlen = [0, 2, 1][ccc.length % 3], - ord = ccc.charCodeAt(0) << 16 - | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) - | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)), - chars = [ - b64chars.charAt( ord >>> 18), - b64chars.charAt((ord >>> 12) & 63), - padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), - padlen >= 1 ? '=' : b64chars.charAt(ord & 63) - ]; + ord = ccc.charCodeAt(0) << 16 | (ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8 | (ccc.length > 2 ? ccc.charCodeAt(2) : 0), + chars = [b64chars.charAt(ord >>> 18), b64chars.charAt(ord >>> 12 & 63), padlen >= 2 ? '=' : b64chars.charAt(ord >>> 6 & 63), padlen >= 1 ? '=' : b64chars.charAt(ord & 63)]; return chars.join(''); }; - var btoa = global.btoa ? function(b) { + var btoa = global.btoa ? function (b) { return global.btoa(b); - } : function(b) { + } : function (b) { return b.replace(/[\s\S]{1,3}/g, cb_encode); }; var _encode = buffer ? function (u) { - return (u.constructor === buffer.constructor ? u : new buffer(u)) - .toString('base64') - } - : function (u) { return btoa(utob(u)) } - ; - var encode = function(u, urisafe) { - return !urisafe - ? _encode(String(u)) - : _encode(String(u)).replace(/[+\/]/g, function(m0) { - return m0 == '+' ? '-' : '_'; - }).replace(/=/g, ''); + return (u.constructor === buffer.constructor ? u : new buffer(u)).toString('base64'); + } : function (u) { + return btoa(utob(u)); + }; + var encode = function encode(u, urisafe) { + return !urisafe ? _encode(String(u)) : _encode(String(u)).replace(/[+\/]/g, function (m0) { + return m0 == '+' ? '-' : '_'; + }).replace(/=/g, ''); + }; + var encodeURI = function encodeURI(u) { + return encode(u, true); }; - var encodeURI = function(u) { return encode(u, true) }; // decoder stuff - var re_btou = new RegExp([ - '[\xC0-\xDF][\x80-\xBF]', - '[\xE0-\xEF][\x80-\xBF]{2}', - '[\xF0-\xF7][\x80-\xBF]{3}' - ].join('|'), 'g'); - var cb_btou = function(cccc) { - switch(cccc.length) { - case 4: - var cp = ((0x07 & cccc.charCodeAt(0)) << 18) - | ((0x3f & cccc.charCodeAt(1)) << 12) - | ((0x3f & cccc.charCodeAt(2)) << 6) - | (0x3f & cccc.charCodeAt(3)), - offset = cp - 0x10000; - return (fromCharCode((offset >>> 10) + 0xD800) - + fromCharCode((offset & 0x3FF) + 0xDC00)); - case 3: - return fromCharCode( - ((0x0f & cccc.charCodeAt(0)) << 12) - | ((0x3f & cccc.charCodeAt(1)) << 6) - | (0x3f & cccc.charCodeAt(2)) - ); - default: - return fromCharCode( - ((0x1f & cccc.charCodeAt(0)) << 6) - | (0x3f & cccc.charCodeAt(1)) - ); + var re_btou = new RegExp(['[\xC0-\xDF][\x80-\xBF]', '[\xE0-\xEF][\x80-\xBF]{2}', '[\xF0-\xF7][\x80-\xBF]{3}'].join('|'), 'g'); + var cb_btou = function cb_btou(cccc) { + switch (cccc.length) { + case 4: + var cp = (0x07 & cccc.charCodeAt(0)) << 18 | (0x3f & cccc.charCodeAt(1)) << 12 | (0x3f & cccc.charCodeAt(2)) << 6 | 0x3f & cccc.charCodeAt(3), + offset = cp - 0x10000; + return fromCharCode((offset >>> 10) + 0xD800) + fromCharCode((offset & 0x3FF) + 0xDC00); + case 3: + return fromCharCode((0x0f & cccc.charCodeAt(0)) << 12 | (0x3f & cccc.charCodeAt(1)) << 6 | 0x3f & cccc.charCodeAt(2)); + default: + return fromCharCode((0x1f & cccc.charCodeAt(0)) << 6 | 0x3f & cccc.charCodeAt(1)); } }; - var btou = function(b) { + var btou = function btou(b) { return b.replace(re_btou, cb_btou); }; - var cb_decode = function(cccc) { + var cb_decode = function cb_decode(cccc) { var len = cccc.length, - padlen = len % 4, - n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) - | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) - | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) - | (len > 3 ? b64tab[cccc.charAt(3)] : 0), - chars = [ - fromCharCode( n >>> 16), - fromCharCode((n >>> 8) & 0xff), - fromCharCode( n & 0xff) - ]; + padlen = len % 4, + n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) | (len > 3 ? b64tab[cccc.charAt(3)] : 0), + chars = [fromCharCode(n >>> 16), fromCharCode(n >>> 8 & 0xff), fromCharCode(n & 0xff)]; chars.length -= [0, 0, 2, 1][padlen]; return chars.join(''); }; - var atob = global.atob ? function(a) { + var atob = global.atob ? function (a) { return global.atob(a); - } : function(a){ + } : function (a) { return a.replace(/[\s\S]{1,4}/g, cb_decode); }; - var _decode = buffer ? function(a) { - return (a.constructor === buffer.constructor - ? a : new buffer(a, 'base64')).toString(); - } - : function(a) { return btou(atob(a)) }; - var decode = function(a){ - return _decode( - String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' }) - .replace(/[^A-Za-z0-9\+\/]/g, '') - ); + var _decode = buffer ? function (a) { + return (a.constructor === buffer.constructor ? a : new buffer(a, 'base64')).toString(); + } : function (a) { + return btou(atob(a)); + }; + var decode = function decode(a) { + return _decode(String(a).replace(/[-_]/g, function (m0) { + return m0 == '-' ? '+' : '/'; + }).replace(/[^A-Za-z0-9\+\/]/g, '')); }; - var noConflict = function() { + var noConflict = function noConflict() { var Base64 = global.Base64; global.Base64 = _Base64; return Base64; @@ -2118,19 +2068,20 @@ var Base64 = (function(global) { noConflict: noConflict }; return Base64; -})(); +}(); module.exports = Base64; - - /***/ }), /* 4 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + -var initEvent = function (cos) { +var initEvent = function initEvent(cos) { var listeners = {}; - var getList = function (action) { + var getList = function getList(action) { !listeners[action] && (listeners[action] = []); return listeners[action]; }; @@ -2153,7 +2104,7 @@ var initEvent = function (cos) { }; }; -var EventProxy = function () { +var EventProxy = function EventProxy() { initEvent(this); }; @@ -2164,6 +2115,9 @@ module.exports.EventProxy = EventProxy; /* 5 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + var util = __webpack_require__(0); // 按照文件特征值,缓存 UploadId @@ -2172,22 +2126,20 @@ var expires = 30 * 24 * 3600; var cache; var timer; -var getCache = function () { +var getCache = function getCache() { try { var val = JSON.parse(wx.getStorageSync(cacheKey)); - } catch (e) { - } + } catch (e) {} if (!val) val = []; return val; }; -var setCache = function () { +var setCache = function setCache() { try { - wx.setStorageSync(cacheKey, JSON.stringify(cache)) - } catch (e) { - } + wx.setStorageSync(cacheKey, JSON.stringify(cache)); + } catch (e) {} }; -var init = function () { +var init = function init() { if (cache) return; cache = getCache(); // 清理太老旧的数据 @@ -2204,7 +2156,7 @@ var init = function () { }; // 把缓存存到本地 -var save = function () { +var save = function save() { if (timer) return; timer = setTimeout(function () { setCache(); @@ -2215,15 +2167,15 @@ var save = function () { var mod = { using: {}, // 标记 UploadId 正在使用 - setUsing: function (uuid) { + setUsing: function setUsing(uuid) { mod.using[uuid] = true; }, // 标记 UploadId 已经没在使用 - removeUsing: function (uuid) { + removeUsing: function removeUsing(uuid) { delete mod.using[uuid]; }, // 用上传参数生成哈希值 - getFileId: function (FileStat, ChunkSize, Bucket, Key) { + getFileId: function getFileId(FileStat, ChunkSize, Bucket, Key) { if (FileStat.FilePath && FileStat.size && FileStat.lastModifiedTime && ChunkSize) { return util.md5([FileStat.FilePath].join('::')) + '-' + util.md5([FileStat.size, FileStat.mode, FileStat.lastAccessedTime, FileStat.lastModifiedTime, ChunkSize, Bucket, Key].join('::')); } else { @@ -2231,18 +2183,17 @@ var mod = { } }, // 获取文件对应的 UploadId 列表 - getUploadIdList: function (uuid) { + getUploadIdList: function getUploadIdList(uuid) { if (!uuid) return null; init(); var list = []; for (var i = 0; i < cache.length; i++) { - if (cache[i][0] === uuid) - list.push(cache[i][1]); + if (cache[i][0] === uuid) list.push(cache[i][1]); } return list.length ? list : null; }, // 缓存 UploadId - saveUploadId: function (uuid, UploadId, limit) { + saveUploadId: function saveUploadId(uuid, UploadId, limit) { init(); if (!uuid) return; // 清理没用的 UploadId @@ -2251,7 +2202,8 @@ var mod = { var item = cache[i]; if (item[0] === uuid && item[1] === UploadId) { cache.splice(i, 1); - } else if (uuid !== item[0] && item[0].indexOf(part1) === 0) { // 文件路径相同,但其他信息不同,说明文件改变了或上传参数(存储桶、路径、分片大小)变了,直接清理掉 + } else if (uuid !== item[0] && item[0].indexOf(part1) === 0) { + // 文件路径相同,但其他信息不同,说明文件改变了或上传参数(存储桶、路径、分片大小)变了,直接清理掉 cache.splice(i, 1); } } @@ -2260,23 +2212,25 @@ var mod = { save(); }, // UploadId 已用完,移除掉 - removeUploadId: function (UploadId) { + removeUploadId: function removeUploadId(UploadId) { init(); delete mod.using[UploadId]; for (var i = cache.length - 1; i >= 0; i--) { - if (cache[i][1] === UploadId) cache.splice(i, 1) + if (cache[i][1] === UploadId) cache.splice(i, 1); } save(); - }, + } }; module.exports = mod; - /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + var COS = __webpack_require__(7); module.exports = COS; @@ -2289,9 +2243,9 @@ module.exports = COS; var util = __webpack_require__(0); var event = __webpack_require__(4); -var task = __webpack_require__(16); -var base = __webpack_require__(17); -var advance = __webpack_require__(23); +var task = __webpack_require__(17); +var base = __webpack_require__(18); +var advance = __webpack_require__(24); var defaultOptions = { SecretId: '', @@ -2318,11 +2272,11 @@ var defaultOptions = { SystemClockOffset: 0, // 单位毫秒,ms UploadCheckContentMd5: false, UploadIdCacheLimit: 50, - UseAccelerate: false, + UseAccelerate: false }; // 对外暴露的类 -var COS = function (options) { +var COS = function COS(options) { this.options = util.extend(util.clone(defaultOptions), options || {}); this.options.FileParallelLimit = Math.max(1, this.options.FileParallelLimit); this.options.ChunkParallelLimit = Math.max(1, this.options.ChunkParallelLimit); @@ -2336,6 +2290,14 @@ var COS = function (options) { if (this.options.AppId) { console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g: "test-1250000000").'); } + if (this.options.SecretId && this.options.SecretId.indexOf(' ') > -1) { + console.error('error: SecretId格式错误,请检查'); + console.error('error: SecretId format is incorrect. Please check'); + } + if (this.options.SecretKey && this.options.SecretKey.indexOf(' ') > -1) { + console.error('error: SecretKey格式错误,请检查'); + console.error('error: SecretKey format is incorrect. Please check'); + } event.init(this); task.init(this); }; @@ -2344,34 +2306,38 @@ base.init(COS, task); advance.init(COS, task); COS.getAuthorization = util.getAuth; -COS.version = '1.1.1'; +COS.version = '1.1.2'; module.exports = COS; - /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(process, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/* https://github.com/emn178/js-md5 */ +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, global, module) {var __WEBPACK_AMD_DEFINE_RESULT__; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/* https://github.com/emn178/js-md5 */ (function () { 'use strict'; var ERROR = 'input is invalid type'; - var WINDOW = typeof window === 'object'; + var WINDOW = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object'; var root = WINDOW ? window : {}; if (root.JS_MD5_NO_WINDOW) { WINDOW = false; } - var WEB_WORKER = !WINDOW && typeof self === 'object'; - var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; + var WEB_WORKER = !WINDOW && (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object'; + var NODE_JS = !root.JS_MD5_NO_NODE_JS && (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process.versions && process.versions.node; if (NODE_JS) { root = global; } else if (WEB_WORKER) { root = self; } - var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports; - var AMD = "function" === 'function' && __webpack_require__(10); + var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && ( false ? 'undefined' : _typeof(module)) === 'object' && module.exports; + var AMD = "function" === 'function' && __webpack_require__(11); var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; var HEX_CHARS = '0123456789abcdef'.split(''); var EXTRA = [128, 32768, 8388608, -2147483648]; @@ -2379,7 +2345,8 @@ module.exports = COS; var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64']; var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - var blocks = [], buffer8; + var blocks = [], + buffer8; if (ARRAY_BUFFER) { var buffer = new ArrayBuffer(68); buffer8 = new Uint8Array(buffer); @@ -2394,7 +2361,7 @@ module.exports = COS; if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { ArrayBuffer.isView = function (obj) { - return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer; + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer; }; } @@ -2455,7 +2422,7 @@ module.exports = COS; * @example * md5.base64('The quick brown fox jumps over the lazy dog'); */ - var createOutputMethod = function (outputType) { + var createOutputMethod = function createOutputMethod(outputType) { return function (message) { return new Md5(true).update(message)[outputType](); }; @@ -2481,7 +2448,7 @@ module.exports = COS; * var hash = md5.create(); * hash.update('The quick brown fox jumps over the lazy dog'); */ - var createMethod = function () { + var createMethod = function createMethod() { var method = createOutputMethod('hex'); if (NODE_JS) { method = nodeWrap(method); @@ -2499,10 +2466,10 @@ module.exports = COS; return method; }; - var nodeWrap = function (method) { + var nodeWrap = function nodeWrap(method) { var crypto = eval("require('crypto')"); var Buffer = eval("require('buffer').Buffer"); - var nodeMethod = function (message) { + var nodeMethod = function nodeMethod(message) { if (typeof message === 'string') { return crypto.createHash('md5').update(message, 'utf8').digest('hex'); } else { @@ -2512,8 +2479,7 @@ module.exports = COS; message = new Uint8Array(message); } } - if (Array.isArray(message) || ArrayBuffer.isView(message) || - message.constructor === Buffer) { + if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) { return crypto.createHash('md5').update(new Buffer(message)).digest('hex'); } else { return method(message); @@ -2530,10 +2496,7 @@ module.exports = COS; */ function Md5(sharedMemory) { if (sharedMemory) { - blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; this.blocks = blocks; this.buffer8 = buffer8; } else { @@ -2564,7 +2527,8 @@ module.exports = COS; return; } - var notString, type = typeof message; + var notString, + type = typeof message === 'undefined' ? 'undefined' : _typeof(message); if (type !== 'string') { if (type === 'object') { if (message === null) { @@ -2581,17 +2545,18 @@ module.exports = COS; } notString = true; } - var code, index = 0, i, length = message.length, blocks = this.blocks; + var code, + index = 0, + i, + length = message.length, + blocks = this.blocks; var buffer8 = this.buffer8; while (index < length) { if (this.hashed) { this.hashed = false; blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; } if (notString) { @@ -2611,18 +2576,18 @@ module.exports = COS; if (code < 0x80) { buffer8[i++] = code; } else if (code < 0x800) { - buffer8[i++] = 0xc0 | (code >> 6); - buffer8[i++] = 0x80 | (code & 0x3f); + buffer8[i++] = 0xc0 | code >> 6; + buffer8[i++] = 0x80 | code & 0x3f; } else if (code < 0xd800 || code >= 0xe000) { - buffer8[i++] = 0xe0 | (code >> 12); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f); + buffer8[i++] = 0xe0 | code >> 12; + buffer8[i++] = 0x80 | code >> 6 & 0x3f; + buffer8[i++] = 0x80 | code & 0x3f; } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - buffer8[i++] = 0xf0 | (code >> 18); - buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f); + code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff); + buffer8[i++] = 0xf0 | code >> 18; + buffer8[i++] = 0x80 | code >> 12 & 0x3f; + buffer8[i++] = 0x80 | code >> 6 & 0x3f; + buffer8[i++] = 0x80 | code & 0x3f; } } } else { @@ -2631,18 +2596,18 @@ module.exports = COS; if (code < 0x80) { blocks[i >> 2] |= code << SHIFT[i++ & 3]; } else if (code < 0x800) { - blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3]; } else if (code < 0xd800 || code >= 0xe000) { - blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3]; } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff); + blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3]; } } } @@ -2669,17 +2634,15 @@ module.exports = COS; return; } this.finalized = true; - var blocks = this.blocks, i = this.lastByteIndex; + var blocks = this.blocks, + i = this.lastByteIndex; blocks[i >> 2] |= EXTRA[i & 3]; if (i >= 56) { if (!this.hashed) { this.hash(); } blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; } blocks[14] = this.bytes << 3; blocks[15] = this.hBytes << 3 | this.bytes >>> 29; @@ -2687,87 +2650,93 @@ module.exports = COS; }; Md5.prototype.hash = function () { - var a, b, c, d, bc, da, blocks = this.blocks; + var a, + b, + c, + d, + bc, + da, + blocks = this.blocks; if (this.first) { a = blocks[0] - 680876937; a = (a << 7 | a >>> 25) - 271733879 << 0; d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708; d = (d << 12 | d >>> 20) + a << 0; - c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375; + c = (-271733879 ^ d & (a ^ -271733879)) + blocks[2] - 1126478375; c = (c << 17 | c >>> 15) + d << 0; - b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209; + b = (a ^ c & (d ^ a)) + blocks[3] - 1316259209; b = (b << 22 | b >>> 10) + c << 0; } else { a = this.h0; b = this.h1; c = this.h2; d = this.h3; - a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936; + a += (d ^ b & (c ^ d)) + blocks[0] - 680876936; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586; + d += (c ^ a & (b ^ c)) + blocks[1] - 389564586; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819; + c += (b ^ d & (a ^ b)) + blocks[2] + 606105819; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330; + b += (a ^ c & (d ^ a)) + blocks[3] - 1044525330; b = (b << 22 | b >>> 10) + c << 0; } - a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897; + a += (d ^ b & (c ^ d)) + blocks[4] - 176418897; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426; + d += (c ^ a & (b ^ c)) + blocks[5] + 1200080426; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341; + c += (b ^ d & (a ^ b)) + blocks[6] - 1473231341; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983; + b += (a ^ c & (d ^ a)) + blocks[7] - 45705983; b = (b << 22 | b >>> 10) + c << 0; - a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416; + a += (d ^ b & (c ^ d)) + blocks[8] + 1770035416; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417; + d += (c ^ a & (b ^ c)) + blocks[9] - 1958414417; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[10] - 42063; + c += (b ^ d & (a ^ b)) + blocks[10] - 42063; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162; + b += (a ^ c & (d ^ a)) + blocks[11] - 1990404162; b = (b << 22 | b >>> 10) + c << 0; - a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682; + a += (d ^ b & (c ^ d)) + blocks[12] + 1804603682; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101; + d += (c ^ a & (b ^ c)) + blocks[13] - 40341101; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290; + c += (b ^ d & (a ^ b)) + blocks[14] - 1502002290; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329; + b += (a ^ c & (d ^ a)) + blocks[15] + 1236535329; b = (b << 22 | b >>> 10) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510; + a += (c ^ d & (b ^ c)) + blocks[1] - 165796510; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632; + d += (b ^ c & (a ^ b)) + blocks[6] - 1069501632; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713; + c += (a ^ b & (d ^ a)) + blocks[11] + 643717713; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302; + b += (d ^ a & (c ^ d)) + blocks[0] - 373897302; b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691; + a += (c ^ d & (b ^ c)) + blocks[5] - 701558691; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083; + d += (b ^ c & (a ^ b)) + blocks[10] + 38016083; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335; + c += (a ^ b & (d ^ a)) + blocks[15] - 660478335; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848; + b += (d ^ a & (c ^ d)) + blocks[4] - 405537848; b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438; + a += (c ^ d & (b ^ c)) + blocks[9] + 568446438; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690; + d += (b ^ c & (a ^ b)) + blocks[14] - 1019803690; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961; + c += (a ^ b & (d ^ a)) + blocks[3] - 187363961; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501; + b += (d ^ a & (c ^ d)) + blocks[8] + 1163531501; b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467; + a += (c ^ d & (b ^ c)) + blocks[13] - 1444681467; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784; + d += (b ^ c & (a ^ b)) + blocks[2] - 51403784; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473; + c += (a ^ b & (d ^ a)) + blocks[7] + 1735328473; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734; + b += (d ^ a & (c ^ d)) + blocks[12] - 1926607734; b = (b << 20 | b >>> 12) + c << 0; bc = b ^ c; a += (bc ^ d) + blocks[5] - 378558; @@ -2869,24 +2838,12 @@ module.exports = COS; Md5.prototype.hex = function () { this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - - return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + - HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + - HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + - HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + - HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + - HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + - HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + - HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + - HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + - HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + - HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + - HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + - HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + - HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + - HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + - HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F]; + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + + return HEX_CHARS[h0 >> 4 & 0x0F] + HEX_CHARS[h0 & 0x0F] + HEX_CHARS[h0 >> 12 & 0x0F] + HEX_CHARS[h0 >> 8 & 0x0F] + HEX_CHARS[h0 >> 20 & 0x0F] + HEX_CHARS[h0 >> 16 & 0x0F] + HEX_CHARS[h0 >> 28 & 0x0F] + HEX_CHARS[h0 >> 24 & 0x0F] + HEX_CHARS[h1 >> 4 & 0x0F] + HEX_CHARS[h1 & 0x0F] + HEX_CHARS[h1 >> 12 & 0x0F] + HEX_CHARS[h1 >> 8 & 0x0F] + HEX_CHARS[h1 >> 20 & 0x0F] + HEX_CHARS[h1 >> 16 & 0x0F] + HEX_CHARS[h1 >> 28 & 0x0F] + HEX_CHARS[h1 >> 24 & 0x0F] + HEX_CHARS[h2 >> 4 & 0x0F] + HEX_CHARS[h2 & 0x0F] + HEX_CHARS[h2 >> 12 & 0x0F] + HEX_CHARS[h2 >> 8 & 0x0F] + HEX_CHARS[h2 >> 20 & 0x0F] + HEX_CHARS[h2 >> 16 & 0x0F] + HEX_CHARS[h2 >> 28 & 0x0F] + HEX_CHARS[h2 >> 24 & 0x0F] + HEX_CHARS[h3 >> 4 & 0x0F] + HEX_CHARS[h3 & 0x0F] + HEX_CHARS[h3 >> 12 & 0x0F] + HEX_CHARS[h3 >> 8 & 0x0F] + HEX_CHARS[h3 >> 20 & 0x0F] + HEX_CHARS[h3 >> 16 & 0x0F] + HEX_CHARS[h3 >> 28 & 0x0F] + HEX_CHARS[h3 >> 24 & 0x0F]; }; /** @@ -2914,13 +2871,11 @@ module.exports = COS; Md5.prototype.digest = function () { this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - return [ - h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF, - h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF, - h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF, - h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF - ]; + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + return [h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >> 24 & 0xFF]; }; /** @@ -2981,20 +2936,19 @@ module.exports = COS; * hash.base64(); */ Md5.prototype.base64 = function () { - var v1, v2, v3, base64Str = '', bytes = this.array(); + var v1, + v2, + v3, + base64Str = '', + bytes = this.array(); for (var i = 0; i < 15;) { v1 = bytes[i++]; v2 = bytes[i++]; v3 = bytes[i++]; - base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + - BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + - BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + - BASE64_ENCODE_CHAR[v3 & 63]; + base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63]; } v1 = bytes[i]; - base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + - BASE64_ENCODE_CHAR[(v1 << 4) & 63] + - '=='; + base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[v1 << 4 & 63] + '=='; return base64Str; }; @@ -3029,12 +2983,14 @@ module.exports = COS; } } })(); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(1))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(1), __webpack_require__(10)(module))) /***/ }), /* 9 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + // shim for using process in browser var process = module.exports = {}; @@ -3050,7 +3006,7 @@ var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } -function defaultClearTimeout () { +function defaultClearTimeout() { throw new Error('clearTimeout has not been defined'); } (function () { @@ -3072,7 +3028,7 @@ function defaultClearTimeout () { } catch (e) { cachedClearTimeout = defaultClearTimeout; } -} ()) +})(); function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { //normal enviroments in sane situations @@ -3086,17 +3042,15 @@ function runTimeout(fun) { try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedSetTimeout(fun, 0); - } catch(e){ + } catch (e) { try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedSetTimeout.call(null, fun, 0); - } catch(e){ + } catch (e) { // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error return cachedSetTimeout.call(this, fun, 0); } } - - } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { @@ -3111,19 +3065,16 @@ function runClearTimeout(marker) { try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedClearTimeout(marker); - } catch (e){ + } catch (e) { try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedClearTimeout.call(null, marker); - } catch (e){ + } catch (e) { // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. // Some versions of I.E. have different rules for clearTimeout vs setTimeout return cachedClearTimeout.call(this, marker); } } - - - } var queue = []; var draining = false; @@ -3153,7 +3104,7 @@ function drainQueue() { draining = true; var len = queue.length; - while(len) { + while (len) { currentQueue = queue; queue = []; while (++queueIndex < len) { @@ -3209,21 +3160,56 @@ process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; -process.listeners = function (name) { return [] } +process.listeners = function (name) { + return []; +}; process.binding = function (name) { throw new Error('process.binding is not supported'); }; -process.cwd = function () { return '/' }; +process.cwd = function () { + return '/'; +}; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; -process.umask = function() { return 0; }; - +process.umask = function () { + return 0; +}; /***/ }), /* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function (module) { + if (!module.webpackPolyfill) { + module.deprecate = function () {}; + module.paths = []; + // module.parent = undefined by default + if (!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function get() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function get() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + +/***/ }), +/* 11 */ /***/ (function(module, exports) { /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ @@ -3232,8 +3218,11 @@ module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(exports, {})) /***/ }), -/* 11 */ -/***/ (function(module, exports) { +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + /* CryptoJS v3.1.2 @@ -3241,18 +3230,147 @@ module.exports = __webpack_amd_options__; (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ -var CryptoJS=CryptoJS||function(g,l){var e={},d=e.lib={},m=function(){},k=d.Base={extend:function(a){m.prototype=this;var c=new m;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, - p=d.WordArray=k.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=l?c:4*a.length},toString:function(a){return(a||n).stringify(this)},concat:function(a){var c=this.words,q=a.words,f=this.sigBytes;a=a.sigBytes;this.clamp();if(f%4)for(var b=0;b>>2]|=(q[b>>>2]>>>24-8*(b%4)&255)<<24-8*((f+b)%4);else if(65535>>2]=q[b>>>2];else c.push.apply(c,q);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< - 32-8*(c%4);a.length=g.ceil(c/4)},clone:function(){var a=k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b>>2]>>>24-8*(f%4)&255;b.push((d>>>4).toString(16));b.push((d&15).toString(16))}return b.join("")},parse:function(a){for(var c=a.length,b=[],f=0;f>>3]|=parseInt(a.substr(f, - 2),16)<<24-4*(f%8);return new p.init(b,c/2)}},j=b.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],f=0;f>>2]>>>24-8*(f%4)&255));return b.join("")},parse:function(a){for(var c=a.length,b=[],f=0;f>>2]|=(a.charCodeAt(f)&255)<<24-8*(f%4);return new p.init(b,c)}},h=b.Utf8={stringify:function(a){try{return decodeURIComponent(escape(j.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}}, - r=d.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=new p.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=h.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,b=c.words,f=c.sigBytes,d=this.blockSize,e=f/(4*d),e=a?g.ceil(e):g.max((e|0)-this._minBufferSize,0);a=e*d;f=g.min(4*a,f);if(a){for(var k=0;ka;a++){if(16>a)m[a]=d[e+a]|0;else{var c=m[a-3]^m[a-8]^m[a-14]^m[a-16];m[a]=c<<1|c>>>31}c=(n<<5|n>>>27)+l+m[a];c=20>a?c+((j&h|~j&g)+1518500249):40>a?c+((j^h^g)+1859775393):60>a?c+((j&h|j&g|h&g)-1894007588):c+((j^h^ -g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2]+h|0;b[3]=b[3]+g|0;b[4]=b[4]+l|0},_doFinalize:function(){var d=this._data,e=d.words,b=8*this._nDataBytes,g=8*d.sigBytes;e[g>>>5]|=128<<24-g%32;e[(g+64>>>9<<4)+14]=Math.floor(b/4294967296);e[(g+64>>>9<<4)+15]=b;d.sigBytes=4*e.length;this._process();return this._hash},clone:function(){var e=d.clone.call(this);e._hash=this._hash.clone();return e}});g.SHA1=d._createHelper(l);g.HmacSHA1=d._createHmacHelper(l)})(); -(function(){var g=CryptoJS,l=g.enc.Utf8;g.algo.HMAC=g.lib.Base.extend({init:function(e,d){e=this._hasher=new e.init;"string"==typeof d&&(d=l.parse(d));var g=e.blockSize,k=4*g;d.sigBytes>k&&(d=e.finalize(d));d.clamp();for(var p=this._oKey=d.clone(),b=this._iKey=d.clone(),n=p.words,j=b.words,h=0;h>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((f + b) % 4); + } else if (65535 < q.length) for (b = 0; b < a; b += 4) { + c[f + b >>> 2] = q[b >>> 2]; + } else c.push.apply(c, q);this.sigBytes += a;return this; + }, clamp: function clamp() { + var a = this.words, + c = this.sigBytes;a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);a.length = g.ceil(c / 4); + }, clone: function clone() { + var a = k.clone.call(this);a.words = this.words.slice(0);return a; + }, random: function random(a) { + for (var c = [], b = 0; b < a; b += 4) { + c.push(4294967296 * g.random() | 0); + }return new p.init(c, a); + } }), + b = e.enc = {}, + n = b.Hex = { stringify: function stringify(a) { + var c = a.words;a = a.sigBytes;for (var b = [], f = 0; f < a; f++) { + var d = c[f >>> 2] >>> 24 - 8 * (f % 4) & 255;b.push((d >>> 4).toString(16));b.push((d & 15).toString(16)); + }return b.join(""); + }, parse: function parse(a) { + for (var c = a.length, b = [], f = 0; f < c; f += 2) { + b[f >>> 3] |= parseInt(a.substr(f, 2), 16) << 24 - 4 * (f % 8); + }return new p.init(b, c / 2); + } }, + j = b.Latin1 = { stringify: function stringify(a) { + var c = a.words;a = a.sigBytes;for (var b = [], f = 0; f < a; f++) { + b.push(String.fromCharCode(c[f >>> 2] >>> 24 - 8 * (f % 4) & 255)); + }return b.join(""); + }, parse: function parse(a) { + for (var c = a.length, b = [], f = 0; f < c; f++) { + b[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - 8 * (f % 4); + }return new p.init(b, c); + } }, + h = b.Utf8 = { stringify: function stringify(a) { + try { + return decodeURIComponent(escape(j.stringify(a))); + } catch (c) { + throw Error("Malformed UTF-8 data"); + } + }, parse: function parse(a) { + return j.parse(unescape(encodeURIComponent(a))); + } }, + r = d.BufferedBlockAlgorithm = k.extend({ reset: function reset() { + this._data = new p.init();this._nDataBytes = 0; + }, _append: function _append(a) { + "string" == typeof a && (a = h.parse(a));this._data.concat(a);this._nDataBytes += a.sigBytes; + }, _process: function _process(a) { + var c = this._data, + b = c.words, + f = c.sigBytes, + d = this.blockSize, + e = f / (4 * d), + e = a ? g.ceil(e) : g.max((e | 0) - this._minBufferSize, 0);a = e * d;f = g.min(4 * a, f);if (a) { + for (var k = 0; k < a; k += d) { + this._doProcessBlock(b, k); + }k = b.splice(0, a);c.sigBytes -= f; + }return new p.init(k, f); + }, clone: function clone() { + var a = k.clone.call(this); + a._data = this._data.clone();return a; + }, _minBufferSize: 0 });d.Hasher = r.extend({ cfg: k.extend(), init: function init(a) { + this.cfg = this.cfg.extend(a);this.reset(); + }, reset: function reset() { + r.reset.call(this);this._doReset(); + }, update: function update(a) { + this._append(a);this._process();return this; + }, finalize: function finalize(a) { + a && this._append(a);return this._doFinalize(); + }, blockSize: 16, _createHelper: function _createHelper(a) { + return function (b, d) { + return new a.init(d).finalize(b); + }; + }, _createHmacHelper: function _createHmacHelper(a) { + return function (b, d) { + return new s.HMAC.init(a, d).finalize(b); + }; + } });var s = e.algo = {};return e; +}(Math); +(function () { + var g = CryptoJS, + l = g.lib, + e = l.WordArray, + d = l.Hasher, + m = [], + l = g.algo.SHA1 = d.extend({ _doReset: function _doReset() { + this._hash = new e.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, _doProcessBlock: function _doProcessBlock(d, e) { + for (var b = this._hash.words, n = b[0], j = b[1], h = b[2], g = b[3], l = b[4], a = 0; 80 > a; a++) { + if (16 > a) m[a] = d[e + a] | 0;else { + var c = m[a - 3] ^ m[a - 8] ^ m[a - 14] ^ m[a - 16];m[a] = c << 1 | c >>> 31; + }c = (n << 5 | n >>> 27) + l + m[a];c = 20 > a ? c + ((j & h | ~j & g) + 1518500249) : 40 > a ? c + ((j ^ h ^ g) + 1859775393) : 60 > a ? c + ((j & h | j & g | h & g) - 1894007588) : c + ((j ^ h ^ g) - 899497514);l = g;g = h;h = j << 30 | j >>> 2;j = n;n = c; + }b[0] = b[0] + n | 0;b[1] = b[1] + j | 0;b[2] = b[2] + h | 0;b[3] = b[3] + g | 0;b[4] = b[4] + l | 0; + }, _doFinalize: function _doFinalize() { + var d = this._data, + e = d.words, + b = 8 * this._nDataBytes, + g = 8 * d.sigBytes;e[g >>> 5] |= 128 << 24 - g % 32;e[(g + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296);e[(g + 64 >>> 9 << 4) + 15] = b;d.sigBytes = 4 * e.length;this._process();return this._hash; + }, clone: function clone() { + var e = d.clone.call(this);e._hash = this._hash.clone();return e; + } });g.SHA1 = d._createHelper(l);g.HmacSHA1 = d._createHmacHelper(l); +})(); +(function () { + var g = CryptoJS, + l = g.enc.Utf8;g.algo.HMAC = g.lib.Base.extend({ init: function init(e, d) { + e = this._hasher = new e.init();"string" == typeof d && (d = l.parse(d));var g = e.blockSize, + k = 4 * g;d.sigBytes > k && (d = e.finalize(d));d.clamp();for (var p = this._oKey = d.clone(), b = this._iKey = d.clone(), n = p.words, j = b.words, h = 0; h < g; h++) { + n[h] ^= 1549556828, j[h] ^= 909522486; + }p.sigBytes = b.sigBytes = k;this.reset(); + }, reset: function reset() { + var e = this._hasher;e.reset();e.update(this._iKey); + }, update: function update(e) { + this._hasher.update(e);return this; + }, finalize: function finalize(e) { + var d = this._hasher;e = d.finalize(e);d.reset();return d.finalize(this._oKey.clone().concat(e)); + } }); +})(); (function () { // Shortcuts @@ -3278,7 +3396,7 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 * * var base64String = CryptoJS.enc.Base64.stringify(wordArray); */ - stringify: function (wordArray) { + stringify: function stringify(wordArray) { // Shortcuts var words = wordArray.words; var sigBytes = wordArray.sigBytes; @@ -3290,14 +3408,14 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 // Convert var base64Chars = []; for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; + var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff; + var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff; - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + var triplet = byte1 << 16 | byte2 << 8 | byte3; - for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) { + base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f)); } } @@ -3325,7 +3443,7 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 * * var wordArray = CryptoJS.enc.Base64.parse(base64String); */ - parse: function (base64Str) { + parse: function parse(base64Str) { // Shortcuts var base64StrLength = base64Str.length; var map = this._map; @@ -3344,9 +3462,9 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 var nBytes = 0; for (var i = 0; i < base64StrLength; i++) { if (i % 4) { - var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2); - var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2); - words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); + var bits1 = map.indexOf(base64Str.charAt(i - 1)) << i % 4 * 2; + var bits2 = map.indexOf(base64Str.charAt(i)) >>> 6 - i % 4 * 2; + words[nBytes >>> 2] |= (bits1 | bits2) << 24 - nBytes % 4 * 8; nBytes++; } } @@ -3356,15 +3474,17 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' }; -}()); +})(); module.exports = CryptoJS; - /***/ }), -/* 12 */ +/* 13 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + /* Copyright 2011-2013 Abdulla Abdurakhmanov Original sources are available at https://code.google.com/p/x2js/ @@ -3381,9 +3501,9 @@ module.exports = CryptoJS; See the License for the specific language governing permissions and limitations under the License. */ -var DOMParser = __webpack_require__(13).DOMParser; +var DOMParser = __webpack_require__(14).DOMParser; -var x2js = function (config) { +var x2js = function x2js(config) { 'use strict'; var VERSION = "1.2.0"; @@ -3393,7 +3513,7 @@ var x2js = function (config) { initRequiredPolyfills(); function initConfigDefaults() { - if(config.escapeMode === undefined) { + if (config.escapeMode === undefined) { config.escapeMode = true; } @@ -3401,46 +3521,45 @@ var x2js = function (config) { config.arrayAccessForm = config.arrayAccessForm || "none"; config.emptyNodeForm = config.emptyNodeForm || "text"; - if(config.enableToStringFunc === undefined) { + if (config.enableToStringFunc === undefined) { config.enableToStringFunc = true; } config.arrayAccessFormPaths = config.arrayAccessFormPaths || []; - if(config.skipEmptyTextNodesForObj === undefined) { + if (config.skipEmptyTextNodesForObj === undefined) { config.skipEmptyTextNodesForObj = true; } - if(config.stripWhitespaces === undefined) { + if (config.stripWhitespaces === undefined) { config.stripWhitespaces = true; } config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || []; - if(config.useDoubleQuotes === undefined) { + if (config.useDoubleQuotes === undefined) { config.useDoubleQuotes = false; } config.xmlElementsFilter = config.xmlElementsFilter || []; config.jsonPropertiesFilter = config.jsonPropertiesFilter || []; - if(config.keepCData === undefined) { + if (config.keepCData === undefined) { config.keepCData = false; } } var DOMNodeTypes = { - ELEMENT_NODE : 1, - TEXT_NODE : 3, - CDATA_SECTION_NODE : 4, - COMMENT_NODE : 8, - DOCUMENT_NODE : 9 + ELEMENT_NODE: 1, + TEXT_NODE: 3, + CDATA_SECTION_NODE: 4, + COMMENT_NODE: 8, + DOCUMENT_NODE: 9 }; - function initRequiredPolyfills() { - } + function initRequiredPolyfills() {} - function getNodeLocalName( node ) { + function getNodeLocalName(node) { var nodeLocalName = node.localName; - if(nodeLocalName == null) // Yeah, this is IE!! + if (nodeLocalName == null) // Yeah, this is IE!! nodeLocalName = node.baseName; - if(nodeLocalName == null || nodeLocalName=="") // =="" is IE too + if (nodeLocalName == null || nodeLocalName == "") // =="" is IE too nodeLocalName = node.nodeName; return nodeLocalName; } @@ -3450,10 +3569,7 @@ var x2js = function (config) { } function escapeXmlChars(str) { - if(typeof(str) == "string") - return str.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); - else - return str; + if (typeof str == "string") return str.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''');else return str; } function unescapeXmlChars(str) { @@ -3462,40 +3578,30 @@ var x2js = function (config) { function checkInStdFiltersArrayForm(stdFiltersArrayForm, obj, name, path) { var idx = 0; - for(; idx < stdFiltersArrayForm.length; idx++) { + for (; idx < stdFiltersArrayForm.length; idx++) { var filterPath = stdFiltersArrayForm[idx]; - if( typeof filterPath === "string" ) { - if(filterPath == path) - break; - } - else - if( filterPath instanceof RegExp) { - if(filterPath.test(path)) - break; - } - else - if( typeof filterPath === "function") { - if(filterPath(obj, name, path)) - break; + if (typeof filterPath === "string") { + if (filterPath == path) break; + } else if (filterPath instanceof RegExp) { + if (filterPath.test(path)) break; + } else if (typeof filterPath === "function") { + if (filterPath(obj, name, path)) break; } } - return idx!=stdFiltersArrayForm.length; + return idx != stdFiltersArrayForm.length; } function toArrayAccessForm(obj, childName, path) { - switch(config.arrayAccessForm) { + switch (config.arrayAccessForm) { case "property": - if(!(obj[childName] instanceof Array)) - obj[childName+"_asArray"] = [obj[childName]]; - else - obj[childName+"_asArray"] = obj[childName]; + if (!(obj[childName] instanceof Array)) obj[childName + "_asArray"] = [obj[childName]];else obj[childName + "_asArray"] = obj[childName]; break; /*case "none": break;*/ } - if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) { - if(checkInStdFiltersArrayForm(config.arrayAccessFormPaths, obj, childName, path)) { + if (!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) { + if (checkInStdFiltersArrayForm(config.arrayAccessFormPaths, obj, childName, path)) { obj[childName] = [obj[childName]]; } } @@ -3506,25 +3612,22 @@ var x2js = function (config) { // Improved to support full spec and optional parts var bits = prop.split(/[-T:+Z]/g); - var d = new Date(bits[0], bits[1]-1, bits[2]); + var d = new Date(bits[0], bits[1] - 1, bits[2]); var secondBits = bits[5].split("\."); d.setHours(bits[3], bits[4], secondBits[0]); - if(secondBits.length>1) - d.setMilliseconds(secondBits[1]); + if (secondBits.length > 1) d.setMilliseconds(secondBits[1]); // Get supplied time zone offset in minutes - if(bits[6] && bits[7]) { + if (bits[6] && bits[7]) { var offsetMinutes = bits[6] * 60 + Number(bits[7]); - var sign = /\d\d-\d\d:\d\d$/.test(prop)? '-' : '+'; + var sign = /\d\d-\d\d:\d\d$/.test(prop) ? '-' : '+'; // Apply the sign - offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes); + offsetMinutes = 0 + (sign == '-' ? -1 * offsetMinutes : offsetMinutes); // Apply offset and local timezone - d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset()) - } - else - if(prop.indexOf("Z", prop.length - 1) !== -1) { + d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset()); + } else if (prop.indexOf("Z", prop.length - 1) !== -1) { d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds())); } @@ -3533,187 +3636,153 @@ var x2js = function (config) { } function checkFromXmlDateTimePaths(value, childName, fullPath) { - if(config.datetimeAccessFormPaths.length > 0) { + if (config.datetimeAccessFormPaths.length > 0) { var path = fullPath.split("\.#")[0]; - if(checkInStdFiltersArrayForm(config.datetimeAccessFormPaths, value, childName, path)) { + if (checkInStdFiltersArrayForm(config.datetimeAccessFormPaths, value, childName, path)) { return fromXmlDateTime(value); - } - else - return value; - } - else - return value; + } else return value; + } else return value; } function checkXmlElementsFilter(obj, childType, childName, childPath) { - if( childType == DOMNodeTypes.ELEMENT_NODE && config.xmlElementsFilter.length > 0) { + if (childType == DOMNodeTypes.ELEMENT_NODE && config.xmlElementsFilter.length > 0) { return checkInStdFiltersArrayForm(config.xmlElementsFilter, obj, childName, childPath); - } - else - return true; + } else return true; } - function parseDOMChildren( node, path ) { - if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) { - var result = new Object; + function parseDOMChildren(node, path) { + if (node.nodeType == DOMNodeTypes.DOCUMENT_NODE) { + var result = new Object(); var nodeChildren = node.childNodes; // Alternative for firstElementChild which is not supported in some environments - for(var cidx=0; cidx 1 && result.__text!=null && config.skipEmptyTextNodesForObj) { - if( (config.stripWhitespaces && result.__text=="") || (result.__text.trim()=="")) { + } else if (result.__cnt > 1 && result.__text != null && config.skipEmptyTextNodesForObj) { + if (config.stripWhitespaces && result.__text == "" || result.__text.trim() == "") { delete result.__text; } } delete result.__cnt; - if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) { - result.toString = function() { - return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:''); + if (config.enableToStringFunc && (result.__text != null || result.__cdata != null)) { + result.toString = function () { + return (this.__text != null ? this.__text : '') + (this.__cdata != null ? this.__cdata : ''); }; } return result; - } - else - if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) { + } else if (node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) { return node.nodeValue; } } function startTag(jsonObj, element, attrList, closed) { - var resultStr = "<"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+":"):"") + element; - if(attrList!=null) { - for(var aidx = 0; aidx < attrList.length; aidx++) { + var resultStr = "<" + (jsonObj != null && jsonObj.__prefix != null ? jsonObj.__prefix + ":" : "") + element; + if (attrList != null) { + for (var aidx = 0; aidx < attrList.length; aidx++) { var attrName = attrList[aidx]; var attrVal = jsonObj[attrName]; - if(config.escapeMode) - attrVal=escapeXmlChars(attrVal); - resultStr+=" "+attrName.substr(config.attributePrefix.length)+"="; - if(config.useDoubleQuotes) - resultStr+='"'+attrVal+'"'; - else - resultStr+="'"+attrVal+"'"; + if (config.escapeMode) attrVal = escapeXmlChars(attrVal); + resultStr += " " + attrName.substr(config.attributePrefix.length) + "="; + if (config.useDoubleQuotes) resultStr += '"' + attrVal + '"';else resultStr += "'" + attrVal + "'"; } } - if(!closed) - resultStr+=">"; - else - resultStr+="/>"; + if (!closed) resultStr += ">";else resultStr += "/>"; return resultStr; } - function endTag(jsonObj,elementName) { - return ""; + function endTag(jsonObj, elementName) { + return ""; } function endsWith(str, suffix) { return str.indexOf(suffix, str.length - suffix.length) !== -1; } - function jsonXmlSpecialElem ( jsonObj, jsonObjField ) { - if((config.arrayAccessForm=="property" && endsWith(jsonObjField.toString(),("_asArray"))) - || jsonObjField.toString().indexOf(config.attributePrefix)==0 - || jsonObjField.toString().indexOf("__")==0 - || (jsonObj[jsonObjField] instanceof Function) ) - return true; - else - return false; + function jsonXmlSpecialElem(jsonObj, jsonObjField) { + if (config.arrayAccessForm == "property" && endsWith(jsonObjField.toString(), "_asArray") || jsonObjField.toString().indexOf(config.attributePrefix) == 0 || jsonObjField.toString().indexOf("__") == 0 || jsonObj[jsonObjField] instanceof Function) return true;else return false; } - function jsonXmlElemCount ( jsonObj ) { + function jsonXmlElemCount(jsonObj) { var elementsCnt = 0; - if(jsonObj instanceof Object ) { - for( var it in jsonObj ) { - if(jsonXmlSpecialElem ( jsonObj, it) ) - continue; + if (jsonObj instanceof Object) { + for (var it in jsonObj) { + if (jsonXmlSpecialElem(jsonObj, it)) continue; elementsCnt++; } } @@ -3721,16 +3790,14 @@ var x2js = function (config) { } function checkJsonObjPropertiesFilter(jsonObj, propertyName, jsonObjPath) { - return config.jsonPropertiesFilter.length == 0 - || jsonObjPath=="" - || checkInStdFiltersArrayForm(config.jsonPropertiesFilter, jsonObj, propertyName, jsonObjPath); + return config.jsonPropertiesFilter.length == 0 || jsonObjPath == "" || checkInStdFiltersArrayForm(config.jsonPropertiesFilter, jsonObj, propertyName, jsonObjPath); } - function parseJSONAttributes ( jsonObj ) { + function parseJSONAttributes(jsonObj) { var attrList = []; - if(jsonObj instanceof Object ) { - for( var ait in jsonObj ) { - if(ait.toString().indexOf("__")== -1 && ait.toString().indexOf(config.attributePrefix)==0) { + if (jsonObj instanceof Object) { + for (var ait in jsonObj) { + if (ait.toString().indexOf("__") == -1 && ait.toString().indexOf(config.attributePrefix) == 0) { attrList.push(ait); } } @@ -3738,116 +3805,98 @@ var x2js = function (config) { return attrList; } - function parseJSONTextAttrs ( jsonTxtObj ) { - var result =""; + function parseJSONTextAttrs(jsonTxtObj) { + var result = ""; - if(jsonTxtObj.__cdata!=null) { - result+=""; + if (jsonTxtObj.__cdata != null) { + result += ""; } - if(jsonTxtObj.__text!=null) { - if(config.escapeMode) - result+=escapeXmlChars(jsonTxtObj.__text); - else - result+=jsonTxtObj.__text; + if (jsonTxtObj.__text != null) { + if (config.escapeMode) result += escapeXmlChars(jsonTxtObj.__text);else result += jsonTxtObj.__text; } return result; } - function parseJSONTextObject ( jsonTxtObj ) { - var result =""; + function parseJSONTextObject(jsonTxtObj) { + var result = ""; - if( jsonTxtObj instanceof Object ) { - result+=parseJSONTextAttrs ( jsonTxtObj ); - } - else - if(jsonTxtObj!=null) { - if(config.escapeMode) - result+=escapeXmlChars(jsonTxtObj); - else - result+=jsonTxtObj; + if (jsonTxtObj instanceof Object) { + result += parseJSONTextAttrs(jsonTxtObj); + } else if (jsonTxtObj != null) { + if (config.escapeMode) result += escapeXmlChars(jsonTxtObj);else result += jsonTxtObj; } return result; } function getJsonPropertyPath(jsonObjPath, jsonPropName) { - if (jsonObjPath==="") { + if (jsonObjPath === "") { return jsonPropName; - } - else - return jsonObjPath+"."+jsonPropName; + } else return jsonObjPath + "." + jsonPropName; } - function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList, jsonObjPath ) { + function parseJSONArray(jsonArrRoot, jsonArrObj, attrList, jsonObjPath) { var result = ""; - if(jsonArrRoot.length == 0) { - result+=startTag(jsonArrRoot, jsonArrObj, attrList, true); - } - else { - for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) { - result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false); - result+=parseJSONObject(jsonArrRoot[arIdx], getJsonPropertyPath(jsonObjPath,jsonArrObj)); - result+=endTag(jsonArrRoot[arIdx],jsonArrObj); + if (jsonArrRoot.length == 0) { + result += startTag(jsonArrRoot, jsonArrObj, attrList, true); + } else { + for (var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) { + result += startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false); + result += parseJSONObject(jsonArrRoot[arIdx], getJsonPropertyPath(jsonObjPath, jsonArrObj)); + result += endTag(jsonArrRoot[arIdx], jsonArrObj); } } return result; } - function parseJSONObject ( jsonObj, jsonObjPath ) { + function parseJSONObject(jsonObj, jsonObjPath) { var result = ""; - var elementsCnt = jsonXmlElemCount ( jsonObj ); + var elementsCnt = jsonXmlElemCount(jsonObj); - if(elementsCnt > 0) { - for( var it in jsonObj ) { + if (elementsCnt > 0) { + for (var it in jsonObj) { - if(jsonXmlSpecialElem ( jsonObj, it) || (jsonObjPath!="" && !checkJsonObjPropertiesFilter(jsonObj, it, getJsonPropertyPath(jsonObjPath,it))) ) - continue; + if (jsonXmlSpecialElem(jsonObj, it) || jsonObjPath != "" && !checkJsonObjPropertiesFilter(jsonObj, it, getJsonPropertyPath(jsonObjPath, it))) continue; var subObj = jsonObj[it]; - var attrList = parseJSONAttributes( subObj ) + var attrList = parseJSONAttributes(subObj); - if(subObj == null || subObj == undefined) { - result+=startTag(subObj, it, attrList, true); - } - else - if(subObj instanceof Object) { + if (subObj == null || subObj == undefined) { + result += startTag(subObj, it, attrList, true); + } else if (subObj instanceof Object) { - if(subObj instanceof Array) { - result+=parseJSONArray( subObj, it, attrList, jsonObjPath ); - } - else if(subObj instanceof Date) { - result+=startTag(subObj, it, attrList, false); - result+=subObj.toISOString(); - result+=endTag(subObj,it); - } - else { - var subObjElementsCnt = jsonXmlElemCount ( subObj ); - if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) { - result+=startTag(subObj, it, attrList, false); - result+=parseJSONObject(subObj, getJsonPropertyPath(jsonObjPath,it)); - result+=endTag(subObj,it); - } - else { - result+=startTag(subObj, it, attrList, true); + if (subObj instanceof Array) { + result += parseJSONArray(subObj, it, attrList, jsonObjPath); + } else if (subObj instanceof Date) { + result += startTag(subObj, it, attrList, false); + result += subObj.toISOString(); + result += endTag(subObj, it); + } else { + var subObjElementsCnt = jsonXmlElemCount(subObj); + if (subObjElementsCnt > 0 || subObj.__text != null || subObj.__cdata != null) { + result += startTag(subObj, it, attrList, false); + result += parseJSONObject(subObj, getJsonPropertyPath(jsonObjPath, it)); + result += endTag(subObj, it); + } else { + result += startTag(subObj, it, attrList, true); } } - } - else { - result+=startTag(subObj, it, attrList, false); - result+=parseJSONTextObject(subObj); - result+=endTag(subObj,it); + } else { + result += startTag(subObj, it, attrList, false); + result += parseJSONTextObject(subObj); + result += endTag(subObj, it); } } } - result+=parseJSONTextObject(jsonObj); + result += parseJSONTextObject(jsonObj); return result; } - this.parseXmlString = function(xmlDocStr) { + this.parseXmlString = function (xmlDocStr) { // var isIEParser = window.ActiveXObject || "ActiveXObject" in window; var isIEParser = false; if (xmlDocStr === undefined) { @@ -3855,86 +3904,66 @@ var x2js = function (config) { } var xmlDoc; if (DOMParser) { - var parser=new DOMParser(); + var parser = new DOMParser(); var parsererrorNS = null; // IE9+ now is here - if(!isIEParser) { + if (!isIEParser) { try { parsererrorNS = parser.parseFromString("INVALID", "text/xml").getElementsByTagName("parsererror")[0].namespaceURI; - } - catch(err) { + } catch (err) { parsererrorNS = null; } } try { - xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" ); - if( parsererrorNS!= null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) { + xmlDoc = parser.parseFromString(xmlDocStr, "text/xml"); + if (parsererrorNS != null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) { //throw new Error('Error parsing XML: '+xmlDocStr); xmlDoc = null; } - } - catch(err) { + } catch (err) { xmlDoc = null; } - } - else { + } else { // IE :( - if(xmlDocStr.indexOf("") + 2 ); + if (xmlDocStr.indexOf("") + 2); } - xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); - xmlDoc.async="false"; + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async = "false"; xmlDoc.loadXML(xmlDocStr); } return xmlDoc; }; - this.asArray = function(prop) { - if (prop === undefined || prop == null) - return []; - else - if(prop instanceof Array) - return prop; - else - return [prop]; + this.asArray = function (prop) { + if (prop === undefined || prop == null) return [];else if (prop instanceof Array) return prop;else return [prop]; }; - this.toXmlDateTime = function(dt) { - if(dt instanceof Date) - return dt.toISOString(); - else - if(typeof(dt) === 'number' ) - return new Date(dt).toISOString(); - else - return null; + this.toXmlDateTime = function (dt) { + if (dt instanceof Date) return dt.toISOString();else if (typeof dt === 'number') return new Date(dt).toISOString();else return null; }; - this.asDateTime = function(prop) { - if(typeof(prop) == "string") { + this.asDateTime = function (prop) { + if (typeof prop == "string") { return fromXmlDateTime(prop); - } - else - return prop; + } else return prop; }; this.xml2json = function (xmlDoc) { - return parseDOMChildren ( xmlDoc ); + return parseDOMChildren(xmlDoc); }; this.xml_str2json = function (xmlDocStr) { var xmlDoc = this.parseXmlString(xmlDocStr); - if(xmlDoc!=null) - return this.xml2json(xmlDoc); - else - return null; + if (xmlDoc != null) return this.xml2json(xmlDoc);else return null; }; this.json2xml_str = function (jsonObj) { - return parseJSONObject ( jsonObj, "" ); + return parseJSONObject(jsonObj, ""); }; this.json2xml = function (jsonObj) { - var xmlDocStr = this.json2xml_str (jsonObj); + var xmlDocStr = this.json2xml_str(jsonObj); return this.parseXmlString(xmlDocStr); }; @@ -3943,7 +3972,7 @@ var x2js = function (config) { }; }; -var xml2json = function (str) { +var xml2json = function xml2json(str) { if (!str) return null; var parser = new DOMParser(); var xmlDoc = parser.parseFromString(str, "text/xml"); @@ -3956,75 +3985,78 @@ var xml2json = function (str) { } }; -var json2xml = function (data) { +var json2xml = function json2xml(data) { var x2jsObj = new x2js(); return x2jsObj.json2xml(data); }; module.exports = xml2json; - /***/ }), -/* 13 */ +/* 14 */ /***/ (function(module, exports, __webpack_require__) { -function DOMParser(options){ - this.options = options ||{locator:{}}; - -} -DOMParser.prototype.parseFromString = function(source,mimeType){ - var options = this.options; - var sax = new XMLReader(); - var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler - var errorHandler = options.errorHandler; - var locator = options.locator; - var defaultNSMap = options.xmlns||{}; - var entityMap = {'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"} - if(locator){ - domBuilder.setDocumentLocator(locator) - } - - sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); - sax.domBuilder = options.domBuilder || domBuilder; - if(/\/x?html?$/.test(mimeType)){ - entityMap.nbsp = '\xa0'; - entityMap.copy = '\xa9'; - defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; - } - defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; - if(source){ - sax.parse(source,defaultNSMap,entityMap); - }else{ - sax.errorHandler.error("invalid doc source"); - } - return domBuilder.doc; -} -function buildErrorHandler(errorImpl,domBuilder,locator){ - if(!errorImpl){ - if(domBuilder instanceof DOMHandler){ - return domBuilder; - } - errorImpl = domBuilder ; - } - var errorHandler = {} - var isCallback = errorImpl instanceof Function; - locator = locator||{} - function build(key){ - var fn = errorImpl[key]; - if(!fn && isCallback){ - fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; - } - errorHandler[key] = fn && function(msg){ - fn('[xmldom '+key+']\t'+msg+_locator(locator)); - }||function(){}; - } - build('warning'); - build('error'); - build('fatalError'); - return errorHandler; -} - -//console.log('#\n\n\n\n\n\n\n####') +"use strict"; + + +function DOMParser(options) { + this.options = options || { locator: {} }; +} +DOMParser.prototype.parseFromString = function (source, mimeType) { + var options = this.options; + var sax = new XMLReader(); + var domBuilder = options.domBuilder || new DOMHandler(); //contentHandler and LexicalHandler + var errorHandler = options.errorHandler; + var locator = options.locator; + var defaultNSMap = options.xmlns || {}; + var entityMap = { 'lt': '<', 'gt': '>', 'amp': '&', 'quot': '"', 'apos': "'" }; + if (locator) { + domBuilder.setDocumentLocator(locator); + } + + sax.errorHandler = buildErrorHandler(errorHandler, domBuilder, locator); + sax.domBuilder = options.domBuilder || domBuilder; + if (/\/x?html?$/.test(mimeType)) { + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap[''] = 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if (source) { + sax.parse(source, defaultNSMap, entityMap); + } else { + sax.errorHandler.error("invalid doc source"); + } + return domBuilder.doc; +}; +function buildErrorHandler(errorImpl, domBuilder, locator) { + if (!errorImpl) { + if (domBuilder instanceof DOMHandler) { + return domBuilder; + } + errorImpl = domBuilder; + } + var errorHandler = {}; + var isCallback = errorImpl instanceof Function; + locator = locator || {}; + function build(key) { + var fn = errorImpl[key]; + if (!fn && isCallback) { + fn = errorImpl.length == 2 ? function (msg) { + errorImpl(key, msg); + } : errorImpl; + } + errorHandler[key] = fn && function (msg) { + fn('[xmldom ' + key + ']\t' + msg + _locator(locator)); + } || function () {}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') /** * +ContentHandler+ErrorHandler * +LexicalHandler+EntityResolver2 @@ -4033,142 +4065,140 @@ function buildErrorHandler(errorImpl,domBuilder,locator){ * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html - */ -function DOMHandler() { - this.cdata = false; -} -function position(locator,node){ - node.lineNumber = locator.lineNumber; - node.columnNumber = locator.columnNumber; -} + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator, node) { + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} /** * @see org.xml.sax.ContentHandler#startDocument * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html - */ -DOMHandler.prototype = { - startDocument : function() { - this.doc = new DOMImplementation().createDocument(null, null, null); - if (this.locator) { - this.doc.documentURI = this.locator.systemId; - } - }, - startElement:function(namespaceURI, localName, qName, attrs) { - var doc = this.doc; - var el = doc.createElementNS(namespaceURI, qName||localName); - var len = attrs.length; - appendElement(this, el); - this.currentElement = el; - - this.locator && position(this.locator,el) - for (var i = 0 ; i < len; i++) { - var namespaceURI = attrs.getURI(i); - var value = attrs.getValue(i); - var qName = attrs.getQName(i); - var attr = doc.createAttributeNS(namespaceURI, qName); - this.locator &&position(attrs.getLocator(i),attr); - attr.value = attr.nodeValue = value; - el.setAttributeNode(attr) - } - }, - endElement:function(namespaceURI, localName, qName) { - var current = this.currentElement - var tagName = current.tagName; - this.currentElement = current.parentNode; - }, - startPrefixMapping:function(prefix, uri) { - }, - endPrefixMapping:function(prefix) { - }, - processingInstruction:function(target, data) { - var ins = this.doc.createProcessingInstruction(target, data); - this.locator && position(this.locator,ins) - appendElement(this, ins); - }, - ignorableWhitespace:function(ch, start, length) { - }, - characters:function(chars, start, length) { - chars = _toString.apply(this,arguments) - //console.log(chars) - if(chars){ - if (this.cdata) { - var charNode = this.doc.createCDATASection(chars); - } else { - var charNode = this.doc.createTextNode(chars); - } - if(this.currentElement){ - this.currentElement.appendChild(charNode); - }else if(/^\s*$/.test(chars)){ - this.doc.appendChild(charNode); - //process xml - } - this.locator && position(this.locator,charNode) - } - }, - skippedEntity:function(name) { - }, - endDocument:function() { - this.doc.normalize(); - }, - setDocumentLocator:function (locator) { - if(this.locator = locator){// && !('lineNumber' in locator)){ - locator.lineNumber = 0; - } - }, - //LexicalHandler - comment:function(chars, start, length) { - chars = _toString.apply(this,arguments) - var comm = this.doc.createComment(chars); - this.locator && position(this.locator,comm) - appendElement(this, comm); - }, - - startCDATA:function() { - //used in characters() methods - this.cdata = true; - }, - endCDATA:function() { - this.cdata = false; - }, - - startDTD:function(name, publicId, systemId) { - var impl = this.doc.implementation; - if (impl && impl.createDocumentType) { - var dt = impl.createDocumentType(name, publicId, systemId); - this.locator && position(this.locator,dt) - appendElement(this, dt); - } - }, + */ +DOMHandler.prototype = { + startDocument: function startDocument() { + this.doc = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.doc.documentURI = this.locator.systemId; + } + }, + startElement: function startElement(namespaceURI, localName, qName, attrs) { + var doc = this.doc; + var el = doc.createElementNS(namespaceURI, qName || localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator, el); + for (var i = 0; i < len; i++) { + var namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + var qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + this.locator && position(attrs.getLocator(i), attr); + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr); + } + }, + endElement: function endElement(namespaceURI, localName, qName) { + var current = this.currentElement; + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping: function startPrefixMapping(prefix, uri) {}, + endPrefixMapping: function endPrefixMapping(prefix) {}, + processingInstruction: function processingInstruction(target, data) { + var ins = this.doc.createProcessingInstruction(target, data); + this.locator && position(this.locator, ins); + appendElement(this, ins); + }, + ignorableWhitespace: function ignorableWhitespace(ch, start, length) {}, + characters: function characters(chars, start, length) { + chars = _toString.apply(this, arguments); + //console.log(chars) + if (chars) { + if (this.cdata) { + var charNode = this.doc.createCDATASection(chars); + } else { + var charNode = this.doc.createTextNode(chars); + } + if (this.currentElement) { + this.currentElement.appendChild(charNode); + } else if (/^\s*$/.test(chars)) { + this.doc.appendChild(charNode); + //process xml + } + this.locator && position(this.locator, charNode); + } + }, + skippedEntity: function skippedEntity(name) {}, + endDocument: function endDocument() { + this.doc.normalize(); + }, + setDocumentLocator: function setDocumentLocator(locator) { + if (this.locator = locator) { + // && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment: function comment(chars, start, length) { + chars = _toString.apply(this, arguments); + var comm = this.doc.createComment(chars); + this.locator && position(this.locator, comm); + appendElement(this, comm); + }, + + startCDATA: function startCDATA() { + //used in characters() methods + this.cdata = true; + }, + endCDATA: function endCDATA() { + this.cdata = false; + }, + + startDTD: function startDTD(name, publicId, systemId) { + var impl = this.doc.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator, dt); + appendElement(this, dt); + } + }, /** - * @see org.xml.sax.ErrorHandler - * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html - */ - warning:function(error) { - console.warn('[xmldom warning]\t'+error,_locator(this.locator)); - }, - error:function(error) { - console.error('[xmldom error]\t'+error,_locator(this.locator)); - }, - fatalError:function(error) { - console.error('[xmldom fatalError]\t'+error,_locator(this.locator)); - throw error; - } -} -function _locator(l){ - if(l){ - return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' - } -} -function _toString(chars,start,length){ - if(typeof chars == 'string'){ - return chars.substr(start,length) - }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") - if(chars.length >= start+length || start){ - return new java.lang.String(chars,start,length)+''; - } - return chars; - } -} - + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning: function warning(error) { + console.warn('[xmldom warning]\t' + error, _locator(this.locator)); + }, + error: function error(_error) { + console.error('[xmldom error]\t' + _error, _locator(this.locator)); + }, + fatalError: function fatalError(error) { + console.error('[xmldom fatalError]\t' + error, _locator(this.locator)); + throw error; + } +}; +function _locator(l) { + if (l) { + return '\n@' + (l.systemId || '') + '#[line:' + l.lineNumber + ',col:' + l.columnNumber + ']'; + } +} +function _toString(chars, start, length) { + if (typeof chars == 'string') { + return chars.substr(start, length); + } else { + //java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if (chars.length >= start + length || start) { + return new java.lang.String(chars, start, length) + ''; + } + return chars; + } +} + /* * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html * used method of org.xml.sax.ext.LexicalHandler: @@ -4199,680 +4229,696 @@ function _toString(chars,start,length){ * IGNORED method of org.xml.sax.DTDHandler * #notationDecl(name, publicId, systemId) {}; * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; - */ -"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ - DOMHandler.prototype[key] = function(){return null} -}) - -/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ -function appendElement (hander,node) { - if (!hander.currentElement) { - hander.doc.appendChild(node); - } else { - hander.currentElement.appendChild(node); - } -}//appendChild and setAttributeNS are preformance key - -//if(typeof require == 'function'){ - var XMLReader = __webpack_require__(14).XMLReader; - var DOMImplementation = exports.DOMImplementation = __webpack_require__(2).DOMImplementation; - exports.XMLSerializer = __webpack_require__(2).XMLSerializer ; - exports.DOMParser = DOMParser; -//} + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, function (key) { + DOMHandler.prototype[key] = function () { + return null; + }; +}); + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement(hander, node) { + if (!hander.currentElement) { + hander.doc.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +} //appendChild and setAttributeNS are preformance key + +//if(typeof require == 'function'){ +var XMLReader = __webpack_require__(15).XMLReader; +var DOMImplementation = exports.DOMImplementation = __webpack_require__(2).DOMImplementation; +exports.XMLSerializer = __webpack_require__(2).XMLSerializer; +exports.DOMParser = DOMParser; +//} + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/; //\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9" + nameStartChar.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"); +var tagNamePattern = new RegExp('^' + nameStartChar.source + nameChar.source + '*(?:\:' + nameStartChar.source + nameChar.source + '*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE +//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE +var S_TAG = 0; //tag name offerring +var S_ATTR = 1; //attr name offerring +var S_ATTR_SPACE = 2; //attr name end and space offer +var S_EQ = 3; //=space? +var S_ATTR_NOQUOT_VALUE = 4; //attr value(no quot value only) +var S_ATTR_END = 5; //attr value end and no space(quot end) +var S_TAG_SPACE = 6; //(attr value end || tag end ) && (space offer) +var S_TAG_CLOSE = 7; //closed el + +function XMLReader() {} + +XMLReader.prototype = { + parse: function parse(source, defaultNSMap, entityMap) { + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap, defaultNSMap = {}); + _parse(source, defaultNSMap, entityMap, domBuilder, this.errorHandler); + domBuilder.endDocument(); + } +}; +function _parse(source, defaultNSMapCopy, entityMap, domBuilder, errorHandler) { + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10), + surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a) { + var k = a.slice(1, -1); + if (k in entityMap) { + return entityMap[k]; + } else if (k.charAt(0) === '#') { + return fixedFromCharCode(parseInt(k.substr(1).replace('x', '0x'))); + } else { + errorHandler.error('entity not found:' + a); + return a; + } + } + function appendText(end) { + //has some bugs + if (end > start) { + var xt = source.substring(start, end).replace(/&#?\w+;/g, entityReplacer); + locator && position(start); + domBuilder.characters(xt, 0, end - start); + start = end; + } + } + function position(p, m) { + while (p >= lineEnd && (m = linePattern.exec(source))) { + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p - lineStart + 1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.*(?:\r\n?|\n)|.*$/g; + var locator = domBuilder.locator; + + var parseStack = [{ currentNSMap: defaultNSMapCopy }]; + var closeMap = {}; + var start = 0; + while (true) { + try { + var tagStart = source.indexOf('<', start); + if (tagStart < 0) { + if (!source.substr(start).match(/^\s*$/)) { + var doc = domBuilder.doc; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if (tagStart > start) { + appendText(tagStart); + } + switch (source.charAt(tagStart + 1)) { + case '/': + var end = source.indexOf('>', tagStart + 3); + var tagName = source.substring(tagStart + 2, end); + var config = parseStack.pop(); + if (end < 0) { + + tagName = source.substring(tagStart + 2).replace(/[\s<].*/, ''); + //console.error('#@@@@@@'+tagName) + errorHandler.error("end tag name: " + tagName + ' is not complete:' + config.tagName); + end = tagStart + 1 + tagName.length; + } else if (tagName.match(/\s + locator && position(tagStart); + end = parseInstruction(source, tagStart, domBuilder); + break; + case '!': + // start) { + start = end; + } else { + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart, start) + 1); + } + } +} +function copyLocator(f, t) { + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source, start, el, currentNSMap, entityReplacer, errorHandler) { + var attrName; + var value; + var p = ++start; + var s = S_TAG; //status + while (true) { + var c = source.charAt(p); + switch (c) { + case '=': + if (s === S_ATTR) { + //attrName + attrName = source.slice(start, p); + s = S_EQ; + } else if (s === S_ATTR_SPACE) { + s = S_EQ; + } else { + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if (s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE + ) { + //equal + if (s === S_ATTR) { + errorHandler.warning('attribute value must after "="'); + attrName = source.slice(start, p); + } + start = p + 1; + p = source.indexOf(c, start); + if (p > 0) { + value = source.slice(start, p).replace(/&#?\w+;/g, entityReplacer); + el.add(attrName, value, start - 1); + s = S_ATTR_END; + } else { + //fatalError: no end quot match + throw new Error('attribute value no end \'' + c + '\' match'); + } + } else if (s == S_ATTR_NOQUOT_VALUE) { + value = source.slice(start, p).replace(/&#?\w+;/g, entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName, value, start); + //console.dir(el) + errorHandler.warning('attribute "' + attrName + '" missed start quot(' + c + ')!!'); + start = p + 1; + s = S_ATTR_END; + } else { + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch (s) { + case S_TAG: + el.setTagName(source.slice(start, p)); + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + s = S_TAG_CLOSE; + el.closed = true; + case S_ATTR_NOQUOT_VALUE: + case S_ATTR: + case S_ATTR_SPACE: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')"); + } + break; + case '': + //end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + if (s == S_TAG) { + el.setTagName(source.slice(start, p)); + } + return p; + case '>': + switch (s) { + case S_TAG: + el.setTagName(source.slice(start, p)); + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + break; //normal + case S_ATTR_NOQUOT_VALUE: //Compatible state + case S_ATTR: + value = source.slice(start, p); + if (value.slice(-1) === '/') { + el.closed = true; + value = value.slice(0, -1); + } + case S_ATTR_SPACE: + if (s === S_ATTR_SPACE) { + value = attrName; + } + if (s == S_ATTR_NOQUOT_VALUE) { + errorHandler.warning('attribute "' + value + '" missed quot(")!!'); + el.add(attrName, value.replace(/&#?\w+;/g, entityReplacer), start); + } else { + if (currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)) { + errorHandler.warning('attribute "' + value + '" missed value!! "' + value + '" instead!!'); + } + el.add(value, value, start); + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } + // console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case "\x80": + c = ' '; + default: + if (c <= ' ') { + //space + switch (s) { + case S_TAG: + el.setTagName(source.slice(start, p)); //tagName + s = S_TAG_SPACE; + break; + case S_ATTR: + attrName = source.slice(start, p); + s = S_ATTR_SPACE; + break; + case S_ATTR_NOQUOT_VALUE: + var value = source.slice(start, p).replace(/&#?\w+;/g, entityReplacer); + errorHandler.warning('attribute "' + value + '" missed quot(")!!'); + el.add(attrName, value, start); + case S_ATTR_END: + s = S_TAG_SPACE; + break; + //case S_TAG_SPACE: + //case S_EQ: + //case S_ATTR_SPACE: + // void();break; + //case S_TAG_CLOSE: + //ignore warning + } + } else { + //not space + //S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE + //S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE + switch (s) { + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_ATTR_NOQUOT_VALUE:void();break; + case S_ATTR_SPACE: + var tagName = el.tagName; + if (currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)) { + errorHandler.warning('attribute "' + attrName + '" missed value!! "' + attrName + '" instead2!!'); + } + el.add(attrName, attrName, start); + start = p; + s = S_ATTR; + break; + case S_ATTR_END: + errorHandler.warning('attribute space is required"' + attrName + '"!!'); + case S_TAG_SPACE: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_ATTR_NOQUOT_VALUE; + start = p; + break; + case S_TAG_CLOSE: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } //end outer switch + //console.log('p++',p) + p++; + } +} +/** + * @return true if has new namespace define + */ +function appendElement(el, domBuilder, currentNSMap) { + var tagName = el.tagName; + var localNSMap = null; + //var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while (i--) { + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if (nsp > 0) { + var prefix = a.prefix = qName.slice(0, nsp); + var localName = qName.slice(nsp + 1); + var nsPrefix = prefix === 'xmlns' && localName; + } else { + localName = qName; + prefix = null; + nsPrefix = qName === 'xmlns' && ''; + } + //can not set prefix,because prefix !== '' + a.localName = localName; + //prefix == null for no ns prefix attribute + if (nsPrefix !== false) { + //hack!! + if (localNSMap == null) { + localNSMap = {}; + //console.log(currentNSMap,0) + _copy(currentNSMap, currentNSMap = {}); + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/'; + domBuilder.startPrefixMapping(nsPrefix, value); + } + } + var i = el.length; + while (i--) { + a = el[i]; + var prefix = a.prefix; + if (prefix) { + //no prefix attribute has no namespace + if (prefix === 'xml') { + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if (prefix !== 'xmlns') { + a.uri = currentNSMap[prefix || '']; + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if (nsp > 0) { + prefix = el.prefix = tagName.slice(0, nsp); + localName = el.localName = tagName.slice(nsp + 1); + } else { + prefix = null; //important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns, localName, tagName, el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if (el.closed) { + domBuilder.endElement(ns, localName, tagName); + if (localNSMap) { + for (prefix in localNSMap) { + domBuilder.endPrefixMapping(prefix); + } + } + } else { + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + //parseStack.push(el); + return true; + } +} +function parseHtmlSpecialContent(source, elStartEnd, tagName, entityReplacer, domBuilder) { + if (/^(?:script|textarea)$/i.test(tagName)) { + var elEndStart = source.indexOf('', elStartEnd); + var text = source.substring(elStartEnd + 1, elEndStart); + if (/[&<]/.test(text)) { + if (/^script$/i.test(tagName)) { + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text, 0, text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + } //}else{//text area + text = text.replace(/&#?\w+;/g, entityReplacer); + domBuilder.characters(text, 0, text.length); + return elEndStart; + //} + } + } + return elStartEnd + 1; +} +function fixSelfClosed(source, elStartEnd, tagName, closeMap) { + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if (pos == null) { + //console.log(tagName) + pos = source.lastIndexOf(''); + if (pos < elStartEnd) { + //忘记闭合 + pos = source.lastIndexOf('', start + 4); + //append comment source.substring(4,end)//',start+4); - //append comment source.substring(4,end)//"); - case DOCUMENT_TYPE_NODE: - var pubid = node.publicId; - var sysid = node.systemId; - buf.push(''); - }else if(sysid && sysid!='.'){ - buf.push(' SYSTEM "',sysid,'">'); - }else{ - var sub = node.internalSubset; - if(sub){ - buf.push(" [",sub,"]"); + return; + case ATTRIBUTE_NODE: + return buf.push(' ', node.name, '="', node.value.replace(/[<&"]/g, _xmlEncoder), '"'); + case TEXT_NODE: + return buf.push(node.data.replace(/[<&]/g, _xmlEncoder)); + case CDATA_SECTION_NODE: + return buf.push(''); + case COMMENT_NODE: + return buf.push(""); + case DOCUMENT_TYPE_NODE: + var pubid = node.publicId; + var sysid = node.systemId; + buf.push(''); + } else if (sysid && sysid != '.') { + buf.push(' SYSTEM "', sysid, '">'); + } else { + var sub = node.internalSubset; + if (sub) { + buf.push(" [", sub, "]"); + } + buf.push(">"); } - buf.push(">"); - } - return; - case PROCESSING_INSTRUCTION_NODE: - return buf.push( ""); - case ENTITY_REFERENCE_NODE: - return buf.push( '&',node.nodeName,';'); - //case ENTITY_NODE: - //case NOTATION_NODE: - default: - buf.push('??',node.nodeName); + return; + case PROCESSING_INSTRUCTION_NODE: + return buf.push(""); + case ENTITY_REFERENCE_NODE: + return buf.push('&', node.nodeName, ';'); + //case ENTITY_NODE: + //case NOTATION_NODE: + default: + buf.push('??', node.nodeName); } } -function importNode(doc,node,deep){ +function _importNode(doc, node, deep) { var node2; switch (node.nodeType) { - case ELEMENT_NODE: - node2 = node.cloneNode(false); - node2.ownerDocument = doc; + case ELEMENT_NODE: + node2 = node.cloneNode(false); + node2.ownerDocument = doc; //var attrs = node2.attributes; //var len = attrs.length; //for(var i=0;i>> 6)) - + fromCharCode(0x80 | (cc & 0x3f))) - : (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) - + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) - + fromCharCode(0x80 | ( cc & 0x3f))); + return cc < 0x80 ? c : cc < 0x800 ? fromCharCode(0xc0 | cc >>> 6) + fromCharCode(0x80 | cc & 0x3f) : fromCharCode(0xe0 | cc >>> 12 & 0x0f) + fromCharCode(0x80 | cc >>> 6 & 0x3f) + fromCharCode(0x80 | cc & 0x3f); } else { - var cc = 0x10000 - + (c.charCodeAt(0) - 0xD800) * 0x400 - + (c.charCodeAt(1) - 0xDC00); - return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07)) - + fromCharCode(0x80 | ((cc >>> 12) & 0x3f)) - + fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) - + fromCharCode(0x80 | ( cc & 0x3f))); + var cc = 0x10000 + (c.charCodeAt(0) - 0xD800) * 0x400 + (c.charCodeAt(1) - 0xDC00); + return fromCharCode(0xf0 | cc >>> 18 & 0x07) + fromCharCode(0x80 | cc >>> 12 & 0x3f) + fromCharCode(0x80 | cc >>> 6 & 0x3f) + fromCharCode(0x80 | cc & 0x3f); } }; var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; - var utob = function(u) { + var utob = function utob(u) { return u.replace(re_utob, cb_utob); }; - var cb_encode = function(ccc) { + var cb_encode = function cb_encode(ccc) { var padlen = [0, 2, 1][ccc.length % 3], - ord = ccc.charCodeAt(0) << 16 - | ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) - | ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)), - chars = [ - b64chars.charAt( ord >>> 18), - b64chars.charAt((ord >>> 12) & 63), - padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63), - padlen >= 1 ? '=' : b64chars.charAt(ord & 63) - ]; + ord = ccc.charCodeAt(0) << 16 | (ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8 | (ccc.length > 2 ? ccc.charCodeAt(2) : 0), + chars = [b64chars.charAt(ord >>> 18), b64chars.charAt(ord >>> 12 & 63), padlen >= 2 ? '=' : b64chars.charAt(ord >>> 6 & 63), padlen >= 1 ? '=' : b64chars.charAt(ord & 63)]; return chars.join(''); }; - var btoa = global.btoa ? function(b) { + var btoa = global.btoa ? function (b) { return global.btoa(b); - } : function(b) { + } : function (b) { return b.replace(/[\s\S]{1,3}/g, cb_encode); }; var _encode = buffer ? function (u) { - return (u.constructor === buffer.constructor ? u : new buffer(u)) - .toString('base64') - } - : function (u) { return btoa(utob(u)) } - ; - var encode = function(u, urisafe) { - return !urisafe - ? _encode(String(u)) - : _encode(String(u)).replace(/[+\/]/g, function(m0) { - return m0 == '+' ? '-' : '_'; - }).replace(/=/g, ''); + return (u.constructor === buffer.constructor ? u : new buffer(u)).toString('base64'); + } : function (u) { + return btoa(utob(u)); + }; + var encode = function encode(u, urisafe) { + return !urisafe ? _encode(String(u)) : _encode(String(u)).replace(/[+\/]/g, function (m0) { + return m0 == '+' ? '-' : '_'; + }).replace(/=/g, ''); + }; + var encodeURI = function encodeURI(u) { + return encode(u, true); }; - var encodeURI = function(u) { return encode(u, true) }; // decoder stuff - var re_btou = new RegExp([ - '[\xC0-\xDF][\x80-\xBF]', - '[\xE0-\xEF][\x80-\xBF]{2}', - '[\xF0-\xF7][\x80-\xBF]{3}' - ].join('|'), 'g'); - var cb_btou = function(cccc) { - switch(cccc.length) { - case 4: - var cp = ((0x07 & cccc.charCodeAt(0)) << 18) - | ((0x3f & cccc.charCodeAt(1)) << 12) - | ((0x3f & cccc.charCodeAt(2)) << 6) - | (0x3f & cccc.charCodeAt(3)), - offset = cp - 0x10000; - return (fromCharCode((offset >>> 10) + 0xD800) - + fromCharCode((offset & 0x3FF) + 0xDC00)); - case 3: - return fromCharCode( - ((0x0f & cccc.charCodeAt(0)) << 12) - | ((0x3f & cccc.charCodeAt(1)) << 6) - | (0x3f & cccc.charCodeAt(2)) - ); - default: - return fromCharCode( - ((0x1f & cccc.charCodeAt(0)) << 6) - | (0x3f & cccc.charCodeAt(1)) - ); + var re_btou = new RegExp(['[\xC0-\xDF][\x80-\xBF]', '[\xE0-\xEF][\x80-\xBF]{2}', '[\xF0-\xF7][\x80-\xBF]{3}'].join('|'), 'g'); + var cb_btou = function cb_btou(cccc) { + switch (cccc.length) { + case 4: + var cp = (0x07 & cccc.charCodeAt(0)) << 18 | (0x3f & cccc.charCodeAt(1)) << 12 | (0x3f & cccc.charCodeAt(2)) << 6 | 0x3f & cccc.charCodeAt(3), + offset = cp - 0x10000; + return fromCharCode((offset >>> 10) + 0xD800) + fromCharCode((offset & 0x3FF) + 0xDC00); + case 3: + return fromCharCode((0x0f & cccc.charCodeAt(0)) << 12 | (0x3f & cccc.charCodeAt(1)) << 6 | 0x3f & cccc.charCodeAt(2)); + default: + return fromCharCode((0x1f & cccc.charCodeAt(0)) << 6 | 0x3f & cccc.charCodeAt(1)); } }; - var btou = function(b) { + var btou = function btou(b) { return b.replace(re_btou, cb_btou); }; - var cb_decode = function(cccc) { + var cb_decode = function cb_decode(cccc) { var len = cccc.length, - padlen = len % 4, - n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) - | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) - | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) - | (len > 3 ? b64tab[cccc.charAt(3)] : 0), - chars = [ - fromCharCode( n >>> 16), - fromCharCode((n >>> 8) & 0xff), - fromCharCode( n & 0xff) - ]; + padlen = len % 4, + n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0) | (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0) | (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0) | (len > 3 ? b64tab[cccc.charAt(3)] : 0), + chars = [fromCharCode(n >>> 16), fromCharCode(n >>> 8 & 0xff), fromCharCode(n & 0xff)]; chars.length -= [0, 0, 2, 1][padlen]; return chars.join(''); }; - var atob = global.atob ? function(a) { + var atob = global.atob ? function (a) { return global.atob(a); - } : function(a){ + } : function (a) { return a.replace(/[\s\S]{1,4}/g, cb_decode); }; - var _decode = buffer ? function(a) { - return (a.constructor === buffer.constructor - ? a : new buffer(a, 'base64')).toString(); - } - : function(a) { return btou(atob(a)) }; - var decode = function(a){ - return _decode( - String(a).replace(/[-_]/g, function(m0) { return m0 == '-' ? '+' : '/' }) - .replace(/[^A-Za-z0-9\+\/]/g, '') - ); + var _decode = buffer ? function (a) { + return (a.constructor === buffer.constructor ? a : new buffer(a, 'base64')).toString(); + } : function (a) { + return btou(atob(a)); + }; + var decode = function decode(a) { + return _decode(String(a).replace(/[-_]/g, function (m0) { + return m0 == '-' ? '+' : '/'; + }).replace(/[^A-Za-z0-9\+\/]/g, '')); }; - var noConflict = function() { + var noConflict = function noConflict() { var Base64 = global.Base64; global.Base64 = _Base64; return Base64; @@ -2118,19 +2068,20 @@ var Base64 = (function(global) { noConflict: noConflict }; return Base64; -})(); +}(); module.exports = Base64; - - /***/ }), /* 4 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + -var initEvent = function (cos) { +var initEvent = function initEvent(cos) { var listeners = {}; - var getList = function (action) { + var getList = function getList(action) { !listeners[action] && (listeners[action] = []); return listeners[action]; }; @@ -2153,7 +2104,7 @@ var initEvent = function (cos) { }; }; -var EventProxy = function () { +var EventProxy = function EventProxy() { initEvent(this); }; @@ -2164,6 +2115,9 @@ module.exports.EventProxy = EventProxy; /* 5 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + var util = __webpack_require__(0); // 按照文件特征值,缓存 UploadId @@ -2172,22 +2126,20 @@ var expires = 30 * 24 * 3600; var cache; var timer; -var getCache = function () { +var getCache = function getCache() { try { var val = JSON.parse(wx.getStorageSync(cacheKey)); - } catch (e) { - } + } catch (e) {} if (!val) val = []; return val; }; -var setCache = function () { +var setCache = function setCache() { try { - wx.setStorageSync(cacheKey, JSON.stringify(cache)) - } catch (e) { - } + wx.setStorageSync(cacheKey, JSON.stringify(cache)); + } catch (e) {} }; -var init = function () { +var init = function init() { if (cache) return; cache = getCache(); // 清理太老旧的数据 @@ -2204,7 +2156,7 @@ var init = function () { }; // 把缓存存到本地 -var save = function () { +var save = function save() { if (timer) return; timer = setTimeout(function () { setCache(); @@ -2215,15 +2167,15 @@ var save = function () { var mod = { using: {}, // 标记 UploadId 正在使用 - setUsing: function (uuid) { + setUsing: function setUsing(uuid) { mod.using[uuid] = true; }, // 标记 UploadId 已经没在使用 - removeUsing: function (uuid) { + removeUsing: function removeUsing(uuid) { delete mod.using[uuid]; }, // 用上传参数生成哈希值 - getFileId: function (FileStat, ChunkSize, Bucket, Key) { + getFileId: function getFileId(FileStat, ChunkSize, Bucket, Key) { if (FileStat.FilePath && FileStat.size && FileStat.lastModifiedTime && ChunkSize) { return util.md5([FileStat.FilePath].join('::')) + '-' + util.md5([FileStat.size, FileStat.mode, FileStat.lastAccessedTime, FileStat.lastModifiedTime, ChunkSize, Bucket, Key].join('::')); } else { @@ -2231,18 +2183,17 @@ var mod = { } }, // 获取文件对应的 UploadId 列表 - getUploadIdList: function (uuid) { + getUploadIdList: function getUploadIdList(uuid) { if (!uuid) return null; init(); var list = []; for (var i = 0; i < cache.length; i++) { - if (cache[i][0] === uuid) - list.push(cache[i][1]); + if (cache[i][0] === uuid) list.push(cache[i][1]); } return list.length ? list : null; }, // 缓存 UploadId - saveUploadId: function (uuid, UploadId, limit) { + saveUploadId: function saveUploadId(uuid, UploadId, limit) { init(); if (!uuid) return; // 清理没用的 UploadId @@ -2251,7 +2202,8 @@ var mod = { var item = cache[i]; if (item[0] === uuid && item[1] === UploadId) { cache.splice(i, 1); - } else if (uuid !== item[0] && item[0].indexOf(part1) === 0) { // 文件路径相同,但其他信息不同,说明文件改变了或上传参数(存储桶、路径、分片大小)变了,直接清理掉 + } else if (uuid !== item[0] && item[0].indexOf(part1) === 0) { + // 文件路径相同,但其他信息不同,说明文件改变了或上传参数(存储桶、路径、分片大小)变了,直接清理掉 cache.splice(i, 1); } } @@ -2260,23 +2212,25 @@ var mod = { save(); }, // UploadId 已用完,移除掉 - removeUploadId: function (UploadId) { + removeUploadId: function removeUploadId(UploadId) { init(); delete mod.using[UploadId]; for (var i = cache.length - 1; i >= 0; i--) { - if (cache[i][1] === UploadId) cache.splice(i, 1) + if (cache[i][1] === UploadId) cache.splice(i, 1); } save(); - }, + } }; module.exports = mod; - /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + var COS = __webpack_require__(7); module.exports = COS; @@ -2289,9 +2243,9 @@ module.exports = COS; var util = __webpack_require__(0); var event = __webpack_require__(4); -var task = __webpack_require__(16); -var base = __webpack_require__(17); -var advance = __webpack_require__(23); +var task = __webpack_require__(17); +var base = __webpack_require__(18); +var advance = __webpack_require__(24); var defaultOptions = { SecretId: '', @@ -2318,11 +2272,11 @@ var defaultOptions = { SystemClockOffset: 0, // 单位毫秒,ms UploadCheckContentMd5: false, UploadIdCacheLimit: 50, - UseAccelerate: false, + UseAccelerate: false }; // 对外暴露的类 -var COS = function (options) { +var COS = function COS(options) { this.options = util.extend(util.clone(defaultOptions), options || {}); this.options.FileParallelLimit = Math.max(1, this.options.FileParallelLimit); this.options.ChunkParallelLimit = Math.max(1, this.options.ChunkParallelLimit); @@ -2336,6 +2290,14 @@ var COS = function (options) { if (this.options.AppId) { console.warn('warning: AppId has been deprecated, Please put it at the end of parameter Bucket(E.g: "test-1250000000").'); } + if (this.options.SecretId && this.options.SecretId.indexOf(' ') > -1) { + console.error('error: SecretId格式错误,请检查'); + console.error('error: SecretId format is incorrect. Please check'); + } + if (this.options.SecretKey && this.options.SecretKey.indexOf(' ') > -1) { + console.error('error: SecretKey格式错误,请检查'); + console.error('error: SecretKey format is incorrect. Please check'); + } event.init(this); task.init(this); }; @@ -2344,34 +2306,38 @@ base.init(COS, task); advance.init(COS, task); COS.getAuthorization = util.getAuth; -COS.version = '1.1.1'; +COS.version = '1.1.2'; module.exports = COS; - /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(process, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/* https://github.com/emn178/js-md5 */ +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, global, module) {var __WEBPACK_AMD_DEFINE_RESULT__; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/* https://github.com/emn178/js-md5 */ (function () { 'use strict'; var ERROR = 'input is invalid type'; - var WINDOW = typeof window === 'object'; + var WINDOW = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object'; var root = WINDOW ? window : {}; if (root.JS_MD5_NO_WINDOW) { WINDOW = false; } - var WEB_WORKER = !WINDOW && typeof self === 'object'; - var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; + var WEB_WORKER = !WINDOW && (typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object'; + var NODE_JS = !root.JS_MD5_NO_NODE_JS && (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process.versions && process.versions.node; if (NODE_JS) { root = global; } else if (WEB_WORKER) { root = self; } - var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports; - var AMD = "function" === 'function' && __webpack_require__(10); + var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && ( false ? 'undefined' : _typeof(module)) === 'object' && module.exports; + var AMD = "function" === 'function' && __webpack_require__(11); var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; var HEX_CHARS = '0123456789abcdef'.split(''); var EXTRA = [128, 32768, 8388608, -2147483648]; @@ -2379,7 +2345,8 @@ module.exports = COS; var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64']; var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - var blocks = [], buffer8; + var blocks = [], + buffer8; if (ARRAY_BUFFER) { var buffer = new ArrayBuffer(68); buffer8 = new Uint8Array(buffer); @@ -2394,7 +2361,7 @@ module.exports = COS; if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { ArrayBuffer.isView = function (obj) { - return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer; + return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer; }; } @@ -2455,7 +2422,7 @@ module.exports = COS; * @example * md5.base64('The quick brown fox jumps over the lazy dog'); */ - var createOutputMethod = function (outputType) { + var createOutputMethod = function createOutputMethod(outputType) { return function (message) { return new Md5(true).update(message)[outputType](); }; @@ -2481,7 +2448,7 @@ module.exports = COS; * var hash = md5.create(); * hash.update('The quick brown fox jumps over the lazy dog'); */ - var createMethod = function () { + var createMethod = function createMethod() { var method = createOutputMethod('hex'); if (NODE_JS) { method = nodeWrap(method); @@ -2499,10 +2466,10 @@ module.exports = COS; return method; }; - var nodeWrap = function (method) { + var nodeWrap = function nodeWrap(method) { var crypto = eval("require('crypto')"); var Buffer = eval("require('buffer').Buffer"); - var nodeMethod = function (message) { + var nodeMethod = function nodeMethod(message) { if (typeof message === 'string') { return crypto.createHash('md5').update(message, 'utf8').digest('hex'); } else { @@ -2512,8 +2479,7 @@ module.exports = COS; message = new Uint8Array(message); } } - if (Array.isArray(message) || ArrayBuffer.isView(message) || - message.constructor === Buffer) { + if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) { return crypto.createHash('md5').update(new Buffer(message)).digest('hex'); } else { return method(message); @@ -2530,10 +2496,7 @@ module.exports = COS; */ function Md5(sharedMemory) { if (sharedMemory) { - blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; this.blocks = blocks; this.buffer8 = buffer8; } else { @@ -2564,7 +2527,8 @@ module.exports = COS; return; } - var notString, type = typeof message; + var notString, + type = typeof message === 'undefined' ? 'undefined' : _typeof(message); if (type !== 'string') { if (type === 'object') { if (message === null) { @@ -2581,17 +2545,18 @@ module.exports = COS; } notString = true; } - var code, index = 0, i, length = message.length, blocks = this.blocks; + var code, + index = 0, + i, + length = message.length, + blocks = this.blocks; var buffer8 = this.buffer8; while (index < length) { if (this.hashed) { this.hashed = false; blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; } if (notString) { @@ -2611,18 +2576,18 @@ module.exports = COS; if (code < 0x80) { buffer8[i++] = code; } else if (code < 0x800) { - buffer8[i++] = 0xc0 | (code >> 6); - buffer8[i++] = 0x80 | (code & 0x3f); + buffer8[i++] = 0xc0 | code >> 6; + buffer8[i++] = 0x80 | code & 0x3f; } else if (code < 0xd800 || code >= 0xe000) { - buffer8[i++] = 0xe0 | (code >> 12); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f); + buffer8[i++] = 0xe0 | code >> 12; + buffer8[i++] = 0x80 | code >> 6 & 0x3f; + buffer8[i++] = 0x80 | code & 0x3f; } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - buffer8[i++] = 0xf0 | (code >> 18); - buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f); + code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff); + buffer8[i++] = 0xf0 | code >> 18; + buffer8[i++] = 0x80 | code >> 12 & 0x3f; + buffer8[i++] = 0x80 | code >> 6 & 0x3f; + buffer8[i++] = 0x80 | code & 0x3f; } } } else { @@ -2631,18 +2596,18 @@ module.exports = COS; if (code < 0x80) { blocks[i >> 2] |= code << SHIFT[i++ & 3]; } else if (code < 0x800) { - blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3]; } else if (code < 0xd800 || code >= 0xe000) { - blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3]; } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff); + blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3]; } } } @@ -2669,17 +2634,15 @@ module.exports = COS; return; } this.finalized = true; - var blocks = this.blocks, i = this.lastByteIndex; + var blocks = this.blocks, + i = this.lastByteIndex; blocks[i >> 2] |= EXTRA[i & 3]; if (i >= 56) { if (!this.hashed) { this.hash(); } blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = - blocks[4] = blocks[5] = blocks[6] = blocks[7] = - blocks[8] = blocks[9] = blocks[10] = blocks[11] = - blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; + blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; } blocks[14] = this.bytes << 3; blocks[15] = this.hBytes << 3 | this.bytes >>> 29; @@ -2687,87 +2650,93 @@ module.exports = COS; }; Md5.prototype.hash = function () { - var a, b, c, d, bc, da, blocks = this.blocks; + var a, + b, + c, + d, + bc, + da, + blocks = this.blocks; if (this.first) { a = blocks[0] - 680876937; a = (a << 7 | a >>> 25) - 271733879 << 0; d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708; d = (d << 12 | d >>> 20) + a << 0; - c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375; + c = (-271733879 ^ d & (a ^ -271733879)) + blocks[2] - 1126478375; c = (c << 17 | c >>> 15) + d << 0; - b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209; + b = (a ^ c & (d ^ a)) + blocks[3] - 1316259209; b = (b << 22 | b >>> 10) + c << 0; } else { a = this.h0; b = this.h1; c = this.h2; d = this.h3; - a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936; + a += (d ^ b & (c ^ d)) + blocks[0] - 680876936; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586; + d += (c ^ a & (b ^ c)) + blocks[1] - 389564586; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819; + c += (b ^ d & (a ^ b)) + blocks[2] + 606105819; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330; + b += (a ^ c & (d ^ a)) + blocks[3] - 1044525330; b = (b << 22 | b >>> 10) + c << 0; } - a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897; + a += (d ^ b & (c ^ d)) + blocks[4] - 176418897; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426; + d += (c ^ a & (b ^ c)) + blocks[5] + 1200080426; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341; + c += (b ^ d & (a ^ b)) + blocks[6] - 1473231341; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983; + b += (a ^ c & (d ^ a)) + blocks[7] - 45705983; b = (b << 22 | b >>> 10) + c << 0; - a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416; + a += (d ^ b & (c ^ d)) + blocks[8] + 1770035416; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417; + d += (c ^ a & (b ^ c)) + blocks[9] - 1958414417; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[10] - 42063; + c += (b ^ d & (a ^ b)) + blocks[10] - 42063; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162; + b += (a ^ c & (d ^ a)) + blocks[11] - 1990404162; b = (b << 22 | b >>> 10) + c << 0; - a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682; + a += (d ^ b & (c ^ d)) + blocks[12] + 1804603682; a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101; + d += (c ^ a & (b ^ c)) + blocks[13] - 40341101; d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290; + c += (b ^ d & (a ^ b)) + blocks[14] - 1502002290; c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329; + b += (a ^ c & (d ^ a)) + blocks[15] + 1236535329; b = (b << 22 | b >>> 10) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510; + a += (c ^ d & (b ^ c)) + blocks[1] - 165796510; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632; + d += (b ^ c & (a ^ b)) + blocks[6] - 1069501632; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713; + c += (a ^ b & (d ^ a)) + blocks[11] + 643717713; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302; + b += (d ^ a & (c ^ d)) + blocks[0] - 373897302; b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691; + a += (c ^ d & (b ^ c)) + blocks[5] - 701558691; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083; + d += (b ^ c & (a ^ b)) + blocks[10] + 38016083; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335; + c += (a ^ b & (d ^ a)) + blocks[15] - 660478335; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848; + b += (d ^ a & (c ^ d)) + blocks[4] - 405537848; b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438; + a += (c ^ d & (b ^ c)) + blocks[9] + 568446438; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690; + d += (b ^ c & (a ^ b)) + blocks[14] - 1019803690; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961; + c += (a ^ b & (d ^ a)) + blocks[3] - 187363961; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501; + b += (d ^ a & (c ^ d)) + blocks[8] + 1163531501; b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467; + a += (c ^ d & (b ^ c)) + blocks[13] - 1444681467; a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784; + d += (b ^ c & (a ^ b)) + blocks[2] - 51403784; d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473; + c += (a ^ b & (d ^ a)) + blocks[7] + 1735328473; c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734; + b += (d ^ a & (c ^ d)) + blocks[12] - 1926607734; b = (b << 20 | b >>> 12) + c << 0; bc = b ^ c; a += (bc ^ d) + blocks[5] - 378558; @@ -2869,24 +2838,12 @@ module.exports = COS; Md5.prototype.hex = function () { this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - - return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + - HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + - HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + - HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + - HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + - HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + - HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + - HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + - HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + - HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + - HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + - HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + - HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + - HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + - HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + - HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F]; + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + + return HEX_CHARS[h0 >> 4 & 0x0F] + HEX_CHARS[h0 & 0x0F] + HEX_CHARS[h0 >> 12 & 0x0F] + HEX_CHARS[h0 >> 8 & 0x0F] + HEX_CHARS[h0 >> 20 & 0x0F] + HEX_CHARS[h0 >> 16 & 0x0F] + HEX_CHARS[h0 >> 28 & 0x0F] + HEX_CHARS[h0 >> 24 & 0x0F] + HEX_CHARS[h1 >> 4 & 0x0F] + HEX_CHARS[h1 & 0x0F] + HEX_CHARS[h1 >> 12 & 0x0F] + HEX_CHARS[h1 >> 8 & 0x0F] + HEX_CHARS[h1 >> 20 & 0x0F] + HEX_CHARS[h1 >> 16 & 0x0F] + HEX_CHARS[h1 >> 28 & 0x0F] + HEX_CHARS[h1 >> 24 & 0x0F] + HEX_CHARS[h2 >> 4 & 0x0F] + HEX_CHARS[h2 & 0x0F] + HEX_CHARS[h2 >> 12 & 0x0F] + HEX_CHARS[h2 >> 8 & 0x0F] + HEX_CHARS[h2 >> 20 & 0x0F] + HEX_CHARS[h2 >> 16 & 0x0F] + HEX_CHARS[h2 >> 28 & 0x0F] + HEX_CHARS[h2 >> 24 & 0x0F] + HEX_CHARS[h3 >> 4 & 0x0F] + HEX_CHARS[h3 & 0x0F] + HEX_CHARS[h3 >> 12 & 0x0F] + HEX_CHARS[h3 >> 8 & 0x0F] + HEX_CHARS[h3 >> 20 & 0x0F] + HEX_CHARS[h3 >> 16 & 0x0F] + HEX_CHARS[h3 >> 28 & 0x0F] + HEX_CHARS[h3 >> 24 & 0x0F]; }; /** @@ -2914,13 +2871,11 @@ module.exports = COS; Md5.prototype.digest = function () { this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - return [ - h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF, - h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF, - h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF, - h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF - ]; + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + return [h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >> 24 & 0xFF]; }; /** @@ -2981,20 +2936,19 @@ module.exports = COS; * hash.base64(); */ Md5.prototype.base64 = function () { - var v1, v2, v3, base64Str = '', bytes = this.array(); + var v1, + v2, + v3, + base64Str = '', + bytes = this.array(); for (var i = 0; i < 15;) { v1 = bytes[i++]; v2 = bytes[i++]; v3 = bytes[i++]; - base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + - BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + - BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + - BASE64_ENCODE_CHAR[v3 & 63]; + base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63]; } v1 = bytes[i]; - base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + - BASE64_ENCODE_CHAR[(v1 << 4) & 63] + - '=='; + base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[v1 << 4 & 63] + '=='; return base64Str; }; @@ -3029,12 +2983,14 @@ module.exports = COS; } } })(); - -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(1))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9), __webpack_require__(1), __webpack_require__(10)(module))) /***/ }), /* 9 */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + // shim for using process in browser var process = module.exports = {}; @@ -3050,7 +3006,7 @@ var cachedClearTimeout; function defaultSetTimout() { throw new Error('setTimeout has not been defined'); } -function defaultClearTimeout () { +function defaultClearTimeout() { throw new Error('clearTimeout has not been defined'); } (function () { @@ -3072,7 +3028,7 @@ function defaultClearTimeout () { } catch (e) { cachedClearTimeout = defaultClearTimeout; } -} ()) +})(); function runTimeout(fun) { if (cachedSetTimeout === setTimeout) { //normal enviroments in sane situations @@ -3086,17 +3042,15 @@ function runTimeout(fun) { try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedSetTimeout(fun, 0); - } catch(e){ + } catch (e) { try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedSetTimeout.call(null, fun, 0); - } catch(e){ + } catch (e) { // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error return cachedSetTimeout.call(this, fun, 0); } } - - } function runClearTimeout(marker) { if (cachedClearTimeout === clearTimeout) { @@ -3111,19 +3065,16 @@ function runClearTimeout(marker) { try { // when when somebody has screwed with setTimeout but no I.E. maddness return cachedClearTimeout(marker); - } catch (e){ + } catch (e) { try { // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally return cachedClearTimeout.call(null, marker); - } catch (e){ + } catch (e) { // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. // Some versions of I.E. have different rules for clearTimeout vs setTimeout return cachedClearTimeout.call(this, marker); } } - - - } var queue = []; var draining = false; @@ -3153,7 +3104,7 @@ function drainQueue() { draining = true; var len = queue.length; - while(len) { + while (len) { currentQueue = queue; queue = []; while (++queueIndex < len) { @@ -3209,21 +3160,56 @@ process.emit = noop; process.prependListener = noop; process.prependOnceListener = noop; -process.listeners = function (name) { return [] } +process.listeners = function (name) { + return []; +}; process.binding = function (name) { throw new Error('process.binding is not supported'); }; -process.cwd = function () { return '/' }; +process.cwd = function () { + return '/'; +}; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; -process.umask = function() { return 0; }; - +process.umask = function () { + return 0; +}; /***/ }), /* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function (module) { + if (!module.webpackPolyfill) { + module.deprecate = function () {}; + module.paths = []; + // module.parent = undefined by default + if (!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function get() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function get() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + +/***/ }), +/* 11 */ /***/ (function(module, exports) { /* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ @@ -3232,8 +3218,11 @@ module.exports = __webpack_amd_options__; /* WEBPACK VAR INJECTION */}.call(exports, {})) /***/ }), -/* 11 */ -/***/ (function(module, exports) { +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + /* CryptoJS v3.1.2 @@ -3241,18 +3230,147 @@ module.exports = __webpack_amd_options__; (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ -var CryptoJS=CryptoJS||function(g,l){var e={},d=e.lib={},m=function(){},k=d.Base={extend:function(a){m.prototype=this;var c=new m;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}, - p=d.WordArray=k.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=l?c:4*a.length},toString:function(a){return(a||n).stringify(this)},concat:function(a){var c=this.words,q=a.words,f=this.sigBytes;a=a.sigBytes;this.clamp();if(f%4)for(var b=0;b>>2]|=(q[b>>>2]>>>24-8*(b%4)&255)<<24-8*((f+b)%4);else if(65535>>2]=q[b>>>2];else c.push.apply(c,q);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<< - 32-8*(c%4);a.length=g.ceil(c/4)},clone:function(){var a=k.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],b=0;b>>2]>>>24-8*(f%4)&255;b.push((d>>>4).toString(16));b.push((d&15).toString(16))}return b.join("")},parse:function(a){for(var c=a.length,b=[],f=0;f>>3]|=parseInt(a.substr(f, - 2),16)<<24-4*(f%8);return new p.init(b,c/2)}},j=b.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var b=[],f=0;f>>2]>>>24-8*(f%4)&255));return b.join("")},parse:function(a){for(var c=a.length,b=[],f=0;f>>2]|=(a.charCodeAt(f)&255)<<24-8*(f%4);return new p.init(b,c)}},h=b.Utf8={stringify:function(a){try{return decodeURIComponent(escape(j.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}}, - r=d.BufferedBlockAlgorithm=k.extend({reset:function(){this._data=new p.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=h.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,b=c.words,f=c.sigBytes,d=this.blockSize,e=f/(4*d),e=a?g.ceil(e):g.max((e|0)-this._minBufferSize,0);a=e*d;f=g.min(4*a,f);if(a){for(var k=0;ka;a++){if(16>a)m[a]=d[e+a]|0;else{var c=m[a-3]^m[a-8]^m[a-14]^m[a-16];m[a]=c<<1|c>>>31}c=(n<<5|n>>>27)+l+m[a];c=20>a?c+((j&h|~j&g)+1518500249):40>a?c+((j^h^g)+1859775393):60>a?c+((j&h|j&g|h&g)-1894007588):c+((j^h^ -g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2]+h|0;b[3]=b[3]+g|0;b[4]=b[4]+l|0},_doFinalize:function(){var d=this._data,e=d.words,b=8*this._nDataBytes,g=8*d.sigBytes;e[g>>>5]|=128<<24-g%32;e[(g+64>>>9<<4)+14]=Math.floor(b/4294967296);e[(g+64>>>9<<4)+15]=b;d.sigBytes=4*e.length;this._process();return this._hash},clone:function(){var e=d.clone.call(this);e._hash=this._hash.clone();return e}});g.SHA1=d._createHelper(l);g.HmacSHA1=d._createHmacHelper(l)})(); -(function(){var g=CryptoJS,l=g.enc.Utf8;g.algo.HMAC=g.lib.Base.extend({init:function(e,d){e=this._hasher=new e.init;"string"==typeof d&&(d=l.parse(d));var g=e.blockSize,k=4*g;d.sigBytes>k&&(d=e.finalize(d));d.clamp();for(var p=this._oKey=d.clone(),b=this._iKey=d.clone(),n=p.words,j=b.words,h=0;h>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((f + b) % 4); + } else if (65535 < q.length) for (b = 0; b < a; b += 4) { + c[f + b >>> 2] = q[b >>> 2]; + } else c.push.apply(c, q);this.sigBytes += a;return this; + }, clamp: function clamp() { + var a = this.words, + c = this.sigBytes;a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);a.length = g.ceil(c / 4); + }, clone: function clone() { + var a = k.clone.call(this);a.words = this.words.slice(0);return a; + }, random: function random(a) { + for (var c = [], b = 0; b < a; b += 4) { + c.push(4294967296 * g.random() | 0); + }return new p.init(c, a); + } }), + b = e.enc = {}, + n = b.Hex = { stringify: function stringify(a) { + var c = a.words;a = a.sigBytes;for (var b = [], f = 0; f < a; f++) { + var d = c[f >>> 2] >>> 24 - 8 * (f % 4) & 255;b.push((d >>> 4).toString(16));b.push((d & 15).toString(16)); + }return b.join(""); + }, parse: function parse(a) { + for (var c = a.length, b = [], f = 0; f < c; f += 2) { + b[f >>> 3] |= parseInt(a.substr(f, 2), 16) << 24 - 4 * (f % 8); + }return new p.init(b, c / 2); + } }, + j = b.Latin1 = { stringify: function stringify(a) { + var c = a.words;a = a.sigBytes;for (var b = [], f = 0; f < a; f++) { + b.push(String.fromCharCode(c[f >>> 2] >>> 24 - 8 * (f % 4) & 255)); + }return b.join(""); + }, parse: function parse(a) { + for (var c = a.length, b = [], f = 0; f < c; f++) { + b[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - 8 * (f % 4); + }return new p.init(b, c); + } }, + h = b.Utf8 = { stringify: function stringify(a) { + try { + return decodeURIComponent(escape(j.stringify(a))); + } catch (c) { + throw Error("Malformed UTF-8 data"); + } + }, parse: function parse(a) { + return j.parse(unescape(encodeURIComponent(a))); + } }, + r = d.BufferedBlockAlgorithm = k.extend({ reset: function reset() { + this._data = new p.init();this._nDataBytes = 0; + }, _append: function _append(a) { + "string" == typeof a && (a = h.parse(a));this._data.concat(a);this._nDataBytes += a.sigBytes; + }, _process: function _process(a) { + var c = this._data, + b = c.words, + f = c.sigBytes, + d = this.blockSize, + e = f / (4 * d), + e = a ? g.ceil(e) : g.max((e | 0) - this._minBufferSize, 0);a = e * d;f = g.min(4 * a, f);if (a) { + for (var k = 0; k < a; k += d) { + this._doProcessBlock(b, k); + }k = b.splice(0, a);c.sigBytes -= f; + }return new p.init(k, f); + }, clone: function clone() { + var a = k.clone.call(this); + a._data = this._data.clone();return a; + }, _minBufferSize: 0 });d.Hasher = r.extend({ cfg: k.extend(), init: function init(a) { + this.cfg = this.cfg.extend(a);this.reset(); + }, reset: function reset() { + r.reset.call(this);this._doReset(); + }, update: function update(a) { + this._append(a);this._process();return this; + }, finalize: function finalize(a) { + a && this._append(a);return this._doFinalize(); + }, blockSize: 16, _createHelper: function _createHelper(a) { + return function (b, d) { + return new a.init(d).finalize(b); + }; + }, _createHmacHelper: function _createHmacHelper(a) { + return function (b, d) { + return new s.HMAC.init(a, d).finalize(b); + }; + } });var s = e.algo = {};return e; +}(Math); +(function () { + var g = CryptoJS, + l = g.lib, + e = l.WordArray, + d = l.Hasher, + m = [], + l = g.algo.SHA1 = d.extend({ _doReset: function _doReset() { + this._hash = new e.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, _doProcessBlock: function _doProcessBlock(d, e) { + for (var b = this._hash.words, n = b[0], j = b[1], h = b[2], g = b[3], l = b[4], a = 0; 80 > a; a++) { + if (16 > a) m[a] = d[e + a] | 0;else { + var c = m[a - 3] ^ m[a - 8] ^ m[a - 14] ^ m[a - 16];m[a] = c << 1 | c >>> 31; + }c = (n << 5 | n >>> 27) + l + m[a];c = 20 > a ? c + ((j & h | ~j & g) + 1518500249) : 40 > a ? c + ((j ^ h ^ g) + 1859775393) : 60 > a ? c + ((j & h | j & g | h & g) - 1894007588) : c + ((j ^ h ^ g) - 899497514);l = g;g = h;h = j << 30 | j >>> 2;j = n;n = c; + }b[0] = b[0] + n | 0;b[1] = b[1] + j | 0;b[2] = b[2] + h | 0;b[3] = b[3] + g | 0;b[4] = b[4] + l | 0; + }, _doFinalize: function _doFinalize() { + var d = this._data, + e = d.words, + b = 8 * this._nDataBytes, + g = 8 * d.sigBytes;e[g >>> 5] |= 128 << 24 - g % 32;e[(g + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296);e[(g + 64 >>> 9 << 4) + 15] = b;d.sigBytes = 4 * e.length;this._process();return this._hash; + }, clone: function clone() { + var e = d.clone.call(this);e._hash = this._hash.clone();return e; + } });g.SHA1 = d._createHelper(l);g.HmacSHA1 = d._createHmacHelper(l); +})(); +(function () { + var g = CryptoJS, + l = g.enc.Utf8;g.algo.HMAC = g.lib.Base.extend({ init: function init(e, d) { + e = this._hasher = new e.init();"string" == typeof d && (d = l.parse(d));var g = e.blockSize, + k = 4 * g;d.sigBytes > k && (d = e.finalize(d));d.clamp();for (var p = this._oKey = d.clone(), b = this._iKey = d.clone(), n = p.words, j = b.words, h = 0; h < g; h++) { + n[h] ^= 1549556828, j[h] ^= 909522486; + }p.sigBytes = b.sigBytes = k;this.reset(); + }, reset: function reset() { + var e = this._hasher;e.reset();e.update(this._iKey); + }, update: function update(e) { + this._hasher.update(e);return this; + }, finalize: function finalize(e) { + var d = this._hasher;e = d.finalize(e);d.reset();return d.finalize(this._oKey.clone().concat(e)); + } }); +})(); (function () { // Shortcuts @@ -3278,7 +3396,7 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 * * var base64String = CryptoJS.enc.Base64.stringify(wordArray); */ - stringify: function (wordArray) { + stringify: function stringify(wordArray) { // Shortcuts var words = wordArray.words; var sigBytes = wordArray.sigBytes; @@ -3290,14 +3408,14 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 // Convert var base64Chars = []; for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; + var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 0xff; + var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 0xff; - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + var triplet = byte1 << 16 | byte2 << 8 | byte3; - for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) { + base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 0x3f)); } } @@ -3325,7 +3443,7 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 * * var wordArray = CryptoJS.enc.Base64.parse(base64String); */ - parse: function (base64Str) { + parse: function parse(base64Str) { // Shortcuts var base64StrLength = base64Str.length; var map = this._map; @@ -3344,9 +3462,9 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 var nBytes = 0; for (var i = 0; i < base64StrLength; i++) { if (i % 4) { - var bits1 = map.indexOf(base64Str.charAt(i - 1)) << ((i % 4) * 2); - var bits2 = map.indexOf(base64Str.charAt(i)) >>> (6 - (i % 4) * 2); - words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8); + var bits1 = map.indexOf(base64Str.charAt(i - 1)) << i % 4 * 2; + var bits2 = map.indexOf(base64Str.charAt(i)) >>> 6 - i % 4 * 2; + words[nBytes >>> 2] |= (bits1 | bits2) << 24 - nBytes % 4 * 8; nBytes++; } } @@ -3356,15 +3474,17 @@ g)-899497514);l=g;g=h;h=j<<30|j>>>2;j=n;n=c}b[0]=b[0]+n|0;b[1]=b[1]+j|0;b[2]=b[2 _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' }; -}()); +})(); module.exports = CryptoJS; - /***/ }), -/* 12 */ +/* 13 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; + + /* Copyright 2011-2013 Abdulla Abdurakhmanov Original sources are available at https://code.google.com/p/x2js/ @@ -3381,9 +3501,9 @@ module.exports = CryptoJS; See the License for the specific language governing permissions and limitations under the License. */ -var DOMParser = __webpack_require__(13).DOMParser; +var DOMParser = __webpack_require__(14).DOMParser; -var x2js = function (config) { +var x2js = function x2js(config) { 'use strict'; var VERSION = "1.2.0"; @@ -3393,7 +3513,7 @@ var x2js = function (config) { initRequiredPolyfills(); function initConfigDefaults() { - if(config.escapeMode === undefined) { + if (config.escapeMode === undefined) { config.escapeMode = true; } @@ -3401,46 +3521,45 @@ var x2js = function (config) { config.arrayAccessForm = config.arrayAccessForm || "none"; config.emptyNodeForm = config.emptyNodeForm || "text"; - if(config.enableToStringFunc === undefined) { + if (config.enableToStringFunc === undefined) { config.enableToStringFunc = true; } config.arrayAccessFormPaths = config.arrayAccessFormPaths || []; - if(config.skipEmptyTextNodesForObj === undefined) { + if (config.skipEmptyTextNodesForObj === undefined) { config.skipEmptyTextNodesForObj = true; } - if(config.stripWhitespaces === undefined) { + if (config.stripWhitespaces === undefined) { config.stripWhitespaces = true; } config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || []; - if(config.useDoubleQuotes === undefined) { + if (config.useDoubleQuotes === undefined) { config.useDoubleQuotes = false; } config.xmlElementsFilter = config.xmlElementsFilter || []; config.jsonPropertiesFilter = config.jsonPropertiesFilter || []; - if(config.keepCData === undefined) { + if (config.keepCData === undefined) { config.keepCData = false; } } var DOMNodeTypes = { - ELEMENT_NODE : 1, - TEXT_NODE : 3, - CDATA_SECTION_NODE : 4, - COMMENT_NODE : 8, - DOCUMENT_NODE : 9 + ELEMENT_NODE: 1, + TEXT_NODE: 3, + CDATA_SECTION_NODE: 4, + COMMENT_NODE: 8, + DOCUMENT_NODE: 9 }; - function initRequiredPolyfills() { - } + function initRequiredPolyfills() {} - function getNodeLocalName( node ) { + function getNodeLocalName(node) { var nodeLocalName = node.localName; - if(nodeLocalName == null) // Yeah, this is IE!! + if (nodeLocalName == null) // Yeah, this is IE!! nodeLocalName = node.baseName; - if(nodeLocalName == null || nodeLocalName=="") // =="" is IE too + if (nodeLocalName == null || nodeLocalName == "") // =="" is IE too nodeLocalName = node.nodeName; return nodeLocalName; } @@ -3450,10 +3569,7 @@ var x2js = function (config) { } function escapeXmlChars(str) { - if(typeof(str) == "string") - return str.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); - else - return str; + if (typeof str == "string") return str.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''');else return str; } function unescapeXmlChars(str) { @@ -3462,40 +3578,30 @@ var x2js = function (config) { function checkInStdFiltersArrayForm(stdFiltersArrayForm, obj, name, path) { var idx = 0; - for(; idx < stdFiltersArrayForm.length; idx++) { + for (; idx < stdFiltersArrayForm.length; idx++) { var filterPath = stdFiltersArrayForm[idx]; - if( typeof filterPath === "string" ) { - if(filterPath == path) - break; - } - else - if( filterPath instanceof RegExp) { - if(filterPath.test(path)) - break; - } - else - if( typeof filterPath === "function") { - if(filterPath(obj, name, path)) - break; + if (typeof filterPath === "string") { + if (filterPath == path) break; + } else if (filterPath instanceof RegExp) { + if (filterPath.test(path)) break; + } else if (typeof filterPath === "function") { + if (filterPath(obj, name, path)) break; } } - return idx!=stdFiltersArrayForm.length; + return idx != stdFiltersArrayForm.length; } function toArrayAccessForm(obj, childName, path) { - switch(config.arrayAccessForm) { + switch (config.arrayAccessForm) { case "property": - if(!(obj[childName] instanceof Array)) - obj[childName+"_asArray"] = [obj[childName]]; - else - obj[childName+"_asArray"] = obj[childName]; + if (!(obj[childName] instanceof Array)) obj[childName + "_asArray"] = [obj[childName]];else obj[childName + "_asArray"] = obj[childName]; break; /*case "none": break;*/ } - if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) { - if(checkInStdFiltersArrayForm(config.arrayAccessFormPaths, obj, childName, path)) { + if (!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) { + if (checkInStdFiltersArrayForm(config.arrayAccessFormPaths, obj, childName, path)) { obj[childName] = [obj[childName]]; } } @@ -3506,25 +3612,22 @@ var x2js = function (config) { // Improved to support full spec and optional parts var bits = prop.split(/[-T:+Z]/g); - var d = new Date(bits[0], bits[1]-1, bits[2]); + var d = new Date(bits[0], bits[1] - 1, bits[2]); var secondBits = bits[5].split("\."); d.setHours(bits[3], bits[4], secondBits[0]); - if(secondBits.length>1) - d.setMilliseconds(secondBits[1]); + if (secondBits.length > 1) d.setMilliseconds(secondBits[1]); // Get supplied time zone offset in minutes - if(bits[6] && bits[7]) { + if (bits[6] && bits[7]) { var offsetMinutes = bits[6] * 60 + Number(bits[7]); - var sign = /\d\d-\d\d:\d\d$/.test(prop)? '-' : '+'; + var sign = /\d\d-\d\d:\d\d$/.test(prop) ? '-' : '+'; // Apply the sign - offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes); + offsetMinutes = 0 + (sign == '-' ? -1 * offsetMinutes : offsetMinutes); // Apply offset and local timezone - d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset()) - } - else - if(prop.indexOf("Z", prop.length - 1) !== -1) { + d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset()); + } else if (prop.indexOf("Z", prop.length - 1) !== -1) { d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds())); } @@ -3533,187 +3636,153 @@ var x2js = function (config) { } function checkFromXmlDateTimePaths(value, childName, fullPath) { - if(config.datetimeAccessFormPaths.length > 0) { + if (config.datetimeAccessFormPaths.length > 0) { var path = fullPath.split("\.#")[0]; - if(checkInStdFiltersArrayForm(config.datetimeAccessFormPaths, value, childName, path)) { + if (checkInStdFiltersArrayForm(config.datetimeAccessFormPaths, value, childName, path)) { return fromXmlDateTime(value); - } - else - return value; - } - else - return value; + } else return value; + } else return value; } function checkXmlElementsFilter(obj, childType, childName, childPath) { - if( childType == DOMNodeTypes.ELEMENT_NODE && config.xmlElementsFilter.length > 0) { + if (childType == DOMNodeTypes.ELEMENT_NODE && config.xmlElementsFilter.length > 0) { return checkInStdFiltersArrayForm(config.xmlElementsFilter, obj, childName, childPath); - } - else - return true; + } else return true; } - function parseDOMChildren( node, path ) { - if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) { - var result = new Object; + function parseDOMChildren(node, path) { + if (node.nodeType == DOMNodeTypes.DOCUMENT_NODE) { + var result = new Object(); var nodeChildren = node.childNodes; // Alternative for firstElementChild which is not supported in some environments - for(var cidx=0; cidx 1 && result.__text!=null && config.skipEmptyTextNodesForObj) { - if( (config.stripWhitespaces && result.__text=="") || (result.__text.trim()=="")) { + } else if (result.__cnt > 1 && result.__text != null && config.skipEmptyTextNodesForObj) { + if (config.stripWhitespaces && result.__text == "" || result.__text.trim() == "") { delete result.__text; } } delete result.__cnt; - if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) { - result.toString = function() { - return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:''); + if (config.enableToStringFunc && (result.__text != null || result.__cdata != null)) { + result.toString = function () { + return (this.__text != null ? this.__text : '') + (this.__cdata != null ? this.__cdata : ''); }; } return result; - } - else - if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) { + } else if (node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) { return node.nodeValue; } } function startTag(jsonObj, element, attrList, closed) { - var resultStr = "<"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+":"):"") + element; - if(attrList!=null) { - for(var aidx = 0; aidx < attrList.length; aidx++) { + var resultStr = "<" + (jsonObj != null && jsonObj.__prefix != null ? jsonObj.__prefix + ":" : "") + element; + if (attrList != null) { + for (var aidx = 0; aidx < attrList.length; aidx++) { var attrName = attrList[aidx]; var attrVal = jsonObj[attrName]; - if(config.escapeMode) - attrVal=escapeXmlChars(attrVal); - resultStr+=" "+attrName.substr(config.attributePrefix.length)+"="; - if(config.useDoubleQuotes) - resultStr+='"'+attrVal+'"'; - else - resultStr+="'"+attrVal+"'"; + if (config.escapeMode) attrVal = escapeXmlChars(attrVal); + resultStr += " " + attrName.substr(config.attributePrefix.length) + "="; + if (config.useDoubleQuotes) resultStr += '"' + attrVal + '"';else resultStr += "'" + attrVal + "'"; } } - if(!closed) - resultStr+=">"; - else - resultStr+="/>"; + if (!closed) resultStr += ">";else resultStr += "/>"; return resultStr; } - function endTag(jsonObj,elementName) { - return ""; + function endTag(jsonObj, elementName) { + return ""; } function endsWith(str, suffix) { return str.indexOf(suffix, str.length - suffix.length) !== -1; } - function jsonXmlSpecialElem ( jsonObj, jsonObjField ) { - if((config.arrayAccessForm=="property" && endsWith(jsonObjField.toString(),("_asArray"))) - || jsonObjField.toString().indexOf(config.attributePrefix)==0 - || jsonObjField.toString().indexOf("__")==0 - || (jsonObj[jsonObjField] instanceof Function) ) - return true; - else - return false; + function jsonXmlSpecialElem(jsonObj, jsonObjField) { + if (config.arrayAccessForm == "property" && endsWith(jsonObjField.toString(), "_asArray") || jsonObjField.toString().indexOf(config.attributePrefix) == 0 || jsonObjField.toString().indexOf("__") == 0 || jsonObj[jsonObjField] instanceof Function) return true;else return false; } - function jsonXmlElemCount ( jsonObj ) { + function jsonXmlElemCount(jsonObj) { var elementsCnt = 0; - if(jsonObj instanceof Object ) { - for( var it in jsonObj ) { - if(jsonXmlSpecialElem ( jsonObj, it) ) - continue; + if (jsonObj instanceof Object) { + for (var it in jsonObj) { + if (jsonXmlSpecialElem(jsonObj, it)) continue; elementsCnt++; } } @@ -3721,16 +3790,14 @@ var x2js = function (config) { } function checkJsonObjPropertiesFilter(jsonObj, propertyName, jsonObjPath) { - return config.jsonPropertiesFilter.length == 0 - || jsonObjPath=="" - || checkInStdFiltersArrayForm(config.jsonPropertiesFilter, jsonObj, propertyName, jsonObjPath); + return config.jsonPropertiesFilter.length == 0 || jsonObjPath == "" || checkInStdFiltersArrayForm(config.jsonPropertiesFilter, jsonObj, propertyName, jsonObjPath); } - function parseJSONAttributes ( jsonObj ) { + function parseJSONAttributes(jsonObj) { var attrList = []; - if(jsonObj instanceof Object ) { - for( var ait in jsonObj ) { - if(ait.toString().indexOf("__")== -1 && ait.toString().indexOf(config.attributePrefix)==0) { + if (jsonObj instanceof Object) { + for (var ait in jsonObj) { + if (ait.toString().indexOf("__") == -1 && ait.toString().indexOf(config.attributePrefix) == 0) { attrList.push(ait); } } @@ -3738,116 +3805,98 @@ var x2js = function (config) { return attrList; } - function parseJSONTextAttrs ( jsonTxtObj ) { - var result =""; + function parseJSONTextAttrs(jsonTxtObj) { + var result = ""; - if(jsonTxtObj.__cdata!=null) { - result+=""; + if (jsonTxtObj.__cdata != null) { + result += ""; } - if(jsonTxtObj.__text!=null) { - if(config.escapeMode) - result+=escapeXmlChars(jsonTxtObj.__text); - else - result+=jsonTxtObj.__text; + if (jsonTxtObj.__text != null) { + if (config.escapeMode) result += escapeXmlChars(jsonTxtObj.__text);else result += jsonTxtObj.__text; } return result; } - function parseJSONTextObject ( jsonTxtObj ) { - var result =""; + function parseJSONTextObject(jsonTxtObj) { + var result = ""; - if( jsonTxtObj instanceof Object ) { - result+=parseJSONTextAttrs ( jsonTxtObj ); - } - else - if(jsonTxtObj!=null) { - if(config.escapeMode) - result+=escapeXmlChars(jsonTxtObj); - else - result+=jsonTxtObj; + if (jsonTxtObj instanceof Object) { + result += parseJSONTextAttrs(jsonTxtObj); + } else if (jsonTxtObj != null) { + if (config.escapeMode) result += escapeXmlChars(jsonTxtObj);else result += jsonTxtObj; } return result; } function getJsonPropertyPath(jsonObjPath, jsonPropName) { - if (jsonObjPath==="") { + if (jsonObjPath === "") { return jsonPropName; - } - else - return jsonObjPath+"."+jsonPropName; + } else return jsonObjPath + "." + jsonPropName; } - function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList, jsonObjPath ) { + function parseJSONArray(jsonArrRoot, jsonArrObj, attrList, jsonObjPath) { var result = ""; - if(jsonArrRoot.length == 0) { - result+=startTag(jsonArrRoot, jsonArrObj, attrList, true); - } - else { - for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) { - result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false); - result+=parseJSONObject(jsonArrRoot[arIdx], getJsonPropertyPath(jsonObjPath,jsonArrObj)); - result+=endTag(jsonArrRoot[arIdx],jsonArrObj); + if (jsonArrRoot.length == 0) { + result += startTag(jsonArrRoot, jsonArrObj, attrList, true); + } else { + for (var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) { + result += startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false); + result += parseJSONObject(jsonArrRoot[arIdx], getJsonPropertyPath(jsonObjPath, jsonArrObj)); + result += endTag(jsonArrRoot[arIdx], jsonArrObj); } } return result; } - function parseJSONObject ( jsonObj, jsonObjPath ) { + function parseJSONObject(jsonObj, jsonObjPath) { var result = ""; - var elementsCnt = jsonXmlElemCount ( jsonObj ); + var elementsCnt = jsonXmlElemCount(jsonObj); - if(elementsCnt > 0) { - for( var it in jsonObj ) { + if (elementsCnt > 0) { + for (var it in jsonObj) { - if(jsonXmlSpecialElem ( jsonObj, it) || (jsonObjPath!="" && !checkJsonObjPropertiesFilter(jsonObj, it, getJsonPropertyPath(jsonObjPath,it))) ) - continue; + if (jsonXmlSpecialElem(jsonObj, it) || jsonObjPath != "" && !checkJsonObjPropertiesFilter(jsonObj, it, getJsonPropertyPath(jsonObjPath, it))) continue; var subObj = jsonObj[it]; - var attrList = parseJSONAttributes( subObj ) + var attrList = parseJSONAttributes(subObj); - if(subObj == null || subObj == undefined) { - result+=startTag(subObj, it, attrList, true); - } - else - if(subObj instanceof Object) { + if (subObj == null || subObj == undefined) { + result += startTag(subObj, it, attrList, true); + } else if (subObj instanceof Object) { - if(subObj instanceof Array) { - result+=parseJSONArray( subObj, it, attrList, jsonObjPath ); - } - else if(subObj instanceof Date) { - result+=startTag(subObj, it, attrList, false); - result+=subObj.toISOString(); - result+=endTag(subObj,it); - } - else { - var subObjElementsCnt = jsonXmlElemCount ( subObj ); - if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) { - result+=startTag(subObj, it, attrList, false); - result+=parseJSONObject(subObj, getJsonPropertyPath(jsonObjPath,it)); - result+=endTag(subObj,it); - } - else { - result+=startTag(subObj, it, attrList, true); + if (subObj instanceof Array) { + result += parseJSONArray(subObj, it, attrList, jsonObjPath); + } else if (subObj instanceof Date) { + result += startTag(subObj, it, attrList, false); + result += subObj.toISOString(); + result += endTag(subObj, it); + } else { + var subObjElementsCnt = jsonXmlElemCount(subObj); + if (subObjElementsCnt > 0 || subObj.__text != null || subObj.__cdata != null) { + result += startTag(subObj, it, attrList, false); + result += parseJSONObject(subObj, getJsonPropertyPath(jsonObjPath, it)); + result += endTag(subObj, it); + } else { + result += startTag(subObj, it, attrList, true); } } - } - else { - result+=startTag(subObj, it, attrList, false); - result+=parseJSONTextObject(subObj); - result+=endTag(subObj,it); + } else { + result += startTag(subObj, it, attrList, false); + result += parseJSONTextObject(subObj); + result += endTag(subObj, it); } } } - result+=parseJSONTextObject(jsonObj); + result += parseJSONTextObject(jsonObj); return result; } - this.parseXmlString = function(xmlDocStr) { + this.parseXmlString = function (xmlDocStr) { // var isIEParser = window.ActiveXObject || "ActiveXObject" in window; var isIEParser = false; if (xmlDocStr === undefined) { @@ -3855,86 +3904,66 @@ var x2js = function (config) { } var xmlDoc; if (DOMParser) { - var parser=new DOMParser(); + var parser = new DOMParser(); var parsererrorNS = null; // IE9+ now is here - if(!isIEParser) { + if (!isIEParser) { try { parsererrorNS = parser.parseFromString("INVALID", "text/xml").getElementsByTagName("parsererror")[0].namespaceURI; - } - catch(err) { + } catch (err) { parsererrorNS = null; } } try { - xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" ); - if( parsererrorNS!= null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) { + xmlDoc = parser.parseFromString(xmlDocStr, "text/xml"); + if (parsererrorNS != null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) { //throw new Error('Error parsing XML: '+xmlDocStr); xmlDoc = null; } - } - catch(err) { + } catch (err) { xmlDoc = null; } - } - else { + } else { // IE :( - if(xmlDocStr.indexOf("") + 2 ); + if (xmlDocStr.indexOf("") + 2); } - xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); - xmlDoc.async="false"; + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async = "false"; xmlDoc.loadXML(xmlDocStr); } return xmlDoc; }; - this.asArray = function(prop) { - if (prop === undefined || prop == null) - return []; - else - if(prop instanceof Array) - return prop; - else - return [prop]; + this.asArray = function (prop) { + if (prop === undefined || prop == null) return [];else if (prop instanceof Array) return prop;else return [prop]; }; - this.toXmlDateTime = function(dt) { - if(dt instanceof Date) - return dt.toISOString(); - else - if(typeof(dt) === 'number' ) - return new Date(dt).toISOString(); - else - return null; + this.toXmlDateTime = function (dt) { + if (dt instanceof Date) return dt.toISOString();else if (typeof dt === 'number') return new Date(dt).toISOString();else return null; }; - this.asDateTime = function(prop) { - if(typeof(prop) == "string") { + this.asDateTime = function (prop) { + if (typeof prop == "string") { return fromXmlDateTime(prop); - } - else - return prop; + } else return prop; }; this.xml2json = function (xmlDoc) { - return parseDOMChildren ( xmlDoc ); + return parseDOMChildren(xmlDoc); }; this.xml_str2json = function (xmlDocStr) { var xmlDoc = this.parseXmlString(xmlDocStr); - if(xmlDoc!=null) - return this.xml2json(xmlDoc); - else - return null; + if (xmlDoc != null) return this.xml2json(xmlDoc);else return null; }; this.json2xml_str = function (jsonObj) { - return parseJSONObject ( jsonObj, "" ); + return parseJSONObject(jsonObj, ""); }; this.json2xml = function (jsonObj) { - var xmlDocStr = this.json2xml_str (jsonObj); + var xmlDocStr = this.json2xml_str(jsonObj); return this.parseXmlString(xmlDocStr); }; @@ -3943,7 +3972,7 @@ var x2js = function (config) { }; }; -var xml2json = function (str) { +var xml2json = function xml2json(str) { if (!str) return null; var parser = new DOMParser(); var xmlDoc = parser.parseFromString(str, "text/xml"); @@ -3956,75 +3985,78 @@ var xml2json = function (str) { } }; -var json2xml = function (data) { +var json2xml = function json2xml(data) { var x2jsObj = new x2js(); return x2jsObj.json2xml(data); }; module.exports = xml2json; - /***/ }), -/* 13 */ +/* 14 */ /***/ (function(module, exports, __webpack_require__) { -function DOMParser(options){ - this.options = options ||{locator:{}}; - -} -DOMParser.prototype.parseFromString = function(source,mimeType){ - var options = this.options; - var sax = new XMLReader(); - var domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler - var errorHandler = options.errorHandler; - var locator = options.locator; - var defaultNSMap = options.xmlns||{}; - var entityMap = {'lt':'<','gt':'>','amp':'&','quot':'"','apos':"'"} - if(locator){ - domBuilder.setDocumentLocator(locator) - } - - sax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator); - sax.domBuilder = options.domBuilder || domBuilder; - if(/\/x?html?$/.test(mimeType)){ - entityMap.nbsp = '\xa0'; - entityMap.copy = '\xa9'; - defaultNSMap['']= 'http://www.w3.org/1999/xhtml'; - } - defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; - if(source){ - sax.parse(source,defaultNSMap,entityMap); - }else{ - sax.errorHandler.error("invalid doc source"); - } - return domBuilder.doc; -} -function buildErrorHandler(errorImpl,domBuilder,locator){ - if(!errorImpl){ - if(domBuilder instanceof DOMHandler){ - return domBuilder; - } - errorImpl = domBuilder ; - } - var errorHandler = {} - var isCallback = errorImpl instanceof Function; - locator = locator||{} - function build(key){ - var fn = errorImpl[key]; - if(!fn && isCallback){ - fn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl; - } - errorHandler[key] = fn && function(msg){ - fn('[xmldom '+key+']\t'+msg+_locator(locator)); - }||function(){}; - } - build('warning'); - build('error'); - build('fatalError'); - return errorHandler; -} - -//console.log('#\n\n\n\n\n\n\n####') +"use strict"; + + +function DOMParser(options) { + this.options = options || { locator: {} }; +} +DOMParser.prototype.parseFromString = function (source, mimeType) { + var options = this.options; + var sax = new XMLReader(); + var domBuilder = options.domBuilder || new DOMHandler(); //contentHandler and LexicalHandler + var errorHandler = options.errorHandler; + var locator = options.locator; + var defaultNSMap = options.xmlns || {}; + var entityMap = { 'lt': '<', 'gt': '>', 'amp': '&', 'quot': '"', 'apos': "'" }; + if (locator) { + domBuilder.setDocumentLocator(locator); + } + + sax.errorHandler = buildErrorHandler(errorHandler, domBuilder, locator); + sax.domBuilder = options.domBuilder || domBuilder; + if (/\/x?html?$/.test(mimeType)) { + entityMap.nbsp = '\xa0'; + entityMap.copy = '\xa9'; + defaultNSMap[''] = 'http://www.w3.org/1999/xhtml'; + } + defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace'; + if (source) { + sax.parse(source, defaultNSMap, entityMap); + } else { + sax.errorHandler.error("invalid doc source"); + } + return domBuilder.doc; +}; +function buildErrorHandler(errorImpl, domBuilder, locator) { + if (!errorImpl) { + if (domBuilder instanceof DOMHandler) { + return domBuilder; + } + errorImpl = domBuilder; + } + var errorHandler = {}; + var isCallback = errorImpl instanceof Function; + locator = locator || {}; + function build(key) { + var fn = errorImpl[key]; + if (!fn && isCallback) { + fn = errorImpl.length == 2 ? function (msg) { + errorImpl(key, msg); + } : errorImpl; + } + errorHandler[key] = fn && function (msg) { + fn('[xmldom ' + key + ']\t' + msg + _locator(locator)); + } || function () {}; + } + build('warning'); + build('error'); + build('fatalError'); + return errorHandler; +} + +//console.log('#\n\n\n\n\n\n\n####') /** * +ContentHandler+ErrorHandler * +LexicalHandler+EntityResolver2 @@ -4033,142 +4065,140 @@ function buildErrorHandler(errorImpl,domBuilder,locator){ * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2 * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html - */ -function DOMHandler() { - this.cdata = false; -} -function position(locator,node){ - node.lineNumber = locator.lineNumber; - node.columnNumber = locator.columnNumber; -} + */ +function DOMHandler() { + this.cdata = false; +} +function position(locator, node) { + node.lineNumber = locator.lineNumber; + node.columnNumber = locator.columnNumber; +} /** * @see org.xml.sax.ContentHandler#startDocument * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html - */ -DOMHandler.prototype = { - startDocument : function() { - this.doc = new DOMImplementation().createDocument(null, null, null); - if (this.locator) { - this.doc.documentURI = this.locator.systemId; - } - }, - startElement:function(namespaceURI, localName, qName, attrs) { - var doc = this.doc; - var el = doc.createElementNS(namespaceURI, qName||localName); - var len = attrs.length; - appendElement(this, el); - this.currentElement = el; - - this.locator && position(this.locator,el) - for (var i = 0 ; i < len; i++) { - var namespaceURI = attrs.getURI(i); - var value = attrs.getValue(i); - var qName = attrs.getQName(i); - var attr = doc.createAttributeNS(namespaceURI, qName); - this.locator &&position(attrs.getLocator(i),attr); - attr.value = attr.nodeValue = value; - el.setAttributeNode(attr) - } - }, - endElement:function(namespaceURI, localName, qName) { - var current = this.currentElement - var tagName = current.tagName; - this.currentElement = current.parentNode; - }, - startPrefixMapping:function(prefix, uri) { - }, - endPrefixMapping:function(prefix) { - }, - processingInstruction:function(target, data) { - var ins = this.doc.createProcessingInstruction(target, data); - this.locator && position(this.locator,ins) - appendElement(this, ins); - }, - ignorableWhitespace:function(ch, start, length) { - }, - characters:function(chars, start, length) { - chars = _toString.apply(this,arguments) - //console.log(chars) - if(chars){ - if (this.cdata) { - var charNode = this.doc.createCDATASection(chars); - } else { - var charNode = this.doc.createTextNode(chars); - } - if(this.currentElement){ - this.currentElement.appendChild(charNode); - }else if(/^\s*$/.test(chars)){ - this.doc.appendChild(charNode); - //process xml - } - this.locator && position(this.locator,charNode) - } - }, - skippedEntity:function(name) { - }, - endDocument:function() { - this.doc.normalize(); - }, - setDocumentLocator:function (locator) { - if(this.locator = locator){// && !('lineNumber' in locator)){ - locator.lineNumber = 0; - } - }, - //LexicalHandler - comment:function(chars, start, length) { - chars = _toString.apply(this,arguments) - var comm = this.doc.createComment(chars); - this.locator && position(this.locator,comm) - appendElement(this, comm); - }, - - startCDATA:function() { - //used in characters() methods - this.cdata = true; - }, - endCDATA:function() { - this.cdata = false; - }, - - startDTD:function(name, publicId, systemId) { - var impl = this.doc.implementation; - if (impl && impl.createDocumentType) { - var dt = impl.createDocumentType(name, publicId, systemId); - this.locator && position(this.locator,dt) - appendElement(this, dt); - } - }, + */ +DOMHandler.prototype = { + startDocument: function startDocument() { + this.doc = new DOMImplementation().createDocument(null, null, null); + if (this.locator) { + this.doc.documentURI = this.locator.systemId; + } + }, + startElement: function startElement(namespaceURI, localName, qName, attrs) { + var doc = this.doc; + var el = doc.createElementNS(namespaceURI, qName || localName); + var len = attrs.length; + appendElement(this, el); + this.currentElement = el; + + this.locator && position(this.locator, el); + for (var i = 0; i < len; i++) { + var namespaceURI = attrs.getURI(i); + var value = attrs.getValue(i); + var qName = attrs.getQName(i); + var attr = doc.createAttributeNS(namespaceURI, qName); + this.locator && position(attrs.getLocator(i), attr); + attr.value = attr.nodeValue = value; + el.setAttributeNode(attr); + } + }, + endElement: function endElement(namespaceURI, localName, qName) { + var current = this.currentElement; + var tagName = current.tagName; + this.currentElement = current.parentNode; + }, + startPrefixMapping: function startPrefixMapping(prefix, uri) {}, + endPrefixMapping: function endPrefixMapping(prefix) {}, + processingInstruction: function processingInstruction(target, data) { + var ins = this.doc.createProcessingInstruction(target, data); + this.locator && position(this.locator, ins); + appendElement(this, ins); + }, + ignorableWhitespace: function ignorableWhitespace(ch, start, length) {}, + characters: function characters(chars, start, length) { + chars = _toString.apply(this, arguments); + //console.log(chars) + if (chars) { + if (this.cdata) { + var charNode = this.doc.createCDATASection(chars); + } else { + var charNode = this.doc.createTextNode(chars); + } + if (this.currentElement) { + this.currentElement.appendChild(charNode); + } else if (/^\s*$/.test(chars)) { + this.doc.appendChild(charNode); + //process xml + } + this.locator && position(this.locator, charNode); + } + }, + skippedEntity: function skippedEntity(name) {}, + endDocument: function endDocument() { + this.doc.normalize(); + }, + setDocumentLocator: function setDocumentLocator(locator) { + if (this.locator = locator) { + // && !('lineNumber' in locator)){ + locator.lineNumber = 0; + } + }, + //LexicalHandler + comment: function comment(chars, start, length) { + chars = _toString.apply(this, arguments); + var comm = this.doc.createComment(chars); + this.locator && position(this.locator, comm); + appendElement(this, comm); + }, + + startCDATA: function startCDATA() { + //used in characters() methods + this.cdata = true; + }, + endCDATA: function endCDATA() { + this.cdata = false; + }, + + startDTD: function startDTD(name, publicId, systemId) { + var impl = this.doc.implementation; + if (impl && impl.createDocumentType) { + var dt = impl.createDocumentType(name, publicId, systemId); + this.locator && position(this.locator, dt); + appendElement(this, dt); + } + }, /** - * @see org.xml.sax.ErrorHandler - * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html - */ - warning:function(error) { - console.warn('[xmldom warning]\t'+error,_locator(this.locator)); - }, - error:function(error) { - console.error('[xmldom error]\t'+error,_locator(this.locator)); - }, - fatalError:function(error) { - console.error('[xmldom fatalError]\t'+error,_locator(this.locator)); - throw error; - } -} -function _locator(l){ - if(l){ - return '\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']' - } -} -function _toString(chars,start,length){ - if(typeof chars == 'string'){ - return chars.substr(start,length) - }else{//java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") - if(chars.length >= start+length || start){ - return new java.lang.String(chars,start,length)+''; - } - return chars; - } -} - + * @see org.xml.sax.ErrorHandler + * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html + */ + warning: function warning(error) { + console.warn('[xmldom warning]\t' + error, _locator(this.locator)); + }, + error: function error(_error) { + console.error('[xmldom error]\t' + _error, _locator(this.locator)); + }, + fatalError: function fatalError(error) { + console.error('[xmldom fatalError]\t' + error, _locator(this.locator)); + throw error; + } +}; +function _locator(l) { + if (l) { + return '\n@' + (l.systemId || '') + '#[line:' + l.lineNumber + ',col:' + l.columnNumber + ']'; + } +} +function _toString(chars, start, length) { + if (typeof chars == 'string') { + return chars.substr(start, length); + } else { + //java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)") + if (chars.length >= start + length || start) { + return new java.lang.String(chars, start, length) + ''; + } + return chars; + } +} + /* * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html * used method of org.xml.sax.ext.LexicalHandler: @@ -4199,680 +4229,696 @@ function _toString(chars,start,length){ * IGNORED method of org.xml.sax.DTDHandler * #notationDecl(name, publicId, systemId) {}; * #unparsedEntityDecl(name, publicId, systemId, notationName) {}; - */ -"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(key){ - DOMHandler.prototype[key] = function(){return null} -}) - -/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ -function appendElement (hander,node) { - if (!hander.currentElement) { - hander.doc.appendChild(node); - } else { - hander.currentElement.appendChild(node); - } -}//appendChild and setAttributeNS are preformance key - -//if(typeof require == 'function'){ - var XMLReader = __webpack_require__(14).XMLReader; - var DOMImplementation = exports.DOMImplementation = __webpack_require__(2).DOMImplementation; - exports.XMLSerializer = __webpack_require__(2).XMLSerializer ; - exports.DOMParser = DOMParser; -//} + */ +"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, function (key) { + DOMHandler.prototype[key] = function () { + return null; + }; +}); + +/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */ +function appendElement(hander, node) { + if (!hander.currentElement) { + hander.doc.appendChild(node); + } else { + hander.currentElement.appendChild(node); + } +} //appendChild and setAttributeNS are preformance key + +//if(typeof require == 'function'){ +var XMLReader = __webpack_require__(15).XMLReader; +var DOMImplementation = exports.DOMImplementation = __webpack_require__(2).DOMImplementation; +exports.XMLSerializer = __webpack_require__(2).XMLSerializer; +exports.DOMParser = DOMParser; +//} + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] +//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] +//[5] Name ::= NameStartChar (NameChar)* +var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/; //\u10000-\uEFFFF +var nameChar = new RegExp("[\\-\\.0-9" + nameStartChar.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"); +var tagNamePattern = new RegExp('^' + nameStartChar.source + nameChar.source + '*(?:\:' + nameStartChar.source + nameChar.source + '*)?$'); +//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/ +//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',') + +//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE +//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE +var S_TAG = 0; //tag name offerring +var S_ATTR = 1; //attr name offerring +var S_ATTR_SPACE = 2; //attr name end and space offer +var S_EQ = 3; //=space? +var S_ATTR_NOQUOT_VALUE = 4; //attr value(no quot value only) +var S_ATTR_END = 5; //attr value end and no space(quot end) +var S_TAG_SPACE = 6; //(attr value end || tag end ) && (space offer) +var S_TAG_CLOSE = 7; //closed el + +function XMLReader() {} + +XMLReader.prototype = { + parse: function parse(source, defaultNSMap, entityMap) { + var domBuilder = this.domBuilder; + domBuilder.startDocument(); + _copy(defaultNSMap, defaultNSMap = {}); + _parse(source, defaultNSMap, entityMap, domBuilder, this.errorHandler); + domBuilder.endDocument(); + } +}; +function _parse(source, defaultNSMapCopy, entityMap, domBuilder, errorHandler) { + function fixedFromCharCode(code) { + // String.prototype.fromCharCode does not supports + // > 2 bytes unicode chars directly + if (code > 0xffff) { + code -= 0x10000; + var surrogate1 = 0xd800 + (code >> 10), + surrogate2 = 0xdc00 + (code & 0x3ff); + + return String.fromCharCode(surrogate1, surrogate2); + } else { + return String.fromCharCode(code); + } + } + function entityReplacer(a) { + var k = a.slice(1, -1); + if (k in entityMap) { + return entityMap[k]; + } else if (k.charAt(0) === '#') { + return fixedFromCharCode(parseInt(k.substr(1).replace('x', '0x'))); + } else { + errorHandler.error('entity not found:' + a); + return a; + } + } + function appendText(end) { + //has some bugs + if (end > start) { + var xt = source.substring(start, end).replace(/&#?\w+;/g, entityReplacer); + locator && position(start); + domBuilder.characters(xt, 0, end - start); + start = end; + } + } + function position(p, m) { + while (p >= lineEnd && (m = linePattern.exec(source))) { + lineStart = m.index; + lineEnd = lineStart + m[0].length; + locator.lineNumber++; + //console.log('line++:',locator,startPos,endPos) + } + locator.columnNumber = p - lineStart + 1; + } + var lineStart = 0; + var lineEnd = 0; + var linePattern = /.*(?:\r\n?|\n)|.*$/g; + var locator = domBuilder.locator; + + var parseStack = [{ currentNSMap: defaultNSMapCopy }]; + var closeMap = {}; + var start = 0; + while (true) { + try { + var tagStart = source.indexOf('<', start); + if (tagStart < 0) { + if (!source.substr(start).match(/^\s*$/)) { + var doc = domBuilder.doc; + var text = doc.createTextNode(source.substr(start)); + doc.appendChild(text); + domBuilder.currentElement = text; + } + return; + } + if (tagStart > start) { + appendText(tagStart); + } + switch (source.charAt(tagStart + 1)) { + case '/': + var end = source.indexOf('>', tagStart + 3); + var tagName = source.substring(tagStart + 2, end); + var config = parseStack.pop(); + if (end < 0) { + + tagName = source.substring(tagStart + 2).replace(/[\s<].*/, ''); + //console.error('#@@@@@@'+tagName) + errorHandler.error("end tag name: " + tagName + ' is not complete:' + config.tagName); + end = tagStart + 1 + tagName.length; + } else if (tagName.match(/\s + locator && position(tagStart); + end = parseInstruction(source, tagStart, domBuilder); + break; + case '!': + // start) { + start = end; + } else { + //TODO: 这里有可能sax回退,有位置错误风险 + appendText(Math.max(tagStart, start) + 1); + } + } +} +function copyLocator(f, t) { + t.lineNumber = f.lineNumber; + t.columnNumber = f.columnNumber; + return t; +} +/** + * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack); + * @return end of the elementStartPart(end of elementEndPart for selfClosed el) + */ +function parseElementStartPart(source, start, el, currentNSMap, entityReplacer, errorHandler) { + var attrName; + var value; + var p = ++start; + var s = S_TAG; //status + while (true) { + var c = source.charAt(p); + switch (c) { + case '=': + if (s === S_ATTR) { + //attrName + attrName = source.slice(start, p); + s = S_EQ; + } else if (s === S_ATTR_SPACE) { + s = S_EQ; + } else { + //fatalError: equal must after attrName or space after attrName + throw new Error('attribute equal must after attrName'); + } + break; + case '\'': + case '"': + if (s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE + ) { + //equal + if (s === S_ATTR) { + errorHandler.warning('attribute value must after "="'); + attrName = source.slice(start, p); + } + start = p + 1; + p = source.indexOf(c, start); + if (p > 0) { + value = source.slice(start, p).replace(/&#?\w+;/g, entityReplacer); + el.add(attrName, value, start - 1); + s = S_ATTR_END; + } else { + //fatalError: no end quot match + throw new Error('attribute value no end \'' + c + '\' match'); + } + } else if (s == S_ATTR_NOQUOT_VALUE) { + value = source.slice(start, p).replace(/&#?\w+;/g, entityReplacer); + //console.log(attrName,value,start,p) + el.add(attrName, value, start); + //console.dir(el) + errorHandler.warning('attribute "' + attrName + '" missed start quot(' + c + ')!!'); + start = p + 1; + s = S_ATTR_END; + } else { + //fatalError: no equal before + throw new Error('attribute value must after "="'); + } + break; + case '/': + switch (s) { + case S_TAG: + el.setTagName(source.slice(start, p)); + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + s = S_TAG_CLOSE; + el.closed = true; + case S_ATTR_NOQUOT_VALUE: + case S_ATTR: + case S_ATTR_SPACE: + break; + //case S_EQ: + default: + throw new Error("attribute invalid close char('/')"); + } + break; + case '': + //end document + //throw new Error('unexpected end of input') + errorHandler.error('unexpected end of input'); + if (s == S_TAG) { + el.setTagName(source.slice(start, p)); + } + return p; + case '>': + switch (s) { + case S_TAG: + el.setTagName(source.slice(start, p)); + case S_ATTR_END: + case S_TAG_SPACE: + case S_TAG_CLOSE: + break; //normal + case S_ATTR_NOQUOT_VALUE: //Compatible state + case S_ATTR: + value = source.slice(start, p); + if (value.slice(-1) === '/') { + el.closed = true; + value = value.slice(0, -1); + } + case S_ATTR_SPACE: + if (s === S_ATTR_SPACE) { + value = attrName; + } + if (s == S_ATTR_NOQUOT_VALUE) { + errorHandler.warning('attribute "' + value + '" missed quot(")!!'); + el.add(attrName, value.replace(/&#?\w+;/g, entityReplacer), start); + } else { + if (currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)) { + errorHandler.warning('attribute "' + value + '" missed value!! "' + value + '" instead!!'); + } + el.add(value, value, start); + } + break; + case S_EQ: + throw new Error('attribute value missed!!'); + } + // console.log(tagName,tagNamePattern,tagNamePattern.test(tagName)) + return p; + /*xml space '\x20' | #x9 | #xD | #xA; */ + case "\x80": + c = ' '; + default: + if (c <= ' ') { + //space + switch (s) { + case S_TAG: + el.setTagName(source.slice(start, p)); //tagName + s = S_TAG_SPACE; + break; + case S_ATTR: + attrName = source.slice(start, p); + s = S_ATTR_SPACE; + break; + case S_ATTR_NOQUOT_VALUE: + var value = source.slice(start, p).replace(/&#?\w+;/g, entityReplacer); + errorHandler.warning('attribute "' + value + '" missed quot(")!!'); + el.add(attrName, value, start); + case S_ATTR_END: + s = S_TAG_SPACE; + break; + //case S_TAG_SPACE: + //case S_EQ: + //case S_ATTR_SPACE: + // void();break; + //case S_TAG_CLOSE: + //ignore warning + } + } else { + //not space + //S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE + //S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE + switch (s) { + //case S_TAG:void();break; + //case S_ATTR:void();break; + //case S_ATTR_NOQUOT_VALUE:void();break; + case S_ATTR_SPACE: + var tagName = el.tagName; + if (currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)) { + errorHandler.warning('attribute "' + attrName + '" missed value!! "' + attrName + '" instead2!!'); + } + el.add(attrName, attrName, start); + start = p; + s = S_ATTR; + break; + case S_ATTR_END: + errorHandler.warning('attribute space is required"' + attrName + '"!!'); + case S_TAG_SPACE: + s = S_ATTR; + start = p; + break; + case S_EQ: + s = S_ATTR_NOQUOT_VALUE; + start = p; + break; + case S_TAG_CLOSE: + throw new Error("elements closed character '/' and '>' must be connected to"); + } + } + } //end outer switch + //console.log('p++',p) + p++; + } +} +/** + * @return true if has new namespace define + */ +function appendElement(el, domBuilder, currentNSMap) { + var tagName = el.tagName; + var localNSMap = null; + //var currentNSMap = parseStack[parseStack.length-1].currentNSMap; + var i = el.length; + while (i--) { + var a = el[i]; + var qName = a.qName; + var value = a.value; + var nsp = qName.indexOf(':'); + if (nsp > 0) { + var prefix = a.prefix = qName.slice(0, nsp); + var localName = qName.slice(nsp + 1); + var nsPrefix = prefix === 'xmlns' && localName; + } else { + localName = qName; + prefix = null; + nsPrefix = qName === 'xmlns' && ''; + } + //can not set prefix,because prefix !== '' + a.localName = localName; + //prefix == null for no ns prefix attribute + if (nsPrefix !== false) { + //hack!! + if (localNSMap == null) { + localNSMap = {}; + //console.log(currentNSMap,0) + _copy(currentNSMap, currentNSMap = {}); + //console.log(currentNSMap,1) + } + currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value; + a.uri = 'http://www.w3.org/2000/xmlns/'; + domBuilder.startPrefixMapping(nsPrefix, value); + } + } + var i = el.length; + while (i--) { + a = el[i]; + var prefix = a.prefix; + if (prefix) { + //no prefix attribute has no namespace + if (prefix === 'xml') { + a.uri = 'http://www.w3.org/XML/1998/namespace'; + }if (prefix !== 'xmlns') { + a.uri = currentNSMap[prefix || '']; + + //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)} + } + } + } + var nsp = tagName.indexOf(':'); + if (nsp > 0) { + prefix = el.prefix = tagName.slice(0, nsp); + localName = el.localName = tagName.slice(nsp + 1); + } else { + prefix = null; //important!! + localName = el.localName = tagName; + } + //no prefix element has default namespace + var ns = el.uri = currentNSMap[prefix || '']; + domBuilder.startElement(ns, localName, tagName, el); + //endPrefixMapping and startPrefixMapping have not any help for dom builder + //localNSMap = null + if (el.closed) { + domBuilder.endElement(ns, localName, tagName); + if (localNSMap) { + for (prefix in localNSMap) { + domBuilder.endPrefixMapping(prefix); + } + } + } else { + el.currentNSMap = currentNSMap; + el.localNSMap = localNSMap; + //parseStack.push(el); + return true; + } +} +function parseHtmlSpecialContent(source, elStartEnd, tagName, entityReplacer, domBuilder) { + if (/^(?:script|textarea)$/i.test(tagName)) { + var elEndStart = source.indexOf('', elStartEnd); + var text = source.substring(elStartEnd + 1, elEndStart); + if (/[&<]/.test(text)) { + if (/^script$/i.test(tagName)) { + //if(!/\]\]>/.test(text)){ + //lexHandler.startCDATA(); + domBuilder.characters(text, 0, text.length); + //lexHandler.endCDATA(); + return elEndStart; + //} + } //}else{//text area + text = text.replace(/&#?\w+;/g, entityReplacer); + domBuilder.characters(text, 0, text.length); + return elEndStart; + //} + } + } + return elStartEnd + 1; +} +function fixSelfClosed(source, elStartEnd, tagName, closeMap) { + //if(tagName in closeMap){ + var pos = closeMap[tagName]; + if (pos == null) { + //console.log(tagName) + pos = source.lastIndexOf(''); + if (pos < elStartEnd) { + //忘记闭合 + pos = source.lastIndexOf('', start + 4); + //append comment source.substring(4,end)//',start+4); - //append comment source.substring(4,end)//