xliff
Version:
xliff2js and js2xliff converter xliff utils
1,217 lines (1,188 loc) • 315 kB
JavaScript
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.xliff = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function setSegment(category, srcObj, trgObj, ntObj, key) {
var srcValue = srcObj[key];
var trgValue = trgObj[key];
if (_typeof(srcValue) === 'object' && _typeof(trgValue) === 'object') {
category[key] = {
groupUnits: {}
};
var grpObj = category[key].groupUnits;
Object.keys(srcValue).forEach(function (grpKey) {
setSegment(grpObj, srcObj[key], trgObj[key], ntObj[key], grpKey);
if (ntObj && ntObj[key] && ntObj[key][grpKey]) {
category[key].note = ntObj[key][grpKey];
}
});
} else {
category[key] = {
source: srcValue,
target: trgValue
};
if (ntObj && ntObj[key]) {
category[key].note = ntObj[key];
}
}
}
var createjsClb = function createjsClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, cb) {
var js = {
sourceLanguage: srcLng,
targetLanguage: trgLng,
resources: {}
};
if (!cb && (!ns || typeof ns !== 'string')) {
cb = ns;
ns = null;
}
trgKeys = trgKeys || {};
var keys = Object.keys(srcKeys);
Object.keys(trgKeys).forEach(function (k) {
if (keys.indexOf(k) < 0) keys.push(k);
});
if (ns && typeof ns === 'string') {
js.resources[ns] = {};
var nsObj = js.resources[ns];
keys.forEach(function (srcKey) {
setSegment(nsObj, srcKeys, trgKeys, ntKeys, srcKey);
});
if (cb) cb(null, js);
return js;
}
keys.forEach(function (ns) {
js.resources[ns] = {};
Object.keys(srcKeys[ns]).forEach(function (srcKey) {
setSegment(js.resources[ns], srcKeys[ns], trgKeys[ns], ntKeys && ntKeys[ns], srcKey);
});
});
if (cb) cb(null, js);
return js;
};
var createjs = function createjs(srcLng, trgLng, srcKeys, trgKeys, ns, cb, ntKeys) {
if (!cb && ns === undefined) {
return new Promise(function (resolve, reject) {
return createjsClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof ns !== 'function') {
return new Promise(function (resolve, reject) {
return createjsClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
return createjsClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, cb);
};
createjs.createjsClb = createjsClb;
var _default = exports.default = createjs;
module.exports = exports.default;
},{}],2:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createxliff;
var _createjs = _interopRequireDefault(require("./createjs.js"));
var _js2xliff = _interopRequireDefault(require("./js2xliff.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var createjs = _createjs.default.createjsClb;
var js2xliff = _js2xliff.default.js2xliffClb;
var createxliffClb = function createxliffClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, cb) {
if (!ns || typeof ns !== 'string') {
cb = ns;
ns = null;
}
if (!cb) {
return js2xliff(createjs(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns));
}
createjs(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, res) {
if (err) return cb(err);
js2xliff(res, cb);
});
};
function createxliff(srcLng, trgLng, srcKeys, trgKeys, ns, cb, ntKeys) {
if (!cb && ns === undefined) {
return new Promise(function (resolve, reject) {
return createxliffClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof ns !== 'function') {
return new Promise(function (resolve, reject) {
return createxliffClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
return createxliffClb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, cb);
}
module.exports = exports.default;
},{"./createjs.js":1,"./js2xliff.js":10}],3:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createxliff12;
var _createjs = _interopRequireDefault(require("./createjs.js"));
var _jsToXliff = _interopRequireDefault(require("./jsToXliff12.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var createjs = _createjs.default.createjsClb;
var jsToXliff12 = _jsToXliff.default.jsToXliff12Clb;
var createxliff12Clb = function createxliff12Clb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, cb) {
if (!ns || typeof ns !== 'string') {
cb = ns;
ns = null;
}
if (!cb) {
return jsToXliff12(createjs(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns));
}
createjs(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, res) {
if (err) return cb(err);
jsToXliff12(res, cb);
});
};
function createxliff12(srcLng, trgLng, srcKeys, trgKeys, ns, cb, ntKeys) {
if (!cb && ns === undefined) {
return new Promise(function (resolve, reject) {
return createxliff12Clb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof ns !== 'function') {
return new Promise(function (resolve, reject) {
return createxliff12Clb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
return createxliff12Clb(srcLng, trgLng, srcKeys, trgKeys, ntKeys, ns, cb);
}
module.exports = exports.default;
},{"./createjs.js":1,"./jsToXliff12.js":11}],4:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "ElementTypes", {
enumerable: true,
get: function get() {
return _ElementTypes.default;
}
});
Object.defineProperty(exports, "createjs", {
enumerable: true,
get: function get() {
return _createjs.default;
}
});
Object.defineProperty(exports, "createxliff", {
enumerable: true,
get: function get() {
return _createxliff.default;
}
});
Object.defineProperty(exports, "createxliff12", {
enumerable: true,
get: function get() {
return _createxliff2.default;
}
});
exports.default = void 0;
Object.defineProperty(exports, "js2xliff", {
enumerable: true,
get: function get() {
return _js2xliff.default;
}
});
Object.defineProperty(exports, "jsToXliff12", {
enumerable: true,
get: function get() {
return _jsToXliff.default;
}
});
Object.defineProperty(exports, "makeInlineElement", {
enumerable: true,
get: function get() {
return _makeInlineElement.default;
}
});
Object.defineProperty(exports, "sourceOfjs", {
enumerable: true,
get: function get() {
return _sourceOfjs.default;
}
});
Object.defineProperty(exports, "targetOfjs", {
enumerable: true,
get: function get() {
return _targetOfjs.default;
}
});
Object.defineProperty(exports, "xliff12ToJs", {
enumerable: true,
get: function get() {
return _xliff12ToJs.default;
}
});
Object.defineProperty(exports, "xliff2js", {
enumerable: true,
get: function get() {
return _xliff2js.default;
}
});
var _xliff2js = _interopRequireDefault(require("./xliff2js.js"));
var _xliff12ToJs = _interopRequireDefault(require("./xliff12ToJs.js"));
var _js2xliff = _interopRequireDefault(require("./js2xliff.js"));
var _jsToXliff = _interopRequireDefault(require("./jsToXliff12.js"));
var _targetOfjs = _interopRequireDefault(require("./targetOfjs.js"));
var _sourceOfjs = _interopRequireDefault(require("./sourceOfjs.js"));
var _createjs = _interopRequireDefault(require("./createjs.js"));
var _createxliff = _interopRequireDefault(require("./createxliff.js"));
var _createxliff2 = _interopRequireDefault(require("./createxliff12.js"));
var _makeInlineElement = _interopRequireDefault(require("./inline-elements/makeInlineElement.js"));
var _ElementTypes = _interopRequireDefault(require("./inline-elements/ElementTypes.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _default = exports.default = {
xliff2js: _xliff2js.default,
xliff12ToJs: _xliff12ToJs.default,
js2xliff: _js2xliff.default,
jsToXliff12: _jsToXliff.default,
targetOfjs: _targetOfjs.default,
sourceOfjs: _sourceOfjs.default,
createjs: _createjs.default,
createxliff: _createxliff.default,
createxliff12: _createxliff2.default,
makeInlineElement: _makeInlineElement.default,
ElementTypes: _ElementTypes.default
};
},{"./createjs.js":1,"./createxliff.js":2,"./createxliff12.js":3,"./inline-elements/ElementTypes.js":5,"./inline-elements/makeInlineElement.js":8,"./js2xliff.js":10,"./jsToXliff12.js":11,"./sourceOfjs.js":13,"./targetOfjs.js":14,"./xliff12ToJs.js":16,"./xliff2js.js":17}],5:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = exports.default = {
Standalone: 'Standalone',
GenericSpan: 'GenericSpan',
GenericSpanStart: 'GenericSpanStart',
GenericSpanEnd: 'GenericSpanEnd',
Span: 'Span',
SpanStart: 'SpanStart',
SpanEnd: 'SpanEnd',
Marker: 'Marker'
};
module.exports = exports.default;
},{}],6:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ElementTypes = _interopRequireDefault(require("./ElementTypes.js"));
var _makeInlineElement = _interopRequireDefault(require("./makeInlineElement.js"));
var _elementTypeToTagMap, _factories;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var _default = exports.default = {
elementTypeToTagMap: (_elementTypeToTagMap = {}, _defineProperty(_elementTypeToTagMap, _ElementTypes.default.Standalone, 'x'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.GenericSpan, 'g'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.GenericSpanStart, 'bx'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.GenericSpanEnd, 'ex'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.Span, 'ph'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.SpanStart, 'bpt'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.SpanEnd, 'ept'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.Marker, 'mrk'), _elementTypeToTagMap),
tagToElementTypeMap: {
x: _ElementTypes.default.Standalone,
g: _ElementTypes.default.GenericSpan,
bx: _ElementTypes.default.GenericSpanStart,
ex: _ElementTypes.default.GenericSpanEnd,
ph: _ElementTypes.default.Span,
bpt: _ElementTypes.default.SpanStart,
ept: _ElementTypes.default.SpanEnd,
mrk: _ElementTypes.default.Marker
},
factories: (_factories = {}, _defineProperty(_factories, _ElementTypes.default.Standalone, function (attributes) {
return (0, _makeInlineElement.default)(_ElementTypes.default.Standalone, attributes);
}), _defineProperty(_factories, _ElementTypes.default.GenericSpan, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpan, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.GenericSpanStart, function (attributes) {
return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanStart, attributes);
}), _defineProperty(_factories, _ElementTypes.default.GenericSpanEnd, function (attributes) {
return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanEnd, attributes);
}), _defineProperty(_factories, _ElementTypes.default.Span, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.Span, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.SpanStart, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.SpanStart, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.SpanEnd, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.SpanEnd, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.Marker, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.Marker, attributes, contents);
}), _factories)
};
module.exports = exports.default;
},{"./ElementTypes.js":5,"./makeInlineElement.js":8}],7:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _ElementTypes = _interopRequireDefault(require("./ElementTypes.js"));
var _makeInlineElement = _interopRequireDefault(require("./makeInlineElement.js"));
var _elementTypeToTagMap, _factories;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var _default = exports.default = {
elementTypeToTagMap: (_elementTypeToTagMap = {}, _defineProperty(_elementTypeToTagMap, _ElementTypes.default.Standalone, 'ph'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.GenericSpan, 'pc'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.GenericSpanStart, 'sc'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.GenericSpanEnd, 'ec'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.Span, 'pc'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.SpanStart, 'sc'), _defineProperty(_elementTypeToTagMap, _ElementTypes.default.SpanEnd, 'ec'), _elementTypeToTagMap),
tagToElementTypeMap: {
ph: _ElementTypes.default.Standalone,
pc: _ElementTypes.default.Span,
sc: _ElementTypes.default.SpanStart,
ec: _ElementTypes.default.SpanEnd
},
factories: (_factories = {}, _defineProperty(_factories, _ElementTypes.default.Standalone, function (attributes) {
return (0, _makeInlineElement.default)(_ElementTypes.default.Standalone, attributes);
}), _defineProperty(_factories, _ElementTypes.default.GenericSpan, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpan, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.GenericSpanStart, function (attributes) {
return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanStart, attributes);
}), _defineProperty(_factories, _ElementTypes.default.GenericSpanEnd, function (attributes) {
return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanEnd, attributes);
}), _defineProperty(_factories, _ElementTypes.default.Span, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.Span, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.SpanStart, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.SpanStart, attributes, contents);
}), _defineProperty(_factories, _ElementTypes.default.SpanEnd, function (attributes, contents) {
return (0, _makeInlineElement.default)(_ElementTypes.default.SpanEnd, attributes, contents);
}), _factories)
};
module.exports = exports.default;
},{"./ElementTypes.js":5,"./makeInlineElement.js":8}],8:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = makeInlineElement;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function makeInlineElement(type, attributes, contents) {
var contentsObj = contents !== undefined ? {
contents: contents
} : {};
var dataObj = Object.assign({}, attributes, contentsObj);
return _defineProperty({}, type, dataObj);
}
module.exports = exports.default;
},{}],9:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.elementTypeToTag = elementTypeToTag;
exports.tagToElementType = tagToElementType;
function elementTypeToTag(type, types) {
return types.elementTypeToTagMap[type];
}
function tagToElementType(tagName, types) {
return types.tagToElementTypeMap[tagName];
}
},{}],10:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _xmlJs = _interopRequireDefault(require("xml-js"));
var _ElementTypes = _interopRequireDefault(require("./inline-elements/ElementTypes2.js"));
var _objectToXml = require("./xml-js/objectToXml.js");
var _escape = _interopRequireDefault(require("./util/escape.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
var js2xliffClb = function js2xliffClb(obj, opt, cb) {
if (!cb && typeof opt === 'function') {
cb = opt;
opt = {
indent: ' '
};
}
opt = opt || {
indent: ' '
};
var options = {
spaces: opt.indent !== undefined ? opt.indent : ' '
};
var rootAttributes = {
xmlns: 'urn:oasis:names:tc:xliff:document:2.0',
version: '2.0',
srcLang: obj.sourceLanguage,
trgLang: obj.targetLanguage
};
var hasSizeRestriction = !!Object.keys(obj.resources).find(function (nsName) {
return Object.keys(obj.resources[nsName]).find(function (k) {
return obj.resources[nsName][k].additionalAttributes && (obj.resources[nsName][k].additionalAttributes.sizeRestriction !== undefined || obj.resources[nsName][k].additionalAttributes['slr:sizeRestriction'] !== undefined);
});
});
if (hasSizeRestriction) rootAttributes['xmlns:slr'] = 'urn:oasis:names:tc:xliff:sizerestriction:2.0';
var root = (0, _objectToXml.makeElement)('xliff', rootAttributes, true);
Object.keys(obj.resources).forEach(function (nsName) {
var fileChildren = createUnitTags(obj.resources[nsName]);
var f = (0, _objectToXml.makeElement)('file', {
id: nsName
}, fileChildren);
root.elements.push(f);
});
var xmlJs = {
elements: [root]
};
var xml = _xmlJs.default.js2xml(xmlJs, options);
if (cb) cb(null, xml);
return xml;
};
function createUnitTags(unitElements) {
var hasSizeRestriction = !!Object.keys(unitElements).find(function (k) {
return unitElements[k].additionalAttributes && (unitElements[k].additionalAttributes.sizeRestriction !== undefined || unitElements[k].additionalAttributes['slr:sizeRestriction'] !== undefined);
});
var preElements = [];
if (hasSizeRestriction) {
preElements.push({
type: 'element',
name: 'slr:profiles',
attributes: {
generalProfile: 'xliff:codepoints',
storageProfile: 'xliff:utf8'
},
elements: [{
type: 'element',
name: 'slr:normalization',
attributes: {
general: 'nfc',
storage: 'nfc'
}
}]
});
}
return preElements.concat(Object.keys(unitElements).map(function (key) {
if (unitElements[key].groupUnits) {
return createGroupUnitTag(key, unitElements[key]);
} else {
return createUnitTag(key, unitElements[key]);
}
}));
}
function createGroupUnitTag(id, group) {
var additionalAttributes = group.additionalAttributes != null ? group.additionalAttributes : {};
var groupUnits = createUnitTags(group.groupUnits);
return (0, _objectToXml.makeElement)('group', Object.assign({
id: (0, _escape.default)(id)
}, additionalAttributes), groupUnits);
}
function createUnitTag(id, unit) {
var segment = (0, _objectToXml.makeElement)('segment', null, true);
if (!unit.source && unit.target) unit.source = '';
if (unit.source !== undefined) segment.elements.push((0, _objectToXml.makeElement)('source', null, (0, _objectToXml.makeValue)(unit.source, _ElementTypes.default)));
if (unit.target !== undefined) segment.elements.push((0, _objectToXml.makeElement)('target', null, (0, _objectToXml.makeValue)(unit.target, _ElementTypes.default)));
var subEle = [segment];
if ('note' in unit) {
var noteElms = [];
createNoteObjects(unit.note).forEach(function (noteObj) {
noteElms.push((0, _objectToXml.makeElement)('note', null, [noteObj]));
});
subEle.unshift((0, _objectToXml.makeElement)('notes', null, noteElms));
}
var additionalAttributes = unit.additionalAttributes != null ? _objectSpread({}, unit.additionalAttributes) : {};
if (additionalAttributes.sizeRestriction) {
additionalAttributes['slr:sizeRestriction'] = additionalAttributes.sizeRestriction + '';
delete additionalAttributes.sizeRestriction;
}
return (0, _objectToXml.makeElement)('unit', Object.assign({
id: (0, _escape.default)(id)
}, additionalAttributes), subEle);
}
function createNoteObjects(note) {
var arrNote = [];
var baseNote = (0, _objectToXml.makeText)(note);
if (Array.isArray(baseNote.text)) {
baseNote.text.forEach(function (text) {
arrNote.push({
type: baseNote.type,
text: text
});
});
} else {
arrNote.push(baseNote);
}
return arrNote;
}
var js2xliff = function js2xliff(obj, opt, cb) {
if (!cb && opt === undefined) {
return new Promise(function (resolve, reject) {
return js2xliffClb(obj, opt, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof opt !== 'function') {
return new Promise(function (resolve, reject) {
return js2xliffClb(obj, opt, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
return js2xliffClb(obj, opt, cb);
};
js2xliff.js2xliffClb = js2xliffClb;
var _default = exports.default = js2xliff;
module.exports = exports.default;
},{"./inline-elements/ElementTypes2.js":7,"./util/escape.js":15,"./xml-js/objectToXml.js":18,"xml-js":47}],11:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _xmlJs = _interopRequireDefault(require("xml-js"));
var _ElementTypes = _interopRequireDefault(require("./inline-elements/ElementTypes12.js"));
var _objectToXml = require("./xml-js/objectToXml.js");
var _escape = _interopRequireDefault(require("./util/escape.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var jsToXliff12Clb = function jsToXliff12Clb(obj, opt, cb) {
if (!cb && typeof opt === 'function') {
cb = opt;
opt = {
indent: ' '
};
}
opt = opt || {
indent: ' '
};
var options = {
spaces: opt.indent !== undefined ? opt.indent : ' ',
xmlLangAttr: !!opt.xmlLangAttr
};
var rootAttributes = {
'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',
'xsi:schemaLocation': 'urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd',
xmlns: 'urn:oasis:names:tc:xliff:document:1.2',
version: '1.2'
};
var root = (0, _objectToXml.makeElement)('xliff', rootAttributes, true);
Object.keys(obj.resources).forEach(function (nsName) {
var bodyChildren = createUnitTags(obj.resources[nsName], obj, options);
var b = (0, _objectToXml.makeElement)('body', null, bodyChildren);
var fileAttributes = {
original: nsName,
datatype: 'plaintext',
'source-language': obj.sourceLanguage
};
if (obj.targetLanguage != null) {
fileAttributes['target-language'] = obj.targetLanguage;
}
var f = (0, _objectToXml.makeElement)('file', fileAttributes, [b]);
root.elements.push(f);
});
var xmlJs = {
elements: [root]
};
var xml = _xmlJs.default.js2xml(xmlJs, options);
if (cb) cb(null, xml);
return xml;
};
function createUnitTags(unitElements, obj, options) {
return Object.keys(unitElements).map(function (key) {
if (unitElements[key].groupUnits) {
return createGroupUnitTag(key, unitElements[key], obj, options);
} else {
return createTransUnitTag(key, unitElements[key], obj, options);
}
});
}
function createGroupUnitTag(key, resource, obj, options) {
var additionalAttributes = resource.additionalAttributes != null ? resource.additionalAttributes : {};
var groupUnits = createUnitTags(resource.groupUnits, obj, options);
return (0, _objectToXml.makeElement)('group', Object.assign({
id: (0, _escape.default)(key)
}, additionalAttributes), groupUnits);
}
function createTransUnitTag(key, resource, obj, options) {
var additionalAttributes = resource.additionalAttributes != null ? resource.additionalAttributes : {};
var u = (0, _objectToXml.makeElement)('trans-unit', Object.assign({
id: (0, _escape.default)(key)
}, additionalAttributes), true);
var sourceAttributes = null;
if (options.xmlLangAttr) {
sourceAttributes = {
'xml:lang': obj.sourceLanguage
};
}
if (!resource.source && resource.target) resource.source = '';
if (resource.source != null) u.elements.push((0, _objectToXml.makeElement)('source', sourceAttributes, (0, _objectToXml.makeValue)(resource.source, _ElementTypes.default)));
if (resource.target != null) {
var targetAttributes = null;
if (options.xmlLangAttr && obj.targetLanguage) {
targetAttributes = {
'xml:lang': obj.targetLanguage
};
}
u.elements.push((0, _objectToXml.makeElement)('target', targetAttributes, (0, _objectToXml.makeValue)(resource.target, _ElementTypes.default)));
}
if ('note' in resource) {
createNoteObjects(resource.note).forEach(function (noteObj) {
u.elements.push((0, _objectToXml.makeElement)('note', null, [noteObj]));
});
}
return u;
}
function createNoteObjects(note) {
var arrNote = [];
var baseNote = (0, _objectToXml.makeText)(note);
if (Array.isArray(baseNote.text)) {
baseNote.text.forEach(function (text) {
arrNote.push({
type: baseNote.type,
text: text
});
});
} else {
arrNote.push(baseNote);
}
return arrNote;
}
var jsToXliff12 = function jsToXliff12(obj, opt, cb) {
if (!cb && opt === undefined) {
return new Promise(function (resolve, reject) {
return jsToXliff12Clb(obj, opt, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof opt !== 'function') {
return new Promise(function (resolve, reject) {
return jsToXliff12Clb(obj, opt, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
return jsToXliff12Clb(obj, opt, cb);
};
jsToXliff12.jsToXliff12Clb = jsToXliff12Clb;
var _default = exports.default = jsToXliff12;
module.exports = exports.default;
},{"./inline-elements/ElementTypes12.js":6,"./util/escape.js":15,"./xml-js/objectToXml.js":18,"xml-js":47}],12:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ofjs;
function ofjs(js, what, cb) {
var res = {};
var nsKeys = Object.keys(js.resources || {});
if (nsKeys.length === 1) {
var ns = js.resources[nsKeys[0]];
var keys = Object.keys(ns);
keys.forEach(function (key) {
var value = getSegment(ns[key], what);
if (value === undefined) return;
res[key] = value;
});
if (cb) return cb(null, res);
return res;
}
nsKeys.forEach(function (nsKey) {
res[nsKey] = {};
var ns = js.resources[nsKey];
var keys = Object.keys(ns);
keys.forEach(function (key) {
var value = getSegment(ns[key], what);
if (value !== undefined) res[nsKey][key] = value;
});
});
if (cb) return cb(null, res);
return res;
}
function getSegment(category, what) {
var value = category[what];
if (value === undefined && category.groupUnits) {
value = {};
var groupKeys = Object.keys(category.groupUnits);
groupKeys.forEach(function (groupKey) {
var groupValue = getSegment(category.groupUnits[groupKey], what);
if (groupValue !== undefined) value[groupKey] = groupValue;
});
}
return value;
}
module.exports = exports.default;
},{}],13:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = sourceOfjs;
var _ofjs = _interopRequireDefault(require("./ofjs.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function sourceOfjs(js, cb) {
return (0, _ofjs.default)(js, 'source', cb);
}
module.exports = exports.default;
},{"./ofjs.js":12}],14:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = targetOfjs;
var _ofjs = _interopRequireDefault(require("./ofjs.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function targetOfjs(js, cb) {
return (0, _ofjs.default)(js, 'target', cb);
}
module.exports = exports.default;
},{"./ofjs.js":12}],15:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var map = {
'&': '&',
'"': '"',
'\'': ''',
'<': '<',
'>': '>'
};
function _default(str) {
Object.keys(map).forEach(function (char) {
str = str.replace(new RegExp(char, 'g'), map[char]);
});
return str;
}
;
module.exports = exports.default;
},{}],16:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = xliff12ToJs;
var _xmlJs = _interopRequireDefault(require("xml-js"));
var _ElementTypes = _interopRequireDefault(require("./inline-elements/ElementTypes12.js"));
var _xmlToObject = require("./xml-js/xmlToObject.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var xliff12ToJsClb = function xliff12ToJsClb(str, options, cb) {
if (typeof options === 'function') {
cb = options;
options = {};
}
options = options || {
captureSpacesBetweenElements: false
};
if (typeof str !== 'string') {
var err = new Error('The first parameter was not a string');
if (cb) return cb(err);
return err;
}
var result = {};
var xmlObj;
try {
xmlObj = _xmlJs.default.xml2js(str, options);
} catch (err) {
if (cb) return cb(err);
return err;
}
var xliffRoot = xmlObj.elements.find(function (ele) {
return ele.name === 'xliff';
});
if (xliffRoot.elements && xliffRoot.elements.length) {
var elements = xliffRoot.elements.filter(function (e) {
return e.type === 'element';
});
var srcLang = elements[0].attributes['source-language'] || xliffRoot.attributes.srcLang;
var trgLang = elements[0].attributes['target-language'] || xliffRoot.attributes.trgLang;
result.sourceLanguage = srcLang;
result.targetLanguage = trgLang;
if (!result.targetLanguage) delete result.targetLanguage;
result.resources = elements.reduce(function (resources, file) {
var namespace = options.namespace || file.attributes.original;
var body = file.elements.filter(function (e) {
return e.type === 'element';
}).find(function (e) {
return e.name === 'body';
});
body.elements = body.elements || [];
var bodyChildren = body.elements.filter(function (child) {
return child.type !== 'comment' && child.type === 'element';
});
resources[namespace] = createUnits(bodyChildren);
return resources;
}, {});
} else {
result.resources = {};
}
if (cb) return cb(null, result);
return result;
};
function createUnits(childElements) {
return childElements.reduce(function (parent, child) {
var key = child.attributes.id;
if (!child.elements) return parent;
var children = child.elements.filter(function (e) {
return e.name === 'trans-unit' || e.name === 'group';
});
if (children.length) {
parent[key] = createGroupTag(child, children);
} else {
parent[key] = createTransUnitTag(child);
}
return parent;
}, {});
}
function createTransUnitTag(transUnit) {
var jsUnit = transUnit.elements.reduce(function (unit, element) {
var value = (0, _xmlToObject.extractValue)(element.elements, _ElementTypes.default);
switch (element.name) {
case 'source':
case 'target':
unit[element.name] = value;
break;
case 'note':
if (unit[element.name]) {
if (!Array.isArray(unit[element.name])) {
unit[element.name] = [unit[element.name]];
}
unit[element.name].push(value);
} else {
unit[element.name] = value;
}
break;
}
return unit;
}, {});
return addAdditionalAttributes(jsUnit, transUnit.attributes);
}
function createGroupTag(groupUnit, children) {
var jsGroupUnit = {
groupUnits: createUnits(children)
};
return addAdditionalAttributes(jsGroupUnit, groupUnit.attributes);
}
function addAdditionalAttributes(jsUnit, attributes) {
var additionalAttributes = attributes;
delete additionalAttributes.id;
if (Object.keys(additionalAttributes).length) {
Object.assign(jsUnit, {
additionalAttributes: additionalAttributes
});
}
return jsUnit;
}
function xliff12ToJs(str, options, cb) {
if (!cb && options === undefined) {
return new Promise(function (resolve, reject) {
return xliff12ToJsClb(str, options, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof options !== 'function') {
return new Promise(function (resolve, reject) {
return xliff12ToJsClb(str, options, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
xliff12ToJsClb(str, options, cb);
}
module.exports = exports.default;
},{"./inline-elements/ElementTypes12.js":6,"./xml-js/xmlToObject.js":19,"xml-js":47}],17:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = xliffToJs;
var _xmlJs = _interopRequireDefault(require("xml-js"));
var _ElementTypes = _interopRequireDefault(require("./inline-elements/ElementTypes2.js"));
var _xmlToObject = require("./xml-js/xmlToObject.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var xliffToJsClb = function xliffToJsClb(str, options, cb) {
if (typeof options === 'function') {
cb = options;
options = {};
}
options = options || {};
if (typeof str !== 'string') {
var err = new Error('The first parameter was not a string');
if (cb) return cb(err);
return err;
}
var result = {};
var xmlObj;
try {
xmlObj = _xmlJs.default.xml2js(str, {});
} catch (err) {
if (cb) return cb(err);
return err;
}
var xliffRoot = xmlObj.elements.find(function (ele) {
return ele.name === 'xliff';
});
if (xliffRoot.attributes) {
var srcLang = xliffRoot.attributes.srcLang;
var trgLang = xliffRoot.attributes.trgLang;
result.sourceLanguage = srcLang;
result.targetLanguage = trgLang;
if (!result.targetLanguage) delete result.targetLanguage;
xliffRoot.elements = xliffRoot.elements.filter(function (child) {
return child.type !== 'comment';
});
result.resources = xliffRoot.elements.reduce(function (resources, file) {
var namespace = options.namespace || file.attributes.id;
var initValues = {};
if (!result.targetLanguage) delete initValues.target;
file.elements = file.elements || [];
file.elements = file.elements.filter(function (child) {
return child.type !== 'comment';
});
resources[namespace] = createUnits(file, initValues);
return resources;
}, {});
}
if (cb) return cb(null, result);
return result;
};
function createUnits(parent, initValues) {
if (!parent.elements) return {};
return parent.elements.reduce(function (file, unit) {
var key = unit.attributes.id;
var additionalAttributes = unit.attributes;
delete additionalAttributes.id;
if (additionalAttributes['slr:sizeRestriction'] !== undefined) {
additionalAttributes.sizeRestriction = additionalAttributes['slr:sizeRestriction'];
if (typeof additionalAttributes.sizeRestriction === 'string') additionalAttributes.sizeRestriction = parseInt(additionalAttributes.sizeRestriction);
delete additionalAttributes['slr:sizeRestriction'];
}
switch (unit.name) {
case 'unit':
file[key] = createUnit(unit, initValues);
if (Object.keys(additionalAttributes).length) {
Object.assign(file[key], {
additionalAttributes: additionalAttributes
});
}
return file;
case 'group':
file[key] = {
groupUnits: createUnits(unit, initValues)
};
if (Object.keys(additionalAttributes).length) {
Object.assign(file[key], {
additionalAttributes: additionalAttributes
});
}
return file;
default:
return file;
}
}, {});
}
function createUnit(unit, initValues) {
if (!unit.elements) return undefined;
return unit.elements.reduce(function (unit, segment) {
if (['segment', 'notes'].indexOf(segment.name) < 0) return unit;
segment.elements.forEach(function (element) {
var value = (0, _xmlToObject.extractValue)(element.elements, _ElementTypes.default);
switch (element.name) {
case 'source':
case 'target':
unit[element.name] = value;
break;
case 'note':
if (unit[element.name]) {
if (!Array.isArray(unit[element.name])) {
unit[element.name] = [unit[element.name]];
}
unit[element.name].push(value);
} else {
unit[element.name] = value;
}
break;
}
});
return unit;
}, JSON.parse(JSON.stringify(initValues)));
}
function xliffToJs(str, options, cb) {
if (!cb && options === undefined) {
return new Promise(function (resolve, reject) {
return xliffToJsClb(str, options, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
if (!cb && typeof options !== 'function') {
return new Promise(function (resolve, reject) {
return xliffToJsClb(str, options, function (err, ret) {
return err ? reject(err) : resolve(ret);
});
});
}
xliffToJsClb(str, options, cb);
}
module.exports = exports.default;
},{"./inline-elements/ElementTypes2.js":7,"./xml-js/xmlToObject.js":19,"xml-js":47}],18:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.makeElement = makeElement;
exports.makeText = makeText;
exports.makeValue = makeValue;
var _typeToTagMaps = require("../inline-elements/typeToTagMaps.js");
function makeElement(name, attributes, elements) {
var el = {
type: 'element',
name: name
};
if (attributes !== null && attributes !== undefined) {
el.attributes = attributes;
}
if (Array.isArray(elements)) {
el.elements = elements;
} else if (elements === true) {
el.elements = [];
}
return el;
}
function makeText(text) {
return {
type: 'text',
text: text
};
}
function makeValue(content, elementTypeInfo) {
if (!Array.isArray(content)) {
if (typeof content === 'string' || content instanceof String) {
return [makeText(content)];
}
var elementType = Object.keys(content)[0];
var elementTag = (0, _typeToTagMaps.elementTypeToTag)(elementType, elementTypeInfo);
if (elementTag !== undefined) {
var attrsSrc = Object.assign({}, content[elementType]);
delete attrsSrc.id;
delete attrsSrc.contents;
var contents = content[elementType].hasOwnProperty('contents') ? makeValue(content[elementType].contents, elementTypeInfo) : undefined;
var attrs = {
id: content[elementType].id
};
Object.keys(attrsSrc).forEach(function (attrKey) {
attrs[attrKey] = attrsSrc[attrKey];
});
return [makeElement(elementTag, attrs, contents)];
}
return [makeText(content)];
}
return content.map(function (segment) {
if (typeof segment === 'string' || segment instanceof String) {
return makeText(segment);
}
var elementType = Object.keys(segment)[0];
var elementTag = (0, _typeToTagMaps.elementTypeToTag)(elementType, elementTypeInfo);
if (elementTag !== undefined) {
var _attrsSrc = Object.assign({}, segment[elementType]);
delete _attrsSrc.id;
delete _attrsSrc.contents;
var _contents = segment[elementType].hasOwnProperty('contents') ? makeValue(segment[elementType].contents, elementTypeInfo) : undefined;
var _attrs = {
id: segment[elementType].id
};
Object.keys(_attrsSrc).forEach(function (attrKey) {
_attrs[attrKey] = _attrsSrc[attrKey];
});
return makeElement(elementTag, _attrs, _contents);
}
var segmentString = '{ ' + Object.keys(segment).reduce(function (result, segmentKey) {
return result + segmentKey + ': "' + segment[segmentKey].toString() + '"';
}, '') + ' }';
return {
type: 'comment',
comment: 'Warning: unexpected segment ' + segmentString + ' was ignored'
};
});
}
},{"../inline-elements/typeToTagMaps.js":9}],19:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extractValue = extractValue;
var _typeToTagMaps = require("../inline-elements/typeToTagMaps.js");
function extractValue(valueElements, elementTypeInfo) {
if (valueElements === undefined || valueElements === null || valueElements === '') {
return '';
}
if (Array.isArray(valueElements) && valueElements.length > 1) {
return valueElements.map(function (valueElement) {
return extractValue(valueElement, elementTypeInfo);
});
}
var valueElement = Array.isArray(valueElements) ? valueElements[0] || '' : valueElements;
if (valueElement.type === 'text') {
if (/\n\s*$/.test(valueElement.text)) {
return valueElement.text.substr(0, valueElement.text.lastIndexOf('\n'));
}
return valueElement.text;
}
var elementType = (0, _typeToTagMaps.tagToElementType)(valueElement.name, elementTypeInfo);
if (valueElement.type === 'element' && elementType !== undefined) {
var inlineElementFactory = elementTypeInfo.factories[elementType];
return inlineElementFactory(valueElement.attributes, extractValue(valueElement.elements, elementTypeInfo));
}
if (valueElement.type === 'cdata') {
return valueElement.cdata;
}
return '';
}
},{"../inline-elements/typeToTagMaps.js":9}],20:[function(require,module,exports){
'use strict'
exports.byteLength = byteLength
exports.toByteArray = toByteArray
exports.fromByteArray = fromByteArray
var lookup = []
var revLookup = []
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
for (var i = 0, len = code.length; i < len; ++i) {
lookup[i] = code[i]
revLookup[code.charCodeAt(i)] = i
}
// Support decoding URL-safe base64 strings, as Node.js does.
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
revLookup['-'.charCodeAt(0)] = 62
revLookup['_'.charCodeAt(0)] = 63
function getLens (b64) {
var len = b64.length
if (len % 4 > 0) {
throw new Error('Invalid string. Length must be a multiple of 4')
}
// Trim off extra bytes after placeholder bytes are found
// See: https://github.com/beatgammit/base64-js/issues/42
var validLen = b64.indexOf('=')
if (validLen === -1) validLen = len
var placeHoldersLen = validLen === len
? 0
: 4 - (validLen % 4)
return [validLen, placeHoldersLen]
}
// base64 is 4/3 + up to two characters of the original data
function byteLength (b64) {