UNPKG

ttag

Version:

[![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg)](https://stand-with-ukraine.pp.ua)

802 lines (764 loc) 39.1 kB
/******/ var __webpack_modules__ = ({ /***/ "./src/config.ts": /*!***********************!*\ !*** ./src/config.ts ***! \***********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ Config) /* harmony export */ }); /* harmony import */ var plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! plural-forms/minimal-safe */ "./node_modules/plural-forms/minimal-safe.js"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ "./src/utils.ts"); /* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./validation */ "./src/validation.ts"); 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); } class Config { constructor() { _defineProperty(this, "config", { locales: {}, currentLocales: [], currentLocale: 'en', dedent: true, defaultLang: 'en' }); } addLocale(locale, localeData) { if (true) (0,_validation__WEBPACK_IMPORTED_MODULE_2__.validateLocaleCode)(locale); if (true) (0,_validation__WEBPACK_IMPORTED_MODULE_2__.validateLocaleData)(localeData); var transformedData; if ('translations' in localeData) { transformedData = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.transformTranslateObj)(localeData); } else if (localeData.contexts) { transformedData = (0,_utils__WEBPACK_IMPORTED_MODULE_1__.transformCompactObj)(localeData); } else { throw new Error('Invalid locale data format'); } this.config.locales[locale] = transformedData; } setCurrentLocale(locale) { this.config.currentLocale = locale; } setDedent(dedent) { this.config.dedent = dedent; } setCurrentLocales(locales) { if (true) (0,_validation__WEBPACK_IMPORTED_MODULE_2__.validateLocales)(locales, this.getAvailLocales()); this.config.currentLocales = locales; } getAvailLocales() { return this.config.locales; } getCurrentLocales() { return this.config.currentLocales.map(locale => typeof locale === 'string' ? locale : locale()); } getCurrentLocale() { return typeof this.config.currentLocale === 'string' ? this.config.currentLocale : this.config.currentLocale(); } isDedent() { return this.config.dedent; } setDefaultLang(lang) { this.config.defaultLang = lang; } getDefaultPluralFn() { return (0,plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_0__.getPluralFunc)(this.config.defaultLang); } getDefaultPluralFormsCount() { return (0,plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_0__.getNPlurals)(this.config.defaultLang); } getCurrentLocaleHeaders() { var locale = this.getCurrentLocale(); return this.config.locales[locale].headers; } } /***/ }), /***/ "./src/utils.ts": /*!**********************!*\ !*** ./src/utils.ts ***! \**********************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ buildArr: () => (/* binding */ buildArr), /* harmony export */ buildStr: () => (/* binding */ buildStr), /* harmony export */ dedentStr: () => (/* binding */ dedentStr), /* harmony export */ getMsgid: () => (/* binding */ getMsgid), /* harmony export */ getPluralFnForTrans: () => (/* binding */ getPluralFnForTrans), /* harmony export */ getPluralFunc: () => (/* binding */ getPluralFunc), /* harmony export */ makePluralFunc: () => (/* binding */ makePluralFunc), /* harmony export */ msgid2Orig: () => (/* binding */ msgid2Orig), /* harmony export */ transformCompactObj: () => (/* binding */ transformCompactObj), /* harmony export */ transformTranslateObj: () => (/* binding */ transformTranslateObj) /* harmony export */ }); /* harmony import */ var dedent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dedent */ "./node_modules/dedent/dist/dedent.mjs"); /* harmony import */ var plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! plural-forms/minimal-safe */ "./node_modules/plural-forms/minimal-safe.js"); /* eslint-disable @typescript-eslint/no-explicit-any */ var getMsgid = (str, exprs) => { var result = []; var exprsLenght = exprs.length; var strLength = str.length; for (var _i = 0; _i < strLength; _i++) { var expr = _i < exprsLenght ? "${".concat(_i, "}") : ''; result.push(str[_i] + expr); } return result.join(''); }; var stringableRewindingIterator = () => ({ values: [], index: -1, toString() { this.index = (this.index + 1) % this.values.length; return this.values[this.index].toString(); } }); var removeSpaces = str => str.replace(/\s/g, ''); var mem = {}; // eslint-disable-next-line no-unused-vars var memoize1 = f => arg => { if (mem[arg]) { return mem[arg]; } mem[arg] = f(arg); return mem[arg]; }; var reg = i => new RegExp("\\$\\{(?:[\\s]+?|\\s?)".concat(i, "(?:[\\s]+?|\\s?)}")); var memReg = memoize1(reg); var msgid2Orig = (id, exprs) => { return exprs.reduce((r, expr, i) => r.replace(memReg(String(i)), String(expr)), id); }; var buildStr = (strs, exprs) => { var exprsLength = exprs.length - 1; return strs.reduce((r, s, i) => r + s + (i <= exprsLength ? exprs[i] : ''), ''); }; var buildArr = (strs, exprs) => { return strs.reduce((r, s, i) => { return exprs[i] !== undefined ? r.concat(s, exprs[i]) : r.concat(s); }, []); }; function pluralFnBody(pluralStr) { return "return args[+ (".concat(pluralStr, ")];"); } var fnCache = {}; function makePluralFunc(pluralStr) { var fn = fnCache[pluralStr]; if (!fn) { fn = new Function('n', 'args', pluralFnBody(pluralStr)); fnCache[pluralStr] = fn; } return fn; } var pluralRegex = /\splural ?=?([\s\S]*);?/; function getPluralFunc(headers) { var _pluralRegex$exec; var pluralFormsHeader = headers['plural-forms'] || headers['Plural-Forms']; if (!pluralFormsHeader) { throw new Error('po. data should include "language" or "plural-form" header for ngettext'); } var pluralFn = ((_pluralRegex$exec = pluralRegex.exec(pluralFormsHeader)) === null || _pluralRegex$exec === void 0 ? void 0 : _pluralRegex$exec[1]) || []; if (pluralFn[pluralFn.length - 1] === ';') { pluralFn = pluralFn.slice(0, -1); } return pluralFn; } var variableREG = /\$\{\s*([.\w+\[\]])*\s*\}/g; function getObjectKeys(obj) { var keys = []; for (var [_key] of Object.entries(obj)) { if (obj.hasOwnProperty(_key)) { keys.push(_key); } } return keys; } function replaceVariables(str, obj) { return str.replace(variableREG, variable => { return "${".concat(obj[removeSpaces(variable)], "}"); }); } function getVariablesMap(msgid) { var variableNumberMap = {}; var variables = msgid.match(variableREG); if (!variables) return null; for (var _i2 = 0; _i2 < variables.length; _i2++) { var k = removeSpaces(variables[_i2]); variableNumberMap[k] = variableNumberMap[k] || stringableRewindingIterator(); variableNumberMap[k].values.push(_i2); } return variableNumberMap; } function transformTranslate(translate) { var variableNumberMap = getVariablesMap(translate.msgid); if (!variableNumberMap) { return translate; } var msgid = replaceVariables(translate.msgid, variableNumberMap); var newTranslate = { msgid, msgstr: [] }; if (translate.msgid_plural) { newTranslate.msgid_plural = replaceVariables(translate.msgid_plural, variableNumberMap); } var transStrs = translate.msgstr; for (var _i3 = 0; _i3 < transStrs.length; _i3++) { newTranslate.msgstr.push(replaceVariables(transStrs[_i3], variableNumberMap)); } newTranslate.comments = translate.comments; return newTranslate; } function transformTranslateObj(translateObj) { var newTranslations = {}; var transKeys = getObjectKeys(translateObj.translations); for (var _i4 = 0; _i4 < transKeys.length; _i4++) { var _key2 = transKeys[_i4]; var translation = translateObj.translations[_key2]; var newTranslation = {}; var msgids = getObjectKeys(translation); for (var j = 0; j < msgids.length; j++) { var msgid = msgids[j]; var newTranslate = transformTranslate(translation[msgid]); newTranslation[newTranslate.msgid] = newTranslate; } newTranslations[_key2] = newTranslation; } translateObj.translations = newTranslations; return translateObj; } function transformCompactTranslate(msgid, translations) { var variableNumberMap = getVariablesMap(msgid); if (!variableNumberMap) { return [msgid, translations]; } var newMsgid = replaceVariables(msgid, variableNumberMap); var newTranslations = translations.map(trans => { return replaceVariables(trans, variableNumberMap); }); return [newMsgid, newTranslations]; } function findDuplicatingMsgid(msgids, transformedMsgid) { return msgids.find(msgid => { var variableNumberMap = getVariablesMap(msgid); if (!variableNumberMap) { return false; } return replaceVariables(msgid, variableNumberMap) === transformedMsgid; }); } function transformCompactObj(compactObj) { var newContexts = {}; var keys = getObjectKeys(compactObj.contexts); for (var _i5 = 0; _i5 < keys.length; _i5++) { var ctx = keys[_i5]; var newContext = {}; var msgids = getObjectKeys(compactObj.contexts[ctx]); for (var j = 0; j < msgids.length; j++) { var msgid = msgids[j]; var translations = compactObj.contexts[ctx][msgid]; var [newMsgid, newTranslations] = transformCompactTranslate(msgid, translations); if ( true && newContext[newMsgid]) { var duplicatedMsgid = findDuplicatingMsgid(msgids, newMsgid); throw new Error("Duplicate msgid (\"".concat(msgid, "\" and \"").concat(duplicatedMsgid, "\" will be interpreted as the same key \"").concat(newMsgid, "\") this potentially can lead to translation loss.") + " Consider using context for one of those msgid's. See the context doc here - https://ttag.js.org/docs/context.html"); } newContext[newMsgid] = newTranslations; } newContexts[ctx] = newContext; } compactObj.contexts = newContexts; return compactObj; } function dedentStr(rawStr) { if (!(typeof rawStr === 'string')) { return rawStr; } if (rawStr.indexOf('\n') === -1) { return rawStr; } return (0,dedent__WEBPACK_IMPORTED_MODULE_0__["default"])(rawStr); } function getPluralFnForTrans(config) { var headers = config.getCurrentLocaleHeaders(); var language = headers.language || headers.Language; if (language) { return (0,plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_1__.getPluralFunc)(language); } var pluralStr = getPluralFunc(headers); return makePluralFunc(pluralStr); } /***/ }), /***/ "./src/validation.ts": /*!***************************!*\ !*** ./src/validation.ts ***! \***************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ validateLang: () => (/* binding */ validateLang), /* harmony export */ validateLocaleCode: () => (/* binding */ validateLocaleCode), /* harmony export */ validateLocaleData: () => (/* binding */ validateLocaleData), /* harmony export */ validateLocales: () => (/* binding */ validateLocales), /* harmony export */ validateNgettextMsgid: () => (/* binding */ validateNgettextMsgid), /* harmony export */ validateNgettextNumber: () => (/* binding */ validateNgettextNumber), /* harmony export */ validateNgettextPluralForms: () => (/* binding */ validateNgettextPluralForms) /* harmony export */ }); /* harmony import */ var plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! plural-forms/minimal-safe */ "./node_modules/plural-forms/minimal-safe.js"); function validateLocale(locale, availLocales) { if (true) { if (!availLocales[locale]) { throw new Error("\n Locale '".concat(locale, "' is not found in config.\n useLocales accepts only existing locales. Use addLocale function before.\n Available locales: ").concat(JSON.stringify(availLocales))); } } } function validateLocaleCode(locale) { if (true) { if (typeof locale !== 'string') { throw new Error("Expected locale code to be a string but recieved ".concat(typeof locale, " insttead")); } } } function validateLocaleData(data) { if (true) { // eslint-disable-next-line var addLocaleDoc = 'https://ttag.js.org/docs/library-api.html#addlocale'; if (!data) { throw new Error("\n Locale data should not be empty.\n see - ".concat(addLocaleDoc, "\n ")); } if (!data.headers) { throw new Error("\n Locale data should contain headers \"".concat(JSON.stringify(data), "\".\n see - ").concat(addLocaleDoc, "\n ")); } if (!data.headers['plural-forms'] && !data.headers['Plural-Forms']) { throw new Error("\n Locale data.headers should contain 'Plural-Forms' attribute \"".concat(JSON.stringify(data), "\".\n see - ").concat(addLocaleDoc, "\n ")); } if (!('translations' in data) && !('contexts' in data)) { throw new Error("\n Locale data should contain translations or contexts property \"".concat(JSON.stringify(data), "\".\n see - ").concat(addLocaleDoc, "\n ")); } if ('translations' in data && !Object.keys(data.translations).length) { throw new Error("\n Locale data.translations should have at least 1 key\"".concat(JSON.stringify(data), "\".\n see - ").concat(addLocaleDoc, "\n ")); } if ('contexts' in data && !Object.keys(data.contexts).length) { throw new Error("\n Locale data.contexts should have at least 1 key\"".concat(JSON.stringify(data), "\".\n see - ").concat(addLocaleDoc, "\n ")); } } } function validateLocales(locales, availLocales) { if (true) { if (!Array.isArray(locales)) { throw new Error('useLocales accepts only array as the first argument'); } locales.forEach(locale => validateLocale(locale, availLocales)); } } // eslint-disable-next-line @typescript-eslint/no-explicit-any function validateNgettextMsgid(str) { if (true) { var ngettextDoc = 'https://ttag.js.org/docs/ngettext.html'; if (!(str.hasOwnProperty('_strs') && str.hasOwnProperty('_exprs'))) { throw new Error("The first argument for ngettext must be tagged with 'msgid' tag.\n see - ".concat(ngettextDoc, ";\n ")); } } } // eslint-disable-next-line @typescript-eslint/no-explicit-any function validateNgettextNumber(n) { if (true) { var ngettextDoc = 'https://ttag.js.org/docs/ngettext.html'; if (!(typeof n === 'number')) { throw new Error("The last argument to ngettext - '".concat(n, "' expected to be a number. Got '").concat(typeof n, "' instead.\n see - ").concat(ngettextDoc)); } } } function validateNgettextPluralForms(expectedFormsCount, actualFormsCount) { if (true) { if (actualFormsCount !== expectedFormsCount) { throw new Error( // eslint-disable-next-line max-len "ngettext expects ".concat(expectedFormsCount, " for the current default locale, but received - ").concat(actualFormsCount, ".")); } } } function validateLang(lang) { if (true) { var langs = (0,plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_0__.getAvailLangs)().join(','); if (!(0,plural_forms_minimal_safe__WEBPACK_IMPORTED_MODULE_0__.hasLang)(lang)) { throw new Error("Unknown lang code - ".concat(lang, ". Lang should be one of: ").concat(langs, ".")); } } } /***/ }), /***/ "./node_modules/plural-forms/dist/minimal-safe.js": /*!********************************************************!*\ !*** ./node_modules/plural-forms/dist/minimal-safe.js ***! \********************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({value:!0}));var n=/(\w+)[-_].*/;function f(f,r){if(r[f])return r[f];var t=f.match(n);if(!t)throw new Error("Can't find lang or lcale with code "+f);return r[t[1]]}function r(n){return n>1}function t(n){return 1!==n}function u(n){return 0}var e={ach:{n:2,f:r},af:{n:2,f:t},ak:{n:2,f:r},am:{n:2,f:r},an:{n:2,f:t},ar:{n:6,f:function(n){return 0===n?0:1===n?1:2===n?2:n%100>=3&&n%100<=10?3:n%100>=11?4:5}},arn:{n:2,f:r},ast:{n:2,f:t},ay:{n:1,f:u},az:{n:2,f:t},be:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},bg:{n:2,f:t},bn:{n:2,f:t},bo:{n:1,f:u},br:{n:2,f:r},brx:{n:2,f:t},bs:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},ca:{n:2,f:t},cgg:{n:1,f:u},cs:{n:3,f:function(n){return 1===n?0:n>=2&&n<=4?1:2}},csb:{n:3,f:function(n){return 1===n?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},cy:{n:4,f:function(n){return 1===n?0:2===n?1:8!==n&&11!==n?2:3}},da:{n:2,f:t},de:{n:2,f:t},doi:{n:2,f:t},dz:{n:1,f:u},el:{n:2,f:t},en:{n:2,f:t},eo:{n:2,f:t},es:{n:2,f:t},et:{n:2,f:t},eu:{n:2,f:t},fa:{n:1,f:u},ff:{n:2,f:t},fi:{n:2,f:t},fil:{n:2,f:r},fo:{n:2,f:t},fr:{n:2,f:function(n){return n<=-2||n>=2}},fur:{n:2,f:t},fy:{n:2,f:t},ga:{n:5,f:function(n){return 1===n?0:2===n?1:n<7?2:n<11?3:4}},gd:{n:4,f:function(n){return 1===n||11===n?0:2===n||12===n?1:n>2&&n<20?2:3}},gl:{n:2,f:t},gu:{n:2,f:t},gun:{n:2,f:r},ha:{n:2,f:t},he:{n:2,f:t},hi:{n:2,f:t},hne:{n:2,f:t},hr:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},hu:{n:2,f:t},hy:{n:2,f:t},id:{n:1,f:u},is:{n:2,f:function(n){return n%10!=1||n%100==11}},it:{n:2,f:t},ja:{n:1,f:u},jbo:{n:1,f:u},jv:{n:2,f:function(n){return 0!==n}},ka:{n:1,f:u},kab:{n:2,f:t},kk:{n:2,f:t},km:{n:1,f:u},kn:{n:2,f:t},ko:{n:1,f:u},ku:{n:2,f:t},kw:{n:4,f:function(n){return 1===n?0:2===n?1:3===n?2:3}},ky:{n:1,f:u},lb:{n:2,f:t},ln:{n:2,f:r},lo:{n:1,f:u},lt:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&(n%100<10||n%100>=20)?1:2}},lv:{n:3,f:function(n){return n%10==1&&n%100!=11?0:0!==n?1:2}},mai:{n:2,f:t},mfe:{n:2,f:r},mg:{n:2,f:r},mi:{n:2,f:r},mk:{n:2,f:function(n){return 1===n||n%10==1?0:1}},ml:{n:2,f:t},mn:{n:2,f:t},mni:{n:2,f:t},mnk:{n:3,f:function(n){return 0===n?0:1===n?1:2}},mr:{n:2,f:t},ms:{n:1,f:u},mt:{n:4,f:function(n){return 1===n?0:0===n||n%100>1&&n%100<11?1:n%100>10&&n%100<20?2:3}},my:{n:1,f:u},nah:{n:2,f:t},nap:{n:2,f:t},nb:{n:2,f:t},ne:{n:2,f:t},nl:{n:2,f:t},nn:{n:2,f:t},no:{n:2,f:t},nso:{n:2,f:t},oc:{n:2,f:r},or:{n:2,f:t},pa:{n:2,f:t},pap:{n:2,f:t},pl:{n:3,f:function(n){return 1===n?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},pms:{n:2,f:t},ps:{n:2,f:t},pt:{n:2,f:t},rm:{n:2,f:t},ro:{n:3,f:function(n){return 1===n?0:0===n||n%100>0&&n%100<20?1:2}},ru:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},rw:{n:2,f:t},sah:{n:1,f:u},sat:{n:2,f:t},sco:{n:2,f:t},sd:{n:2,f:t},se:{n:2,f:t},si:{n:2,f:t},sk:{n:3,f:function(n){return 1===n?0:n>=2&&n<=4?1:2}},sl:{n:4,f:function(n){return n%100==1?1:n%100==2?2:n%100==3||n%100==4?3:0}},so:{n:2,f:t},son:{n:2,f:t},sq:{n:2,f:t},sr:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},su:{n:1,f:u},sv:{n:2,f:t},sw:{n:2,f:t},ta:{n:2,f:t},te:{n:2,f:t},tg:{n:2,f:r},th:{n:1,f:u},ti:{n:2,f:r},tk:{n:2,f:t},tr:{n:2,f:r},tt:{n:1,f:u},ug:{n:1,f:u},uk:{n:3,f:function(n){return n%10==1&&n%100!=11?0:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?1:2}},ur:{n:2,f:t},uz:{n:2,f:r},vi:{n:1,f:u},wa:{n:2,f:r},wo:{n:1,f:u},yo:{n:2,f:t},zh:{n:1,f:u}};function o(n){return f(n,e).n}var i={};function c(n){if(i[n])return i[n];var r=f(n,e),t=function(n,f){return f[+r.f(n)]};return i[n]=t,t}function a(n){try{return f(n,e),!0}catch(n){return!1}}function s(){return Object.keys(e)}exports.getNPlurals=o,exports.getPluralFunc=c,exports.hasLang=a,exports.getAvailLangs=s; /***/ }), /***/ "./node_modules/plural-forms/minimal-safe.js": /*!***************************************************!*\ !*** ./node_modules/plural-forms/minimal-safe.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { module.exports = __webpack_require__(/*! ./dist/minimal-safe */ "./node_modules/plural-forms/dist/minimal-safe.js"); /***/ }), /***/ "./node_modules/dedent/dist/dedent.mjs": /*!*********************************************!*\ !*** ./node_modules/dedent/dist/dedent.mjs ***! \*********************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } 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); } /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createDedent({})); function createDedent(options) { dedent.withOptions = newOptions => createDedent(_objectSpread(_objectSpread({}, options), newOptions)); return dedent; function dedent(strings, ...values) { const raw = typeof strings === "string" ? [strings] : strings.raw; const { escapeSpecialCharacters = Array.isArray(strings) } = options; // first, perform interpolation let result = ""; for (let i = 0; i < raw.length; i++) { let next = raw[i]; if (escapeSpecialCharacters) { // handle escaped newlines, backticks, and interpolation characters next = next.replace(/\\\n[ \t]*/g, "").replace(/\\`/g, "`").replace(/\\\$/g, "$").replace(/\\{/g, "{"); } result += next; if (i < values.length) { // eslint-disable-next-line @typescript-eslint/restrict-plus-operands result += values[i]; } } // now strip indentation const lines = result.split("\n"); let mindent = null; for (const l of lines) { const m = l.match(/^(\s+)\S+/); if (m) { const indent = m[1].length; if (!mindent) { // this is the first indented line mindent = indent; } else { mindent = Math.min(mindent, indent); } } } if (mindent !== null) { const m = mindent; // appease TypeScript result = lines // https://github.com/typescript-eslint/typescript-eslint/issues/7140 // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with .map(l => l[0] === " " || l[0] === "\t" ? l.slice(m) : l).join("\n"); } return result // dedent eats leading and trailing whitespace too .trim() // handle escaped newlines at the end to ensure they don't get stripped too .replace(/\\n/g, "\n"); } } /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. (() => { /*!**********************!*\ !*** ./src/index.ts ***! \**********************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Context: () => (/* binding */ Context), /* harmony export */ TTag: () => (/* binding */ TTag), /* harmony export */ _: () => (/* binding */ _), /* harmony export */ addLocale: () => (/* binding */ addLocale), /* harmony export */ c: () => (/* binding */ c), /* harmony export */ gettext: () => (/* binding */ gettext), /* harmony export */ jt: () => (/* binding */ jt), /* harmony export */ msgid: () => (/* binding */ msgid), /* harmony export */ ngettext: () => (/* binding */ ngettext), /* harmony export */ setDedent: () => (/* binding */ setDedent), /* harmony export */ setDefaultLang: () => (/* binding */ setDefaultLang), /* harmony export */ t: () => (/* binding */ t), /* harmony export */ useLocale: () => (/* binding */ useLocale), /* harmony export */ useLocales: () => (/* binding */ useLocales) /* harmony export */ }); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ "./src/utils.ts"); /* harmony import */ var _validation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./validation */ "./src/validation.ts"); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config */ "./src/config.ts"); 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); } class Context { constructor(context) { if (true) { if (typeof context !== 'string') { throw new Error('String type is expected as a first argument to c() function.'); } } this.context = context; // eslint-disable-next-line no-self-assign this.getContext = this.getContext; } getContext() { return this.context; } } function isFuzzy(translationObj) { return translationObj && translationObj.comments && translationObj.comments.flag === 'fuzzy'; } function hasTranslations(msgstr) { if (!msgstr) return false; for (var i = 0; i < msgstr.length; i++) { if (!msgstr[i].length) return false; } return true; } var separator = /(\${\s*\d+\s*})/g; var slotIdRegexp = /\${\s*(\d+)\s*}/; function msgid(strings) { if (strings && 'reduce' in strings) { for (var _len = arguments.length, exprs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { exprs[_key - 1] = arguments[_key]; } var result = new String((0,_utils__WEBPACK_IMPORTED_MODULE_0__.buildStr)(strings, exprs)); result._strs = strings; result._exprs = exprs; return result; } return strings; } class TTag { constructor() { var _this = this; var { config, context: _context } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { config: new _config__WEBPACK_IMPORTED_MODULE_2__["default"](), context: new Context('') }; _defineProperty(this, "maybeDedent", str => { return this.conf.isDedent() ? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.dedentStr)(str) : str; }); _defineProperty(this, "findTransObj", (locale, str, ctx) => { var locales = this.conf.getAvailLocales(); var localeData = locales[locale]; if (!localeData) return null; // verbose format if ('translations' in localeData) { var translations = localeData.translations[ctx] || localeData.translations['']; var translation = translations && translations[str]; if (translation && !isFuzzy(translation) && hasTranslations(translation.msgstr)) { return translation.msgstr; } } // compact format if ('contexts' in localeData) { var _translations = localeData.contexts[ctx] || localeData.contexts['']; var _translation = _translations && _translations[str]; if (_translation && hasTranslations(_translation)) { return _translation; } } return null; }); _defineProperty(this, "findTranslation", (str, ctx) => { var locales = this.conf.getCurrentLocales(); if (locales.length) { for (var i = 0; i < locales.length; i++) { var translation = this.findTransObj(locales[i], str, ctx); if (translation) { this.conf.setCurrentLocale(locales[i]); return translation; } } } return this.findTransObj(this.conf.getCurrentLocale(), str, ctx); }); _defineProperty(this, "setDefaultLang", lang => { if (true) (0,_validation__WEBPACK_IMPORTED_MODULE_1__.validateLang)(lang); this.conf.setDefaultLang(lang); }); _defineProperty(this, "useLocales", locales => { this.conf.setCurrentLocales(locales); }); _defineProperty(this, "setDedent", value => { this.conf.setDedent(Boolean(value)); }); _defineProperty(this, "useLocale", locale => { this.conf.setCurrentLocale(locale); }); _defineProperty(this, "addLocale", (locale, data) => { this.conf.addLocale(locale, data); }); // eslint-disable-next-line @typescript-eslint/no-explicit-any _defineProperty(this, "t", function (strings) { var result = strings; if (strings && 'reduce' in strings) { for (var _len2 = arguments.length, exprs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { exprs[_key2 - 1] = arguments[_key2]; } var _id = _this.maybeDedent((0,_utils__WEBPACK_IMPORTED_MODULE_0__.getMsgid)(strings, exprs)); var context = _this.ctx.getContext(); var trans = _this.findTranslation(_id, context); result = trans ? (0,_utils__WEBPACK_IMPORTED_MODULE_0__.msgid2Orig)(trans[0], exprs) : (0,_utils__WEBPACK_IMPORTED_MODULE_0__.buildStr)(strings, exprs); } return result; }); // eslint-disable-next-line @typescript-eslint/no-explicit-any _defineProperty(this, "jt", function (strings) { for (var _len3 = arguments.length, exprs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { exprs[_key3 - 1] = arguments[_key3]; } if (strings && 'reduce' in strings) { var _id2 = _this.maybeDedent((0,_utils__WEBPACK_IMPORTED_MODULE_0__.getMsgid)(strings, exprs)); var context = _this.ctx.getContext(); var trans = _this.findTranslation(_id2, context); if (!trans) return (0,_utils__WEBPACK_IMPORTED_MODULE_0__.buildArr)(strings, exprs); // splits string & capturing group into tokens var translatedTokens = trans[0].split(separator); return translatedTokens.map(token => { var slotIdMatch = token.match(slotIdRegexp); // slotIdMatch is not null only when the token is a variable slot (${xx}) return slotIdMatch ? exprs[+slotIdMatch[1]] : token; }); } return strings; }); _defineProperty(this, "ngettext", function () { for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } if (true) (0,_validation__WEBPACK_IMPORTED_MODULE_1__.validateNgettextMsgid)(args[0]); var id = _this.maybeDedent((0,_utils__WEBPACK_IMPORTED_MODULE_0__.getMsgid)(args[0]._strs, args[0]._exprs)); var n = args[args.length - 1]; if (true) (0,_validation__WEBPACK_IMPORTED_MODULE_1__.validateNgettextNumber)(n); var forms = args.slice(1, -1); forms.unshift(args[0].toString()); if (true) { (0,_validation__WEBPACK_IMPORTED_MODULE_1__.validateNgettextPluralForms)(_this.conf.getDefaultPluralFormsCount(), forms.length); } var trans = _this.findTranslation(id, _this.ctx.getContext()); if (trans) { var _pluralFn = (0,_utils__WEBPACK_IMPORTED_MODULE_0__.getPluralFnForTrans)(_this.conf); var pluralTrans = _pluralFn(n, trans) || ''; return (0,_utils__WEBPACK_IMPORTED_MODULE_0__.msgid2Orig)(pluralTrans, args[0]._exprs); } var pluralFn = _this.conf.getDefaultPluralFn(); return pluralFn(n, forms); }); _defineProperty(this, "gettext", id => { var context = this.ctx.getContext(); var trans = this.findTranslation(id, context); return trans ? trans[0] : id; }); _defineProperty(this, "_", this.gettext); _defineProperty(this, "copyWithNewContext", ctx => { return new TTag({ config: this.conf, context: new Context(ctx) }); }); _defineProperty(this, "c", context => { var copyTTag = this.copyWithNewContext(context); return { t: copyTTag.t, jt: copyTTag.jt, gettext: copyTTag.gettext, ngettext: copyTTag.ngettext }; }); this.conf = config; this.ctx = _context || new Context(''); } } var globalTTag = new TTag(); var c = globalTTag.c; var _ = globalTTag._; var addLocale = globalTTag.addLocale; var gettext = globalTTag.gettext; var jt = globalTTag.jt; var ngettext = globalTTag.ngettext; var setDedent = globalTTag.setDedent; var setDefaultLang = globalTTag.setDefaultLang; var t = globalTTag.t; var useLocale = globalTTag.useLocale; var useLocales = globalTTag.useLocales; })(); var __webpack_exports__Context = __webpack_exports__.Context; var __webpack_exports__TTag = __webpack_exports__.TTag; var __webpack_exports___ = __webpack_exports__._; var __webpack_exports__addLocale = __webpack_exports__.addLocale; var __webpack_exports__c = __webpack_exports__.c; var __webpack_exports__gettext = __webpack_exports__.gettext; var __webpack_exports__jt = __webpack_exports__.jt; var __webpack_exports__msgid = __webpack_exports__.msgid; var __webpack_exports__ngettext = __webpack_exports__.ngettext; var __webpack_exports__setDedent = __webpack_exports__.setDedent; var __webpack_exports__setDefaultLang = __webpack_exports__.setDefaultLang; var __webpack_exports__t = __webpack_exports__.t; var __webpack_exports__useLocale = __webpack_exports__.useLocale; var __webpack_exports__useLocales = __webpack_exports__.useLocales; export { __webpack_exports__Context as Context, __webpack_exports__TTag as TTag, __webpack_exports___ as _, __webpack_exports__addLocale as addLocale, __webpack_exports__c as c, __webpack_exports__gettext as gettext, __webpack_exports__jt as jt, __webpack_exports__msgid as msgid, __webpack_exports__ngettext as ngettext, __webpack_exports__setDedent as setDedent, __webpack_exports__setDefaultLang as setDefaultLang, __webpack_exports__t as t, __webpack_exports__useLocale as useLocale, __webpack_exports__useLocales as useLocales };