ilib-tools-common 1.19.0 → 1.19.1

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.
@@ -41,7 +41,8 @@ return res.comment}}json.pluralForm=form;json.pluralFormOther=res.getKey();retur
41
41
  * two instances of the same resource may have been extracted from different source files.
42
42
  * @param {string} [options.version] The version of xliff that will be produced by this instance. This
43
43
  * may be either "1.2" or "2.0"
44
- */function ResourceXliff(options){_classCallCheck(this,ResourceXliff);if(options){this["tool-id"]=options["tool-id"];this["tool-name"]=options["tool-name"];this["tool-version"]=options["tool-version"];this["tool-company"]=options["tool-company"];this.copyright=options.copyright;this.path=options.path;this.sourceLocale=options.sourceLocale||"en-US";this.project=options.project;this.allowDups=options.allowDups;this.style=options.style||"standard";if(typeof options.version!=="undefined"){this.version=options.version}}this.sourceLocale=this.sourceLocale||"en-US";this.xliff=new _ilibXliff.Xliff(options);this.ts=new _TranslationSet["default"](this.sourceLocale)}/**
44
+ * @param {Xliff} [options.xliff] The xliff instance to use for this resource xliff instance.
45
+ */function ResourceXliff(options){var _options$xliff,_this=this;_classCallCheck(this,ResourceXliff);if(options){this["tool-id"]=options["tool-id"];this["tool-name"]=options["tool-name"];this["tool-version"]=options["tool-version"];this["tool-company"]=options["tool-company"];this.copyright=options.copyright;this.path=options.path;this.sourceLocale=options.sourceLocale||"en-US";this.project=options.project;this.allowDups=options.allowDups;this.style=options.style||"standard";if(typeof options.version!=="undefined"){this.version=options.version}}this.sourceLocale=this.sourceLocale||"en-US";this.xliff=(_options$xliff=options===null||options===void 0?void 0:options.xliff)!==null&&_options$xliff!==void 0?_options$xliff:new _ilibXliff.Xliff(options);this.ts=new _TranslationSet["default"](this.sourceLocale);if(this.xliff.getTranslationUnits().length){var translationUnits=this.xliff.getTranslationUnits();translationUnits.forEach(function(tu){_this.ts.add(_this.convertTransUnit(tu))})}}/**
45
46
  * Convert a resource into one or more translation units.
46
47
  *
47
48
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceXliff.js","names":["_ilibXliff","require","_log4jsApi","_interopRequireDefault","_ResourceString","_ResourceArray","_ResourcePlural","_TranslationSet","_Location","_utils","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_classCallCheck","a","n","TypeError","_defineProperties","r","t","length","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","_createClass","i","_toPrimitive","toPrimitive","call","String","Number","logger","log4js","getLogger","generatePluralComment","res","sourcePlurals","form","json","comment","JSON","parse","pluralForm","pluralFormOther","getKey","stringify","ResourceXliff","options","copyright","path","sourceLocale","project","allowDups","style","version","xliff","Xliff","ts","TranslationSet","value","convertResource","units","tu","resType","TranslationUnit","file","getPath","getSourceLocale","source","getSource","targetLocale","getTargetLocale","target","getTarget","state","getState","id","getId","translated","context","datatype","flavor","getFlavor","undefined","translate","getDNT","location","getLocation","push","sarr","tarr","j","newtu","clone","ordinal","warn","sp","tp","isEmpty","p","quantity","other","convertTransUnit","ResourceString","pathName","Location","resfile","setTarget","arr","ResourceArray","addTargetItem","strings","ResourcePlural","addTargetPlural","setDNT","setPath","newPath","xml","tuList","deserialize","add","get","hashKey","addSourceItem","addSourcePlural","getResources","criteria","getAll","getBy","addResource","getText","size","resources","initialLength","instances","getInstances","concat","sort","left","right","index","clear","addTranslationUnits","serialize","getLines","getVersion","_default","exports","module","default"],"sources":["../src/ResourceXliff.js"],"sourcesContent":["/*\n * Xliff.js - convert an Xliff file into a set of resources and vice versa\n *\n * Copyright © 2022-2023, 2025 JEDLSoft\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Xliff, TranslationUnit } from 'ilib-xliff';\nimport log4js from \"@log4js-node/log4js-api\";\n\nimport ResourceString from './ResourceString.js';\nimport ResourceArray from './ResourceArray.js';\nimport ResourcePlural from './ResourcePlural.js';\nimport TranslationSet from './TranslationSet.js';\nimport Location from './Location.js';\n\nimport { isEmpty } from './utils.js';\n\nconst logger = log4js.getLogger(\"tools-common.ResourceXliff\");\n\nfunction generatePluralComment(res, sourcePlurals, form) {\n var json = {};\n\n if (res.comment) {\n try {\n // see if its json already. If so, we'll add to it\n json = JSON.parse(res.comment);\n } catch (e) {\n // not json, so just return it as is\n return res.comment;\n }\n }\n\n json.pluralForm = form;\n json.pluralFormOther = res.getKey();\n\n return JSON.stringify(json);\n}\n\n/**\n * @class a class that represents resources as an xliff file.\n */\nclass ResourceXliff {\n /**\n * Construct a new resource xliff instance. Operation of the instance\n * is controlled via the options. The options may be undefined, which represents a new,\n * clean Xliff instance.\n *\n * @constructor\n * @param {Object|undefined} options options to\n * initialize the file, or undefined for a new empty file\n * @param {string} [options.path] the path to the xliff file on disk\n * @param {string} [options.tool-id] the id of the tool that saved this xliff file\n * @param {string} [options.tool-name] the full name of the tool that saved this xliff file\n * @param {string} [options.tool-version] the version of the tool that save this xliff file\n * @param {string} [options.tool-company] the name of the company that made this tool\n * @param {string} [options.copyright] a copyright notice that you would like included into the xliff file\n * @param {string} [options.sourceLocale] specify the default source locale if a resource doesn't have a locale itself\n * @param {string} [options.allowDups] allow duplicate resources in the xliff. By default, dups are\n * filtered out. This option allows you to have trans-units that represent instances of the\n * same resource in the file with different metadata. For example, two instances of a\n * resource may have different comments which may both be useful to translators or\n * two instances of the same resource may have been extracted from different source files.\n * @param {string} [options.version] The version of xliff that will be produced by this instance. This\n * may be either \"1.2\" or \"2.0\"\n */\n constructor(options) {\n if (options) {\n this[\"tool-id\"] = options[\"tool-id\"];\n this[\"tool-name\"] = options[\"tool-name\"];\n this[\"tool-version\"] = options[\"tool-version\"];\n this[\"tool-company\"] = options[\"tool-company\"];\n this.copyright = options.copyright;\n this.path = options.path;\n this.sourceLocale = options.sourceLocale || \"en-US\";\n this.project = options.project;\n this.allowDups = options.allowDups;\n this.style = options.style || \"standard\";\n if (typeof(options.version) !== 'undefined') {\n this.version = options.version;\n }\n }\n this.sourceLocale = this.sourceLocale || \"en-US\";\n\n this.xliff = new Xliff(options);\n this.ts = new TranslationSet(this.sourceLocale);\n }\n\n /**\n * Convert a resource into one or more translation units.\n *\n * @private\n * @param {Resource} res the resource to convert\n * @returns {Array.<TranslationUnit>} an array of translation units\n * that represent the resource\n */\n convertResource(res) {\n let units = [], tu;\n\n try {\n switch (res.resType) {\n case \"string\":\n tu = new TranslationUnit({\n project: res.project,\n key: res.getKey(),\n file: res.getPath(),\n sourceLocale: res.getSourceLocale(),\n source: res.getSource(),\n targetLocale: res.getTargetLocale(),\n target: res.getTarget(),\n state: res.getState(),\n id: res.getId(),\n translated: true,\n context: res.context,\n comment: res.comment,\n resType: res.resType,\n datatype: res.datatype,\n flavor: res.getFlavor ? res.getFlavor() : undefined,\n translate: !res.getDNT(),\n location: res.getLocation()\n });\n units.push(tu);\n break;\n\n case \"array\":\n const sarr = res.getSource();\n let tarr = res.getTarget();\n\n tu = new TranslationUnit({\n project: res.project,\n key: res.getKey(),\n file: res.getPath(),\n source: \" \",\n sourceLocale: res.getSourceLocale(),\n targetLocale: res.getTargetLocale(),\n state: res.getState(),\n id: res.getId(),\n translated: true,\n context: res.context,\n comment: res.comment,\n resType: res.resType,\n datatype: res.datatype,\n flavor: res.getFlavor ? res.getFlavor() : undefined,\n translate: !res.getDNT(),\n location: res.getLocation()\n });\n\n for (let j = 0; j < sarr.length; j++) {\n // only output array items that have a translation\n if (sarr[j]) {\n const newtu = tu.clone();\n newtu.source = sarr[j];\n newtu.ordinal = j;\n\n if (tarr && j < tarr.length && tarr[j]) {\n newtu.target = tarr[j];\n }\n\n newtu.ordinal = j;\n units.push(newtu);\n } else if (tarr[j]) {\n logger.warn(\"Translated array \" + res.getKey() + \" has no source string at index \" + j + \". Cannot translate. Resource is: \" + JSON.stringify(res, undefined, 4));\n }\n }\n break;\n\n case \"plural\":\n tu = new TranslationUnit({\n project: res.project,\n key: res.getKey(),\n file: res.getPath(),\n source: \" \",\n sourceLocale: res.getSourceLocale(),\n targetLocale: res.getTargetLocale(),\n state: res.getState(),\n id: res.getId(),\n translated: true,\n context: res.context,\n resType: res.resType,\n datatype: res.datatype,\n flavor: res.getFlavor ? res.getFlavor() : undefined,\n location: res.getLocation(),\n translate: !res.getDNT()\n });\n\n const sp = res.getSource();\n const tp = res.getTarget();\n\n if (!tp || isEmpty(tp)) {\n for (let p in sp) {\n const newtu = tu.clone();\n newtu.source = sp[p];\n newtu.quantity = p;\n newtu.comment = generatePluralComment(res, sp, p);\n units.push(newtu);\n }\n } else {\n for (let p in tp) {\n const newtu = tu.clone();\n newtu.source = sp[p] || sp.other;\n newtu.target = tp[p];\n newtu.quantity = p;\n newtu.comment = generatePluralComment(res, sp, p);\n units.push(newtu);\n }\n }\n break;\n }\n } catch (e) {\n logger.warn(e);\n logger.warn(JSON.stringify(res));\n logger.warn(\"Skipping that resource.\");\n }\n\n return units;\n }\n\n /**\n * Convert a translation unit to a new loctool resource.\n *\n * @private\n * @param {TranslationUnit} tu the translation to convert\n * @return {Resource} the corresponding resource\n */\n convertTransUnit(tu) {\n let res;\n\n switch (tu.resType) {\n default:\n res = new ResourceString({\n pathName: tu.file,\n project: tu.project,\n id: tu.id,\n key: tu.key,\n sourceLocale: tu.sourceLocale,\n source: tu.source,\n targetLocale: tu.targetLocale,\n context: tu.context,\n comment: tu.comment,\n resType: tu.resType,\n datatype: tu.datatype,\n state: tu.state,\n flavor: tu.flavor,\n location: new Location(tu.location),\n resfile: tu.resfile\n });\n\n if (tu.target) {\n res.setTarget(tu.target);\n }\n break;\n\n case \"array\":\n var arr = [];\n arr[tu.ordinal] = tu.source;\n res = new ResourceArray({\n pathName: tu.file,\n project: tu.project,\n id: tu.id,\n key: tu.key,\n sourceLocale: tu.sourceLocale,\n source: arr,\n targetLocale: tu.targetLocale,\n target: [],\n context: tu.context,\n comment: tu.comment,\n resType: tu.resType,\n datatype: tu.datatype,\n state: tu.state,\n flavor: tu.flavor,\n location: new Location(tu.location),\n resfile: tu.resfile\n });\n\n if (tu.target) {\n res.addTargetItem(tu.ordinal, tu.target);\n }\n break;\n\n case \"plural\":\n var strings = {};\n strings[tu.quantity] = tu.source;\n res = new ResourcePlural({\n pathName: tu.file,\n project: tu.project,\n id: tu.id,\n key: tu.key,\n sourceLocale: tu.sourceLocale,\n source: strings,\n targetLocale: tu.targetLocale,\n target: {},\n context: tu.context,\n comment: tu.comment,\n resType: tu.resType,\n datatype: tu.datatype,\n state: tu.state,\n flavor: tu.flavor,\n location: new Location(tu.location),\n resfile: tu.resfile\n });\n\n if (tu.target) {\n res.addTargetPlural(tu.quantity, tu.target);\n }\n break;\n }\n\n if (typeof(tu.translate) === \"boolean\") {\n res.setDNT(!tu.translate);\n }\n\n return res;\n }\n\n getPath() {\n return this.path;\n }\n\n setPath(newPath) {\n this.path = newPath;\n }\n\n /**\n * Parse the given xml and convert it into a set of resources.\n *\n * @param {string} xml the contents of the xliff file to parse\n * @returns {TranslationSet} the translation set that represents\n * the resources in the xliff file\n */\n parse(xml) {\n const tuList = this.xliff.deserialize(xml, this.path);\n let res;\n\n if (tuList) {\n for (var j = 0; j < tuList.length; j++) {\n const tu = tuList[j];\n\n switch (tu.resType) {\n default:\n res = this.convertTransUnit(tu);\n this.ts.add(res);\n break;\n\n case \"array\":\n res = this.ts.get(ResourceArray.hashKey(tu.project, tu.context, tu.targetLocale || tu.sourceLocale, tu.key));\n if (res) {\n // if it already exists, amend the existing resource instead of creating a new one\n res.addSourceItem(tu.ordinal, tu.source);\n if (tu.target) {\n res.addTargetItem(tu.ordinal, tu.target);\n }\n } else {\n res = this.convertTransUnit(tu);\n this.ts.add(res);\n }\n break;\n\n case \"plural\":\n res = this.ts.get(ResourcePlural.hashKey(tu.project, tu.context, tu.targetLocale || tu.sourceLocale, tu.key));\n if (res) {\n // if it already exists, amend the existing resource instead of creating a new one\n res.addSourcePlural(tu.quantity, tu.source);\n if (tu.target) {\n res.addTargetPlural(tu.quantity, tu.target);\n }\n } else {\n res = this.convertTransUnit(tu);\n this.ts.add(res);\n }\n break;\n }\n }\n }\n\n return this.ts;\n }\n\n getResources(criteria) {\n if (!criteria) return this.ts.getAll();\n return this.ts.getBy(criteria);\n }\n\n addResource(res) {\n if (!res) return;\n\n if (res.getTargetLocale() === this.sourceLocale || res.getTargetLocale() === \"en\") {\n // don't add this one... cannot translate TO the source locale!\n return;\n }\n\n this.ts.add(res);\n }\n\n getText() {\n let units = [];\n\n if (this.ts.size() > 0) {\n // first convert the resources into translation units\n let resources = this.ts.getAll();\n\n if (this.allowDups) {\n // only look at the initial set of resources\n const initialLength = resources.length;\n for (let i = 0; i < initialLength; i++) {\n const res = resources[i];\n const instances = res.getInstances();\n if (instances && instances.length) {\n resources = resources.concat(instances);\n resources[i].instances = undefined;\n }\n }\n }\n resources.sort(function(left, right) {\n if (typeof(left.index) === 'number' && typeof(right.index) === 'number') {\n return left.index - right.index;\n }\n if (typeof(left.id) === 'number' && typeof(right.id) === 'number') {\n return left.id - right.id;\n }\n // no ids and no indexes? Well, then don't rearrange\n return 0;\n });\n\n // now add the translations\n for (var i = 0; i < resources.length; i++) {\n var res = resources[i];\n if (res.getTargetLocale() !== this.sourceLocale) {\n units = units.concat(this.convertResource(res));\n }\n }\n }\n\n // start with no translation units in it\n this.xliff.clear();\n this.xliff.addTranslationUnits(units);\n\n return this.xliff.serialize(true);\n }\n\n /**\n * Return the number of lines in the xml representation of this file.\n *\n * @returns {Number} the number of lines in the xml\n */\n getLines() {\n return this.xliff.getLines();\n }\n\n /**\n * Return the number of resources in this resource xliff file.\n * @returns {Number} the number of resources in this file\n */\n size() {\n return this.ts.size();\n }\n\n /**\n * Get the version number of this file. Currently, it only supports\n * xliff v1.2 and v2.0.\n * @returns {String} the version number of the file\n */\n getVersion() {\n return this.version;\n }\n}\n\nexport default ResourceXliff;\n"],"mappings":"gGAmBA,IAAAA,UAAA,CAAAC,OAAA,eACA,IAAAC,UAAA,CAAAC,sBAAA,CAAAF,OAAA,6BAEA,IAAAG,eAAA,CAAAD,sBAAA,CAAAF,OAAA,yBACA,IAAAI,cAAA,CAAAF,sBAAA,CAAAF,OAAA,wBACA,IAAAK,eAAA,CAAAH,sBAAA,CAAAF,OAAA,yBACA,IAAAM,eAAA,CAAAJ,sBAAA,CAAAF,OAAA,yBACA,IAAAO,SAAA,CAAAL,sBAAA,CAAAF,OAAA,mBAEA,IAAAQ,MAAA,CAAAR,OAAA,eAAqC,SAAAE,uBAAAO,CAAA,SAAAA,CAAA,EAAAA,CAAA,CAAAC,UAAA,CAAAD,CAAA,YAAAA,CAAA,WAAAE,QAAAC,CAAA,mCAAAD,OAAA,oBAAAE,MAAA,mBAAAA,MAAA,CAAAC,QAAA,UAAAF,CAAA,gBAAAA,CAAA,WAAAA,CAAA,SAAAA,CAAA,qBAAAC,MAAA,EAAAD,CAAA,CAAAG,WAAA,GAAAF,MAAA,EAAAD,CAAA,GAAAC,MAAA,CAAAG,SAAA,iBAAAJ,CAAA,EAAAD,OAAA,CAAAC,CAAA,WAAAK,gBAAAC,CAAA,CAAAC,CAAA,OAAAD,CAAA,YAAAC,CAAA,YAAAC,SAAA,+CAAAC,kBAAAZ,CAAA,CAAAa,CAAA,UAAAC,CAAA,GAAAA,CAAA,CAAAD,CAAA,CAAAE,MAAA,CAAAD,CAAA,QAAAX,CAAA,CAAAU,CAAA,CAAAC,CAAA,EAAAX,CAAA,CAAAa,UAAA,CAAAb,CAAA,CAAAa,UAAA,KAAAb,CAAA,CAAAc,YAAA,cAAAd,CAAA,GAAAA,CAAA,CAAAe,QAAA,KAAAC,MAAA,CAAAC,cAAA,CAAApB,CAAA,CAAAqB,cAAA,CAAAlB,CAAA,CAAAmB,GAAA,EAAAnB,CAAA,YAAAoB,aAAAvB,CAAA,CAAAa,CAAA,CAAAC,CAAA,SAAAD,CAAA,EAAAD,iBAAA,CAAAZ,CAAA,CAAAO,SAAA,CAAAM,CAAA,EAAAC,CAAA,EAAAF,iBAAA,CAAAZ,CAAA,CAAAc,CAAA,EAAAK,MAAA,CAAAC,cAAA,CAAApB,CAAA,cAAAkB,QAAA,MAAAlB,CAAA,UAAAqB,eAAAP,CAAA,MAAAU,CAAA,CAAAC,YAAA,CAAAX,CAAA,2BAAAZ,OAAA,CAAAsB,CAAA,EAAAA,CAAA,CAAAA,CAAA,aAAAC,aAAAX,CAAA,CAAAD,CAAA,eAAAX,OAAA,CAAAY,CAAA,IAAAA,CAAA,QAAAA,CAAA,KAAAd,CAAA,CAAAc,CAAA,CAAAV,MAAA,CAAAsB,WAAA,cAAA1B,CAAA,MAAAwB,CAAA,CAAAxB,CAAA,CAAA2B,IAAA,CAAAb,CAAA,CAAAD,CAAA,0BAAAX,OAAA,CAAAsB,CAAA,SAAAA,CAAA,WAAAb,SAAA,mEAAAE,CAAA,CAAAe,MAAA,CAAAC,MAAA,EAAAf,CAAA,EA5BrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAaA,GAAM,CAAAgB,MAAM,CAAGC,qBAAM,CAACC,SAAS,CAAC,4BAA4B,CAAC,CAE7D,QAAS,CAAAC,qBAAqBA,CAACC,GAAG,CAAEC,aAAa,CAAEC,IAAI,CAAE,CACrD,GAAI,CAAAC,IAAI,CAAG,CAAC,CAAC,CAEb,GAAIH,GAAG,CAACI,OAAO,CAAE,CACb,GAAI,CACA;AACAD,IAAI,CAAGE,IAAI,CAACC,KAAK,CAACN,GAAG,CAACI,OAAO,CACjC,CAAE,MAAOtC,CAAC,CAAE,CACR;AACA,MAAO,CAAAkC,GAAG,CAACI,OACf,CACJ,CAEAD,IAAI,CAACI,UAAU,CAAGL,IAAI,CACtBC,IAAI,CAACK,eAAe,CAAGR,GAAG,CAACS,MAAM,CAAC,CAAC,CAEnC,MAAO,CAAAJ,IAAI,CAACK,SAAS,CAACP,IAAI,CAC9B,CAEA;AACA;AACA,GAFA,GAGM,CAAAQ,aAAa,yBACf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OACI,SAAAA,cAAYC,OAAO,CAAE,CAAAtC,eAAA,MAAAqC,aAAA,EACjB,GAAIC,OAAO,CAAE,CACT,IAAI,CAAC,SAAS,CAAC,CAAGA,OAAO,CAAC,SAAS,CAAC,CACpC,IAAI,CAAC,WAAW,CAAC,CAAGA,OAAO,CAAC,WAAW,CAAC,CACxC,IAAI,CAAC,cAAc,CAAC,CAAGA,OAAO,CAAC,cAAc,CAAC,CAC9C,IAAI,CAAC,cAAc,CAAC,CAAGA,OAAO,CAAC,cAAc,CAAC,CAC9C,IAAI,CAACC,SAAS,CAAGD,OAAO,CAACC,SAAS,CAClC,IAAI,CAACC,IAAI,CAAGF,OAAO,CAACE,IAAI,CACxB,IAAI,CAACC,YAAY,CAAGH,OAAO,CAACG,YAAY,EAAI,OAAO,CACnD,IAAI,CAACC,OAAO,CAAGJ,OAAO,CAACI,OAAO,CAC9B,IAAI,CAACC,SAAS,CAAGL,OAAO,CAACK,SAAS,CAClC,IAAI,CAACC,KAAK,CAAIN,OAAO,CAACM,KAAK,EAAI,UAAU,CACzC,GAAI,MAAO,CAAAN,OAAO,CAACO,OAAQ,GAAK,WAAW,CAAE,CACzC,IAAI,CAACA,OAAO,CAAGP,OAAO,CAACO,OAC3B,CACJ,CACA,IAAI,CAACJ,YAAY,CAAG,IAAI,CAACA,YAAY,EAAI,OAAO,CAEhD,IAAI,CAACK,KAAK,CAAG,GAAI,CAAAC,gBAAK,CAACT,OAAO,CAAC,CAC/B,IAAI,CAACU,EAAE,CAAG,GAAI,CAAAC,0BAAc,CAAC,IAAI,CAACR,YAAY,CAClD,CAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,OAPI,OAAA1B,YAAA,CAAAsB,aAAA,GAAAvB,GAAA,mBAAAoC,KAAA,CAQA,SAAAC,eAAeA,CAACzB,GAAG,CAAE,CACjB,GAAI,CAAA0B,KAAK,CAAG,EAAE,CAAEC,EAAE,CAElB,GAAI,CACA,OAAQ3B,GAAG,CAAC4B,OAAO,EACnB,IAAK,QAAQ,CACTD,EAAE,CAAG,GAAI,CAAAE,0BAAe,CAAC,CACrBb,OAAO,CAAEhB,GAAG,CAACgB,OAAO,CACpB5B,GAAG,CAAEY,GAAG,CAACS,MAAM,CAAC,CAAC,CACjBqB,IAAI,CAAE9B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CACnBhB,YAAY,CAAEf,GAAG,CAACgC,eAAe,CAAC,CAAC,CACnCC,MAAM,CAAEjC,GAAG,CAACkC,SAAS,CAAC,CAAC,CACvBC,YAAY,CAAEnC,GAAG,CAACoC,eAAe,CAAC,CAAC,CACnCC,MAAM,CAAErC,GAAG,CAACsC,SAAS,CAAC,CAAC,CACvBC,KAAK,CAAEvC,GAAG,CAACwC,QAAQ,CAAC,CAAC,CACrBC,EAAE,CAAEzC,GAAG,CAAC0C,KAAK,CAAC,CAAC,CACfC,UAAU,CAAE,IAAI,CAChBC,OAAO,CAAE5C,GAAG,CAAC4C,OAAO,CACpBxC,OAAO,CAAEJ,GAAG,CAACI,OAAO,CACpBwB,OAAO,CAAE5B,GAAG,CAAC4B,OAAO,CACpBiB,QAAQ,CAAE7C,GAAG,CAAC6C,QAAQ,CACtBC,MAAM,CAAE9C,GAAG,CAAC+C,SAAS,CAAG/C,GAAG,CAAC+C,SAAS,CAAC,CAAC,CAAGC,SAAS,CACnDC,SAAS,CAAE,CAACjD,GAAG,CAACkD,MAAM,CAAC,CAAC,CACxBC,QAAQ,CAAEnD,GAAG,CAACoD,WAAW,CAAC,CAC9B,CAAC,CAAC,CACF1B,KAAK,CAAC2B,IAAI,CAAC1B,EAAE,CAAC,CACd,MAEJ,IAAK,OAAO,CACR,GAAM,CAAA2B,IAAI,CAAGtD,GAAG,CAACkC,SAAS,CAAC,CAAC,CAC5B,GAAI,CAAAqB,IAAI,CAAGvD,GAAG,CAACsC,SAAS,CAAC,CAAC,CAE1BX,EAAE,CAAG,GAAI,CAAAE,0BAAe,CAAC,CACrBb,OAAO,CAAEhB,GAAG,CAACgB,OAAO,CACpB5B,GAAG,CAAEY,GAAG,CAACS,MAAM,CAAC,CAAC,CACjBqB,IAAI,CAAE9B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CACnBE,MAAM,CAAE,GAAG,CACXlB,YAAY,CAAEf,GAAG,CAACgC,eAAe,CAAC,CAAC,CACnCG,YAAY,CAAEnC,GAAG,CAACoC,eAAe,CAAC,CAAC,CACnCG,KAAK,CAAEvC,GAAG,CAACwC,QAAQ,CAAC,CAAC,CACrBC,EAAE,CAAEzC,GAAG,CAAC0C,KAAK,CAAC,CAAC,CACfC,UAAU,CAAE,IAAI,CAChBC,OAAO,CAAE5C,GAAG,CAAC4C,OAAO,CACpBxC,OAAO,CAAEJ,GAAG,CAACI,OAAO,CACpBwB,OAAO,CAAE5B,GAAG,CAAC4B,OAAO,CACpBiB,QAAQ,CAAE7C,GAAG,CAAC6C,QAAQ,CACtBC,MAAM,CAAE9C,GAAG,CAAC+C,SAAS,CAAG/C,GAAG,CAAC+C,SAAS,CAAC,CAAC,CAAGC,SAAS,CACnDC,SAAS,CAAE,CAACjD,GAAG,CAACkD,MAAM,CAAC,CAAC,CACxBC,QAAQ,CAAEnD,GAAG,CAACoD,WAAW,CAAC,CAC9B,CAAC,CAAC,CAEF,IAAK,GAAI,CAAAI,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAGF,IAAI,CAACzE,MAAM,CAAE2E,CAAC,EAAE,CAAE,CAClC;AACA,GAAIF,IAAI,CAACE,CAAC,CAAC,CAAE,CACT,GAAM,CAAAC,KAAK,CAAG9B,EAAE,CAAC+B,KAAK,CAAC,CAAC,CACxBD,KAAK,CAACxB,MAAM,CAAGqB,IAAI,CAACE,CAAC,CAAC,CACtBC,KAAK,CAACE,OAAO,CAAGH,CAAC,CAEjB,GAAID,IAAI,EAAIC,CAAC,CAAGD,IAAI,CAAC1E,MAAM,EAAI0E,IAAI,CAACC,CAAC,CAAC,CAAE,CACpCC,KAAK,CAACpB,MAAM,CAAGkB,IAAI,CAACC,CAAC,CACzB,CAEAC,KAAK,CAACE,OAAO,CAAGH,CAAC,CACjB9B,KAAK,CAAC2B,IAAI,CAACI,KAAK,CACpB,CAAC,IAAM,IAAIF,IAAI,CAACC,CAAC,CAAC,CAAE,CAChB5D,MAAM,CAACgE,IAAI,CAAC,oBAAoB,CAAG5D,GAAG,CAACS,MAAM,CAAC,CAAC,CAAG,iCAAiC,CAAG+C,CAAC,CAAG,mCAAmC,CAAGnD,IAAI,CAACK,SAAS,CAACV,GAAG,CAAEgD,SAAS,CAAE,CAAC,CAAC,CACrK,CACJ,CACA,MAEJ,IAAK,QAAQ,CACTrB,EAAE,CAAG,GAAI,CAAAE,0BAAe,CAAC,CACrBb,OAAO,CAAEhB,GAAG,CAACgB,OAAO,CACpB5B,GAAG,CAAEY,GAAG,CAACS,MAAM,CAAC,CAAC,CACjBqB,IAAI,CAAE9B,GAAG,CAAC+B,OAAO,CAAC,CAAC,CACnBE,MAAM,CAAE,GAAG,CACXlB,YAAY,CAAEf,GAAG,CAACgC,eAAe,CAAC,CAAC,CACnCG,YAAY,CAAEnC,GAAG,CAACoC,eAAe,CAAC,CAAC,CACnCG,KAAK,CAAEvC,GAAG,CAACwC,QAAQ,CAAC,CAAC,CACrBC,EAAE,CAAEzC,GAAG,CAAC0C,KAAK,CAAC,CAAC,CACfC,UAAU,CAAE,IAAI,CAChBC,OAAO,CAAE5C,GAAG,CAAC4C,OAAO,CACpBhB,OAAO,CAAE5B,GAAG,CAAC4B,OAAO,CACpBiB,QAAQ,CAAE7C,GAAG,CAAC6C,QAAQ,CACtBC,MAAM,CAAE9C,GAAG,CAAC+C,SAAS,CAAG/C,GAAG,CAAC+C,SAAS,CAAC,CAAC,CAAGC,SAAS,CACnDG,QAAQ,CAAEnD,GAAG,CAACoD,WAAW,CAAC,CAAC,CAC3BH,SAAS,CAAE,CAACjD,GAAG,CAACkD,MAAM,CAAC,CAC3B,CAAC,CAAC,CAEF,GAAM,CAAAW,EAAE,CAAG7D,GAAG,CAACkC,SAAS,CAAC,CAAC,CAC1B,GAAM,CAAA4B,EAAE,CAAG9D,GAAG,CAACsC,SAAS,CAAC,CAAC,CAE1B,GAAI,CAACwB,EAAE,EAAI,GAAAC,cAAO,EAACD,EAAE,CAAC,CAAE,CACpB,IAAK,GAAI,CAAAE,CAAC,GAAI,CAAAH,EAAE,CAAE,CACd,GAAM,CAAAJ,MAAK,CAAG9B,EAAE,CAAC+B,KAAK,CAAC,CAAC,CACxBD,MAAK,CAACxB,MAAM,CAAG4B,EAAE,CAACG,CAAC,CAAC,CACpBP,MAAK,CAACQ,QAAQ,CAAGD,CAAC,CAClBP,MAAK,CAACrD,OAAO,CAAGL,qBAAqB,CAACC,GAAG,CAAE6D,EAAE,CAAEG,CAAC,CAAC,CACjDtC,KAAK,CAAC2B,IAAI,CAACI,MAAK,CACpB,CACJ,CAAC,IAAM,CACH,IAAK,GAAI,CAAAO,EAAC,GAAI,CAAAF,EAAE,CAAE,CACd,GAAM,CAAAL,OAAK,CAAG9B,EAAE,CAAC+B,KAAK,CAAC,CAAC,CACxBD,OAAK,CAACxB,MAAM,CAAG4B,EAAE,CAACG,EAAC,CAAC,EAAIH,EAAE,CAACK,KAAK,CAChCT,OAAK,CAACpB,MAAM,CAAGyB,EAAE,CAACE,EAAC,CAAC,CACpBP,OAAK,CAACQ,QAAQ,CAAGD,EAAC,CAClBP,OAAK,CAACrD,OAAO,CAAGL,qBAAqB,CAACC,GAAG,CAAE6D,EAAE,CAAEG,EAAC,CAAC,CACjDtC,KAAK,CAAC2B,IAAI,CAACI,OAAK,CACpB,CACJ,CACA,KACJ,CACJ,CAAE,MAAO3F,CAAC,CAAE,CACR8B,MAAM,CAACgE,IAAI,CAAC9F,CAAC,CAAC,CACd8B,MAAM,CAACgE,IAAI,CAACvD,IAAI,CAACK,SAAS,CAACV,GAAG,CAAC,CAAC,CAChCJ,MAAM,CAACgE,IAAI,CAAC,yBAAyB,CACzC,CAEA,MAAO,CAAAlC,KACX,CAEA;AACJ;AACA;AACA;AACA;AACA;AACA,OANI,GAAAtC,GAAA,oBAAAoC,KAAA,CAOA,SAAA2C,gBAAgBA,CAACxC,EAAE,CAAE,CACjB,GAAI,CAAA3B,GAAG,CAEP,OAAQ2B,EAAE,CAACC,OAAO,EAClB,QACI5B,GAAG,CAAG,GAAI,CAAAoE,0BAAc,CAAC,CACrBC,QAAQ,CAAE1C,EAAE,CAACG,IAAI,CACjBd,OAAO,CAAEW,EAAE,CAACX,OAAO,CACnByB,EAAE,CAAEd,EAAE,CAACc,EAAE,CACTrD,GAAG,CAAEuC,EAAE,CAACvC,GAAG,CACX2B,YAAY,CAAEY,EAAE,CAACZ,YAAY,CAC7BkB,MAAM,CAAEN,EAAE,CAACM,MAAM,CACjBE,YAAY,CAAER,EAAE,CAACQ,YAAY,CAC7BS,OAAO,CAAEjB,EAAE,CAACiB,OAAO,CACnBxC,OAAO,CAAEuB,EAAE,CAACvB,OAAO,CACnBwB,OAAO,CAAED,EAAE,CAACC,OAAO,CACnBiB,QAAQ,CAAElB,EAAE,CAACkB,QAAQ,CACrBN,KAAK,CAAEZ,EAAE,CAACY,KAAK,CACfO,MAAM,CAAEnB,EAAE,CAACmB,MAAM,CACjBK,QAAQ,CAAE,GAAI,CAAAmB,oBAAQ,CAAC3C,EAAE,CAACwB,QAAQ,CAAC,CACnCoB,OAAO,CAAE5C,EAAE,CAAC4C,OAChB,CAAC,CAAC,CAEF,GAAI5C,EAAE,CAACU,MAAM,CAAE,CACXrC,GAAG,CAACwE,SAAS,CAAC7C,EAAE,CAACU,MAAM,CAC3B,CACA,MAEJ,IAAK,OAAO,CACR,GAAI,CAAAoC,GAAG,CAAG,EAAE,CACZA,GAAG,CAAC9C,EAAE,CAACgC,OAAO,CAAC,CAAGhC,EAAE,CAACM,MAAM,CAC3BjC,GAAG,CAAG,GAAI,CAAA0E,yBAAa,CAAC,CACpBL,QAAQ,CAAE1C,EAAE,CAACG,IAAI,CACjBd,OAAO,CAAEW,EAAE,CAACX,OAAO,CACnByB,EAAE,CAAEd,EAAE,CAACc,EAAE,CACTrD,GAAG,CAAEuC,EAAE,CAACvC,GAAG,CACX2B,YAAY,CAAEY,EAAE,CAACZ,YAAY,CAC7BkB,MAAM,CAAEwC,GAAG,CACXtC,YAAY,CAAER,EAAE,CAACQ,YAAY,CAC7BE,MAAM,CAAE,EAAE,CACVO,OAAO,CAAEjB,EAAE,CAACiB,OAAO,CACnBxC,OAAO,CAAEuB,EAAE,CAACvB,OAAO,CACnBwB,OAAO,CAAED,EAAE,CAACC,OAAO,CACnBiB,QAAQ,CAAElB,EAAE,CAACkB,QAAQ,CACrBN,KAAK,CAAEZ,EAAE,CAACY,KAAK,CACfO,MAAM,CAAEnB,EAAE,CAACmB,MAAM,CACjBK,QAAQ,CAAE,GAAI,CAAAmB,oBAAQ,CAAC3C,EAAE,CAACwB,QAAQ,CAAC,CACnCoB,OAAO,CAAE5C,EAAE,CAAC4C,OAChB,CAAC,CAAC,CAEF,GAAI5C,EAAE,CAACU,MAAM,CAAE,CACXrC,GAAG,CAAC2E,aAAa,CAAChD,EAAE,CAACgC,OAAO,CAAEhC,EAAE,CAACU,MAAM,CAC3C,CACA,MAEJ,IAAK,QAAQ,CACT,GAAI,CAAAuC,OAAO,CAAG,CAAC,CAAC,CAChBA,OAAO,CAACjD,EAAE,CAACsC,QAAQ,CAAC,CAAGtC,EAAE,CAACM,MAAM,CAChCjC,GAAG,CAAG,GAAI,CAAA6E,0BAAc,CAAC,CACrBR,QAAQ,CAAE1C,EAAE,CAACG,IAAI,CACjBd,OAAO,CAAEW,EAAE,CAACX,OAAO,CACnByB,EAAE,CAAEd,EAAE,CAACc,EAAE,CACTrD,GAAG,CAAEuC,EAAE,CAACvC,GAAG,CACX2B,YAAY,CAAEY,EAAE,CAACZ,YAAY,CAC7BkB,MAAM,CAAE2C,OAAO,CACfzC,YAAY,CAAER,EAAE,CAACQ,YAAY,CAC7BE,MAAM,CAAE,CAAC,CAAC,CACVO,OAAO,CAAEjB,EAAE,CAACiB,OAAO,CACnBxC,OAAO,CAAEuB,EAAE,CAACvB,OAAO,CACnBwB,OAAO,CAAED,EAAE,CAACC,OAAO,CACnBiB,QAAQ,CAAElB,EAAE,CAACkB,QAAQ,CACrBN,KAAK,CAAEZ,EAAE,CAACY,KAAK,CACfO,MAAM,CAAEnB,EAAE,CAACmB,MAAM,CACjBK,QAAQ,CAAE,GAAI,CAAAmB,oBAAQ,CAAC3C,EAAE,CAACwB,QAAQ,CAAC,CACnCoB,OAAO,CAAE5C,EAAE,CAAC4C,OAChB,CAAC,CAAC,CAEF,GAAI5C,EAAE,CAACU,MAAM,CAAE,CACXrC,GAAG,CAAC8E,eAAe,CAACnD,EAAE,CAACsC,QAAQ,CAAEtC,EAAE,CAACU,MAAM,CAC9C,CACA,KACJ,CAEA,GAAI,MAAO,CAAAV,EAAE,CAACsB,SAAU,GAAK,SAAS,CAAE,CACpCjD,GAAG,CAAC+E,MAAM,CAAC,CAACpD,EAAE,CAACsB,SAAS,CAC5B,CAEA,MAAO,CAAAjD,GACX,CAAC,GAAAZ,GAAA,WAAAoC,KAAA,CAED,SAAAO,OAAOA,CAAA,CAAG,CACN,MAAO,KAAI,CAACjB,IAChB,CAAC,GAAA1B,GAAA,WAAAoC,KAAA,CAED,SAAAwD,OAAOA,CAACC,OAAO,CAAE,CACb,IAAI,CAACnE,IAAI,CAAGmE,OAChB,CAEA;AACJ;AACA;AACA;AACA;AACA;AACA,OANI,GAAA7F,GAAA,SAAAoC,KAAA,CAOA,SAAAlB,KAAKA,CAAC4E,GAAG,CAAE,CACP,GAAM,CAAAC,MAAM,CAAG,IAAI,CAAC/D,KAAK,CAACgE,WAAW,CAACF,GAAG,CAAE,IAAI,CAACpE,IAAI,CAAC,CACrD,GAAI,CAAAd,GAAG,CAEP,GAAImF,MAAM,CAAE,CACR,IAAK,GAAI,CAAA3B,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAG2B,MAAM,CAACtG,MAAM,CAAE2E,CAAC,EAAE,CAAE,CACpC,GAAM,CAAA7B,EAAE,CAAGwD,MAAM,CAAC3B,CAAC,CAAC,CAEpB,OAAQ7B,EAAE,CAACC,OAAO,EAClB,QACI5B,GAAG,CAAG,IAAI,CAACmE,gBAAgB,CAACxC,EAAE,CAAC,CAC/B,IAAI,CAACL,EAAE,CAAC+D,GAAG,CAACrF,GAAG,CAAC,CAChB,MAEJ,IAAK,OAAO,CACRA,GAAG,CAAG,IAAI,CAACsB,EAAE,CAACgE,GAAG,CAACZ,yBAAa,CAACa,OAAO,CAAC5D,EAAE,CAACX,OAAO,CAAEW,EAAE,CAACiB,OAAO,CAAEjB,EAAE,CAACQ,YAAY,EAAIR,EAAE,CAACZ,YAAY,CAAEY,EAAE,CAACvC,GAAG,CAAC,CAAC,CAC5G,GAAIY,GAAG,CAAE,CACL;AACAA,GAAG,CAACwF,aAAa,CAAC7D,EAAE,CAACgC,OAAO,CAAEhC,EAAE,CAACM,MAAM,CAAC,CACxC,GAAIN,EAAE,CAACU,MAAM,CAAE,CACXrC,GAAG,CAAC2E,aAAa,CAAChD,EAAE,CAACgC,OAAO,CAAEhC,EAAE,CAACU,MAAM,CAC3C,CACJ,CAAC,IAAM,CACHrC,GAAG,CAAG,IAAI,CAACmE,gBAAgB,CAACxC,EAAE,CAAC,CAC/B,IAAI,CAACL,EAAE,CAAC+D,GAAG,CAACrF,GAAG,CACnB,CACA,MAEJ,IAAK,QAAQ,CACTA,GAAG,CAAG,IAAI,CAACsB,EAAE,CAACgE,GAAG,CAACT,0BAAc,CAACU,OAAO,CAAC5D,EAAE,CAACX,OAAO,CAAEW,EAAE,CAACiB,OAAO,CAAEjB,EAAE,CAACQ,YAAY,EAAIR,EAAE,CAACZ,YAAY,CAAEY,EAAE,CAACvC,GAAG,CAAC,CAAC,CAC7G,GAAIY,GAAG,CAAE,CACL;AACAA,GAAG,CAACyF,eAAe,CAAC9D,EAAE,CAACsC,QAAQ,CAAEtC,EAAE,CAACM,MAAM,CAAC,CAC3C,GAAIN,EAAE,CAACU,MAAM,CAAE,CACXrC,GAAG,CAAC8E,eAAe,CAACnD,EAAE,CAACsC,QAAQ,CAAEtC,EAAE,CAACU,MAAM,CAC9C,CACJ,CAAC,IAAM,CACHrC,GAAG,CAAG,IAAI,CAACmE,gBAAgB,CAACxC,EAAE,CAAC,CAC/B,IAAI,CAACL,EAAE,CAAC+D,GAAG,CAACrF,GAAG,CACnB,CACA,KACJ,CACJ,CACJ,CAEA,MAAO,KAAI,CAACsB,EAChB,CAAC,GAAAlC,GAAA,gBAAAoC,KAAA,CAED,SAAAkE,YAAYA,CAACC,QAAQ,CAAE,CACnB,GAAI,CAACA,QAAQ,CAAE,MAAO,KAAI,CAACrE,EAAE,CAACsE,MAAM,CAAC,CAAC,CACtC,MAAO,KAAI,CAACtE,EAAE,CAACuE,KAAK,CAACF,QAAQ,CACjC,CAAC,GAAAvG,GAAA,eAAAoC,KAAA,CAED,SAAAsE,WAAWA,CAAC9F,GAAG,CAAE,CACb,GAAI,CAACA,GAAG,CAAE,OAEV,GAAIA,GAAG,CAACoC,eAAe,CAAC,CAAC,GAAK,IAAI,CAACrB,YAAY,EAAIf,GAAG,CAACoC,eAAe,CAAC,CAAC,GAAK,IAAI,CAAE,CAC/E;AACA,MACJ,CAEA,IAAI,CAACd,EAAE,CAAC+D,GAAG,CAACrF,GAAG,CACnB,CAAC,GAAAZ,GAAA,WAAAoC,KAAA,CAED,SAAAuE,OAAOA,CAAA,CAAG,CACN,GAAI,CAAArE,KAAK,CAAG,EAAE,CAEd,GAAI,IAAI,CAACJ,EAAE,CAAC0E,IAAI,CAAC,CAAC,CAAG,CAAC,CAAE,CACpB;AACA,GAAI,CAAAC,SAAS,CAAG,IAAI,CAAC3E,EAAE,CAACsE,MAAM,CAAC,CAAC,CAEhC,GAAI,IAAI,CAAC3E,SAAS,CAAE,CAChB;AACA,GAAM,CAAAiF,aAAa,CAAGD,SAAS,CAACpH,MAAM,CACtC,IAAK,GAAI,CAAAS,EAAC,CAAG,CAAC,CAAEA,EAAC,CAAG4G,aAAa,CAAE5G,EAAC,EAAE,CAAE,CACpC,GAAM,CAAAU,IAAG,CAAGiG,SAAS,CAAC3G,EAAC,CAAC,CACxB,GAAM,CAAA6G,SAAS,CAAGnG,IAAG,CAACoG,YAAY,CAAC,CAAC,CACpC,GAAID,SAAS,EAAIA,SAAS,CAACtH,MAAM,CAAE,CAC/BoH,SAAS,CAAGA,SAAS,CAACI,MAAM,CAACF,SAAS,CAAC,CACvCF,SAAS,CAAC3G,EAAC,CAAC,CAAC6G,SAAS,CAAGnD,SAC7B,CACJ,CACJ,CACAiD,SAAS,CAACK,IAAI,CAAC,SAASC,IAAI,CAAEC,KAAK,CAAE,CACjC,GAAI,MAAO,CAAAD,IAAI,CAACE,KAAM,GAAK,QAAQ,EAAI,MAAO,CAAAD,KAAK,CAACC,KAAM,GAAK,QAAQ,CAAE,CACrE,MAAO,CAAAF,IAAI,CAACE,KAAK,CAAGD,KAAK,CAACC,KAC9B,CACA,GAAI,MAAO,CAAAF,IAAI,CAAC9D,EAAG,GAAK,QAAQ,EAAI,MAAO,CAAA+D,KAAK,CAAC/D,EAAG,GAAK,QAAQ,CAAE,CAC/D,MAAO,CAAA8D,IAAI,CAAC9D,EAAE,CAAG+D,KAAK,CAAC/D,EAC3B,CACA;AACA,MAAO,EACX,CAAC,CAAC,CAEF;AACA,IAAK,GAAI,CAAAnD,CAAC,CAAG,CAAC,CAAEA,CAAC,CAAG2G,SAAS,CAACpH,MAAM,CAAES,CAAC,EAAE,CAAE,CACvC,GAAI,CAAAU,GAAG,CAAGiG,SAAS,CAAC3G,CAAC,CAAC,CACtB,GAAIU,GAAG,CAACoC,eAAe,CAAC,CAAC,GAAK,IAAI,CAACrB,YAAY,CAAE,CAC7CW,KAAK,CAAGA,KAAK,CAAC2E,MAAM,CAAC,IAAI,CAAC5E,eAAe,CAACzB,GAAG,CAAC,CAClD,CACJ,CACJ,CAEA;AACA,IAAI,CAACoB,KAAK,CAACsF,KAAK,CAAC,CAAC,CAClB,IAAI,CAACtF,KAAK,CAACuF,mBAAmB,CAACjF,KAAK,CAAC,CAErC,MAAO,KAAI,CAACN,KAAK,CAACwF,SAAS,CAAC,IAAI,CACpC,CAEA;AACJ;AACA;AACA;AACA,OAJI,GAAAxH,GAAA,YAAAoC,KAAA,CAKA,SAAAqF,QAAQA,CAAA,CAAG,CACP,MAAO,KAAI,CAACzF,KAAK,CAACyF,QAAQ,CAAC,CAC/B,CAEA;AACJ;AACA;AACA,OAHI,GAAAzH,GAAA,QAAAoC,KAAA,CAIA,SAAAwE,IAAIA,CAAA,CAAG,CACH,MAAO,KAAI,CAAC1E,EAAE,CAAC0E,IAAI,CAAC,CACxB,CAEA;AACJ;AACA;AACA;AACA,OAJI,GAAA5G,GAAA,cAAAoC,KAAA,CAKA,SAAAsF,UAAUA,CAAA,CAAG,CACT,MAAO,KAAI,CAAC3F,OAChB,CAAC,WAAA4F,QAAA,CAAAC,OAAA,YAGUrG,aAAa,CAAAsG,MAAA,CAAAD,OAAA,CAAAA,OAAA,CAAAE,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"ResourceXliff.js","names":["_ilibXliff","require","_log4jsApi","_interopRequireDefault","_ResourceString","_ResourceArray","_ResourcePlural","_TranslationSet","_Location","_utils","e","__esModule","_typeof","o","Symbol","iterator","constructor","prototype","_classCallCheck","a","n","TypeError","_defineProperties","r","t","length","enumerable","configurable","writable","Object","defineProperty","_toPropertyKey","key","_createClass","i","_toPrimitive","toPrimitive","call","String","Number","logger","log4js","getLogger","generatePluralComment","res","sourcePlurals","form","json","comment","JSON","parse","pluralForm","pluralFormOther","getKey","stringify","ResourceXliff","options","_options$xliff","_this","copyright","path","sourceLocale","project","allowDups","style","version","xliff","Xliff","ts","TranslationSet","getTranslationUnits","translationUnits","forEach","tu","add","convertTransUnit","value","convertResource","units","resType","TranslationUnit","file","getPath","getSourceLocale","source","getSource","targetLocale","getTargetLocale","target","getTarget","state","getState","id","getId","translated","context","datatype","flavor","getFlavor","undefined","translate","getDNT","location","getLocation","push","sarr","tarr","j","newtu","clone","ordinal","warn","sp","tp","isEmpty","p","quantity","other","ResourceString","pathName","Location","resfile","setTarget","arr","ResourceArray","addTargetItem","strings","ResourcePlural","addTargetPlural","setDNT","setPath","newPath","xml","tuList","deserialize","get","hashKey","addSourceItem","addSourcePlural","getResources","criteria","getAll","getBy","addResource","getText","size","resources","initialLength","instances","getInstances","concat","sort","left","right","index","clear","addTranslationUnits","serialize","getLines","getVersion","_default","exports","module","default"],"sources":["../src/ResourceXliff.js"],"sourcesContent":["/*\n * Xliff.js - convert an Xliff file into a set of resources and vice versa\n *\n * Copyright © 2022-2023, 2025 JEDLSoft\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Xliff, TranslationUnit } from 'ilib-xliff';\nimport log4js from \"@log4js-node/log4js-api\";\n\nimport ResourceString from './ResourceString.js';\nimport ResourceArray from './ResourceArray.js';\nimport ResourcePlural from './ResourcePlural.js';\nimport TranslationSet from './TranslationSet.js';\nimport Location from './Location.js';\nimport { isEmpty } from './utils.js';\n\nconst logger = log4js.getLogger(\"tools-common.ResourceXliff\");\n\nfunction generatePluralComment(res, sourcePlurals, form) {\n var json = {};\n\n if (res.comment) {\n try {\n // see if its json already. If so, we'll add to it\n json = JSON.parse(res.comment);\n } catch (e) {\n // not json, so just return it as is\n return res.comment;\n }\n }\n\n json.pluralForm = form;\n json.pluralFormOther = res.getKey();\n\n return JSON.stringify(json);\n}\n\n/**\n * @class a class that represents resources as an xliff file.\n */\nclass ResourceXliff {\n /**\n * Construct a new resource xliff instance. Operation of the instance\n * is controlled via the options. The options may be undefined, which represents a new,\n * clean Xliff instance.\n *\n * @constructor\n * @param {Object|undefined} options options to\n * initialize the file, or undefined for a new empty file\n * @param {string} [options.path] the path to the xliff file on disk\n * @param {string} [options.tool-id] the id of the tool that saved this xliff file\n * @param {string} [options.tool-name] the full name of the tool that saved this xliff file\n * @param {string} [options.tool-version] the version of the tool that save this xliff file\n * @param {string} [options.tool-company] the name of the company that made this tool\n * @param {string} [options.copyright] a copyright notice that you would like included into the xliff file\n * @param {string} [options.sourceLocale] specify the default source locale if a resource doesn't have a locale itself\n * @param {string} [options.allowDups] allow duplicate resources in the xliff. By default, dups are\n * filtered out. This option allows you to have trans-units that represent instances of the\n * same resource in the file with different metadata. For example, two instances of a\n * resource may have different comments which may both be useful to translators or\n * two instances of the same resource may have been extracted from different source files.\n * @param {string} [options.version] The version of xliff that will be produced by this instance. This\n * may be either \"1.2\" or \"2.0\"\n * @param {Xliff} [options.xliff] The xliff instance to use for this resource xliff instance.\n */\n constructor(options) {\n if (options) {\n this[\"tool-id\"] = options[\"tool-id\"];\n this[\"tool-name\"] = options[\"tool-name\"];\n this[\"tool-version\"] = options[\"tool-version\"];\n this[\"tool-company\"] = options[\"tool-company\"];\n this.copyright = options.copyright;\n this.path = options.path;\n this.sourceLocale = options.sourceLocale || \"en-US\";\n this.project = options.project;\n this.allowDups = options.allowDups;\n this.style = options.style || \"standard\";\n if (typeof(options.version) !== 'undefined') {\n this.version = options.version;\n }\n }\n this.sourceLocale = this.sourceLocale || \"en-US\";\n this.xliff = options?.xliff ?? new Xliff(options);\n this.ts = new TranslationSet(this.sourceLocale);\n\n if (this.xliff.getTranslationUnits().length) {\n const translationUnits = this.xliff.getTranslationUnits();\n translationUnits.forEach(tu => {\n this.ts.add(this.convertTransUnit(tu));\n });\n }\n }\n\n /**\n * Convert a resource into one or more translation units.\n *\n * @private\n * @param {Resource} res the resource to convert\n * @returns {Array.<TranslationUnit>} an array of translation units\n * that represent the resource\n */\n convertResource(res) {\n let units = [], tu;\n\n try {\n switch (res.resType) {\n case \"string\":\n tu = new TranslationUnit({\n project: res.project,\n key: res.getKey(),\n file: res.getPath(),\n sourceLocale: res.getSourceLocale(),\n source: res.getSource(),\n targetLocale: res.getTargetLocale(),\n target: res.getTarget(),\n state: res.getState(),\n id: res.getId(),\n translated: true,\n context: res.context,\n comment: res.comment,\n resType: res.resType,\n datatype: res.datatype,\n flavor: res.getFlavor ? res.getFlavor() : undefined,\n translate: !res.getDNT(),\n location: res.getLocation()\n });\n units.push(tu);\n break;\n\n case \"array\":\n const sarr = res.getSource();\n let tarr = res.getTarget();\n\n tu = new TranslationUnit({\n project: res.project,\n key: res.getKey(),\n file: res.getPath(),\n source: \" \",\n sourceLocale: res.getSourceLocale(),\n targetLocale: res.getTargetLocale(),\n state: res.getState(),\n id: res.getId(),\n translated: true,\n context: res.context,\n comment: res.comment,\n resType: res.resType,\n datatype: res.datatype,\n flavor: res.getFlavor ? res.getFlavor() : undefined,\n translate: !res.getDNT(),\n location: res.getLocation()\n });\n\n for (let j = 0; j < sarr.length; j++) {\n // only output array items that have a translation\n if (sarr[j]) {\n const newtu = tu.clone();\n newtu.source = sarr[j];\n newtu.ordinal = j;\n\n if (tarr && j < tarr.length && tarr[j]) {\n newtu.target = tarr[j];\n }\n\n newtu.ordinal = j;\n units.push(newtu);\n } else if (tarr[j]) {\n logger.warn(\"Translated array \" + res.getKey() + \" has no source string at index \" + j + \". Cannot translate. Resource is: \" + JSON.stringify(res, undefined, 4));\n }\n }\n break;\n\n case \"plural\":\n tu = new TranslationUnit({\n project: res.project,\n key: res.getKey(),\n file: res.getPath(),\n source: \" \",\n sourceLocale: res.getSourceLocale(),\n targetLocale: res.getTargetLocale(),\n state: res.getState(),\n id: res.getId(),\n translated: true,\n context: res.context,\n resType: res.resType,\n datatype: res.datatype,\n flavor: res.getFlavor ? res.getFlavor() : undefined,\n location: res.getLocation(),\n translate: !res.getDNT()\n });\n\n const sp = res.getSource();\n const tp = res.getTarget();\n\n if (!tp || isEmpty(tp)) {\n for (let p in sp) {\n const newtu = tu.clone();\n newtu.source = sp[p];\n newtu.quantity = p;\n newtu.comment = generatePluralComment(res, sp, p);\n units.push(newtu);\n }\n } else {\n for (let p in tp) {\n const newtu = tu.clone();\n newtu.source = sp[p] || sp.other;\n newtu.target = tp[p];\n newtu.quantity = p;\n newtu.comment = generatePluralComment(res, sp, p);\n units.push(newtu);\n }\n }\n break;\n }\n } catch (e) {\n logger.warn(e);\n logger.warn(JSON.stringify(res));\n logger.warn(\"Skipping that resource.\");\n }\n\n return units;\n }\n\n /**\n * Convert a translation unit to a new loctool resource.\n *\n * @private\n * @param {TranslationUnit} tu the translation to convert\n * @return {Resource} the corresponding resource\n */\n convertTransUnit(tu) {\n let res;\n\n switch (tu.resType) {\n default:\n res = new ResourceString({\n pathName: tu.file,\n project: tu.project,\n id: tu.id,\n key: tu.key,\n sourceLocale: tu.sourceLocale,\n source: tu.source,\n targetLocale: tu.targetLocale,\n context: tu.context,\n comment: tu.comment,\n resType: tu.resType,\n datatype: tu.datatype,\n state: tu.state,\n flavor: tu.flavor,\n location: new Location(tu.location),\n resfile: tu.resfile\n });\n\n if (tu.target) {\n res.setTarget(tu.target);\n }\n break;\n\n case \"array\":\n var arr = [];\n arr[tu.ordinal] = tu.source;\n res = new ResourceArray({\n pathName: tu.file,\n project: tu.project,\n id: tu.id,\n key: tu.key,\n sourceLocale: tu.sourceLocale,\n source: arr,\n targetLocale: tu.targetLocale,\n target: [],\n context: tu.context,\n comment: tu.comment,\n resType: tu.resType,\n datatype: tu.datatype,\n state: tu.state,\n flavor: tu.flavor,\n location: new Location(tu.location),\n resfile: tu.resfile\n });\n\n if (tu.target) {\n res.addTargetItem(tu.ordinal, tu.target);\n }\n break;\n\n case \"plural\":\n var strings = {};\n strings[tu.quantity] = tu.source;\n res = new ResourcePlural({\n pathName: tu.file,\n project: tu.project,\n id: tu.id,\n key: tu.key,\n sourceLocale: tu.sourceLocale,\n source: strings,\n targetLocale: tu.targetLocale,\n target: {},\n context: tu.context,\n comment: tu.comment,\n resType: tu.resType,\n datatype: tu.datatype,\n state: tu.state,\n flavor: tu.flavor,\n location: new Location(tu.location),\n resfile: tu.resfile\n });\n\n if (tu.target) {\n res.addTargetPlural(tu.quantity, tu.target);\n }\n break;\n }\n\n if (typeof(tu.translate) === \"boolean\") {\n res.setDNT(!tu.translate);\n }\n\n return res;\n }\n\n getPath() {\n return this.path;\n }\n\n setPath(newPath) {\n this.path = newPath;\n }\n\n /**\n * Parse the given xml and convert it into a set of resources.\n *\n * @param {string} xml the contents of the xliff file to parse\n * @returns {TranslationSet} the translation set that represents\n * the resources in the xliff file\n */\n parse(xml) {\n const tuList = this.xliff.deserialize(xml, this.path);\n let res;\n\n if (tuList) {\n for (var j = 0; j < tuList.length; j++) {\n const tu = tuList[j];\n\n switch (tu.resType) {\n default:\n res = this.convertTransUnit(tu);\n this.ts.add(res);\n break;\n\n case \"array\":\n res = this.ts.get(ResourceArray.hashKey(tu.project, tu.context, tu.targetLocale || tu.sourceLocale, tu.key));\n if (res) {\n // if it already exists, amend the existing resource instead of creating a new one\n res.addSourceItem(tu.ordinal, tu.source);\n if (tu.target) {\n res.addTargetItem(tu.ordinal, tu.target);\n }\n } else {\n res = this.convertTransUnit(tu);\n this.ts.add(res);\n }\n break;\n\n case \"plural\":\n res = this.ts.get(ResourcePlural.hashKey(tu.project, tu.context, tu.targetLocale || tu.sourceLocale, tu.key));\n if (res) {\n // if it already exists, amend the existing resource instead of creating a new one\n res.addSourcePlural(tu.quantity, tu.source);\n if (tu.target) {\n res.addTargetPlural(tu.quantity, tu.target);\n }\n } else {\n res = this.convertTransUnit(tu);\n this.ts.add(res);\n }\n break;\n }\n }\n }\n\n return this.ts;\n }\n\n getResources(criteria) {\n if (!criteria) return this.ts.getAll();\n return this.ts.getBy(criteria);\n }\n\n addResource(res) {\n if (!res) return;\n\n if (res.getTargetLocale() === this.sourceLocale || res.getTargetLocale() === \"en\") {\n // don't add this one... cannot translate TO the source locale!\n return;\n }\n\n this.ts.add(res);\n }\n\n getText() {\n let units = [];\n\n if (this.ts.size() > 0) {\n // first convert the resources into translation units\n let resources = this.ts.getAll();\n\n if (this.allowDups) {\n // only look at the initial set of resources\n const initialLength = resources.length;\n for (let i = 0; i < initialLength; i++) {\n const res = resources[i];\n const instances = res.getInstances();\n if (instances && instances.length) {\n resources = resources.concat(instances);\n resources[i].instances = undefined;\n }\n }\n }\n resources.sort(function(left, right) {\n if (typeof(left.index) === 'number' && typeof(right.index) === 'number') {\n return left.index - right.index;\n }\n if (typeof(left.id) === 'number' && typeof(right.id) === 'number') {\n return left.id - right.id;\n }\n // no ids and no indexes? Well, then don't rearrange\n return 0;\n });\n\n // now add the translations\n for (var i = 0; i < resources.length; i++) {\n var res = resources[i];\n if (res.getTargetLocale() !== this.sourceLocale) {\n units = units.concat(this.convertResource(res));\n }\n }\n }\n\n // start with no translation units in it\n this.xliff.clear();\n this.xliff.addTranslationUnits(units);\n\n return this.xliff.serialize(true);\n }\n\n /**\n * Return the number of lines in the xml representation of this file.\n *\n * @returns {Number} the number of lines in the xml\n */\n getLines() {\n return this.xliff.getLines();\n }\n\n /**\n * Return the number of resources in this resource xliff file.\n * @returns {Number} the number of resources in this file\n */\n size() {\n return this.ts.size();\n }\n\n /**\n * Get the version number of this file. Currently, it only supports\n * xliff v1.2 and v2.0.\n * @returns {String} the version number of the file\n */\n getVersion() {\n return this.version;\n }\n}\n\nexport default ResourceXliff;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ilib-tools-common",
3
- "version": "1.19.0",
3
+ "version": "1.19.1",
4
4
  "main": "./lib/index.js",
5
5
  "module": "./src/index.js",
6
6
  "exports": {
@@ -73,16 +73,18 @@
73
73
  "jsdoc-to-markdown": "^8.0.1",
74
74
  "load-grunt-tasks": "^5.1.0",
75
75
  "npm-run-all": "^4.1.5",
76
- "semver": "^7.6.2"
76
+ "semver": "^7.6.2",
77
+ "ilib-internal": "^0.0.0"
77
78
  },
78
79
  "dependencies": {
79
80
  "@log4js-node/log4js-api": "^1.0.2",
81
+ "ilib-xliff-webos": "^1.0.3",
80
82
  "intl-messageformat": "^10.7.11",
81
83
  "micromatch": "^4.0.8",
82
- "ilib-ctype": "^1.2.2",
84
+ "ilib-ctype": "^1.3.0",
83
85
  "ilib-istring": "^1.1.1",
84
86
  "ilib-locale": "^1.2.4",
85
- "ilib-xliff": "^1.4.0"
87
+ "ilib-xliff": "^1.4.1"
86
88
  },
87
89
  "scripts": {
88
90
  "build": "pnpm build:data ; pnpm build:prod",
@@ -25,7 +25,6 @@ import ResourceArray from './ResourceArray.js';
25
25
  import ResourcePlural from './ResourcePlural.js';
26
26
  import TranslationSet from './TranslationSet.js';
27
27
  import Location from './Location.js';
28
-
29
28
  import { isEmpty } from './utils.js';
30
29
 
31
30
  const logger = log4js.getLogger("tools-common.ResourceXliff");
@@ -75,7 +74,8 @@ class ResourceXliff {
75
74
  * two instances of the same resource may have been extracted from different source files.
76
75
  * @param {string} [options.version] The version of xliff that will be produced by this instance. This
77
76
  * may be either "1.2" or "2.0"
78
- */
77
+ * @param {Xliff} [options.xliff] The xliff instance to use for this resource xliff instance.
78
+ */
79
79
  constructor(options) {
80
80
  if (options) {
81
81
  this["tool-id"] = options["tool-id"];
@@ -93,9 +93,15 @@ class ResourceXliff {
93
93
  }
94
94
  }
95
95
  this.sourceLocale = this.sourceLocale || "en-US";
96
-
97
- this.xliff = new Xliff(options);
96
+ this.xliff = options?.xliff ?? new Xliff(options);
98
97
  this.ts = new TranslationSet(this.sourceLocale);
98
+
99
+ if (this.xliff.getTranslationUnits().length) {
100
+ const translationUnits = this.xliff.getTranslationUnits();
101
+ translationUnits.forEach(tu => {
102
+ this.ts.add(this.convertTransUnit(tu));
103
+ });
104
+ }
99
105
  }
100
106
 
101
107
  /**