UNPKG

xliff

Version:

xliff2js and js2xliff converter xliff utils

1,187 lines (1,168 loc) 324 kB
(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(e) { return e && e.__esModule ? e : { default: e }; } 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(e) { return e && e.__esModule ? e : { default: e }; } 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(e) { return e && e.__esModule ? e : { default: e }; } 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', Plural: 'Plural', Gender: 'Gender', Select: 'Select' }; 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")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } 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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var _default = exports.default = { elementTypeToTagMap: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, _ElementTypes.default.Standalone, 'x'), _ElementTypes.default.GenericSpan, 'g'), _ElementTypes.default.GenericSpanStart, 'bx'), _ElementTypes.default.GenericSpanEnd, 'ex'), _ElementTypes.default.Span, 'ph'), _ElementTypes.default.SpanStart, 'bpt'), _ElementTypes.default.SpanEnd, 'ept'), _ElementTypes.default.Marker, 'mrk'), 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: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, _ElementTypes.default.Standalone, function (attributes) { return (0, _makeInlineElement.default)(_ElementTypes.default.Standalone, attributes); }), _ElementTypes.default.GenericSpan, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpan, attributes, contents); }), _ElementTypes.default.GenericSpanStart, function (attributes) { return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanStart, attributes); }), _ElementTypes.default.GenericSpanEnd, function (attributes) { return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanEnd, attributes); }), _ElementTypes.default.Span, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.Span, attributes, contents); }), _ElementTypes.default.SpanStart, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.SpanStart, attributes, contents); }), _ElementTypes.default.SpanEnd, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.SpanEnd, attributes, contents); }), _ElementTypes.default.Marker, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.Marker, attributes, contents); }) }; 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")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } 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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var _default = exports.default = { elementTypeToTagMap: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, _ElementTypes.default.Standalone, 'ph'), _ElementTypes.default.GenericSpan, 'pc'), _ElementTypes.default.GenericSpanStart, 'sc'), _ElementTypes.default.GenericSpanEnd, 'ec'), _ElementTypes.default.Span, 'pc'), _ElementTypes.default.SpanStart, 'sc'), _ElementTypes.default.SpanEnd, 'ec'), _ElementTypes.default.Plural, 'plural'), _ElementTypes.default.Gender, 'gender'), _ElementTypes.default.Select, 'select'), tagToElementTypeMap: { ph: _ElementTypes.default.Standalone, pc: _ElementTypes.default.Span, sc: _ElementTypes.default.SpanStart, ec: _ElementTypes.default.SpanEnd, plural: _ElementTypes.default.Plural, gender: _ElementTypes.default.Gender, select: _ElementTypes.default.Select }, factories: _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, _ElementTypes.default.Standalone, function (attributes) { return (0, _makeInlineElement.default)(_ElementTypes.default.Standalone, attributes); }), _ElementTypes.default.GenericSpan, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpan, attributes, contents); }), _ElementTypes.default.GenericSpanStart, function (attributes) { return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanStart, attributes); }), _ElementTypes.default.GenericSpanEnd, function (attributes) { return (0, _makeInlineElement.default)(_ElementTypes.default.GenericSpanEnd, attributes); }), _ElementTypes.default.Span, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.Span, attributes, contents); }), _ElementTypes.default.SpanStart, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.SpanStart, attributes, contents); }), _ElementTypes.default.SpanEnd, function (attributes, contents) { return (0, _makeInlineElement.default)(_ElementTypes.default.SpanEnd, attributes, contents); }), _ElementTypes.default.Plural, function (attributes, options) { return (0, _makeInlineElement.default)(_ElementTypes.default.Plural, attributes, options); }), _ElementTypes.default.Gender, function (attributes, options) { return (0, _makeInlineElement.default)(_ElementTypes.default.Gender, attributes, options); }), _ElementTypes.default.Select, function (attributes, options) { return (0, _makeInlineElement.default)(_ElementTypes.default.Select, attributes, options); }) }; 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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 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(e) { return e && e.__esModule ? e : { default: e }; } 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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } var js2xliffClb = function js2xliffClb(obj, opt, cb) { if (!cb && typeof opt === 'function') { cb = opt; opt = { indent: ' ' }; } opt = opt || { indent: ' ' }; var targetXliffVersion = opt.targetXliffVersion || '2.0'; var options = { spaces: opt.indent !== undefined ? opt.indent : ' ', targetXliffVersion: targetXliffVersion }; var rootAttributes = { xmlns: 'urn:oasis:names:tc:xliff:document:' + targetXliffVersion, version: targetXliffVersion, 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); if (Array.isArray(obj.headerExtras) && obj.headerExtras.length) { obj.headerExtras.forEach(function (extra) { var clone = JSON.parse(JSON.stringify(extra)); if (clone.type === 'element' && clone.attributes == null) { clone.attributes = {}; } root.elements.push(clone); }); } Object.keys(obj.resources).forEach(function (nsName) { var fileChildren = createUnitTags(obj.resources[nsName], options); 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, options) { 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], options); } else { return createUnitTag(key, unitElements[key], options); } })); } function createGroupUnitTag(id, group, options) { var additionalAttributes = group.additionalAttributes != null ? group.additionalAttributes : {}; var groupUnits = createUnitTags(group.groupUnits, options); var attrs = { id: (0, _escape.default)(id) }; Object.keys(additionalAttributes).forEach(function (k) { var v = additionalAttributes[k]; if (v !== undefined && v !== null) attrs[k] = String(v); }); return (0, _objectToXml.makeElement)('group', attrs, groupUnits); } function createUnitTag(id, unit, options) { var segment = (0, _objectToXml.makeElement)('segment', null, true); var srcVal = unit.source === undefined && unit.target !== undefined ? '' : unit.source; if (srcVal !== undefined) segment.elements.push((0, _objectToXml.makeElement)('source', null, (0, _objectToXml.makeValue)(srcVal, _ElementTypes.default, options && options.targetXliffVersion))); if (unit.target !== undefined) segment.elements.push((0, _objectToXml.makeElement)('target', null, (0, _objectToXml.makeValue)(unit.target, _ElementTypes.default, options && options.targetXliffVersion))); 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; } var attrs = { id: (0, _escape.default)(id) }; Object.keys(additionalAttributes).forEach(function (k) { var v = additionalAttributes[k]; if (v !== undefined && v !== null) attrs[k] = String(v); }); return (0, _objectToXml.makeElement)('unit', attrs, 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(e) { return e && e.__esModule ? e : { default: e }; } 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(e) { return e && e.__esModule ? e : { default: e }; } 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(e) { return e && e.__esModule ? e : { default: e }; } 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 = { '&': '&amp;', '"': '&quot;', '\'': '&apos;', '<': '&lt;', '>': '&gt;' }; 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(e) { return e && e.__esModule ? e : { default: e }; } 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'; }); var version = xliffRoot.attributes && xliffRoot.attributes.version; if (version && version !== '1.2') { result.xliffVersion = version; } 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; var files = []; var headerExtras = []; elements.forEach(function (child) { if (child.name === 'file') { files.push(child); } else { headerExtras.push(child); } }); if (headerExtras.length) result.headerExtras = headerExtras; result.resources = files.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) { if (!child.attributes || !child.attributes.id) return parent; 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); } if (child.attributes.ref) { if (!parent[key].additionalAttributes) parent[key].additionalAttributes = {}; parent[key].additionalAttributes.ref = child.attributes.ref; } var known = ['trans-unit', 'group', 'source', 'target', 'note', 'body']; var additionalElements = child.elements.filter(function (e) { return !known.includes(e.name); }); if (additionalElements.length) { parent[key].additionalElements = additionalElements; } 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(e) { return e && e.__esModule ? e : { default: e }; } 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(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 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'; }); var version = xliffRoot.attributes && xliffRoot.attributes.version; if (['2.0', '2.1', '2.2'].includes(version)) { if (version !== '2.0') { result.xliffVersion = version; } var srcLang = xliffRoot.attributes.srcLang; var trgLang = xliffRoot.attributes.trgLang; result.sourceLanguage = srcLang; result.targetLanguage = trgLang; if (!result.targetLanguage) delete result.targetLanguage; var files = []; var headerExtras = []; (xliffRoot.elements || []).forEach(function (child) { if (child.type === 'comment') return; if (child.name === 'file') { files.push(child); } else { headerExtras.push(child); } }); if (headerExtras.length) result.headerExtras = headerExtras; result.resources = files.reduce(function (resources, file) { var namespace = options.namespace || file.attributes.id; if (!namespace) namespace = 'default'; 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) { if (!unit.attributes || !unit.attributes.id) return file; var key = unit.attributes.id; var additionalAttributes = _objectSpread({}, unit.attributes); delete additionalAttributes.id; if (unit.attributes.ref) { additionalAttributes.ref = unit.attributes.ref; } 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 }); } if (unit.elements) { var known = ['segment', 'notes', 'source', 'target', 'note', 'ignorable']; var additionalElements = unit.elements.filter(function (e) { return !known.includes(e.name); }); if (additionalElements.length) { file[key].additionalElements = additionalElements; } } return file; case 'group': file[key] = { groupUnits: createUnits(unit, initValues) }; if (Object.keys(additionalAttributes).length) { Object.assign(file[key], { additionalAttributes: additionalAttributes }); } return file; default: if (!file._additionalElements) file._additionalElements = []; file._additionalElements.push(unit); 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 _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 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, targetXliffVersion) { targetXliffVersion = targetXliffVersion || '2.0'; if (!Array.isArray(content)) { if (typeof content === 'string' || content instanceof String) {