gant-core 0.1.52 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.prettierrc.json +10 -0
  2. package/lib/cli/config/defineConfig.js +2 -0
  3. package/lib/cli/config/index.js +2 -0
  4. package/lib/cli/copyfiles/index.js +2 -0
  5. package/lib/cli/create/config/index.js +10 -0
  6. package/lib/cli/create/index.js +2 -0
  7. package/lib/cli/create/module/index.js +10 -0
  8. package/lib/cli/i18n/index.js +9 -0
  9. package/lib/cli/i18n/utils.js +2 -0
  10. package/lib/cli/index.js +1 -90275
  11. package/lib/cli/ms/index.js +23 -0
  12. package/lib/cli/msmain.js +65 -0
  13. package/lib/cli/routes/index.js +2 -0
  14. package/lib/cli/template/msentry.txt +5 -0
  15. package/lib/cli/template/tsconfig.react.template.json +1 -1
  16. package/lib/cli/template/tsconfig.vue.template.json +1 -1
  17. package/lib/cli/tsconfig/index.js +2 -0
  18. package/lib/cli/utils/getJavascriptfile.js +10 -0
  19. package/lib/cli/utils/index.js +2 -0
  20. package/lib/cli/webpack/Webpack.js +2 -0
  21. package/lib/cli/webpack/config/analyzer.config.js +2 -0
  22. package/lib/cli/webpack/config/cssRules.js +2 -0
  23. package/lib/cli/webpack/config/default.config.js +2 -0
  24. package/lib/cli/webpack/config/development.config.js +2 -0
  25. package/lib/cli/webpack/config/index.js +2 -0
  26. package/lib/cli/webpack/config/production.config.js +14 -0
  27. package/lib/cli/webpack/plugins/copy.js +2 -0
  28. package/lib/cli/webpack/plugins/index.js +2 -0
  29. package/lib/core/cache/index.js +2 -0
  30. package/lib/core/cache/index.js.map +1 -0
  31. package/lib/core/event/index.js +2 -0
  32. package/lib/core/event/index.js.map +1 -0
  33. package/lib/core/i18n/index.js +2 -0
  34. package/lib/core/i18n/index.js.map +1 -0
  35. package/lib/core/index.js +2 -0
  36. package/lib/core/index.js.map +1 -0
  37. package/lib/core/microservices/index.js +2 -0
  38. package/lib/core/microservices/index.js.map +1 -0
  39. package/lib/core/request/index.js +2 -0
  40. package/lib/core/request/index.js.map +1 -0
  41. package/lib/core/store/index.js +2 -0
  42. package/lib/core/store/index.js.map +1 -0
  43. package/lib/core/theme/index.js +2 -0
  44. package/lib/core/theme/index.js.map +1 -0
  45. package/lib/core/utils/index.js +2 -0
  46. package/lib/core/utils/index.js.map +1 -0
  47. package/lib/{index.d.ts → types/index.d.ts} +25 -10
  48. package/package.json +7 -4
  49. package/rollup.config.js +31 -14
  50. package/lib/cli/index.js.map +0 -1
  51. package/lib/index.js +0 -6423
  52. package/lib/index.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ "use strict";var o=require("../../utils/index.js");exports.CopyFolderPlugin=class{options;constructor(o){this.options=o}apply(t){t.hooks.afterEmit.tap("CopyFolderPlugin",(()=>{this.options?.patterns?.map((t=>{o.copyFolder(t.from,t.to)}))}))}};
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ "use strict";require("fs"),require("path"),require("prettier"),require("esbuild"),require("../../utils/getJavascriptfile.js");
@@ -0,0 +1,2 @@
1
+ class t{constructor(t){this.cache[t]={}}cache={};get(t){return this.cache[t]}set(t,s){return this.cache[t]=s,this.cache[t]}}class s{static instance=null;store={};static getInstance(){return this.instance||(this.instance=new s),this.instance}namespace(s){return this.store[s]=new t(s),this.store[s]}}const e=s.getInstance();export{e};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/core/cache/index.ts"],"sourcesContent":["// 缓存类\nclass CacheItem {\n constructor(namespace: string) {\n this.cache[namespace] = {};\n }\n private cache: { [key: string]: any } = {};\n get(key: string) {\n return this.cache[key];\n }\n set(key: string, value: any) {\n this.cache[key] = value;\n return this.cache[key];\n }\n}\n\nclass proxyCacheConstructor {\n private static instance: proxyCacheConstructor | null = null;\n private store: { [key: string]: CacheItem } = {};\n public static getInstance() {\n if (!this.instance) {\n this.instance = new proxyCacheConstructor();\n }\n return this.instance;\n }\n public namespace(namespace: string) {\n this.store[namespace] = new CacheItem(namespace);\n return this.store[namespace];\n }\n}\n\nconst expireCache = proxyCacheConstructor.getInstance();\n\nexport interface CacheD<T> {\n (key: string, value?: T): void | T;\n get: (key: string) => T;\n set: (key: string, value: T) => void;\n}\n\nexport default expireCache;\n"],"names":["CacheItem","constructor","namespace","this","cache","get","key","set","value","proxyCacheConstructor","static","store","getInstance","instance","expireCache"],"mappings":"AACA,MAAMA,EACJ,WAAAC,CAAYC,GACVC,KAAKC,MAAMF,GAAa,EACzB,CACOE,MAAgC,CAAA,EACxC,GAAAC,CAAIC,GACF,OAAOH,KAAKC,MAAME,EACnB,CACD,GAAAC,CAAID,EAAaE,GAEf,OADAL,KAAKC,MAAME,GAAOE,EACXL,KAAKC,MAAME,EACnB,EAGH,MAAMG,EACIC,gBAAgD,KAChDC,MAAsC,CAAA,EACvC,kBAAOC,GAIZ,OAHKT,KAAKU,WACRV,KAAKU,SAAW,IAAIJ,GAEfN,KAAKU,QACb,CACM,SAAAX,CAAUA,GAEf,OADAC,KAAKQ,MAAMT,GAAa,IAAIF,EAAUE,GAC/BC,KAAKQ,MAAMT,EACnB,EAGH,MAAMY,EAAcL,EAAsBG"}
@@ -0,0 +1,2 @@
1
+ import t from"mitt";const o=t();export{o as e};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/core/event/index.ts"],"sourcesContent":["import mitt from 'mitt';\n\nconst emitter = mitt();\n\nexport default emitter;\n"],"names":["emitter","mitt"],"mappings":"oBAEA,MAAMA,EAAUC"}
@@ -0,0 +1,2 @@
1
+ import{get as t}from"lodash-es";import{r as e}from"../request/index.js";const s={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){console&&console[t]&&console[t].apply(console,e)}};class i{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.init(t,e)}init(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.prefix=e.prefix||"i18next:",this.logger=t||s,this.options=e,this.debug=e.debug}log(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return this.forward(e,"log","",!0)}warn(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return this.forward(e,"warn","",!0)}error(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return this.forward(e,"error","")}deprecate(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(t,e,s,i){return i&&!this.debug?null:("string"==typeof t[0]&&(t[0]=`${s}${this.prefix} ${t[0]}`),this.logger[e](t))}create(t){return new i(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return(t=t||this.options).prefix=t.prefix||this.prefix,new i(this.logger,t)}}var n=new i;class o{constructor(){this.observers={}}on(t,e){return t.split(" ").forEach((t=>{this.observers[t]||(this.observers[t]=new Map);const s=this.observers[t].get(e)||0;this.observers[t].set(e,s+1)})),this}off(t,e){this.observers[t]&&(e?this.observers[t].delete(e):delete this.observers[t])}emit(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];if(this.observers[t]){Array.from(this.observers[t].entries()).forEach((t=>{let[e,i]=t;for(let t=0;t<i;t++)e(...s)}))}if(this.observers["*"]){Array.from(this.observers["*"].entries()).forEach((e=>{let[i,n]=e;for(let e=0;e<n;e++)i.apply(i,[t,...s])}))}}}function r(){let t,e;const s=new Promise(((s,i)=>{t=s,e=i}));return s.resolve=t,s.reject=e,s}function a(t){return null==t?"":""+t}const l=/###/g;function u(t,e,s){function i(t){return t&&t.indexOf("###")>-1?t.replace(l,"."):t}function n(){return!t||"string"==typeof t}const o="string"!=typeof e?e:e.split(".");let r=0;for(;r<o.length-1;){if(n())return{};const e=i(o[r]);!t[e]&&s&&(t[e]=new s),t=Object.prototype.hasOwnProperty.call(t,e)?t[e]:{},++r}return n()?{}:{obj:t,k:i(o[r])}}function h(t,e,s){const{obj:i,k:n}=u(t,e,Object);if(void 0!==i||1===e.length)return void(i[n]=s);let o=e[e.length-1],r=e.slice(0,e.length-1),a=u(t,r,Object);for(;void 0===a.obj&&r.length;)o=`${r[r.length-1]}.${o}`,r=r.slice(0,r.length-1),a=u(t,r,Object),a&&a.obj&&void 0!==a.obj[`${a.k}.${o}`]&&(a.obj=void 0);a.obj[`${a.k}.${o}`]=s}function p(t,e){const{obj:s,k:i}=u(t,e);if(s)return s[i]}function c(t,e,s){for(const i in e)"__proto__"!==i&&"constructor"!==i&&(i in t?"string"==typeof t[i]||t[i]instanceof String||"string"==typeof e[i]||e[i]instanceof String?s&&(t[i]=e[i]):c(t[i],e[i],s):t[i]=e[i]);return t}function g(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var d={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};function f(t){return"string"==typeof t?t.replace(/[&<>"'\/]/g,(t=>d[t])):t}const m=[" ",",","?","!",";"],y=new class{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const e=this.regExpMap.get(t);if(void 0!==e)return e;const s=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,s),this.regExpQueue.push(t),s}}(20);function v(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(!t)return;if(t[e])return t[e];const i=e.split(s);let n=t;for(let t=0;t<i.length;){if(!n||"object"!=typeof n)return;let e,o="";for(let r=t;r<i.length;++r)if(r!==t&&(o+=s),o+=i[r],e=n[o],void 0!==e){if(["string","number","boolean"].indexOf(typeof e)>-1&&r<i.length-1)continue;t+=r-t+1;break}n=e}return n}function b(t){return t&&t.indexOf("_")>0?t.replace("_","-"):t}class x extends o{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=t||{},this.options=e,void 0===this.options.keySeparator&&(this.options.keySeparator="."),void 0===this.options.ignoreJSONStructure&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){const e=this.options.ns.indexOf(t);e>-1&&this.options.ns.splice(e,1)}getResource(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const n=void 0!==i.keySeparator?i.keySeparator:this.options.keySeparator,o=void 0!==i.ignoreJSONStructure?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let r;t.indexOf(".")>-1?r=t.split("."):(r=[t,e],s&&(Array.isArray(s)?r.push(...s):"string"==typeof s&&n?r.push(...s.split(n)):r.push(s)));const a=p(this.data,r);return!a&&!e&&!s&&t.indexOf(".")>-1&&(t=r[0],e=r[1],s=r.slice(2).join(".")),a||!o||"string"!=typeof s?a:v(this.data&&this.data[t]&&this.data[t][e],s,n)}addResource(t,e,s,i){let n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1};const o=void 0!==n.keySeparator?n.keySeparator:this.options.keySeparator;let r=[t,e];s&&(r=r.concat(o?s.split(o):s)),t.indexOf(".")>-1&&(r=t.split("."),i=e,e=r[1]),this.addNamespaces(e),h(this.data,r,i),n.silent||this.emit("added",t,e,s,i)}addResources(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(const i in s)"string"!=typeof s[i]&&"[object Array]"!==Object.prototype.toString.apply(s[i])||this.addResource(t,e,i,s[i],{silent:!0});i.silent||this.emit("added",t,e,s)}addResourceBundle(t,e,s,i,n){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1,skipCopy:!1},r=[t,e];t.indexOf(".")>-1&&(r=t.split("."),i=s,s=e,e=r[1]),this.addNamespaces(e);let a=p(this.data,r)||{};o.skipCopy||(s=JSON.parse(JSON.stringify(s))),i?c(a,s,n):a={...a,...s},h(this.data,r,a),o.silent||this.emit("added",t,e,s)}removeResourceBundle(t,e){this.hasResourceBundle(t,e)&&delete this.data[t][e],this.removeNamespaces(e),this.emit("removed",t,e)}hasResourceBundle(t,e){return void 0!==this.getResource(t,e)}getResourceBundle(t,e){return e||(e=this.options.defaultNS),"v1"===this.options.compatibilityAPI?{...this.getResource(t,e)}:this.getResource(t,e)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const e=this.getDataByLanguage(t);return!!(e&&Object.keys(e)||[]).find((t=>e[t]&&Object.keys(e[t]).length>0))}toJSON(){return this.data}}var S={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,s,i,n){return t.forEach((t=>{this.processors[t]&&(e=this.processors[t].process(e,s,i,n))})),e}};const k={};class O extends o{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var s,i;super(),s=t,i=this,["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach((t=>{s[t]&&(i[t]=s[t])})),this.options=e,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=n.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}};if(null==t)return!1;const s=this.resolve(t,e);return s&&void 0!==s.res}extractFromKey(t,e){let s=void 0!==e.nsSeparator?e.nsSeparator:this.options.nsSeparator;void 0===s&&(s=":");const i=void 0!==e.keySeparator?e.keySeparator:this.options.keySeparator;let n=e.ns||this.options.defaultNS||[];const o=s&&t.indexOf(s)>-1,r=!(this.options.userDefinedKeySeparator||e.keySeparator||this.options.userDefinedNsSeparator||e.nsSeparator||function(t,e,s){e=e||"",s=s||"";const i=m.filter((t=>e.indexOf(t)<0&&s.indexOf(t)<0));if(0===i.length)return!0;const n=y.getRegExp(`(${i.map((t=>"?"===t?"\\?":t)).join("|")})`);let o=!n.test(t);if(!o){const e=t.indexOf(s);e>0&&!n.test(t.substring(0,e))&&(o=!0)}return o}(t,s,i));if(o&&!r){const e=t.match(this.interpolator.nestingRegexp);if(e&&e.length>0)return{key:t,namespaces:n};const o=t.split(s);(s!==i||s===i&&this.options.ns.indexOf(o[0])>-1)&&(n=o.shift()),t=o.join(i)}return"string"==typeof n&&(n=[n]),{key:t,namespaces:n}}translate(t,e,s){if("object"!=typeof e&&this.options.overloadTranslationOptionHandler&&(e=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof e&&(e={...e}),e||(e={}),null==t)return"";Array.isArray(t)||(t=[String(t)]);const i=void 0!==e.returnDetails?e.returnDetails:this.options.returnDetails,n=void 0!==e.keySeparator?e.keySeparator:this.options.keySeparator,{key:o,namespaces:r}=this.extractFromKey(t[t.length-1],e),a=r[r.length-1],l=e.lng||this.language,u=e.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(l&&"cimode"===l.toLowerCase()){if(u){const t=e.nsSeparator||this.options.nsSeparator;return i?{res:`${a}${t}${o}`,usedKey:o,exactUsedKey:o,usedLng:l,usedNS:a,usedParams:this.getUsedParamsDetails(e)}:`${a}${t}${o}`}return i?{res:o,usedKey:o,exactUsedKey:o,usedLng:l,usedNS:a,usedParams:this.getUsedParamsDetails(e)}:o}const h=this.resolve(t,e);let p=h&&h.res;const c=h&&h.usedKey||o,g=h&&h.exactUsedKey||o,d=Object.prototype.toString.apply(p),f=void 0!==e.joinArrays?e.joinArrays:this.options.joinArrays,m=!this.i18nFormat||this.i18nFormat.handleAsObject;if(m&&p&&("string"!=typeof p&&"boolean"!=typeof p&&"number"!=typeof p)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(d)<0&&("string"!=typeof f||"[object Array]"!==d)){if(!e.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const t=this.options.returnedObjectHandler?this.options.returnedObjectHandler(c,p,{...e,ns:r}):`key '${o} (${this.language})' returned an object instead of string.`;return i?(h.res=t,h.usedParams=this.getUsedParamsDetails(e),h):t}if(n){const t="[object Array]"===d,s=t?[]:{},i=t?g:c;for(const t in p)if(Object.prototype.hasOwnProperty.call(p,t)){const o=`${i}${n}${t}`;s[t]=this.translate(o,{...e,joinArrays:!1,ns:r}),s[t]===o&&(s[t]=p[t])}p=s}}else if(m&&"string"==typeof f&&"[object Array]"===d)p=p.join(f),p&&(p=this.extendTranslation(p,t,e,s));else{let i=!1,r=!1;const u=void 0!==e.count&&"string"!=typeof e.count,c=O.hasDefaultValue(e),g=u?this.pluralResolver.getSuffix(l,e.count,e):"",d=e.ordinal&&u?this.pluralResolver.getSuffix(l,e.count,{ordinal:!1}):"",f=u&&!e.ordinal&&0===e.count&&this.pluralResolver.shouldUseIntlApi(),m=f&&e[`defaultValue${this.options.pluralSeparator}zero`]||e[`defaultValue${g}`]||e[`defaultValue${d}`]||e.defaultValue;!this.isValidLookup(p)&&c&&(i=!0,p=m),this.isValidLookup(p)||(r=!0,p=o);const y=(e.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&r?void 0:p,v=c&&m!==p&&this.options.updateMissing;if(r||i||v){if(this.logger.log(v?"updateKey":"missingKey",l,a,o,v?m:p),n){const t=this.resolve(o,{...e,keySeparator:!1});t&&t.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let t=[];const s=this.languageUtils.getFallbackCodes(this.options.fallbackLng,e.lng||this.language);if("fallback"===this.options.saveMissingTo&&s&&s[0])for(let e=0;e<s.length;e++)t.push(s[e]);else"all"===this.options.saveMissingTo?t=this.languageUtils.toResolveHierarchy(e.lng||this.language):t.push(e.lng||this.language);const i=(t,s,i)=>{const n=c&&i!==p?i:y;this.options.missingKeyHandler?this.options.missingKeyHandler(t,a,s,n,v,e):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(t,a,s,n,v,e),this.emit("missingKey",t,a,s,p)};this.options.saveMissing&&(this.options.saveMissingPlurals&&u?t.forEach((t=>{const s=this.pluralResolver.getSuffixes(t,e);f&&e[`defaultValue${this.options.pluralSeparator}zero`]&&s.indexOf(`${this.options.pluralSeparator}zero`)<0&&s.push(`${this.options.pluralSeparator}zero`),s.forEach((s=>{i([t],o+s,e[`defaultValue${s}`]||m)}))})):i(t,o,m))}p=this.extendTranslation(p,t,e,h,s),r&&p===o&&this.options.appendNamespaceToMissingKey&&(p=`${a}:${o}`),(r||i)&&this.options.parseMissingKeyHandler&&(p="v1"!==this.options.compatibilityAPI?this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${a}:${o}`:o,i?p:void 0):this.options.parseMissingKeyHandler(p))}return i?(h.res=p,h.usedParams=this.getUsedParamsDetails(e),h):p}extendTranslation(t,e,s,i,n){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...s},s.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!s.skipInterpolation){s.interpolation&&this.interpolator.init({...s,interpolation:{...this.options.interpolation,...s.interpolation}});const r="string"==typeof t&&(s&&s.interpolation&&void 0!==s.interpolation.skipOnVariables?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let a;if(r){const e=t.match(this.interpolator.nestingRegexp);a=e&&e.length}let l=s.replace&&"string"!=typeof s.replace?s.replace:s;if(this.options.interpolation.defaultVariables&&(l={...this.options.interpolation.defaultVariables,...l}),t=this.interpolator.interpolate(t,l,s.lng||this.language,s),r){const e=t.match(this.interpolator.nestingRegexp);a<(e&&e.length)&&(s.nest=!1)}!s.lng&&"v1"!==this.options.compatibilityAPI&&i&&i.res&&(s.lng=i.usedLng),!1!==s.nest&&(t=this.interpolator.nest(t,(function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];return n&&n[0]===i[0]&&!s.context?(o.logger.warn(`It seems you are nesting recursively key: ${i[0]} in key: ${e[0]}`),null):o.translate(...i,e)}),s)),s.interpolation&&this.interpolator.reset()}const r=s.postProcess||this.options.postProcess,a="string"==typeof r?[r]:r;return null!=t&&a&&a.length&&!1!==s.applyPostProcessor&&(t=S.handle(a,t,e,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(s)},...s}:s,this)),t}resolve(t){let e,s,i,n,o,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof t&&(t=[t]),t.forEach((t=>{if(this.isValidLookup(e))return;const a=this.extractFromKey(t,r),l=a.key;s=l;let u=a.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const h=void 0!==r.count&&"string"!=typeof r.count,p=h&&!r.ordinal&&0===r.count&&this.pluralResolver.shouldUseIntlApi(),c=void 0!==r.context&&("string"==typeof r.context||"number"==typeof r.context)&&""!==r.context,g=r.lngs?r.lngs:this.languageUtils.toResolveHierarchy(r.lng||this.language,r.fallbackLng);u.forEach((t=>{this.isValidLookup(e)||(o=t,!k[`${g[0]}-${t}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(o)&&(k[`${g[0]}-${t}`]=!0,this.logger.warn(`key "${s}" for languages "${g.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach((s=>{if(this.isValidLookup(e))return;n=s;const o=[l];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(o,l,s,t,r);else{let t;h&&(t=this.pluralResolver.getSuffix(s,r.count,r));const e=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(h&&(o.push(l+t),r.ordinal&&0===t.indexOf(i)&&o.push(l+t.replace(i,this.options.pluralSeparator)),p&&o.push(l+e)),c){const s=`${l}${this.options.contextSeparator}${r.context}`;o.push(s),h&&(o.push(s+t),r.ordinal&&0===t.indexOf(i)&&o.push(s+t.replace(i,this.options.pluralSeparator)),p&&o.push(s+e))}}let a;for(;a=o.pop();)this.isValidLookup(e)||(i=a,e=this.getResource(s,t,a,r))})))}))})),{res:e,usedKey:s,exactUsedKey:i,usedLng:n,usedNS:o}}isValidLookup(t){return!(void 0===t||!this.options.returnNull&&null===t||!this.options.returnEmptyString&&""===t)}getResource(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(t,e,s,i):this.resourceStore.getResource(t,e,s,i)}getUsedParamsDetails(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],s=t.replace&&"string"!=typeof t.replace;let i=s?t.replace:t;if(s&&void 0!==t.count&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!s){i={...i};for(const t of e)delete i[t]}return i}static hasDefaultValue(t){const e="defaultValue";for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)&&e===s.substring(0,12)&&void 0!==t[s])return!0;return!1}}function w(t){return t.charAt(0).toUpperCase()+t.slice(1)}class L{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=n.create("languageUtils")}getScriptPartFromCode(t){if(!(t=b(t))||t.indexOf("-")<0)return null;const e=t.split("-");return 2===e.length?null:(e.pop(),"x"===e[e.length-1].toLowerCase()?null:this.formatLanguageCode(e.join("-")))}getLanguagePartFromCode(t){if(!(t=b(t))||t.indexOf("-")<0)return t;const e=t.split("-");return this.formatLanguageCode(e[0])}formatLanguageCode(t){if("string"==typeof t&&t.indexOf("-")>-1){const e=["hans","hant","latn","cyrl","cans","mong","arab"];let s=t.split("-");return this.options.lowerCaseLng?s=s.map((t=>t.toLowerCase())):2===s.length?(s[0]=s[0].toLowerCase(),s[1]=s[1].toUpperCase(),e.indexOf(s[1].toLowerCase())>-1&&(s[1]=w(s[1].toLowerCase()))):3===s.length&&(s[0]=s[0].toLowerCase(),2===s[1].length&&(s[1]=s[1].toUpperCase()),"sgn"!==s[0]&&2===s[2].length&&(s[2]=s[2].toUpperCase()),e.indexOf(s[1].toLowerCase())>-1&&(s[1]=w(s[1].toLowerCase())),e.indexOf(s[2].toLowerCase())>-1&&(s[2]=w(s[2].toLowerCase()))),s.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let e;return t.forEach((t=>{if(e)return;const s=this.formatLanguageCode(t);this.options.supportedLngs&&!this.isSupportedCode(s)||(e=s)})),!e&&this.options.supportedLngs&&t.forEach((t=>{if(e)return;const s=this.getLanguagePartFromCode(t);if(this.isSupportedCode(s))return e=s;e=this.options.supportedLngs.find((t=>t===s?t:t.indexOf("-")<0&&s.indexOf("-")<0?void 0:t.indexOf("-")>0&&s.indexOf("-")<0&&t.substring(0,t.indexOf("-"))===s||0===t.indexOf(s)&&s.length>1?t:void 0))})),e||(e=this.getFallbackCodes(this.options.fallbackLng)[0]),e}getFallbackCodes(t,e){if(!t)return[];if("function"==typeof t&&(t=t(e)),"string"==typeof t&&(t=[t]),"[object Array]"===Object.prototype.toString.apply(t))return t;if(!e)return t.default||[];let s=t[e];return s||(s=t[this.getScriptPartFromCode(e)]),s||(s=t[this.formatLanguageCode(e)]),s||(s=t[this.getLanguagePartFromCode(e)]),s||(s=t.default),s||[]}toResolveHierarchy(t,e){const s=this.getFallbackCodes(e||this.options.fallbackLng||[],t),i=[],n=t=>{t&&(this.isSupportedCode(t)?i.push(t):this.logger.warn(`rejecting language code not found in supportedLngs: ${t}`))};return"string"==typeof t&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?("languageOnly"!==this.options.load&&n(this.formatLanguageCode(t)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&n(this.getScriptPartFromCode(t)),"currentOnly"!==this.options.load&&n(this.getLanguagePartFromCode(t))):"string"==typeof t&&n(this.formatLanguageCode(t)),s.forEach((t=>{i.indexOf(t)<0&&n(this.formatLanguageCode(t))})),i}}let N=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],$={1:function(t){return Number(t>1)},2:function(t){return Number(1!=t)},3:function(t){return 0},4:function(t){return Number(t%10==1&&t%100!=11?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2)},5:function(t){return Number(0==t?0:1==t?1:2==t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5)},6:function(t){return Number(1==t?0:t>=2&&t<=4?1:2)},7:function(t){return Number(1==t?0:t%10>=2&&t%10<=4&&(t%100<10||t%100>=20)?1:2)},8:function(t){return Number(1==t?0:2==t?1:8!=t&&11!=t?2:3)},9:function(t){return Number(t>=2)},10:function(t){return Number(1==t?0:2==t?1:t<7?2:t<11?3:4)},11:function(t){return Number(1==t||11==t?0:2==t||12==t?1:t>2&&t<20?2:3)},12:function(t){return Number(t%10!=1||t%100==11)},13:function(t){return Number(0!==t)},14:function(t){return Number(1==t?0:2==t?1:3==t?2:3)},15:function(t){return Number(t%10==1&&t%100!=11?0:t%10>=2&&(t%100<10||t%100>=20)?1:2)},16:function(t){return Number(t%10==1&&t%100!=11?0:0!==t?1:2)},17:function(t){return Number(1==t||t%10==1&&t%100!=11?0:1)},18:function(t){return Number(0==t?0:1==t?1:2)},19:function(t){return Number(1==t?0:0==t||t%100>1&&t%100<11?1:t%100>10&&t%100<20?2:3)},20:function(t){return Number(1==t?0:0==t||t%100>0&&t%100<20?1:2)},21:function(t){return Number(t%100==1?1:t%100==2?2:t%100==3||t%100==4?3:0)},22:function(t){return Number(1==t?0:2==t?1:(t<0||t>10)&&t%10==0?2:3)}};const R=["v1","v2","v3"],C=["v4"],P={zero:0,one:1,two:2,few:3,many:4,other:5};class j{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.languageUtils=t,this.options=e,this.logger=n.create("pluralResolver"),this.options.compatibilityJSON&&!C.includes(this.options.compatibilityJSON)||"undefined"!=typeof Intl&&Intl.PluralRules||(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=function(){const t={};return N.forEach((e=>{e.lngs.forEach((s=>{t[s]={numbers:e.nr,plurals:$[e.fc]}}))})),t}()}addRule(t,e){this.rules[t]=e}getRule(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(b("dev"===t?"en":t),{type:e.ordinal?"ordinal":"cardinal"})}catch(t){return}return this.rules[t]||this.rules[this.languageUtils.getLanguagePartFromCode(t)]}needsPlural(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=this.getRule(t,e);return this.shouldUseIntlApi()?s&&s.resolvedOptions().pluralCategories.length>1:s&&s.numbers.length>1}getPluralFormsOfKey(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(t,s).map((t=>`${e}${t}`))}getSuffixes(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const s=this.getRule(t,e);return s?this.shouldUseIntlApi()?s.resolvedOptions().pluralCategories.sort(((t,e)=>P[t]-P[e])).map((t=>`${this.options.prepend}${e.ordinal?`ordinal${this.options.prepend}`:""}${t}`)):s.numbers.map((s=>this.getSuffix(t,s,e))):[]}getSuffix(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=this.getRule(t,s);return i?this.shouldUseIntlApi()?`${this.options.prepend}${s.ordinal?`ordinal${this.options.prepend}`:""}${i.select(e)}`:this.getSuffixRetroCompatible(i,e):(this.logger.warn(`no plural rule found for: ${t}`),"")}getSuffixRetroCompatible(t,e){const s=t.noAbs?t.plurals(e):t.plurals(Math.abs(e));let i=t.numbers[s];this.options.simplifyPluralSuffix&&2===t.numbers.length&&1===t.numbers[0]&&(2===i?i="plural":1===i&&(i=""));const n=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return"v1"===this.options.compatibilityJSON?1===i?"":"number"==typeof i?`_plural_${i.toString()}`:n():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===t.numbers.length&&1===t.numbers[0]?n():this.options.prepend&&s.toString()?this.options.prepend+s.toString():s.toString()}shouldUseIntlApi(){return!R.includes(this.options.compatibilityJSON)}}function E(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".",n=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=function(t,e,s){const i=p(t,s);return void 0!==i?i:p(e,s)}(t,e,s);return!o&&n&&"string"==typeof s&&(o=v(t,s,i),void 0===o&&(o=v(e,s,i))),o}class I{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.logger=n.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||(t=>t),this.init(t)}init(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.interpolation||(t.interpolation={escapeValue:!0});const e=t.interpolation;this.escape=void 0!==e.escape?e.escape:f,this.escapeValue=void 0===e.escapeValue||e.escapeValue,this.useRawValueToEscape=void 0!==e.useRawValueToEscape&&e.useRawValueToEscape,this.prefix=e.prefix?g(e.prefix):e.prefixEscaped||"{{",this.suffix=e.suffix?g(e.suffix):e.suffixEscaped||"}}",this.formatSeparator=e.formatSeparator?e.formatSeparator:e.formatSeparator||",",this.unescapePrefix=e.unescapeSuffix?"":e.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":e.unescapeSuffix||"",this.nestingPrefix=e.nestingPrefix?g(e.nestingPrefix):e.nestingPrefixEscaped||g("$t("),this.nestingSuffix=e.nestingSuffix?g(e.nestingSuffix):e.nestingSuffixEscaped||g(")"),this.nestingOptionsSeparator=e.nestingOptionsSeparator?e.nestingOptionsSeparator:e.nestingOptionsSeparator||",",this.maxReplaces=e.maxReplaces?e.maxReplaces:1e3,this.alwaysFormat=void 0!==e.alwaysFormat&&e.alwaysFormat,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(t,e)=>t&&t.source===e?(t.lastIndex=0,t):new RegExp(e,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(t,e,s,i){let n,o,r;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function u(t){return t.replace(/\$/g,"$$$$")}const h=t=>{if(t.indexOf(this.formatSeparator)<0){const n=E(e,l,t,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(n,void 0,s,{...i,...e,interpolationkey:t}):n}const n=t.split(this.formatSeparator),o=n.shift().trim(),r=n.join(this.formatSeparator).trim();return this.format(E(e,l,o,this.options.keySeparator,this.options.ignoreJSONStructure),r,s,{...i,...e,interpolationkey:o})};this.resetRegExp();const p=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,c=i&&i.interpolation&&void 0!==i.interpolation.skipOnVariables?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:t=>u(t)},{regex:this.regexp,safeValue:t=>this.escapeValue?u(this.escape(t)):u(t)}].forEach((e=>{for(r=0;n=e.regex.exec(t);){const s=n[1].trim();if(o=h(s),void 0===o)if("function"==typeof p){const e=p(t,n,i);o="string"==typeof e?e:""}else if(i&&Object.prototype.hasOwnProperty.call(i,s))o="";else{if(c){o=n[0];continue}this.logger.warn(`missed to pass in variable ${s} for interpolating ${t}`),o=""}else"string"==typeof o||this.useRawValueToEscape||(o=a(o));const l=e.safeValue(o);if(t=t.replace(n[0],l),c?(e.regex.lastIndex+=o.length,e.regex.lastIndex-=n[0].length):e.regex.lastIndex=0,r++,r>=this.maxReplaces)break}})),t}nest(t,e){let s,i,n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};function r(t,e){const s=this.nestingOptionsSeparator;if(t.indexOf(s)<0)return t;const i=t.split(new RegExp(`${s}[ ]*{`));let o=`{${i[1]}`;t=i[0],o=this.interpolate(o,n);const r=o.match(/'/g),a=o.match(/"/g);(r&&r.length%2==0&&!a||a.length%2!=0)&&(o=o.replace(/'/g,'"'));try{n=JSON.parse(o),e&&(n={...e,...n})}catch(e){return this.logger.warn(`failed parsing options string in nesting for key ${t}`,e),`${t}${s}${o}`}return n.defaultValue&&n.defaultValue.indexOf(this.prefix)>-1&&delete n.defaultValue,t}for(;s=this.nestingRegexp.exec(t);){let l=[];n={...o},n=n.replace&&"string"!=typeof n.replace?n.replace:n,n.applyPostProcessor=!1,delete n.defaultValue;let u=!1;if(-1!==s[0].indexOf(this.formatSeparator)&&!/{.*}/.test(s[1])){const t=s[1].split(this.formatSeparator).map((t=>t.trim()));s[1]=t.shift(),l=t,u=!0}if(i=e(r.call(this,s[1].trim(),n),n),i&&s[0]===t&&"string"!=typeof i)return i;"string"!=typeof i&&(i=a(i)),i||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${t}`),i=""),u&&(i=l.reduce(((t,e)=>this.format(t,e,o.lng,{...o,interpolationkey:s[1].trim()})),i.trim())),t=t.replace(s[0],i),this.regexp.lastIndex=0}return t}}function F(t){const e={};return function(s,i,n){const o=i+JSON.stringify(n);let r=e[o];return r||(r=t(b(i),n),e[o]=r),r(s)}}class V{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.logger=n.create("formatter"),this.options=t,this.formats={number:F(((t,e)=>{const s=new Intl.NumberFormat(t,{...e});return t=>s.format(t)})),currency:F(((t,e)=>{const s=new Intl.NumberFormat(t,{...e,style:"currency"});return t=>s.format(t)})),datetime:F(((t,e)=>{const s=new Intl.DateTimeFormat(t,{...e});return t=>s.format(t)})),relativetime:F(((t,e)=>{const s=new Intl.RelativeTimeFormat(t,{...e});return t=>s.format(t,e.range||"day")})),list:F(((t,e)=>{const s=new Intl.ListFormat(t,{...e});return t=>s.format(t)}))},this.init(t)}init(t){const e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=e.formatSeparator?e.formatSeparator:e.formatSeparator||","}add(t,e){this.formats[t.toLowerCase().trim()]=e}addCached(t,e){this.formats[t.toLowerCase().trim()]=F(e)}format(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return e.split(this.formatSeparator).reduce(((t,e)=>{const{formatName:n,formatOptions:o}=function(t){let e=t.toLowerCase().trim();const s={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const n=i[1].substring(0,i[1].length-1);"currency"===e&&n.indexOf(":")<0?s.currency||(s.currency=n.trim()):"relativetime"===e&&n.indexOf(":")<0?s.range||(s.range=n.trim()):n.split(";").forEach((t=>{if(!t)return;const[e,...i]=t.split(":"),n=i.join(":").trim().replace(/^'+|'+$/g,"");s[e.trim()]||(s[e.trim()]=n),"false"===n&&(s[e.trim()]=!1),"true"===n&&(s[e.trim()]=!0),isNaN(n)||(s[e.trim()]=parseInt(n,10))}))}return{formatName:e,formatOptions:s}}(e);if(this.formats[n]){let e=t;try{const r=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},a=r.locale||r.lng||i.locale||i.lng||s;e=this.formats[n](t,a,{...o,...i,...r})}catch(t){this.logger.warn(t)}return e}return this.logger.warn(`there was no format function for ${n}`),t}),t)}}class A extends o{constructor(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};super(),this.backend=t,this.store=e,this.services=s,this.languageUtils=s.languageUtils,this.options=i,this.logger=n.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(s,i.backend,i)}queueLoad(t,e,s,i){const n={},o={},r={},a={};return t.forEach((t=>{let i=!0;e.forEach((e=>{const r=`${t}|${e}`;!s.reload&&this.store.hasResourceBundle(t,e)?this.state[r]=2:this.state[r]<0||(1===this.state[r]?void 0===o[r]&&(o[r]=!0):(this.state[r]=1,i=!1,void 0===o[r]&&(o[r]=!0),void 0===n[r]&&(n[r]=!0),void 0===a[e]&&(a[e]=!0)))})),i||(r[t]=!0)})),(Object.keys(n).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(n),pending:Object.keys(o),toLoadLanguages:Object.keys(r),toLoadNamespaces:Object.keys(a)}}loaded(t,e,s){const i=t.split("|"),n=i[0],o=i[1];e&&this.emit("failedLoading",n,o,e),s&&this.store.addResourceBundle(n,o,s,void 0,void 0,{skipCopy:!0}),this.state[t]=e?-1:2;const r={};this.queue.forEach((s=>{!function(t,e,s,i){const{obj:n,k:o}=u(t,e,Object);n[o]=n[o]||[],i&&(n[o]=n[o].concat(s)),i||n[o].push(s)}(s.loaded,[n],o),function(t,e){void 0!==t.pending[e]&&(delete t.pending[e],t.pendingCount--)}(s,t),e&&s.errors.push(e),0!==s.pendingCount||s.done||(Object.keys(s.loaded).forEach((t=>{r[t]||(r[t]={});const e=s.loaded[t];e.length&&e.forEach((e=>{void 0===r[t][e]&&(r[t][e]=!0)}))})),s.done=!0,s.errors.length?s.callback(s.errors):s.callback())})),this.emit("loaded",r),this.queue=this.queue.filter((t=>!t.done))}read(t,e,s){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:t,ns:e,fcName:s,tried:i,wait:n,callback:o});this.readingCalls++;const r=(r,a)=>{if(this.readingCalls--,this.waitingReads.length>0){const t=this.waitingReads.shift();this.read(t.lng,t.ns,t.fcName,t.tried,t.wait,t.callback)}r&&a&&i<this.maxRetries?setTimeout((()=>{this.read.call(this,t,e,s,i+1,2*n,o)}),n):o(r,a)},a=this.backend[s].bind(this.backend);if(2!==a.length)return a(t,e,r);try{const s=a(t,e);s&&"function"==typeof s.then?s.then((t=>r(null,t))).catch(r):r(null,s)}catch(t){r(t)}}prepareLoading(t,e){let s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();"string"==typeof t&&(t=this.languageUtils.toResolveHierarchy(t)),"string"==typeof e&&(e=[e]);const n=this.queueLoad(t,e,s,i);if(!n.toLoad.length)return n.pending.length||i(),null;n.toLoad.forEach((t=>{this.loadOne(t)}))}load(t,e,s){this.prepareLoading(t,e,{},s)}reload(t,e,s){this.prepareLoading(t,e,{reload:!0},s)}loadOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=t.split("|"),i=s[0],n=s[1];this.read(i,n,"read",void 0,void 0,((s,o)=>{s&&this.logger.warn(`${e}loading namespace ${n} for language ${i} failed`,s),!s&&o&&this.logger.log(`${e}loaded namespace ${n} for language ${i}`,o),this.loaded(t,s,o)}))}saveMissing(t,e,s,i,n){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(e))this.logger.warn(`did not save key "${s}" as the namespace "${e}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");else if(null!=s&&""!==s){if(this.backend&&this.backend.create){const a={...o,isUpdate:n},l=this.backend.create.bind(this.backend);if(l.length<6)try{let n;n=5===l.length?l(t,e,s,i,a):l(t,e,s,i),n&&"function"==typeof n.then?n.then((t=>r(null,t))).catch(r):r(null,n)}catch(t){r(t)}else l(t,e,s,i,r,a)}t&&t[0]&&this.store.addResource(t[0],e,s,i)}}}function D(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(t){let e={};if("object"==typeof t[1]&&(e=t[1]),"string"==typeof t[1]&&(e.defaultValue=t[1]),"string"==typeof t[2]&&(e.tDescription=t[2]),"object"==typeof t[2]||"object"==typeof t[3]){const s=t[3]||t[2];Object.keys(s).forEach((t=>{e[t]=s[t]}))}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function U(t){return"string"==typeof t.ns&&(t.ns=[t.ns]),"string"==typeof t.fallbackLng&&(t.fallbackLng=[t.fallbackLng]),"string"==typeof t.fallbackNS&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs&&t.supportedLngs.indexOf("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),t}function T(){}class K extends o{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;var s;if(super(),this.options=U(t),this.services={},this.logger=n,this.modules={external:[]},s=this,Object.getOwnPropertyNames(Object.getPrototypeOf(s)).forEach((t=>{"function"==typeof s[t]&&(s[t]=s[t].bind(s))})),e&&!this.isInitialized&&!t.isClone){if(!this.options.initImmediate)return this.init(t,e),this;setTimeout((()=>{this.init(t,e)}),0)}}init(){var t=this;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,"function"==typeof e&&(s=e,e={}),!e.defaultNS&&!1!==e.defaultNS&&e.ns&&("string"==typeof e.ns?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=D();function o(t){return t?"function"==typeof t?new t:t:null}if(this.options={...i,...this.options,...U(e)},"v1"!==this.options.compatibilityAPI&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator),!this.options.isClone){let e;this.modules.logger?n.init(o(this.modules.logger),this.options):n.init(null,this.options),this.modules.formatter?e=this.modules.formatter:"undefined"!=typeof Intl&&(e=V);const s=new L(this.options);this.store=new x(this.options.resources,this.options);const r=this.services;r.logger=n,r.resourceStore=this.store,r.languageUtils=s,r.pluralResolver=new j(s,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),!e||this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format||(r.formatter=o(e),r.formatter.init(r,this.options),this.options.interpolation.format=r.formatter.format.bind(r.formatter)),r.interpolator=new I(this.options),r.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},r.backendConnector=new A(o(this.modules.backend),r.resourceStore,r,this.options),r.backendConnector.on("*",(function(e){for(var s=arguments.length,i=new Array(s>1?s-1:0),n=1;n<s;n++)i[n-1]=arguments[n];t.emit(e,...i)})),this.modules.languageDetector&&(r.languageDetector=o(this.modules.languageDetector),r.languageDetector.init&&r.languageDetector.init(r,this.options.detection,this.options)),this.modules.i18nFormat&&(r.i18nFormat=o(this.modules.i18nFormat),r.i18nFormat.init&&r.i18nFormat.init(this)),this.translator=new O(this.services,this.options),this.translator.on("*",(function(e){for(var s=arguments.length,i=new Array(s>1?s-1:0),n=1;n<s;n++)i[n-1]=arguments[n];t.emit(e,...i)})),this.modules.external.forEach((t=>{t.init&&t.init(this)}))}if(this.format=this.options.interpolation.format,s||(s=T),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const t=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);t.length>0&&"dev"!==t[0]&&(this.options.lng=t[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach((e=>{this[e]=function(){return t.store[e](...arguments)}}));["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach((e=>{this[e]=function(){return t.store[e](...arguments),t}}));const a=r(),l=()=>{const t=(t,e)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),a.resolve(e),s(t,e)};if(this.languages&&"v1"!==this.options.compatibilityAPI&&!this.isInitialized)return t(null,this.t.bind(this));this.changeLanguage(this.options.lng,t)};return this.options.resources||!this.options.initImmediate?l():setTimeout(l,0),a}loadResources(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:T;const s="string"==typeof t?t:this.language;if("function"==typeof t&&(e=t),!this.options.resources||this.options.partialBundledLanguages){if(s&&"cimode"===s.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return e();const t=[],i=e=>{if(!e)return;if("cimode"===e)return;this.services.languageUtils.toResolveHierarchy(e).forEach((e=>{"cimode"!==e&&t.indexOf(e)<0&&t.push(e)}))};if(s)i(s);else{this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((t=>i(t)))}this.options.preload&&this.options.preload.forEach((t=>i(t))),this.services.backendConnector.load(t,this.options.ns,(t=>{t||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),e(t)}))}else e(null)}reloadResources(t,e,s){const i=r();return t||(t=this.languages),e||(e=this.options.ns),s||(s=T),this.services.backendConnector.reload(t,e,(t=>{i.resolve(),s(t)})),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===t.type&&(this.modules.backend=t),("logger"===t.type||t.log&&t.warn&&t.error)&&(this.modules.logger=t),"languageDetector"===t.type&&(this.modules.languageDetector=t),"i18nFormat"===t.type&&(this.modules.i18nFormat=t),"postProcessor"===t.type&&S.addPostProcessor(t),"formatter"===t.type&&(this.modules.formatter=t),"3rdParty"===t.type&&this.modules.external.push(t),this}setResolvedLanguage(t){if(t&&this.languages&&!(["cimode","dev"].indexOf(t)>-1))for(let t=0;t<this.languages.length;t++){const e=this.languages[t];if(!(["cimode","dev"].indexOf(e)>-1)&&this.store.hasLanguageSomeTranslations(e)){this.resolvedLanguage=e;break}}}changeLanguage(t,e){var s=this;this.isLanguageChangingTo=t;const i=r();this.emit("languageChanging",t);const n=t=>{this.language=t,this.languages=this.services.languageUtils.toResolveHierarchy(t),this.resolvedLanguage=void 0,this.setResolvedLanguage(t)},o=(t,o)=>{o?(n(o),this.translator.changeLanguage(o),this.isLanguageChangingTo=void 0,this.emit("languageChanged",o),this.logger.log("languageChanged",o)):this.isLanguageChangingTo=void 0,i.resolve((function(){return s.t(...arguments)})),e&&e(t,(function(){return s.t(...arguments)}))},a=e=>{t||e||!this.services.languageDetector||(e=[]);const s="string"==typeof e?e:this.services.languageUtils.getBestMatchFromCodes(e);s&&(this.language||n(s),this.translator.language||this.translator.changeLanguage(s),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(s)),this.loadResources(s,(t=>{o(t,s)}))};return t||!this.services.languageDetector||this.services.languageDetector.async?!t&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(t):a(this.services.languageDetector.detect()),i}getFixedT(t,e,s){var i=this;const n=function(t,e){let o;if("object"!=typeof e){for(var r=arguments.length,a=new Array(r>2?r-2:0),l=2;l<r;l++)a[l-2]=arguments[l];o=i.options.overloadTranslationOptionHandler([t,e].concat(a))}else o={...e};o.lng=o.lng||n.lng,o.lngs=o.lngs||n.lngs,o.ns=o.ns||n.ns,o.keyPrefix=o.keyPrefix||s||n.keyPrefix;const u=i.options.keySeparator||".";let h;return h=o.keyPrefix&&Array.isArray(t)?t.map((t=>`${o.keyPrefix}${u}${t}`)):o.keyPrefix?`${o.keyPrefix}${u}${t}`:t,i.t(h,o)};return"string"==typeof t?n.lng=t:n.lngs=t,n.ns=e,n.keyPrefix=s,n}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const s=e.lng||this.resolvedLanguage||this.languages[0],i=!!this.options&&this.options.fallbackLng,n=this.languages[this.languages.length-1];if("cimode"===s.toLowerCase())return!0;const o=(t,e)=>{const s=this.services.backendConnector.state[`${t}|${e}`];return-1===s||2===s};if(e.precheck){const t=e.precheck(this,o);if(void 0!==t)return t}return!!this.hasResourceBundle(s,t)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!o(s,t)||i&&!o(n,t)))}loadNamespaces(t,e){const s=r();return this.options.ns?("string"==typeof t&&(t=[t]),t.forEach((t=>{this.options.ns.indexOf(t)<0&&this.options.ns.push(t)})),this.loadResources((t=>{s.resolve(),e&&e(t)})),s):(e&&e(),Promise.resolve())}loadLanguages(t,e){const s=r();"string"==typeof t&&(t=[t]);const i=this.options.preload||[],n=t.filter((t=>i.indexOf(t)<0));return n.length?(this.options.preload=i.concat(n),this.loadResources((t=>{s.resolve(),e&&e(t)})),s):(e&&e(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!t)return"rtl";const e=this.services&&this.services.languageUtils||new L(D());return["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(e.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){return new K(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}cloneInstance(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:T;const s=t.forkResourceStore;s&&delete t.forkResourceStore;const i={...this.options,...t,isClone:!0},n=new K(i);void 0===t.debug&&void 0===t.prefix||(n.logger=n.logger.clone(t));return["store","services","language"].forEach((t=>{n[t]=this[t]})),n.services={...this.services},n.services.utils={hasLoadedNamespace:n.hasLoadedNamespace.bind(n)},s&&(n.store=new x(this.store.data,i),n.services.resourceStore=n.store),n.translator=new O(n.services,i),n.translator.on("*",(function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];n.emit(t,...s)})),n.init(i,e),n.translator.options=i,n.translator.backendConnector.services.utils={hasLoadedNamespace:n.hasLoadedNamespace.bind(n)},n}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const M=K.createInstance();M.createInstance=K.createInstance,M.createInstance,M.dir,M.init,M.loadResources,M.reloadResources,M.use,M.changeLanguage,M.getFixedT,M.t,M.exists,M.setDefaultNamespace,M.hasLoadedNamespace,M.loadNamespaces,M.loadLanguages;let z={};const H=async(t,s)=>{const i=await(n=t,e("/langPluginContent/getFWPluginContentByPluginKey",{method:"post",data:{value:n},serviceId:"fwPlatform"}));var n;z=i;let o=J;return s?.i18n&&(await M.init(s?.i18nInitOptions||{},s?.i18nCallback),o=(t,e,s="fe")=>{const i={};return e?.map(((t,e)=>{i[`${e}`]=t})),M.t(t,i)}),window.tr=o,s?.i18n?M:null},J=(e,s,i="fe")=>{let n=t(z,`${i}.${e}`,e);return n||(n=e),o=s,n.replace(/\${(\d+)}/g,(function(t,e){const s=parseInt(e);return void 0!==o?.[s]?o[s]:t}));var o},B=(t,e,s="fe")=>window.tr(t,e,s);export{H as i,B as t};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/core/i18n/services.ts","../../../node_modules/i18next/dist/esm/i18next.js","../../../src/core/i18n/index.ts"],"sourcesContent":["import request from '@core/request';\n\nexport const getFWPluginContentByPluginKeyApi = (value: string) => {\n return request('/langPluginContent/getFWPluginContentByPluginKey', {\n method: 'post',\n data: { value: value },\n serviceId: 'fwPlatform',\n });\n};\n","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(_ref => {\n let [observer, numTimesAdded] = _ref;\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(_ref2 => {\n let [observer, numTimesAdded] = _ref2;\n for (let i = 0; i < numTimesAdded; i++) {\n observer.apply(observer, [event, ...args]);\n }\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nconst lastOfPathSeparatorRegExp = /###/g;\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last && last.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (typeof key === 'string' && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.indexOf('.') > -1) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false,\n skipCopy: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const defaultValue = needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] || options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, options);\n if (needsZeroSuffixLookup && options[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code === 'dev' ? 'en' : code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp && existingRegExp.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}(.+?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import { get, find } from 'lodash-es';\nimport { getFWPluginContentByPluginKeyApi } from './services';\nimport i18nNext, { InitOptions, Callback } from 'i18next';\nlet languageMaps: any = {};\nexport const initDynamicLang = async (\n language: string,\n options?: {\n i18n?: boolean;\n i18nInitOptions?: InitOptions;\n i18nCallback?: Callback;\n },\n) => {\n const res = await getFWPluginContentByPluginKeyApi(language);\n languageMaps = res;\n let tr = defaultTr;\n if (options?.i18n) {\n await i18nNext.init(options?.i18nInitOptions || {}, options?.i18nCallback);\n tr = (key: string, agrs?: string[], type: 'fe' | 'workflow' = 'fe') => {\n const obj: any = {};\n agrs?.map((value, index) => {\n obj[`${index}`] = value;\n });\n return i18nNext.t(key, obj) as string;\n };\n }\n (window as any)['tr'] = tr;\n return options?.i18n ? i18nNext : null;\n};\n\nconst defaultTr = (\n key: string,\n agrs?: string[],\n type: 'fe' | 'workflow' = 'fe',\n) => {\n let value = get(languageMaps, `${type}.${key}`, key);\n if (!value) value = key;\n\n function replaceVariablesInString(str: string, arr?: string[]) {\n return str.replace(/\\${(\\d+)}/g, function (match, index) {\n const arrIndex = parseInt(index);\n return arr?.[arrIndex] !== undefined ? arr[arrIndex] : match;\n });\n }\n return replaceVariablesInString(value, agrs);\n};\n\nexport const tr = (\n key: string,\n agrs?: string[],\n type: 'fe' | 'workflow' = 'fe',\n) => {\n return (window as any)['tr'](key, agrs, type);\n};\n"],"names":["consoleLogger","type","log","args","this","output","warn","error","console","apply","Logger","constructor","concreteLogger","options","arguments","length","undefined","init","prefix","logger","debug","_len","Array","_key","forward","_len2","_key2","_len3","_key3","deprecate","_len4","_key4","lvl","debugOnly","create","moduleName","clone","baseLogger","EventEmitter","observers","on","events","listener","split","forEach","event","Map","numListeners","get","set","off","delete","emit","from","entries","_ref","observer","numTimesAdded","i","_ref2","defer","res","rej","promise","Promise","resolve","reject","makeString","object","lastOfPathSeparatorRegExp","getLastOfPath","path","Empty","cleanKey","key","indexOf","replace","canNotTraverseDeeper","stack","stackIndex","Object","prototype","hasOwnProperty","call","obj","k","setPath","newValue","e","p","slice","last","getPath","deepExtend","target","source","overwrite","prop","String","regexEscape","str","_entityMap","escape","data","s","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","pattern","regExpFromCache","regExpNew","RegExp","shift","push","deepFind","keySeparator","tokens","current","next","nextPath","j","getCleanedCode","code","ResourceStore","ns","defaultNS","super","ignoreJSONStructure","addNamespaces","removeNamespaces","index","splice","getResource","lng","isArray","result","join","addResource","value","silent","concat","addResources","resources","m","toString","addResourceBundle","deep","skipCopy","pack","JSON","parse","stringify","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","keys","find","v","toJSON","postProcessor","processors","addPostProcessor","module","name","handle","translator","processor","process","checkedLoadedFor","Translator","services","t","changeLanguage","language","exists","interpolation","resolved","extractFromKey","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","filter","c","r","map","matched","test","ki","substring","looksLikeObjectPath","match","interpolator","nestingRegexp","parts","translate","lastKey","overloadTranslationOptionHandler","returnDetails","namespace","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","shouldUseIntlApi","defaultValue","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","l","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","context","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","pop","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","capitalize","string","charAt","toUpperCase","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","default","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","n","Number","nonIntlVersions","intlVersions","suffixesOrder","zero","one","two","few","many","other","PluralResolver","compatibilityJSON","includes","Intl","PluralRules","rules","numbers","plurals","createRules","addRule","getRule","err","needsPlural","rule","resolvedOptions","pluralCategories","getPluralFormsOfKey","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","number","select","getSuffixRetroCompatible","idx","noAbs","Math","abs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","format","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","regexSafe","val","handleFormat","interpolationkey","trim","f","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","reduce","createCachedFormatter","fn","cache","formatter","Formatter","formats","opt","NumberFormat","currency","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","add","addCached","mem","formatName","formatOptions","formatStr","optStr","rest","isNaN","parseInt","parseFormatStr","formatted","valOptions","formatParams","locale","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","state","queue","queueLoad","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","q","pushPath","removePending","done","loadedKeys","read","fcName","tried","wait","resolver","setTimeout","bind","then","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","ret","tDescription","transformOptions","noop","I18n","inst","modules","external","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","Error","li","lngInLngs","_this2","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","async","detect","getFixedT","keyPrefix","_this3","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","dir","createInstance","cloneInstance","forkResourceStore","mergedOptions","instance","languageMaps","initDynamicLang","request","method","serviceId","tr","defaultTr","i18n","i18nNext","i18nInitOptions","i18nCallback","agrs","window","arr","arrIndex"],"mappings":"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","x_google_ignoreList":[1]}
@@ -0,0 +1,2 @@
1
+ import{a as S}from"./request/index.js";export{r as request}from"./request/index.js";export{e as expireCache}from"./cache/index.js";export{e as emitter}from"./event/index.js";import{g as R,u as O}from"./store/index.js";export{a as MENU_BREADCRUMBS_UPDATE,M as MENU_HISTORY_UPDATE,b as PROGRESS_UPDEDATE,W as WS_CONTENT_CLOSE,d as WS_CONTENT_ERROR,e as WS_CONTENT_SUCCESS,c as codeListStore,i as companydataStore,l as loginStore,m as menuStore,p as parameterStore,P as progress,s as storageStore,w as websocket}from"./store/index.js";import{i as _}from"./i18n/index.js";export{t as tr}from"./i18n/index.js";export{P as PresetColors,T as TinyColor,z as bounds,b as compactAlgorithm,I as convertDecimalToHex,J as convertHexToDecimal,a as darkAlgorithm,d as defaultAlgorithm,f as formatAliasToken,q as fromRatio,g as getAliasToken,e as getAlphaColor,j as getBackgroundColor,h as getDarkenSolidColor,i as getLightenSolidColor,c as getTokenCssVar,C as hslToRgb,E as hsvToRgb,v as inputToRGB,m as isReadable,x as isValidCSSUnit,u as legacyRandom,l as lighten,o as mostReadable,n as names,L as numberInputToObject,K as parseIntFromHex,y as random,r as readability,F as rgbToHex,B as rgbToHsl,D as rgbToHsv,A as rgbToRgb,H as rgbaToArgbHex,G as rgbaToHex,s as seed,w as stringInputToObject,k as tinycolor,p as toMsFilter,t as token}from"./theme/index.js";export{g as getTraceId}from"./microservices/index.js";import{g as N}from"./utils/index.js";export{a as getAntdLocaleKey,b as getRoutes,s as setLocaleKey}from"./utils/index.js";import{uniqueId as U}from"lodash-es";export*from"axios";import"mitt";const $="X-G-TRACE-ID",V=e=>s=>{const{url:a="",serviceId:r}=s,o={};Object.keys(e).forEach((s=>{e[s].forEach((e=>{o[e]=s}))}));const t={};Object.keys(e).forEach((e=>{t[e]=e}));let i=`${a}.api`;const[,n]=i.split("/");return i=o[n]?`/${o[n]}${i}`:r?`/${t[r]}${i}`:i,delete s.serviceId,s.url=i,s},X=e=>s=>{const a=U($);return s.headers={...s.headers,[$]:a,needHtmlEscape:"false",userLanguage:e,...O.userIdentity},s};var Y=async({microServiceMap:e,dynamicLangCallback:s,...a})=>{S.interceptors.request.use(V(e)),await R.findPlantform();const r=N();S.interceptors.request.use(X(r)),await _(r),await(s?.());return await R.init(a)};export{N as getLocaleKey,R as globalStore,Y as init,_ as initDynamicLang,S as requestInstance,X as useRequestHeader,V as useRequestMicroSevices,O as userStore};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/main.ts"],"sourcesContent":["import { requestInstance, InternalAxiosRequestConfig, userStore, globalStore, initDynamicLang } from './core';\nimport type { GlobalOptions } from './core/store/type';\nimport { getLocaleKey } from './core/utils';\nimport { uniqueId, get, isEmpty } from 'lodash-es';\n\nconst TraceIdKey = 'X-G-TRACE-ID';\n\nexport const useRequestMicroSevices = (microServiceMap?: any) => {\n return (config: InternalAxiosRequestConfig) => {\n const { url = '', serviceId } = config;\n const serviceIdMap: any = {};\n Object.keys(microServiceMap).forEach(key => {\n microServiceMap[key as keyof typeof microServiceMap].forEach((module: any) => {\n serviceIdMap[module] = key;\n });\n });\n const urlMap: any = {};\n Object.keys(microServiceMap).forEach(key => {\n urlMap[key] = key;\n });\n const suffix = '.api';\n //传入拼接的url\n let newUrl = suffix ? `${url}${suffix}` : url;\n const [, urlPrefix] = newUrl.split('/');\n newUrl = serviceIdMap[urlPrefix]\n ? `/${serviceIdMap[urlPrefix]}${newUrl}`\n : serviceId\n ? `/${urlMap[serviceId]}${newUrl}`\n : newUrl;\n\n delete config.serviceId;\n config.url = newUrl;\n return config;\n };\n};\nexport const useRequestHeader = (userLanguage: string) => (config: InternalAxiosRequestConfig) => {\n const TRACE_ID = uniqueId(TraceIdKey);\n config.headers = {\n ...config.headers,\n [TraceIdKey]: TRACE_ID,\n needHtmlEscape: 'false',\n userLanguage,\n ...userStore.userIdentity,\n } as any;\n return config;\n};\nexport interface MainOptions extends GlobalOptions {\n microServiceMap?: any;\n locale?: string;\n dynamicLangCallback?: () => void;\n}\n\nexport default async ({ microServiceMap, dynamicLangCallback, ...globalOptions }: MainOptions) => {\n requestInstance.interceptors.request.use(useRequestMicroSevices(microServiceMap));\n await globalStore.findPlantform();\n const locale = getLocaleKey();\n requestInstance.interceptors.request.use(useRequestHeader(locale));\n\n await initDynamicLang(locale);\n await dynamicLangCallback?.();\n const res = await globalStore.init(globalOptions);\n return res;\n};\n"],"names":["TraceIdKey","useRequestMicroSevices","microServiceMap","config","url","serviceId","serviceIdMap","Object","keys","forEach","key","module","urlMap","newUrl","urlPrefix","split","useRequestHeader","userLanguage","TRACE_ID","uniqueId","headers","needHtmlEscape","userStore","userIdentity","main","async","dynamicLangCallback","globalOptions","requestInstance","interceptors","request","use","globalStore","findPlantform","locale","getLocaleKey","initDynamicLang","init"],"mappings":"sjDAKA,MAAMA,EAAa,eAENC,EAA0BC,GAC7BC,IACN,MAAMC,IAAEA,EAAM,GAAEC,UAAEA,GAAcF,EAC1BG,EAAoB,CAAA,EAC1BC,OAAOC,KAAKN,GAAiBO,SAAQC,IACnCR,EAAgBQ,GAAqCD,SAASE,IAC5DL,EAAaK,GAAUD,CAAG,GAC1B,IAEJ,MAAME,EAAc,CAAA,EACpBL,OAAOC,KAAKN,GAAiBO,SAAQC,IACnCE,EAAOF,GAAOA,CAAG,IAInB,IAAIG,EAAkB,GAAGT,QACzB,MAAS,CAAAU,GAAaD,EAAOE,MAAM,KASnC,OARAF,EAASP,EAAaQ,GAClB,IAAIR,EAAaQ,KAAaD,IAC9BR,EACE,IAAIO,EAAOP,KAAaQ,IACxBA,SAECV,EAAOE,UACdF,EAAOC,IAAMS,EACNV,CAAM,EAGJa,EAAoBC,GAA0Bd,IACzD,MAAMe,EAAWC,EAASnB,GAQ1B,OAPAG,EAAOiB,QAAU,IACZjB,EAAOiB,QACVpB,CAACA,GAAakB,EACdG,eAAgB,QAChBJ,kBACGK,EAAUC,cAERpB,CAAM,EAQf,IAAeqB,EAAAC,OAASvB,kBAAiBwB,yBAAwBC,MAC/DC,EAAgBC,aAAaC,QAAQC,IAAI9B,EAAuBC,UAC1D8B,EAAYC,gBAClB,MAAMC,EAASC,IACfP,EAAgBC,aAAaC,QAAQC,IAAIf,EAAiBkB,UAEpDE,EAAgBF,SAChBR,OAEN,aADkBM,EAAYK,KAAKV,EACzB"}