@draggable/i18n 1.1.1 → 1.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.
@@ -1,9 +1,9 @@
1
1
 
2
2
  /**
3
3
  @draggable/i18n - https://github.com/Draggable/i18n
4
- Version: 1.1.0
4
+ Version: 1.1.2
5
5
  Author: Draggable https://draggable.io
6
6
  */
7
7
 
8
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).i18n={})}(this,function(t){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),Object.freeze({method:"GET",body:""});var e={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},n=null,s=new Proxy(class t{constructor(t=e){this.langs=Object.create(null),this.loaded=[],this.processConfig(t)}processConfig(t){const{location:n,...s}={...e,...t},i=n.endsWith("/")?n:`${n}/`;this.config={location:i,...s};const{preloaded:a={},override:r={}}=this.config,o=new Set([...Object.keys(a),...Object.keys(r)]);for(const e of o){const t={...a[e]||{},...r[e]||{}};this.applyLanguage(e,t)}this.locale=this.config.locale||this.config.langs[0]}init(t){return this.processConfig({...this.config,...t}),this.setCurrent(this.locale)}addLanguage(e,n={}){n="string"==typeof n?t.processFile(n):n,this.applyLanguage(e,n),this.loaded.push(e),this.config.langs.push(e)}getValue(t,e=this.locale){return this.langs[e]?.[t]||this.getFallbackValue(t)}getFallbackValue(t){return Object.values(this.langs).find(e=>e[t])?.[t]}makeSafe(t){const e={"{":String.raw`\{`,"}":String.raw`\}`,"|":String.raw`\|`},n=t.replaceAll(/[{}|]/g,t=>e[t]);return new RegExp(n,"g")}put(t,e){return this.current[t]=e,e}get(t,e){let n=this.getValue(t);if(!n)return;if(!e)return n;const s=n.match(/\{[^}]+?\}/g);if(!s)return n;if("object"==typeof e)for(const i of s){const t=i.slice(1,-1);n=n.replace(this.makeSafe(i),e[t]??"")}else n=n.replaceAll(/\{[^}]+?\}/g,e);return n}static processFile(t){return s.fromFile(t.replaceAll("\n\n","\n"))}static fromFile(t){const e=t.split("\n"),n={};for(let s,i=0;i<e.length;i++)s=/^(.+?) *?= *?([^\n]+)/.exec(e[i]),s&&(n[s[1]]=s[2].trim());return n}static getInstance(e){return n||(n=new t(e)),n}static resetInstance(){n=null}async loadLang(e,n=!0){if(this.loaded.includes(e)&&n)return this.langs[e];const s=`${this.config.location}${e}${this.config.extension}`;try{const n=await async function(t){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e[t.endsWith(".lang")?"text":"json"]()}catch(e){throw e}}(s),i=t.processFile(n);return this.applyLanguage(e,i),this.langs[e]}catch(i){return this.applyLanguage(e)}}applyLanguage(t,e={}){const n=this.config.override[t]||{},s=this.langs[t]||{};return this.langs[t]={...s,...e,...n},this.loaded.push(t),this.langs[t]}get getLangs(){return this.config.langs}async setCurrent(t="en-US"){return this.loaded.includes(t)||await this.loadLang(t),this.locale=t,this.current=this.langs[t],this.current}},{apply:(t,e,n)=>t.getInstance(...n),construct:(t,e)=>new t(...e),get:(t,e)=>t[e]}),i=s.getInstance();t.I18N=s,t.default=i});
9
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51bWQubWluLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9mZXRjaC5qcyIsIi4uL3NyYy9taTE4bi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBkZWZhdWx0T3B0aW9ucyA9IE9iamVjdC5mcmVlemUoeyBtZXRob2Q6ICdHRVQnLCBib2R5OiAnJyB9KVxuLyoqXG4gKiBGZXRjaGVzIGEgcmVzb3VyY2UgZnJvbSB0aGUgbmV0d29yay5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIC0gVGhlIFVSTCB0byBmZXRjaC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zPXt9XSAtIFRoZSBvcHRpb25zIGZvciB0aGUgZmV0Y2ggcmVxdWVzdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbZmV0Y2hPcHRpb25zLmhlYWRlcnNdIC0gSGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxuICogQHBhcmFtIHtzdHJpbmd9IFtmZXRjaE9wdGlvbnMubWV0aG9kXSAtIFRoZSBIVFRQIG1ldGhvZCB0byB1c2UgKGUuZy4sICdHRVQnLCAnUE9TVCcpLlxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfSBbZmV0Y2hPcHRpb25zLmJvZHldIC0gVGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QuXG4gKiBAcmV0dXJuIHtQcm9taXNlPE9iamVjdD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZXNwb25zZSBvYmplY3QuXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm4ub2sgLSBJbmRpY2F0ZXMgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBpcyBpbiB0aGUgcmFuZ2UgMjAwLTI5OS5cbiAqIEByZXR1cm4ge251bWJlcn0gcmV0dXJuLnN0YXR1cyAtIFRoZSBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gcmV0dXJuLnN0YXR1c1RleHQgLSBUaGUgSFRUUCBzdGF0dXMgbWVzc2FnZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSByZXR1cm4uaGVhZGVycyAtIFRoZSBoZWFkZXJzIG9mIHRoZSByZXNwb25zZS5cbiAqIEByZXR1cm4ge0J1ZmZlcn0gcmV0dXJuLmJvZHkgLSBUaGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgYXMgYSBCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPEJ1ZmZlcj59IHJldHVybi5hcnJheUJ1ZmZlciAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgYXMgYW4gQXJyYXlCdWZmZXIuXG4gKiBAcmV0dXJuIHtmdW5jdGlvbigpOiBQcm9taXNlPE9iamVjdD59IHJldHVybi5qc29uIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgYm9keSBwYXJzZWQgYXMgSlNPTi5cbiAqL1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKHVybCkge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKVxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUCBlcnJvciEgc3RhdHVzOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgIH1cbiAgICBjb25zdCBoYW5kbGVyID0gdXJsLmVuZHNXaXRoKCcubGFuZycpID8gJ3RleHQnIDogJ2pzb24nXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlW2hhbmRsZXJdKClcbiAgICByZXR1cm4gZGF0YVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RoZXJlIGhhcyBiZWVuIGEgcHJvYmxlbSB3aXRoIHlvdXIgZmV0Y2ggb3BlcmF0aW9uOicsIGVycm9yKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiIsImltcG9ydCB7IGZldGNoRGF0YSB9IGZyb20gJy4vZmV0Y2guanMnXG5cbmNvbnN0IERFRkFVTFRfQ09ORklHID0ge1xuICBleHRlbnNpb246ICcubGFuZycsXG4gIC8vIGxvY2FsIG9yIHJlbW90ZSBkaXJlY3RvcnkgY29udGFpbmluZyBsYW5ndWFnZSBmaWxlc1xuICBsb2NhdGlvbjogJ2Fzc2V0cy9sYW5nLycsXG4gIC8vIGxpc3Qgb2YgYXZhaWxhYmxlIGxvY2FsZXMsIGhhbmR5IGZvciBwb3B1bGF0aW5nIHNlbGVjdG9yLlxuICBsYW5nczogWydlbi1VUyddLFxuICBsb2NhbGU6ICdlbi1VUycsIC8vIGluaXQgd2l0aCB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlXG4gIG92ZXJyaWRlOiB7fSxcbn1cblxuLy8gU2luZ2xldG9uIGluc3RhbmNlIGhvbGRlclxubGV0IGluc3RhbmNlID0gbnVsbFxuXG4vKipcbiAqIE1haW4gaTE4biBjbGFzc1xuICogQGNsYXNzIEkxOE5CYXNlXG4gKiBAY2xhc3NkZXNjIG1ldGhvZHMgYW5kIGRhdGEgc3RvcmUgZm9yIGkxOG5cbiAqL1xuY2xhc3MgSTE4TkJhc2Uge1xuICAvKipcbiAgICogUHJvY2VzcyBvcHRpb25zIGFuZCBzdGFydCB0aGUgbW9kdWxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0gREVGQVVMVF9DT05GSUcpIHtcbiAgICB0aGlzLmxhbmdzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICAgIHRoaXMubG9hZGVkID0gW11cbiAgICB0aGlzLnByb2Nlc3NDb25maWcob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBwYXJzZSBhbmQgZm9ybWF0IGNvbmZpZ1xuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgcHJvY2Vzc0NvbmZpZyhvcHRpb25zKSB7XG4gICAgY29uc3QgeyBsb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfSA9IHsgLi4uREVGQVVMVF9DT05GSUcsIC4uLm9wdGlvbnMgfVxuICAgIC8vIEVuc3VyZSBsb2NhdGlvbiBlbmRzIHdpdGggYSBzbGFzaFxuICAgIGNvbnN0IHBhcnNlZExvY2F0aW9uID0gbG9jYXRpb24uZW5kc1dpdGgoJy8nKSA/IGxvY2F0aW9uIDogYCR7bG9jYXRpb259L2BcbiAgICB0aGlzLmNvbmZpZyA9IHsgbG9jYXRpb246IHBhcnNlZExvY2F0aW9uLCAuLi5yZXN0T3B0aW9ucyB9XG5cbiAgICBjb25zdCB7IHByZWxvYWRlZCA9IHt9LCBvdmVycmlkZSA9IHt9IH0gPSB0aGlzLmNvbmZpZ1xuXG4gICAgLy8gTWVyZ2UgbG9jYWxlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIFRoaXMgc3VwcG9ydHMgbGVnYWN5IHVzYWdlIHdoZXJlIG92ZXJyaWRlIGRlZmluZWQgZW50aXJlIGxhbmd1YWdlc1xuICAgIGNvbnN0IGFsbExvY2FsZXMgPSBuZXcgU2V0KFsuLi5PYmplY3Qua2V5cyhwcmVsb2FkZWQpLCAuLi5PYmplY3Qua2V5cyhvdmVycmlkZSldKVxuXG4gICAgLy8gQXBwbHkgbGFuZ3VhZ2VzIGZyb20gYm90aCBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlXG4gICAgLy8gYXBwbHlMYW5ndWFnZSB3aWxsIG1lcmdlIHRoZW0gcHJvcGVybHkgKGV4aXN0aW5nICsgcHJlbG9hZGVkICsgb3ZlcnJpZGUpXG4gICAgZm9yIChjb25zdCBsb2NhbGUgb2YgYWxsTG9jYWxlcykge1xuICAgICAgY29uc3QgcHJlbG9hZGVkTGFuZyA9IHByZWxvYWRlZFtsb2NhbGVdIHx8IHt9XG4gICAgICBjb25zdCBvdmVycmlkZUxhbmcgPSBvdmVycmlkZVtsb2NhbGVdIHx8IHt9XG4gICAgICAvLyBNZXJnZSBwcmVsb2FkZWQgYW5kIG92ZXJyaWRlIGZvciB0aGlzIGxvY2FsZVxuICAgICAgY29uc3QgbWVyZ2VkTGFuZyA9IHsgLi4ucHJlbG9hZGVkTGFuZywgLi4ub3ZlcnJpZGVMYW5nIH1cbiAgICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIG1lcmdlZExhbmcpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSB0aGlzLmNvbmZpZy5sb2NhbGUgfHwgdGhpcy5jb25maWcubGFuZ3NbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGxhbmd1YWdlIGFuZCBzZXQgZGVmYXVsdFxuICAgKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgIHJlc29sdmVzIGxhbmd1YWdlXG4gICAqL1xuICBpbml0KG9wdGlvbnMpIHtcbiAgICB0aGlzLnByb2Nlc3NDb25maWcoeyAuLi50aGlzLmNvbmZpZywgLi4ub3B0aW9ucyB9KVxuICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnQodGhpcy5sb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGxhbmd1YWdlIHRvIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHBhcmFtIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGxhbmdcbiAgICovXG4gIGFkZExhbmd1YWdlKGxvY2FsZSwgbGFuZyA9IHt9KSB7XG4gICAgbGFuZyA9IHR5cGVvZiBsYW5nID09PSAnc3RyaW5nJyA/IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpIDogbGFuZ1xuICAgIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUsIGxhbmcpXG4gICAgdGhpcy5sb2FkZWQucHVzaChsb2NhbGUpXG4gICAgdGhpcy5jb25maWcubGFuZ3MucHVzaChsb2NhbGUpXG4gIH1cblxuICAvKipcbiAgICogZ2V0IGEgc3RyaW5nIGZyb20gYSBsb2FkZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgLSB0aGUga2V5IGZvciB0aGUgc3RyaW5nIHdlIGFyZSB0cnlpbmcgdG8gcmV0cmlldmVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGUgLSBsb2NhbGUgdG8gY2hlY2sgZm9yIHZhbHVlXG4gICAqIEByZXR1cm4ge1N0cmluZ30gbGFuZ3VhZ2Ugc3RyaW5nIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0VmFsdWUoa2V5LCBsb2NhbGUgPSB0aGlzLmxvY2FsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5sYW5nc1tsb2NhbGVdPy5ba2V5XVxuICAgIHJldHVybiB2YWx1ZSB8fCB0aGlzLmdldEZhbGxiYWNrVmFsdWUoa2V5KVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBsYW5ndWFnZSB0aGF0IGhhcyBkZXNpcmVkIGtleVxuICAgKiBAcGFyYW0ge1N0cmluZ30ga2V5IHZhbHVlIGtleVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGZvdW5kIHZhbHVlIG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgZ2V0RmFsbGJhY2tWYWx1ZShrZXkpIHtcbiAgICBjb25zdCBmYWxsYmFja0xhbmcgPSBPYmplY3QudmFsdWVzKHRoaXMubGFuZ3MpLmZpbmQobGFuZyA9PiBsYW5nW2tleV0pXG4gICAgcmV0dXJuIGZhbGxiYWNrTGFuZz8uW2tleV1cbiAgfVxuXG4gIC8qKlxuICAgKiBFc2NhcGUgdmFyaWFibGUgc3ludGF4XG4gICAqIEBwYXJhbSAge1N0cmluZ30gc3RyXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgIGVzY2FwZWQgc3RyXG4gICAqL1xuICBtYWtlU2FmZShzdHIpIHtcbiAgICBjb25zdCBtYXBPYmogPSB7XG4gICAgICAneyc6IFN0cmluZy5yYXdgXFx7YCxcbiAgICAgICd9JzogU3RyaW5nLnJhd2BcXH1gLFxuICAgICAgJ3wnOiBTdHJpbmcucmF3YFxcfGAsXG4gICAgfVxuXG4gICAgY29uc3QgZXNjYXBlZFN0ciA9IHN0ci5yZXBsYWNlQWxsKC9be318XS9nLCBtYXRjaGVkID0+IG1hcE9ialttYXRjaGVkXSlcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKGVzY2FwZWRTdHIsICdnJylcbiAgfVxuXG4gIC8qKlxuICAgKiBUZW1wb3JhcmlseSBwdXQgYSBzdHJpbmcgaW50byB0aGUgY3VycmVudGx5IGxvYWRlZCBsYW5ndWFnZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0cmluZ1xuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHN0cmluZyBpbiBjdXJyZW50IGxhbmd1YWdlXG4gICAqL1xuICBwdXQoa2V5LCBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRba2V5XSA9IHN0cmluZ1xuXG4gICAgcmV0dXJuIHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmb3IgdGhlIHJlcXVlc3RlZCBzdHJpbmdcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIHRoZSBrZXkgd2UgdXNlIHRvIGxvb2t1cCBvdXIgdHJhbnNsYXRpb25cbiAgICogQHBhcmFtICB7bXVsdGl9ICBhcmdzICBzdHJpbmcsIG51bWJlciBvciBvYmplY3QgY29udGFpbmluZyBvdXIgYXJndW1lbnRzXG4gICAqIEByZXR1cm4ge1N0cmluZ30gICAgICB1cGRhdGVkIHN0cmluZyB0cmFuc2xhdGlvblxuICAgKi9cbiAgZ2V0KGtleSwgYXJncykge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWUoa2V5KVxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE5vIHJlcGxhY2VtZW50IG5lZWRlZCBpZiBubyBhcmdzIHByb3ZpZGVkXG4gICAgaWYgKCFhcmdzKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB2YWx1ZS5tYXRjaCgvXFx7W159XSs/XFx9L2cpXG5cbiAgICAvLyBObyB0b2tlbnMgdG8gcmVwbGFjZVxuICAgIGlmICghdG9rZW5zKSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG5cbiAgICAvLyBPYmplY3QgYXJnczogcmVwbGFjZSBlYWNoIHRva2VuIHdpdGggY29ycmVzcG9uZGluZyBrZXlcbiAgICBpZiAodHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgICBjb25zdCB0b2tlbktleSA9IHRva2VuLnNsaWNlKDEsIC0xKVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5tYWtlU2FmZSh0b2tlbiksIGFyZ3NbdG9rZW5LZXldID8/ICcnKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmltaXRpdmUgYXJnczogcmVwbGFjZSBhbGwgdG9rZW5zIHdpdGggc2FtZSB2YWx1ZVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKC9cXHtbXn1dKz9cXH0vZywgYXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBQcm9jZXNzIGEgbGFuZ3VhZ2UgZmlsZSBmcm9tIHJhdyB0ZXh0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmVzcG9uc2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBwcm9jZXNzZWQgbGFuZ3VhZ2VcbiAgICovXG4gIHN0YXRpYyBwcm9jZXNzRmlsZShyZXNwb25zZSkge1xuICAgIHJldHVybiBJMThOLmZyb21GaWxlKHJlc3BvbnNlLnJlcGxhY2VBbGwoJ1xcblxcbicsICdcXG4nKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBUdXJuIHJhdyB0ZXh0IGZyb20gdGhlIGxhbmd1YWdlIGZpbGVzIGludG8gZmFuY3kgSlNPTlxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHJhd1RleHRcbiAgICogQHJldHVybiB7T2JqZWN0fSBjb252ZXJ0ZWQgbGFuZ3VhZ2UgZmlsZVxuICAgKi9cbiAgc3RhdGljIGZyb21GaWxlKHJhd1RleHQpIHtcbiAgICBjb25zdCBsaW5lcyA9IHJhd1RleHQuc3BsaXQoJ1xcbicpXG4gICAgY29uc3QgbGFuZyA9IHt9XG5cbiAgICBmb3IgKGxldCBtYXRjaGVzLCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eKC4rPykgKj89ICo/KFteXFxuXSspL1xuICAgICAgbWF0Y2hlcyA9IHJlZ2V4LmV4ZWMobGluZXNbaV0pXG4gICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICBsYW5nW21hdGNoZXNbMV1dID0gbWF0Y2hlc1syXS50cmltKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFuZ1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge0kxOE5CYXNlfSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZShvcHRpb25zKSB7XG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgSTE4TkJhc2Uob3B0aW9ucylcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlXG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSAodXNlZnVsIGZvciB0ZXN0aW5nKVxuICAgKi9cbiAgc3RhdGljIHJlc2V0SW5zdGFuY2UoKSB7XG4gICAgaW5zdGFuY2UgPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhIHJlbW90ZWx5IHN0b3JlZCBsYW5ndWFnZSBmaWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59IHVzZUNhY2hlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgIHJlc29sdmVzIHJlc3BvbnNlXG4gICAqL1xuICBhc3luYyBsb2FkTGFuZyhsb2NhbGUsIHVzZUNhY2hlID0gdHJ1ZSkge1xuICAgIC8vIFJldHVybiBjYWNoZWQgbGFuZ3VhZ2UgaWYgYWxyZWFkeSBsb2FkZWRcbiAgICBpZiAodGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSAmJiB1c2VDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH1cbiAgICAvLyBGZXRjaCBhbmQgcHJvY2VzcyBsYW5ndWFnZSBmaWxlXG4gICAgY29uc3QgbGFuZ0ZpbGUgPSBgJHt0aGlzLmNvbmZpZy5sb2NhdGlvbn0ke2xvY2FsZX0ke3RoaXMuY29uZmlnLmV4dGVuc2lvbn1gXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbGFuZyA9IGF3YWl0IGZldGNoRGF0YShsYW5nRmlsZSlcbiAgICAgIGNvbnN0IHByb2Nlc3NlZEZpbGUgPSBJMThOQmFzZS5wcm9jZXNzRmlsZShsYW5nKVxuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgcHJvY2Vzc2VkRmlsZSlcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGFwcGxpZXMgb3ZlcnJpZGVzIGZyb20gY29uZmlnXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGxhbmdcbiAgICogQHJldHVybiB7T2JqZWN0fSBvdmVycmlkZW4gbGFuZ3VhZ2VcbiAgICovXG4gIGFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuY29uZmlnLm92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICBjb25zdCBleGlzdGluZ0xhbmcgPSB0aGlzLmxhbmdzW2xvY2FsZV0gfHwge31cbiAgICB0aGlzLmxhbmdzW2xvY2FsZV0gPSB7IC4uLmV4aXN0aW5nTGFuZywgLi4ubGFuZywgLi4ub3ZlcnJpZGUgfVxuICAgIHRoaXMubG9hZGVkLnB1c2gobG9jYWxlKVxuICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gY3VycmVudGx5IGF2YWlsYWJsZSBsYW5ndWFnZXNcbiAgICogQHJldHVybiB7T2JqZWN0fSBhbGwgY29uZmlndXJlZCBsYW5ndWFnZXNcbiAgICovXG4gIGdldCBnZXRMYW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcubGFuZ3NcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHNldCB0aGUgY3VycmVudCBsYW5ndWFnZSB0byB0aGUgbG9jYWwgcHJvdmlkZWRcbiAgICogQHBhcmFtIHtTdHJpbmd9ICAgbG9jYWxlXG4gICAqIEByZXR1cm4ge1Byb21pc2V9IGxhbmd1YWdlXG4gICAqL1xuICBhc3luYyBzZXRDdXJyZW50KGxvY2FsZSA9ICdlbi1VUycpIHtcbiAgICBpZiAoIXRoaXMubG9hZGVkLmluY2x1ZGVzKGxvY2FsZSkpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZExhbmcobG9jYWxlKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgdGhpcy5jdXJyZW50ID0gdGhpcy5sYW5nc1tsb2NhbGVdXG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50XG4gIH1cbn1cblxuLyoqXG4gKiBQcm94eSB3cmFwcGVyIHRoYXQgZW5hYmxlcyBzaW5nbGV0b24gcGF0dGVybjpcbiAqIC0gSTE4TigpIHJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICogLSBuZXcgSTE4TigpIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEkxOE4gPSBuZXcgUHJveHkoSTE4TkJhc2UsIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIEkxOE4oKSBpcyBpbnZva2VkIGFzIGEgZnVuY3Rpb24gKHdpdGhvdXQgbmV3KVxuICAgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICovXG4gIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykge1xuICAgIHJldHVybiB0YXJnZXQuZ2V0SW5zdGFuY2UoLi4uYXJncylcbiAgfSxcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gbmV3IEkxOE4oKSBpcyBpbnZva2VkXG4gICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdCh0YXJnZXQsIGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IHRhcmdldCguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBQcm94eSBwcm9wZXJ0eSBhY2Nlc3MgdG8gdGhlIGJhc2UgY2xhc3NcbiAgICovXG4gIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICByZXR1cm4gdGFyZ2V0W3Byb3BdXG4gIH0sXG59KVxuXG5leHBvcnQgZGVmYXVsdCBJMThOLmdldEluc3RhbmNlKClcbiJdLCJtYXBwaW5ncyI6InVUQUF1QixPQUFPLE9BQU8sQ0FBRSxPQUFRLE1BQU8sS0FBTSxLQ0U1RCxJQUFNLEVBQWlCLENBQ3JCLFVBQVcsUUFFWCxTQUFVLGVBRVYsTUFBTyxDQUFDLFNBQ1IsT0FBUSxRQUNSLFNBQVUsQ0FBQSxHQUlSLEVBQVcsS0FrUkYsRUFBTyxJQUFJLE1BM1F4QixNQUFNLEVBS0osV0FBQSxDQUFZLEVBQVUsR0FDcEIsS0FBSyxNQUFRLE9BQU8sT0FBTyxNQUMzQixLQUFLLE9BQVMsR0FDZCxLQUFLLGNBQWMsR0FPckIsYUFBQSxDQUFjLEdBQ1osTUFBTSxTQUFFLEtBQWEsR0FBZ0IsSUFBSyxLQUFtQixHQUV2RCxFQUFpQixFQUFTLFNBQVMsS0FBTyxFQUFXLEdBQUcsS0FDOUQsS0FBSyxPQUFTLENBQUUsU0FBVSxLQUFtQixHQUU3QyxNQUFNLFVBQUUsRUFBWSxDQUFBLEVBQUUsU0FBRSxFQUFXLENBQUEsR0FBTyxLQUFLLE9BSXpDLEVBQWEsSUFBSSxJQUFJLElBQUksT0FBTyxLQUFLLE1BQWUsT0FBTyxLQUFLLEtBSXRFLElBQUssTUFBTSxLQUFVLEVBQVksQ0FDL0IsTUFHTSxFQUFhLElBSEcsRUFBVSxJQUFXLENBQUEsS0FDdEIsRUFBUyxJQUFXLENBQUEsR0FHekMsS0FBSyxjQUFjLEVBQVEsR0FHN0IsS0FBSyxPQUFTLEtBQUssT0FBTyxRQUFVLEtBQUssT0FBTyxNQUFNLEdBUXhELElBQUEsQ0FBSyxHQUVILE9BREEsS0FBSyxjQUFjLElBQUssS0FBSyxVQUFXLElBQ2pDLEtBQUssV0FBVyxLQUFLLFFBUTlCLFdBQUEsQ0FBWSxFQUFRLEVBQU8sQ0FBQSxHQUN6QixFQUF1QixpQkFBVCxFQUFvQixFQUFTLFlBQVksR0FBUSxFQUMvRCxLQUFLLGNBQWMsRUFBUSxHQUMzQixLQUFLLE9BQU8sS0FBSyxHQUNqQixLQUFLLE9BQU8sTUFBTSxLQUFLLEdBU3pCLFFBQUEsQ0FBUyxFQUFLLEVBQVMsS0FBSyxRQUUxQixPQURjLEtBQUssTUFBTSxLQUFVLElBQ25CLEtBQUssaUJBQWlCLEdBUXhDLGdCQUFBLENBQWlCLEdBRWYsT0FEcUIsT0FBTyxPQUFPLEtBQUssT0FBTyxLQUFLLEdBQVEsRUFBSyxNQUMzQyxHQVF4QixRQUFBLENBQVMsR0FDUCxNQUFNLEVBQVMsQ0FDYixJQUFLLE9BQU8sR0FBRyxLQUNmLElBQUssT0FBTyxHQUFHLEtBQ2YsSUFBSyxPQUFPLEdBQUcsTUFHWCxFQUFhLEVBQUksV0FBVyxTQUFVLEdBQVcsRUFBTyxJQUU5RCxPQUFPLElBQUksT0FBTyxFQUFZLEtBU2hDLEdBQUEsQ0FBSSxFQUFLLEdBR1AsT0FGQSxLQUFLLFFBQVEsR0FBTyxFQUViLEVBU1QsR0FBQSxDQUFJLEVBQUssR0FDUCxJQUFJLEVBQVEsS0FBSyxTQUFTLEdBQzFCLElBQUssRUFDSCxPQUlGLElBQUssRUFDSCxPQUFPLEVBR1QsTUFBTSxFQUFTLEVBQU0sTUFBTSxlQUczQixJQUFLLEVBQ0gsT0FBTyxFQUlULEdBQW9CLGlCQUFULEVBQ1QsSUFBSyxNQUFNLEtBQVMsRUFBUSxDQUMxQixNQUFNLEVBQVcsRUFBTSxNQUFNLEdBQUcsR0FDaEMsRUFBUSxFQUFNLFFBQVEsS0FBSyxTQUFTLEdBQVEsRUFBSyxJQUFhLFNBSWhFLEVBQVEsRUFBTSxXQUFXLGNBQWUsR0FHMUMsT0FBTyxFQVFULGtCQUFPLENBQVksR0FDakIsT0FBTyxFQUFLLFNBQVMsRUFBUyxXQUFXLE9BQVEsT0FRbkQsZUFBTyxDQUFTLEdBQ2QsTUFBTSxFQUFRLEVBQVEsTUFBTSxNQUN0QixFQUFPLENBQUEsRUFFYixJQUFLLElBQUksRUFBUyxFQUFJLEVBQUcsRUFBSSxFQUFNLE9BQVEsSUFFekMsRUFBVSx3QkFBTSxLQUFLLEVBQU0sSUFDdkIsSUFDRixFQUFLLEVBQVEsSUFBTSxFQUFRLEdBQUcsUUFJbEMsT0FBTyxFQVFULGtCQUFPLENBQVksR0FJakIsT0FISyxJQUNILEVBQVcsSUFBSSxFQUFTLElBRW5CLEVBTVQsb0JBQU8sR0FDTCxFQUFXLEtBU2IsY0FBTSxDQUFTLEVBQVEsR0FBVyxHQUVoQyxHQUFJLEtBQUssT0FBTyxTQUFTLElBQVcsRUFDbEMsT0FBTyxLQUFLLE1BQU0sR0FHcEIsTUFBTSxFQUFXLEdBQUcsS0FBSyxPQUFPLFdBQVcsSUFBUyxLQUFLLE9BQU8sWUFFaEUsSUFDRSxNQUFNLFFEdE5aLGVBQWdDLEdBQzlCLElBQ0UsTUFBTSxRQUFpQixNQUFNLEdBQzdCLElBQUssRUFBUyxHQUNaLE1BQU0sSUFBSSxNQUFNLHVCQUF1QixFQUFTLFVBSWxELGFBRG1CLEVBREgsRUFBSSxTQUFTLFNBQVcsT0FBUyxnQkFHMUMsR0FFUCxNQUFNLEdDMk1lLENBQVUsR0FDdkIsRUFBZ0IsRUFBUyxZQUFZLEdBRTNDLE9BREEsS0FBSyxjQUFjLEVBQVEsR0FDcEIsS0FBSyxNQUFNLFNBQ1gsR0FFUCxPQUFPLEtBQUssY0FBYyxJQVU5QixhQUFBLENBQWMsRUFBUSxFQUFPLENBQUEsR0FDM0IsTUFBTSxFQUFXLEtBQUssT0FBTyxTQUFTLElBQVcsQ0FBQSxFQUMzQyxFQUFlLEtBQUssTUFBTSxJQUFXLENBQUEsRUFHM0MsT0FGQSxLQUFLLE1BQU0sR0FBVSxJQUFLLEtBQWlCLEtBQVMsR0FDcEQsS0FBSyxPQUFPLEtBQUssR0FDVixLQUFLLE1BQU0sR0FPcEIsWUFBSSxHQUNGLE9BQU8sS0FBSyxPQUFPLE1BUXJCLGdCQUFNLENBQVcsRUFBUyxTQVF4QixPQVBLLEtBQUssT0FBTyxTQUFTLFVBQ2xCLEtBQUssU0FBUyxHQUd0QixLQUFLLE9BQVMsRUFDZCxLQUFLLFFBQVUsS0FBSyxNQUFNLEdBRW5CLEtBQUssVUFTd0IsQ0FLdEMsTUFBQSxDQUFNLEVBQVEsRUFBUyxJQUNkLEVBQU8sZUFBZSxHQU8vQixVQUFBLENBQVUsRUFBUSxJQUNULElBQUksS0FBVSxHQU12QixJQUFBLENBQUksRUFBUSxJQUNILEVBQU8sS0FJbEIsRUFBZSxFQUFLIn0=
8
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).i18n={})}(this,function(t){Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),Object.freeze({method:"GET",body:""});var e={extension:".lang",location:"assets/lang/",langs:["en-US"],locale:"en-US",override:{}},n=null,s=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),l=(t,e)=>{Array.isArray(t)&&!t.includes(e)&&t.push(e)},i=(t,e)=>e?null!=t:Boolean(t),a=new Map,o=(t,e)=>{const n=new Set;return 0===t&&n.add("zero"),n.add(((t,e)=>{const n=1===e?"one":"other";if("undefined"==typeof Intl||"function"!=typeof Intl.PluralRules)return n;if(!a.has(t)){let e=null;try{e=new Intl.PluralRules(String(t).replaceAll("_","-"))}catch{}a.set(t,e)}const s=a.get(t);return s?s.select(e):n})(e,t)),n.add("other"),[...n]},r=new Proxy(class t{constructor(t=e){this.langs=Object.create(null),this.loaded=[],this.processConfig(t)}processConfig(t){const{location:n,...s}={...e,...t},l=n.endsWith("/")?n:`${n}/`;Array.isArray(s.langs)&&(s.langs=[...new Set(s.langs)]),this.config={location:l,...s};const{preloaded:i={},override:a={}}=this.config,o=new Set([...Object.keys(i),...Object.keys(a)]);for(const e of o){const t={...i[e]||{},...a[e]||{}};this.applyLanguage(e,t)}this.locale=this.config.locale||this.config.langs[0]}init(t){this.processConfig({...this.config,...t});const e=this.getFallbackLocales().filter(t=>!this.loaded.includes(t));return e.length?Promise.all([this.setCurrent(this.locale),...e.map(t=>this.loadLang(t))]).then(([t])=>t):this.setCurrent(this.locale)}addLanguage(e,n={}){n="string"==typeof n?t.processFile(n):n,this.applyLanguage(e,n),l(this.loaded,e),l(this.config.langs,e)}getFallbackLocales(){const{fallbackLocale:t}=this.config;return[].concat(t??[]).filter(t=>"string"==typeof t&&t)}getLocaleChain(t=this.locale){const e=[t],n=String(t).split(/[-_]/)[0];return n&&this.langs[n]&&e.push(n),e.push(...this.getFallbackLocales()),[...new Set(e)]}getValue(t,e=this.locale){if(!this.config.fallbackLocale)return this.langs[e]?.[t]||this.getFallbackValue(t);for(const n of this.getLocaleChain(e)){const e=this.langs[n];if(e&&s(e,t)&&i(e[t],!0))return e[t]}}getPluralValue(t,e,n=this.locale){const l=Boolean(this.config.fallbackLocale),a=l?this.getLocaleChain(n):new Set([n,...Object.keys(this.langs)]);for(const r of a){const n=this.langs[r];if(n)for(const a of o(e,r)){const e=`${t}.${a}`;if(s(n,e)&&i(n[e],l))return n[e]}}}handleMissing(t){const{onMissing:e}=this.config;if("function"==typeof e){const n=e(t);if("string"==typeof n)return n}}getFallbackValue(t){return Object.values(this.langs).find(e=>e[t])?.[t]}makeSafe(t){const e={"{":String.raw`\{`,"}":String.raw`\}`,"|":String.raw`\|`},n=t.replaceAll(/[{}|]/g,t=>e[t]);return new RegExp(n,"g")}put(t,e,n){let s;return s=void 0===n?this.current||(this.langs[this.locale]??={}):this.langs[n]??={},s[t]=e,e}get(t,e,n=this.locale){const s=Boolean(this.config.fallbackLocale);let l=this.getValue(t,n);if(!i(l,s)){const s=(t=>"number"==typeof t?t:t&&"object"==typeof t&&"number"==typeof t.count?t.count:void 0)(e);l=void 0===s?void 0:this.getPluralValue(t,s,n)}if(!i(l,s))return this.handleMissing({key:t,locale:n,type:"key"});if(!e&&0!==e)return l;const a=l.match(/\{[^}]+?\}/g);if(!a)return l;if("object"==typeof e)for(const i of a){const s=i.slice(1,-1);let a=e[s];null==a&&(a=this.handleMissing({key:t,locale:n,type:"arg",arg:s})??""),l=l.replace(this.makeSafe(i),a)}else l=l.replaceAll(/\{[^}]+?\}/g,e);return l}t(t,e,n){const s=this.get(t,e,n);return void 0===s?t:s}forLocale(t){return(e,n)=>this.t(e,n,t)}static processFile(t){return r.fromFile(t)}static fromFile(t){const e=String(t).replaceAll("\r\n","\n").split("\n"),n={},s=/^(.+?) *?= *?([^\n]+)/,l=t=>{const e=s.exec(t),l=e?.[1].trim();l&&(n[l]=e[2].trim())};let i=null;for(const a of e){let t=a;if(null!==i)t=i+a.trimStart(),i=null;else if(/^\s*[#;]/.test(a))continue;/(^|[^\\])\\$/.test(t)?i=t.slice(0,-1):l(t)}return null!==i&&l(i),n}static parse(t){return r.processFile(t)}static getInstance(e){return n||(n=new t(e)),n}static resetInstance(){n=null}async loadLang(e,n=!0){if(this.loaded.includes(e)&&n)return this.langs[e];const s=`${this.config.location}${e}${this.config.extension}`;try{const n=await async function(t){try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);return await e[t.endsWith(".lang")?"text":"json"]()}catch(e){throw e}}(s),l="string"==typeof n?t.processFile(n):n;return this.applyLanguage(e,l),this.langs[e]}catch(l){return this.applyLanguage(e)}}applyLanguage(t,e={}){const n=this.config.override[t]||{},s=this.langs[t]||{};return this.langs[t]={...s,...e,...n},this.current&&t===this.locale&&(this.current=this.langs[t]),l(this.loaded,t),this.langs[t]}get getLangs(){return this.config.langs}async setCurrent(t="en-US"){return this.loaded.includes(t)||await this.loadLang(t),this.locale=t,this.current=this.langs[t],this.current}},{apply:(t,e,n)=>t.getInstance(...n),construct:(t,e)=>new t(...e),get:(t,e)=>t[e]}),c=r.getInstance();t.I18N=r,t.default=c});
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51bWQubWluLmpzIiwibmFtZXMiOlsiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJnbG9iYWxUaGlzIiwic2VsZiIsImkxOG4iLCJ0aGlzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydGllcyIsIl9fZXNNb2R1bGUiLCJ2YWx1ZSIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwiZnJlZXplIiwibWV0aG9kIiwiYm9keSIsIkRFRkFVTFRfQ09ORklHIiwiZXh0ZW5zaW9uIiwibG9jYXRpb24iLCJsYW5ncyIsImxvY2FsZSIsIm92ZXJyaWRlIiwiaW5zdGFuY2UiLCJoYXNPd24iLCJvYmoiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwdXNoVW5pcXVlIiwiYXJyIiwiaXRlbSIsIkFycmF5IiwiaXNBcnJheSIsImluY2x1ZGVzIiwicHVzaCIsImlzUHJlc2VudCIsInN0cmljdCIsIkJvb2xlYW4iLCJwbHVyYWxSdWxlc0NhY2hlIiwiTWFwIiwiZ2V0UGx1cmFsU3VmZml4ZXMiLCJjb3VudCIsInN1ZmZpeGVzIiwiU2V0IiwiYWRkIiwiYmFzaWNDYXRlZ29yeSIsIkludGwiLCJQbHVyYWxSdWxlcyIsImhhcyIsInJ1bGVzIiwiU3RyaW5nIiwicmVwbGFjZUFsbCIsInNldCIsImdldCIsInNlbGVjdCIsImdldFBsdXJhbENhdGVnb3J5IiwiSTE4TiIsIlByb3h5IiwiSTE4TkJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJjcmVhdGUiLCJsb2FkZWQiLCJwcm9jZXNzQ29uZmlnIiwicmVzdE9wdGlvbnMiLCJwYXJzZWRMb2NhdGlvbiIsImVuZHNXaXRoIiwiY29uZmlnIiwicHJlbG9hZGVkIiwiYWxsTG9jYWxlcyIsImtleXMiLCJtZXJnZWRMYW5nIiwiYXBwbHlMYW5ndWFnZSIsImluaXQiLCJmYWxsYmFja3MiLCJnZXRGYWxsYmFja0xvY2FsZXMiLCJmaWx0ZXIiLCJsZW5ndGgiLCJQcm9taXNlIiwiYWxsIiwic2V0Q3VycmVudCIsIm1hcCIsImxvYWRMYW5nIiwidGhlbiIsImN1cnJlbnQiLCJhZGRMYW5ndWFnZSIsImxhbmciLCJwcm9jZXNzRmlsZSIsImZhbGxiYWNrTG9jYWxlIiwiY29uY2F0IiwiZ2V0TG9jYWxlQ2hhaW4iLCJjaGFpbiIsImJhc2VMb2NhbGUiLCJzcGxpdCIsImdldFZhbHVlIiwiZ2V0RmFsbGJhY2tWYWx1ZSIsImNoYWluTG9jYWxlIiwiZ2V0UGx1cmFsVmFsdWUiLCJsb2NhbGVzIiwicGx1cmFsTG9jYWxlIiwic3VmZml4IiwicGx1cmFsS2V5IiwiaGFuZGxlTWlzc2luZyIsImluZm8iLCJvbk1pc3NpbmciLCJyZXN1bHQiLCJ2YWx1ZXMiLCJmaW5kIiwibWFrZVNhZmUiLCJzdHIiLCJtYXBPYmoiLCJyYXciLCJlc2NhcGVkU3RyIiwibWF0Y2hlZCIsIlJlZ0V4cCIsInB1dCIsInN0cmluZyIsImFyZ3MiLCJnZXRDb3VudCIsInR5cGUiLCJ0b2tlbnMiLCJtYXRjaCIsInRva2VuIiwidG9rZW5LZXkiLCJzbGljZSIsInJlcGxhY2VtZW50IiwiYXJnIiwicmVwbGFjZSIsInQiLCJmb3JMb2NhbGUiLCJyZXNwb25zZSIsImZyb21GaWxlIiwicmF3VGV4dCIsImxpbmVzIiwicmVnZXgiLCJwYXJzZUxpbmUiLCJsaW5lIiwibWF0Y2hlcyIsImV4ZWMiLCJ0cmltIiwiY29udGludWVkIiwibG9naWNhbExpbmUiLCJ0cmltU3RhcnQiLCJ0ZXN0IiwicGFyc2UiLCJ0ZXh0IiwiZ2V0SW5zdGFuY2UiLCJyZXNldEluc3RhbmNlIiwidXNlQ2FjaGUiLCJsYW5nRmlsZSIsImFzeW5jIiwidXJsIiwiZmV0Y2giLCJvayIsIkVycm9yIiwic3RhdHVzIiwiZXJyb3IiLCJmZXRjaERhdGEiLCJwcm9jZXNzZWRGaWxlIiwiZXJyIiwiZXhpc3RpbmdMYW5nIiwiZ2V0TGFuZ3MiLCJhcHBseSIsInRhcmdldCIsInRoaXNBcmciLCJjb25zdHJ1Y3QiLCJwcm9wIiwibWkxOG5fZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvZmV0Y2guanMiLCIuLi9zcmMvbWkxOG4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBPYmplY3QuZnJlZXplKHsgbWV0aG9kOiAnR0VUJywgYm9keTogJycgfSlcbi8qKlxuICogRmV0Y2hlcyBhIHJlc291cmNlIGZyb20gdGhlIG5ldHdvcmsuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgdG8gZmV0Y2guXG4gKiBAcGFyYW0ge09iamVjdH0gW2ZldGNoT3B0aW9ucz17fV0gLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGZldGNoIHJlcXVlc3QuXG4gKiBAcGFyYW0ge09iamVjdH0gW2ZldGNoT3B0aW9ucy5oZWFkZXJzXSAtIEhlYWRlcnMgdG8gaW5jbHVkZSBpbiB0aGUgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmV0Y2hPcHRpb25zLm1ldGhvZF0gLSBUaGUgSFRUUCBtZXRob2QgdG8gdXNlIChlLmcuLCAnR0VUJywgJ1BPU1QnKS5cbiAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcn0gW2ZldGNoT3B0aW9ucy5ib2R5XSAtIFRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LlxuICogQHJldHVybiB7UHJvbWlzZTxPYmplY3Q+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgcmVzcG9uc2Ugb2JqZWN0LlxuICogQHJldHVybiB7Ym9vbGVhbn0gcmV0dXJuLm9rIC0gSW5kaWNhdGVzIGlmIHRoZSByZXNwb25zZSBzdGF0dXMgaXMgaW4gdGhlIHJhbmdlIDIwMC0yOTkuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHJldHVybi5zdGF0dXMgLSBUaGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHJldHVybi5zdGF0dXNUZXh0IC0gVGhlIEhUVFAgc3RhdHVzIG1lc3NhZ2Ugb2YgdGhlIHJlc3BvbnNlLlxuICogQHJldHVybiB7TWFwPHN0cmluZywgc3RyaW5nPn0gcmV0dXJuLmhlYWRlcnMgLSBUaGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2UuXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IHJldHVybi5ib2R5IC0gVGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlIGFzIGEgQnVmZmVyLlxuICogQHJldHVybiB7ZnVuY3Rpb24oKTogUHJvbWlzZTxCdWZmZXI+fSByZXR1cm4uYXJyYXlCdWZmZXIgLSBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBib2R5IGFzIGFuIEFycmF5QnVmZmVyLlxuICogQHJldHVybiB7ZnVuY3Rpb24oKTogUHJvbWlzZTxPYmplY3Q+fSByZXR1cm4uanNvbiAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGJvZHkgcGFyc2VkIGFzIEpTT04uXG4gKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoRGF0YSh1cmwpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybClcbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEhUVFAgZXJyb3IhIHN0YXR1czogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICB9XG4gICAgY29uc3QgaGFuZGxlciA9IHVybC5lbmRzV2l0aCgnLmxhbmcnKSA/ICd0ZXh0JyA6ICdqc29uJ1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZVtoYW5kbGVyXSgpXG4gICAgcmV0dXJuIGRhdGFcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdUaGVyZSBoYXMgYmVlbiBhIHByb2JsZW0gd2l0aCB5b3VyIGZldGNoIG9wZXJhdGlvbjonLCBlcnJvcilcbiAgICB0aHJvdyBlcnJvclxuICB9XG59XG4iLCJpbXBvcnQgeyBmZXRjaERhdGEgfSBmcm9tICcuL2ZldGNoLmpzJ1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRyA9IHtcbiAgZXh0ZW5zaW9uOiAnLmxhbmcnLFxuICAvLyBsb2NhbCBvciByZW1vdGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgbGFuZ3VhZ2UgZmlsZXNcbiAgbG9jYXRpb246ICdhc3NldHMvbGFuZy8nLFxuICAvLyBsaXN0IG9mIGF2YWlsYWJsZSBsb2NhbGVzLCBoYW5keSBmb3IgcG9wdWxhdGluZyBzZWxlY3Rvci5cbiAgbGFuZ3M6IFsnZW4tVVMnXSxcbiAgbG9jYWxlOiAnZW4tVVMnLCAvLyBpbml0IHdpdGggdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZVxuICBvdmVycmlkZToge30sXG59XG5cbi8vIFNpbmdsZXRvbiBpbnN0YW5jZSBob2xkZXJcbmxldCBpbnN0YW5jZSA9IG51bGxcblxuY29uc3QgaGFzT3duID0gKG9iaiwga2V5KSA9PiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpXG5cbi8qKlxuICogQWRkIGFuIGl0ZW0gdG8gYW4gYXJyYXkgaWYgaXQgaXMgbm90IGFscmVhZHkgcHJlc2VudFxuICogQHBhcmFtIHtBcnJheX0gYXJyXG4gKiBAcGFyYW0geyp9IGl0ZW1cbiAqL1xuY29uc3QgcHVzaFVuaXF1ZSA9IChhcnIsIGl0ZW0pID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSAmJiAhYXJyLmluY2x1ZGVzKGl0ZW0pKSB7XG4gICAgYXJyLnB1c2goaXRlbSlcbiAgfVxufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBsb29rZWQgdXAgdmFsdWUgY291bnRzIGFzIHByZXNlbnQuXG4gKiBMZWdhY3kgbG9va3VwcyB0cmVhdCBlbXB0eSBzdHJpbmdzIGFzIG1pc3NpbmcsIGZhbGxiYWNrTG9jYWxlIGxvb2t1cHMgZG8gbm90LlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHBhcmFtIHtCb29sZWFufSBzdHJpY3QgdHJ1ZSB3aGVuIGZhbGxiYWNrTG9jYWxlIGlzIGNvbmZpZ3VyZWRcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmNvbnN0IGlzUHJlc2VudCA9ICh2YWx1ZSwgc3RyaWN0KSA9PiAoc3RyaWN0ID8gdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCA6IEJvb2xlYW4odmFsdWUpKVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIHBsdXJhbCBjb3VudCBmcm9tIGdldC90IGFyZ3NcbiAqIEBwYXJhbSB7Kn0gYXJnc1xuICogQHJldHVybiB7TnVtYmVyfHVuZGVmaW5lZH1cbiAqL1xuY29uc3QgZ2V0Q291bnQgPSBhcmdzID0+IHtcbiAgaWYgKHR5cGVvZiBhcmdzID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBhcmdzXG4gIH1cbiAgaWYgKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmIHR5cGVvZiBhcmdzLmNvdW50ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBhcmdzLmNvdW50XG4gIH1cbn1cblxuY29uc3QgcGx1cmFsUnVsZXNDYWNoZSA9IG5ldyBNYXAoKVxuXG4vKipcbiAqIEdldCB0aGUgQ0xEUiBwbHVyYWwgY2F0ZWdvcnkgZm9yIGEgY291bnQgaW4gYSBsb2NhbGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBjb3VudFxuICogQHJldHVybiB7U3RyaW5nfSBwbHVyYWwgY2F0ZWdvcnksIGVnLiAnb25lJywgJ2ZldycsICdvdGhlcidcbiAqL1xuY29uc3QgZ2V0UGx1cmFsQ2F0ZWdvcnkgPSAobG9jYWxlLCBjb3VudCkgPT4ge1xuICBjb25zdCBiYXNpY0NhdGVnb3J5ID0gY291bnQgPT09IDEgPyAnb25lJyA6ICdvdGhlcidcbiAgaWYgKHR5cGVvZiBJbnRsID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgSW50bC5QbHVyYWxSdWxlcyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBiYXNpY0NhdGVnb3J5XG4gIH1cbiAgaWYgKCFwbHVyYWxSdWxlc0NhY2hlLmhhcyhsb2NhbGUpKSB7XG4gICAgbGV0IHJ1bGVzID0gbnVsbFxuICAgIHRyeSB7XG4gICAgICBydWxlcyA9IG5ldyBJbnRsLlBsdXJhbFJ1bGVzKFN0cmluZyhsb2NhbGUpLnJlcGxhY2VBbGwoJ18nLCAnLScpKVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gaW52YWxpZCBsb2NhbGUgdGFnXG4gICAgfVxuICAgIHBsdXJhbFJ1bGVzQ2FjaGUuc2V0KGxvY2FsZSwgcnVsZXMpXG4gIH1cbiAgY29uc3QgcnVsZXMgPSBwbHVyYWxSdWxlc0NhY2hlLmdldChsb2NhbGUpXG4gIHJldHVybiBydWxlcyA/IHJ1bGVzLnNlbGVjdChjb3VudCkgOiBiYXNpY0NhdGVnb3J5XG59XG5cbi8qKlxuICogUGx1cmFsIGtleSBzdWZmaXhlcyB0byB0cnksIGluIG9yZGVyXG4gKiBAcGFyYW0ge051bWJlcn0gY291bnRcbiAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAqIEByZXR1cm4ge1N0cmluZ1tdfVxuICovXG5jb25zdCBnZXRQbHVyYWxTdWZmaXhlcyA9IChjb3VudCwgbG9jYWxlKSA9PiB7XG4gIGNvbnN0IHN1ZmZpeGVzID0gbmV3IFNldCgpXG4gIGlmIChjb3VudCA9PT0gMCkge1xuICAgIHN1ZmZpeGVzLmFkZCgnemVybycpXG4gIH1cbiAgc3VmZml4ZXMuYWRkKGdldFBsdXJhbENhdGVnb3J5KGxvY2FsZSwgY291bnQpKVxuICBzdWZmaXhlcy5hZGQoJ290aGVyJylcbiAgcmV0dXJuIFsuLi5zdWZmaXhlc11cbn1cblxuLyoqXG4gKiBNYWluIGkxOG4gY2xhc3NcbiAqIEBjbGFzcyBJMThOQmFzZVxuICogQGNsYXNzZGVzYyBtZXRob2RzIGFuZCBkYXRhIHN0b3JlIGZvciBpMThuXG4gKi9cbmNsYXNzIEkxOE5CYXNlIHtcbiAgLyoqXG4gICAqIFByb2Nlc3Mgb3B0aW9ucyBhbmQgc3RhcnQgdGhlIG1vZHVsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucyA9IERFRkFVTFRfQ09ORklHKSB7XG4gICAgdGhpcy5sYW5ncyA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgICB0aGlzLmxvYWRlZCA9IFtdXG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnKG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogcGFyc2UgYW5kIGZvcm1hdCBjb25maWdcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICovXG4gIHByb2Nlc3NDb25maWcob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbG9jYXRpb24sIC4uLnJlc3RPcHRpb25zIH0gPSB7IC4uLkRFRkFVTFRfQ09ORklHLCAuLi5vcHRpb25zIH1cbiAgICAvLyBFbnN1cmUgbG9jYXRpb24gZW5kcyB3aXRoIGEgc2xhc2hcbiAgICBjb25zdCBwYXJzZWRMb2NhdGlvbiA9IGxvY2F0aW9uLmVuZHNXaXRoKCcvJykgPyBsb2NhdGlvbiA6IGAke2xvY2F0aW9ufS9gXG4gICAgLy8gQ29weSBsYW5ncyBzbyB0aGUgZGVmYXVsdHMgYW5kIHVzZXIgc3VwcGxpZWQgYXJyYXlzIGFyZSBuZXZlciBtdXRhdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdE9wdGlvbnMubGFuZ3MpKSB7XG4gICAgICByZXN0T3B0aW9ucy5sYW5ncyA9IFsuLi5uZXcgU2V0KHJlc3RPcHRpb25zLmxhbmdzKV1cbiAgICB9XG4gICAgdGhpcy5jb25maWcgPSB7IGxvY2F0aW9uOiBwYXJzZWRMb2NhdGlvbiwgLi4ucmVzdE9wdGlvbnMgfVxuXG4gICAgY29uc3QgeyBwcmVsb2FkZWQgPSB7fSwgb3ZlcnJpZGUgPSB7fSB9ID0gdGhpcy5jb25maWdcblxuICAgIC8vIE1lcmdlIGxvY2FsZXMgZnJvbSBib3RoIHByZWxvYWRlZCBhbmQgb3ZlcnJpZGVcbiAgICAvLyBUaGlzIHN1cHBvcnRzIGxlZ2FjeSB1c2FnZSB3aGVyZSBvdmVycmlkZSBkZWZpbmVkIGVudGlyZSBsYW5ndWFnZXNcbiAgICBjb25zdCBhbGxMb2NhbGVzID0gbmV3IFNldChbLi4uT2JqZWN0LmtleXMocHJlbG9hZGVkKSwgLi4uT2JqZWN0LmtleXMob3ZlcnJpZGUpXSlcblxuICAgIC8vIEFwcGx5IGxhbmd1YWdlcyBmcm9tIGJvdGggcHJlbG9hZGVkIGFuZCBvdmVycmlkZVxuICAgIC8vIGFwcGx5TGFuZ3VhZ2Ugd2lsbCBtZXJnZSB0aGVtIHByb3Blcmx5IChleGlzdGluZyArIHByZWxvYWRlZCArIG92ZXJyaWRlKVxuICAgIGZvciAoY29uc3QgbG9jYWxlIG9mIGFsbExvY2FsZXMpIHtcbiAgICAgIGNvbnN0IHByZWxvYWRlZExhbmcgPSBwcmVsb2FkZWRbbG9jYWxlXSB8fCB7fVxuICAgICAgY29uc3Qgb3ZlcnJpZGVMYW5nID0gb3ZlcnJpZGVbbG9jYWxlXSB8fCB7fVxuICAgICAgLy8gTWVyZ2UgcHJlbG9hZGVkIGFuZCBvdmVycmlkZSBmb3IgdGhpcyBsb2NhbGVcbiAgICAgIGNvbnN0IG1lcmdlZExhbmcgPSB7IC4uLnByZWxvYWRlZExhbmcsIC4uLm92ZXJyaWRlTGFuZyB9XG4gICAgICB0aGlzLmFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBtZXJnZWRMYW5nKVxuICAgIH1cblxuICAgIHRoaXMubG9jYWxlID0gdGhpcy5jb25maWcubG9jYWxlIHx8IHRoaXMuY29uZmlnLmxhbmdzWzBdXG4gIH1cblxuICAvKipcbiAgICogTG9hZCBsYW5ndWFnZSBhbmQgc2V0IGRlZmF1bHRcbiAgICogQHBhcmFtICB7T2JqZWN0fSBvcHRpb25zXG4gICAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgICByZXNvbHZlcyBsYW5ndWFnZVxuICAgKi9cbiAgaW5pdChvcHRpb25zKSB7XG4gICAgdGhpcy5wcm9jZXNzQ29uZmlnKHsgLi4udGhpcy5jb25maWcsIC4uLm9wdGlvbnMgfSlcbiAgICAvLyBGYWxsYmFjayBsb2NhbGVzIGFyZSBsb2FkZWQgYWxvbmdzaWRlIHRoZSBjdXJyZW50IGxvY2FsZSBzbyBsb29rdXBzIGNhbiBmYWxsIGJhY2sgdG8gdGhlbVxuICAgIGNvbnN0IGZhbGxiYWNrcyA9IHRoaXMuZ2V0RmFsbGJhY2tMb2NhbGVzKCkuZmlsdGVyKGxvY2FsZSA9PiAhdGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSlcbiAgICBpZiAoIWZhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldEN1cnJlbnQodGhpcy5sb2NhbGUpXG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChbdGhpcy5zZXRDdXJyZW50KHRoaXMubG9jYWxlKSwgLi4uZmFsbGJhY2tzLm1hcChsb2NhbGUgPT4gdGhpcy5sb2FkTGFuZyhsb2NhbGUpKV0pLnRoZW4oXG4gICAgICAoW2N1cnJlbnRdKSA9PiBjdXJyZW50LFxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbGFuZ3VhZ2UgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcGFyYW0ge1N0cmluZ30gbG9jYWxlXG4gICAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gbGFuZ1xuICAgKi9cbiAgYWRkTGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBsYW5nID0gdHlwZW9mIGxhbmcgPT09ICdzdHJpbmcnID8gSTE4TkJhc2UucHJvY2Vzc0ZpbGUobGFuZykgOiBsYW5nXG4gICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgbGFuZylcbiAgICBwdXNoVW5pcXVlKHRoaXMubG9hZGVkLCBsb2NhbGUpXG4gICAgcHVzaFVuaXF1ZSh0aGlzLmNvbmZpZy5sYW5ncywgbG9jYWxlKVxuICB9XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZWQgZmFsbGJhY2sgbG9jYWxlc1xuICAgKiBAcmV0dXJuIHtTdHJpbmdbXX1cbiAgICovXG4gIGdldEZhbGxiYWNrTG9jYWxlcygpIHtcbiAgICBjb25zdCB7IGZhbGxiYWNrTG9jYWxlIH0gPSB0aGlzLmNvbmZpZ1xuICAgIHJldHVybiBbXS5jb25jYXQoZmFsbGJhY2tMb2NhbGUgPz8gW10pLmZpbHRlcihsb2NhbGUgPT4gdHlwZW9mIGxvY2FsZSA9PT0gJ3N0cmluZycgJiYgbG9jYWxlKVxuICB9XG5cbiAgLyoqXG4gICAqIExvY2FsZXMgY2hlY2tlZCwgaW4gb3JkZXIsIHdoZW4gbG9va2luZyB1cCBhIGtleSB3aXRoIGZhbGxiYWNrTG9jYWxlIGNvbmZpZ3VyZWQ6XG4gICAqIHJlcXVlc3RlZCBsb2NhbGUsIGl0cyBiYXNlIGxhbmd1YWdlIChpZiBsb2FkZWQpLCB0aGVuIGVhY2ggZmFsbGJhY2sgbG9jYWxlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlXG4gICAqIEByZXR1cm4ge1N0cmluZ1tdfVxuICAgKi9cbiAgZ2V0TG9jYWxlQ2hhaW4obG9jYWxlID0gdGhpcy5sb2NhbGUpIHtcbiAgICBjb25zdCBjaGFpbiA9IFtsb2NhbGVdXG4gICAgY29uc3QgYmFzZUxvY2FsZSA9IFN0cmluZyhsb2NhbGUpLnNwbGl0KC9bLV9dLylbMF1cbiAgICBpZiAoYmFzZUxvY2FsZSAmJiB0aGlzLmxhbmdzW2Jhc2VMb2NhbGVdKSB7XG4gICAgICBjaGFpbi5wdXNoKGJhc2VMb2NhbGUpXG4gICAgfVxuICAgIGNoYWluLnB1c2goLi4udGhpcy5nZXRGYWxsYmFja0xvY2FsZXMoKSlcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoY2hhaW4pXVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCBhIHN0cmluZyBmcm9tIGEgbG9hZGVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXkgIC0gdGhlIGtleSBmb3IgdGhlIHN0cmluZyB3ZSBhcmUgdHJ5aW5nIHRvIHJldHJpZXZlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gbG9jYWxlIC0gbG9jYWxlIHRvIGNoZWNrIGZvciB2YWx1ZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGxhbmd1YWdlIHN0cmluZyBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldFZhbHVlKGtleSwgbG9jYWxlID0gdGhpcy5sb2NhbGUpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmFsbGJhY2tMb2NhbGUpIHtcbiAgICAgIGZvciAoY29uc3QgY2hhaW5Mb2NhbGUgb2YgdGhpcy5nZXRMb2NhbGVDaGFpbihsb2NhbGUpKSB7XG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxhbmdzW2NoYWluTG9jYWxlXVxuICAgICAgICBpZiAobGFuZyAmJiBoYXNPd24obGFuZywga2V5KSAmJiBpc1ByZXNlbnQobGFuZ1trZXldLCB0cnVlKSkge1xuICAgICAgICAgIHJldHVybiBsYW5nW2tleV1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmxhbmdzW2xvY2FsZV0/LltrZXldXG4gICAgcmV0dXJuIHZhbHVlIHx8IHRoaXMuZ2V0RmFsbGJhY2tWYWx1ZShrZXkpXG4gIH1cblxuICAvKipcbiAgICogRmluZCBhIHBsdXJhbCBmb3JtIG9mIGtleSwgZWcuIGBrZXkuemVyb2AsIGBrZXkub25lYCwgYGtleS5vdGhlcmBcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXlcbiAgICogQHBhcmFtICB7TnVtYmVyfSBjb3VudFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHBsdXJhbCBzdHJpbmcgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBnZXRQbHVyYWxWYWx1ZShrZXksIGNvdW50LCBsb2NhbGUgPSB0aGlzLmxvY2FsZSkge1xuICAgIGNvbnN0IHN0cmljdCA9IEJvb2xlYW4odGhpcy5jb25maWcuZmFsbGJhY2tMb2NhbGUpXG4gICAgY29uc3QgbG9jYWxlcyA9IHN0cmljdCA/IHRoaXMuZ2V0TG9jYWxlQ2hhaW4obG9jYWxlKSA6IG5ldyBTZXQoW2xvY2FsZSwgLi4uT2JqZWN0LmtleXModGhpcy5sYW5ncyldKVxuXG4gICAgZm9yIChjb25zdCBwbHVyYWxMb2NhbGUgb2YgbG9jYWxlcykge1xuICAgICAgY29uc3QgbGFuZyA9IHRoaXMubGFuZ3NbcGx1cmFsTG9jYWxlXVxuICAgICAgaWYgKCFsYW5nKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHN1ZmZpeCBvZiBnZXRQbHVyYWxTdWZmaXhlcyhjb3VudCwgcGx1cmFsTG9jYWxlKSkge1xuICAgICAgICBjb25zdCBwbHVyYWxLZXkgPSBgJHtrZXl9LiR7c3VmZml4fWBcbiAgICAgICAgaWYgKGhhc093bihsYW5nLCBwbHVyYWxLZXkpICYmIGlzUHJlc2VudChsYW5nW3BsdXJhbEtleV0sIHN0cmljdCkpIHtcbiAgICAgICAgICByZXR1cm4gbGFuZ1twbHVyYWxLZXldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwb3J0IGEgbWlzc2luZyBrZXkgb3IgYXJndW1lbnQgdG8gdGhlIG9uTWlzc2luZyBoYW5kbGVyXG4gICAqIEBwYXJhbSAge09iamVjdH0gaW5mbyB7IGtleSwgbG9jYWxlLCB0eXBlLCBhcmcgfVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHJlcGxhY2VtZW50IHN0cmluZyByZXR1cm5lZCBieSBvbk1pc3Npbmcgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBoYW5kbGVNaXNzaW5nKGluZm8pIHtcbiAgICBjb25zdCB7IG9uTWlzc2luZyB9ID0gdGhpcy5jb25maWdcbiAgICBpZiAodHlwZW9mIG9uTWlzc2luZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gb25NaXNzaW5nKGluZm8pXG4gICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgbGFuZ3VhZ2UgdGhhdCBoYXMgZGVzaXJlZCBrZXlcbiAgICogQHBhcmFtIHtTdHJpbmd9IGtleSB2YWx1ZSBrZXlcbiAgICogQHJldHVybiB7U3RyaW5nfSBmb3VuZCB2YWx1ZSBvciB1bmRlZmluZWRcbiAgICovXG4gIGdldEZhbGxiYWNrVmFsdWUoa2V5KSB7XG4gICAgY29uc3QgZmFsbGJhY2tMYW5nID0gT2JqZWN0LnZhbHVlcyh0aGlzLmxhbmdzKS5maW5kKGxhbmcgPT4gbGFuZ1trZXldKVxuICAgIHJldHVybiBmYWxsYmFja0xhbmc/LltrZXldXG4gIH1cblxuICAvKipcbiAgICogRXNjYXBlIHZhcmlhYmxlIHN5bnRheFxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IHN0clxuICAgKiBAcmV0dXJuIHtTdHJpbmd9ICAgICBlc2NhcGVkIHN0clxuICAgKi9cbiAgbWFrZVNhZmUoc3RyKSB7XG4gICAgY29uc3QgbWFwT2JqID0ge1xuICAgICAgJ3snOiBTdHJpbmcucmF3YFxce2AsXG4gICAgICAnfSc6IFN0cmluZy5yYXdgXFx9YCxcbiAgICAgICd8JzogU3RyaW5nLnJhd2BcXHxgLFxuICAgIH1cblxuICAgIGNvbnN0IGVzY2FwZWRTdHIgPSBzdHIucmVwbGFjZUFsbCgvW3t9fF0vZywgbWF0Y2hlZCA9PiBtYXBPYmpbbWF0Y2hlZF0pXG5cbiAgICByZXR1cm4gbmV3IFJlZ0V4cChlc2NhcGVkU3RyLCAnZycpXG4gIH1cblxuICAvKipcbiAgICogVGVtcG9yYXJpbHkgcHV0IGEgc3RyaW5nIGludG8gdGhlIGN1cnJlbnRseSBsb2FkZWQgbGFuZ3VhZ2UsIG9yIHRoZSBnaXZlbiBsb2NhbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBrZXlcbiAgICogQHBhcmFtICB7U3RyaW5nfSBzdHJpbmdcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGUgb3B0aW9uYWwgbG9jYWxlIHRvIHdyaXRlIHRvXG4gICAqIEByZXR1cm4ge1N0cmluZ30gc3RyaW5nIGluIGN1cnJlbnQgbGFuZ3VhZ2VcbiAgICovXG4gIHB1dChrZXksIHN0cmluZywgbG9jYWxlKSB7XG4gICAgbGV0IGxhbmdcbiAgICBpZiAobG9jYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGxhbmcgPSB0aGlzLmN1cnJlbnQgfHwgKHRoaXMubGFuZ3NbdGhpcy5sb2NhbGVdID8/PSB7fSlcbiAgICB9IGVsc2Uge1xuICAgICAgbGFuZyA9IHRoaXMubGFuZ3NbbG9jYWxlXSA/Pz0ge31cbiAgICB9XG4gICAgbGFuZ1trZXldID0gc3RyaW5nXG5cbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYXJndW1lbnRzIGZvciB0aGUgcmVxdWVzdGVkIHN0cmluZ1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGtleSAgdGhlIGtleSB3ZSB1c2UgdG8gbG9va3VwIG91ciB0cmFuc2xhdGlvblxuICAgKiBAcGFyYW0gIHttdWx0aX0gIGFyZ3MgIHN0cmluZywgbnVtYmVyIG9yIG9iamVjdCBjb250YWluaW5nIG91ciBhcmd1bWVudHNcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGUgb3B0aW9uYWwgbG9jYWxlLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBsb2NhbGVcbiAgICogQHJldHVybiB7U3RyaW5nfSAgICAgIHVwZGF0ZWQgc3RyaW5nIHRyYW5zbGF0aW9uXG4gICAqL1xuICBnZXQoa2V5LCBhcmdzLCBsb2NhbGUgPSB0aGlzLmxvY2FsZSkge1xuICAgIGNvbnN0IHN0cmljdCA9IEJvb2xlYW4odGhpcy5jb25maWcuZmFsbGJhY2tMb2NhbGUpXG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZShrZXksIGxvY2FsZSlcblxuICAgIGlmICghaXNQcmVzZW50KHZhbHVlLCBzdHJpY3QpKSB7XG4gICAgICBjb25zdCBjb3VudCA9IGdldENvdW50KGFyZ3MpXG4gICAgICB2YWx1ZSA9IGNvdW50ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0aGlzLmdldFBsdXJhbFZhbHVlKGtleSwgY291bnQsIGxvY2FsZSlcbiAgICB9XG5cbiAgICBpZiAoIWlzUHJlc2VudCh2YWx1ZSwgc3RyaWN0KSkge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTWlzc2luZyh7IGtleSwgbG9jYWxlLCB0eXBlOiAna2V5JyB9KVxuICAgIH1cblxuICAgIC8vIE5vIHJlcGxhY2VtZW50IG5lZWRlZCBpZiBubyBhcmdzIHByb3ZpZGVkXG4gICAgaWYgKCFhcmdzICYmIGFyZ3MgIT09IDApIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIGNvbnN0IHRva2VucyA9IHZhbHVlLm1hdGNoKC9cXHtbXn1dKz9cXH0vZylcblxuICAgIC8vIE5vIHRva2VucyB0byByZXBsYWNlXG4gICAgaWYgKCF0b2tlbnMpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuICAgIC8vIE9iamVjdCBhcmdzOiByZXBsYWNlIGVhY2ggdG9rZW4gd2l0aCBjb3JyZXNwb25kaW5nIGtleVxuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICAgIGNvbnN0IHRva2VuS2V5ID0gdG9rZW4uc2xpY2UoMSwgLTEpXG4gICAgICAgIGxldCByZXBsYWNlbWVudCA9IGFyZ3NbdG9rZW5LZXldXG4gICAgICAgIGlmIChyZXBsYWNlbWVudCA9PT0gdW5kZWZpbmVkIHx8IHJlcGxhY2VtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmVwbGFjZW1lbnQgPSB0aGlzLmhhbmRsZU1pc3NpbmcoeyBrZXksIGxvY2FsZSwgdHlwZTogJ2FyZycsIGFyZzogdG9rZW5LZXkgfSkgPz8gJydcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UodGhpcy5tYWtlU2FmZSh0b2tlbiksIHJlcGxhY2VtZW50KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmltaXRpdmUgYXJnczogcmVwbGFjZSBhbGwgdG9rZW5zIHdpdGggc2FtZSB2YWx1ZVxuICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKC9cXHtbXn1dKz9cXH0vZywgYXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBMaWtlIGdldCgpIGJ1dCBhbHdheXMgcmV0dXJucyBhIHN0cmluZywgZmFsbGluZyBiYWNrIHRvIHRoZSBrZXkgaXRzZWxmXG4gICAqIEBwYXJhbSAge1N0cmluZ30ga2V5ICB0aGUga2V5IHdlIHVzZSB0byBsb29rdXAgb3VyIHRyYW5zbGF0aW9uXG4gICAqIEBwYXJhbSAge211bHRpfSAgYXJncyAgc3RyaW5nLCBudW1iZXIgb3Igb2JqZWN0IGNvbnRhaW5pbmcgb3VyIGFyZ3VtZW50c1xuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZSBvcHRpb25hbCBsb2NhbGUsIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGxvY2FsZVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IHRyYW5zbGF0ZWQgc3RyaW5nIG9yIGtleVxuICAgKi9cbiAgdChrZXksIGFyZ3MsIGxvY2FsZSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXQoa2V5LCBhcmdzLCBsb2NhbGUpXG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyBrZXkgOiB2YWx1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHRyYW5zbGF0ZSBmdW5jdGlvbiBib3VuZCB0byBhIGxvY2FsZVxuICAgKiBAcGFyYW0gIHtTdHJpbmd9IGxvY2FsZVxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn0gKGtleSwgYXJncykgPT4gc3RyaW5nXG4gICAqL1xuICBmb3JMb2NhbGUobG9jYWxlKSB7XG4gICAgcmV0dXJuIChrZXksIGFyZ3MpID0+IHRoaXMudChrZXksIGFyZ3MsIGxvY2FsZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgbWV0aG9kOiBQcm9jZXNzIGEgbGFuZ3VhZ2UgZmlsZSBmcm9tIHJhdyB0ZXh0XG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmVzcG9uc2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBwcm9jZXNzZWQgbGFuZ3VhZ2VcbiAgICovXG4gIHN0YXRpYyBwcm9jZXNzRmlsZShyZXNwb25zZSkge1xuICAgIC8vIGJsYW5rIGxpbmVzIGFyZSBpZ25vcmVkIGJ5IGZyb21GaWxlXG4gICAgcmV0dXJuIEkxOE4uZnJvbUZpbGUocmVzcG9uc2UpXG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZDogVHVybiByYXcgdGV4dCBmcm9tIHRoZSBsYW5ndWFnZSBmaWxlcyBpbnRvIGZhbmN5IEpTT05cbiAgICogU3VwcG9ydHMgYCNgIGFuZCBgO2AgZnVsbC1saW5lIGNvbW1lbnRzIGFuZCB0cmFpbGluZyBgXFxgIGxpbmUgY29udGludWF0aW9uXG4gICAqIEBwYXJhbSAge1N0cmluZ30gcmF3VGV4dFxuICAgKiBAcmV0dXJuIHtPYmplY3R9IGNvbnZlcnRlZCBsYW5ndWFnZSBmaWxlXG4gICAqL1xuICBzdGF0aWMgZnJvbUZpbGUocmF3VGV4dCkge1xuICAgIGNvbnN0IGxpbmVzID0gU3RyaW5nKHJhd1RleHQpLnJlcGxhY2VBbGwoJ1xcclxcbicsICdcXG4nKS5zcGxpdCgnXFxuJylcbiAgICBjb25zdCBsYW5nID0ge31cbiAgICBjb25zdCByZWdleCA9IC9eKC4rPykgKj89ICo/KFteXFxuXSspL1xuICAgIGNvbnN0IHBhcnNlTGluZSA9IGxpbmUgPT4ge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IHJlZ2V4LmV4ZWMobGluZSlcbiAgICAgIGNvbnN0IGtleSA9IG1hdGNoZXM/LlsxXS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgbGFuZ1trZXldID0gbWF0Y2hlc1syXS50cmltKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY29udGludWVkID0gbnVsbFxuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgbGV0IGxvZ2ljYWxMaW5lID0gbGluZVxuICAgICAgaWYgKGNvbnRpbnVlZCAhPT0gbnVsbCkge1xuICAgICAgICBsb2dpY2FsTGluZSA9IGNvbnRpbnVlZCArIGxpbmUudHJpbVN0YXJ0KClcbiAgICAgICAgY29udGludWVkID0gbnVsbFxuICAgICAgfSBlbHNlIGlmICgvXlxccypbIztdLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIGEgc2luZ2xlIHRyYWlsaW5nIGJhY2tzbGFzaCBqb2lucyB0aGUgbmV4dCBsaW5lXG4gICAgICBpZiAoLyhefFteXFxcXF0pXFxcXCQvLnRlc3QobG9naWNhbExpbmUpKSB7XG4gICAgICAgIGNvbnRpbnVlZCA9IGxvZ2ljYWxMaW5lLnNsaWNlKDAsIC0xKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBwYXJzZUxpbmUobG9naWNhbExpbmUpXG4gICAgfVxuXG4gICAgaWYgKGNvbnRpbnVlZCAhPT0gbnVsbCkge1xuICAgICAgcGFyc2VMaW5lKGNvbnRpbnVlZClcbiAgICB9XG5cbiAgICByZXR1cm4gbGFuZ1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBtZXRob2Q6IFBhcnNlIHRoZSBjb250ZW50cyBvZiBhIGAubGFuZ2AgZmlsZSwgYWxpYXMgb2YgcHJvY2Vzc0ZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSB0ZXh0XG4gICAqIEByZXR1cm4ge09iamVjdH0gcHJvY2Vzc2VkIGxhbmd1YWdlXG4gICAqL1xuICBzdGF0aWMgcGFyc2UodGV4dCkge1xuICAgIHJldHVybiBJMThOLnByb2Nlc3NGaWxlKHRleHQpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzaW5nbGV0b24gaW5zdGFuY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICogQHJldHVybiB7STE4TkJhc2V9IHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGdldEluc3RhbmNlKG9wdGlvbnMpIHtcbiAgICBpZiAoIWluc3RhbmNlKSB7XG4gICAgICBpbnN0YW5jZSA9IG5ldyBJMThOQmFzZShvcHRpb25zKVxuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2VcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgc2luZ2xldG9uIGluc3RhbmNlICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gICAqL1xuICBzdGF0aWMgcmVzZXRJbnN0YW5jZSgpIHtcbiAgICBpbnN0YW5jZSA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgcmVtb3RlbHkgc3RvcmVkIGxhbmd1YWdlIGZpbGVcbiAgICogQHBhcmFtICB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtICB7Qm9vbGVhbn0gdXNlQ2FjaGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgICAgcmVzb2x2ZXMgcmVzcG9uc2VcbiAgICovXG4gIGFzeW5jIGxvYWRMYW5nKGxvY2FsZSwgdXNlQ2FjaGUgPSB0cnVlKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBsYW5ndWFnZSBpZiBhbHJlYWR5IGxvYWRlZFxuICAgIGlmICh0aGlzLmxvYWRlZC5pbmNsdWRlcyhsb2NhbGUpICYmIHVzZUNhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYW5nc1tsb2NhbGVdXG4gICAgfVxuICAgIC8vIEZldGNoIGFuZCBwcm9jZXNzIGxhbmd1YWdlIGZpbGVcbiAgICBjb25zdCBsYW5nRmlsZSA9IGAke3RoaXMuY29uZmlnLmxvY2F0aW9ufSR7bG9jYWxlfSR7dGhpcy5jb25maWcuZXh0ZW5zaW9ufWBcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBsYW5nID0gYXdhaXQgZmV0Y2hEYXRhKGxhbmdGaWxlKVxuICAgICAgY29uc3QgcHJvY2Vzc2VkRmlsZSA9IHR5cGVvZiBsYW5nID09PSAnc3RyaW5nJyA/IEkxOE5CYXNlLnByb2Nlc3NGaWxlKGxhbmcpIDogbGFuZ1xuICAgICAgdGhpcy5hcHBseUxhbmd1YWdlKGxvY2FsZSwgcHJvY2Vzc2VkRmlsZSlcbiAgICAgIHJldHVybiB0aGlzLmxhbmdzW2xvY2FsZV1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMYW5ndWFnZShsb2NhbGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGFwcGxpZXMgb3ZlcnJpZGVzIGZyb20gY29uZmlnXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGxhbmdcbiAgICogQHJldHVybiB7T2JqZWN0fSBvdmVycmlkZW4gbGFuZ3VhZ2VcbiAgICovXG4gIGFwcGx5TGFuZ3VhZ2UobG9jYWxlLCBsYW5nID0ge30pIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuY29uZmlnLm92ZXJyaWRlW2xvY2FsZV0gfHwge31cbiAgICBjb25zdCBleGlzdGluZ0xhbmcgPSB0aGlzLmxhbmdzW2xvY2FsZV0gfHwge31cbiAgICB0aGlzLmxhbmdzW2xvY2FsZV0gPSB7IC4uLmV4aXN0aW5nTGFuZywgLi4ubGFuZywgLi4ub3ZlcnJpZGUgfVxuICAgIC8vIGtlZXAgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgcmVmZXJlbmNlIGluIHN5bmNcbiAgICBpZiAodGhpcy5jdXJyZW50ICYmIGxvY2FsZSA9PT0gdGhpcy5sb2NhbGUpIHtcbiAgICAgIHRoaXMuY3VycmVudCA9IHRoaXMubGFuZ3NbbG9jYWxlXVxuICAgIH1cbiAgICBwdXNoVW5pcXVlKHRoaXMubG9hZGVkLCBsb2NhbGUpXG4gICAgcmV0dXJuIHRoaXMubGFuZ3NbbG9jYWxlXVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybiBjdXJyZW50bHkgYXZhaWxhYmxlIGxhbmd1YWdlc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9IGFsbCBjb25maWd1cmVkIGxhbmd1YWdlc1xuICAgKi9cbiAgZ2V0IGdldExhbmdzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5sYW5nc1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHQgdG8gc2V0IHRoZSBjdXJyZW50IGxhbmd1YWdlIHRvIHRoZSBsb2NhbCBwcm92aWRlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gICBsb2NhbGVcbiAgICogQHJldHVybiB7UHJvbWlzZX0gbGFuZ3VhZ2VcbiAgICovXG4gIGFzeW5jIHNldEN1cnJlbnQobG9jYWxlID0gJ2VuLVVTJykge1xuICAgIGlmICghdGhpcy5sb2FkZWQuaW5jbHVkZXMobG9jYWxlKSkge1xuICAgICAgYXdhaXQgdGhpcy5sb2FkTGFuZyhsb2NhbGUpXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGVcbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLmxhbmdzW2xvY2FsZV1cblxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRcbiAgfVxufVxuXG4vKipcbiAqIFByb3h5IHdyYXBwZXIgdGhhdCBlbmFibGVzIHNpbmdsZXRvbiBwYXR0ZXJuOlxuICogLSBJMThOKCkgcmV0dXJucyB0aGUgc2luZ2xldG9uIGluc3RhbmNlXG4gKiAtIG5ldyBJMThOKCkgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICovXG5leHBvcnQgY29uc3QgSTE4TiA9IG5ldyBQcm94eShJMThOQmFzZSwge1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gSTE4TigpIGlzIGludm9rZWQgYXMgYSBmdW5jdGlvbiAod2l0aG91dCBuZXcpXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZVxuICAgKi9cbiAgYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgcmV0dXJuIHRhcmdldC5nZXRJbnN0YW5jZSguLi5hcmdzKVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBuZXcgSTE4TigpIGlzIGludm9rZWRcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0KHRhcmdldCwgYXJncykge1xuICAgIHJldHVybiBuZXcgdGFyZ2V0KC4uLmFyZ3MpXG4gIH0sXG5cbiAgLyoqXG4gICAqIFByb3h5IHByb3BlcnR5IGFjY2VzcyB0byB0aGUgYmFzZSBjbGFzc1xuICAgKi9cbiAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgIHJldHVybiB0YXJnZXRbcHJvcF1cbiAgfSxcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEkxOE4uZ2V0SW5zdGFuY2UoKVxuIl0sIm1hcHBpbmdzIjoiQyxzVEFBdUJVLE9BQU9NLE9BQU8sQ0FBRUMsT0FBUSxNQUFPQyxL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
Binary file
package/package.json CHANGED
@@ -1,8 +1,25 @@
1
1
  {
2
2
  "name": "@draggable/i18n",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "A simple yet robust i18n solution for universal JavaScript apps.",
5
5
  "main": "dist/i18n.es.min.js",
6
+ "module": "dist/i18n.es.min.js",
7
+ "types": "dist/i18n.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/i18n.d.ts",
12
+ "default": "./dist/i18n.es.min.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/i18n.d.cts",
16
+ "default": "./dist/i18n.cjs"
17
+ },
18
+ "default": "./dist/i18n.es.min.js"
19
+ },
20
+ "./dist/*": "./dist/*",
21
+ "./package.json": "./package.json"
22
+ },
6
23
  "type": "module",
7
24
  "files": [
8
25
  "dist/"
@@ -11,14 +28,18 @@
11
28
  "access": "public"
12
29
  },
13
30
  "scripts": {
14
- "test": "node --test src/**/*.test.js",
15
- "test:watch": "yarn test -- --reporter min --watch",
31
+ "test": "npm run test:unit && npm run test:types",
32
+ "test:unit": "node --test src/**/*.test.js",
33
+ "test:types": "tsc -p test/types/tsconfig.json",
34
+ "test:dist": "node test/dist.test.js",
35
+ "test:watch": "node --test --watch src/**/*.test.js",
16
36
  "lint": "biome lint ./src",
17
37
  "lint:fix": "biome format ./src --write",
18
38
  "start": "webpack-dev-server --mode development",
19
39
  "semantic-release": "semantic-release",
20
40
  "dev": "vite",
21
41
  "build": "vite build",
42
+ "postbuild": "npm run test:dist",
22
43
  "preview": "vite preview"
23
44
  },
24
45
  "repository": {
@@ -52,7 +73,8 @@
52
73
  "lint-staged": "^17.0.3",
53
74
  "semantic-release": "^25.0.3",
54
75
  "terser": "^5.47.1",
55
- "vite": "^8.0.11",
76
+ "typescript": "^5.9.3",
77
+ "vite": "^8.1.6",
56
78
  "vite-plugin-banner": "^0.8.0",
57
79
  "vite-plugin-compression": "^0.5.1"
58
80
  },