{"version":3,"sources":["jsdelivr-header.js","/npm/xliff-to-json@1.1.0/app.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,GAAK,QAAQ,MACb,KAAO,QAAQ,QACnB,MAAM,OAAS,QAAQ,UACjB,UAAY,QAAQ,qBACpB,SAAW,QAAQ,sBACnB,WAAa,QAAQ,oBACrB,MAAQ,QAAQ,WAGtB,SAAS,UAAU,EAAK,EAAK,EAAM,GAqB/B,OAnBA,EAAQ,GAAS,GAAG,YAAY,GAChC,EAAS,GAAU,GAEnB,EAAM,SACF,SAAU,GACN,IAAI,EAAU,KAAK,KAAK,EAAK,GAC7B,IAAK,GAAG,SAAS,GAAS,cAEtB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CAClC,MAAM,EAAM,EAAK,GACjB,GAAK,EAAK,QAAQ,GAAG,EAAI,OAAO,KAAO,IAAM,EAC7C,CACI,EAAO,KAAK,GACZ,KACJ,CACJ,CAER,IAEG,CACX,CAEA,eAAe,QAAQ,GACnB,IAAK,EACD,OAGJ,IAAK,GAAG,WAAW,GAEf,YADA,QAAQ,IAAI,6BAA6B,iBAI7C,MAAM,EAAS,GAAG,UAAU,GAAY,cAExC,IAAI,EAAQ,KASZ,GALI,EAFA,EAEQ,UAAU,EAAY,CAAC,MAAO,UAE9B,CAAC,GAGQ,IAAjB,EAAM,OAKV,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACnC,IAAI,EAAO,EAAM,GACb,EAAiB,EAAK,QAAQ,YAAa,IAE3C,EAAY,GAAG,aAAa,EAAM,QAGtC,MAAM,EAAsD,cAArC,sBAAsB,SAA6B,SAAS,SAAmB,UAAU,GAG1G,EAAM,WAAW,GACjB,EAAa,KAAK,UAAU,EAAK,KAAM,GAGvC,EAAW,KAAK,KAAK,EAAS,EAAa,KAAK,QAAQ,GAAa,EAAe,UAAU,EAAG,EAAe,OAAS,GAAK,QACpI,GAAI,GAAG,WAAW,GAAW,CACR,GAAG,aAAa,EAAU,UAC1B,EACb,QAAQ,IAAI,8BAA8B,UAAa,oCAEvD,QAAQ,IAAI,sBAAsB,YAAe,OACjD,GAAG,cAAc,EAAU,GAEnC,MACI,GAAG,cAAc,EAAU,GAC3B,QAAQ,IAAI,oBAAoB,UAAa,MAErD,MA/BI,QAAQ,IAAI,6BAA6B,MAgCjD,CAEA,eAAe,sBAAsB,GACjC,OAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,OAAO,YAAY,GAAa,CAAC,EAAK,KAChC,GAAI,EACA,EAAO,QAEP,IAEQ,EAAO,OAAoC,QAA3B,EAAO,MAAM,EAAE,QAC/B,EAAQ,OAGH,EAAO,OAAoC,QAA3B,EAAO,MAAM,EAAE,QACpC,EAAQ,OAIR,EAAQ,KAEhB,CAAE,MAAO,GACL,EAAO,KACX,CACJ,GACF,GAEV,CAEA,GAAI,QAAQ,OAAS,OAAQ,CAEzB,QADmB,MAAM,SAAQ,GAErC,CAEA,OAAO,QAAU,CACb,QAAS","file":"/npm/xliff-to-json@1.1.0/app.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/xliff-to-json@1.1.0/app.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var fs = require('fs');\r\nvar path = require('path');\r\nconst xml2js = require('xml2js');\r\nconst xliff12js = require('xliff/xliff12ToJs');\r\nconst xliff2js = require('xliff/cjs/xliff2js')\r\nconst targetOfjs = require('xliff/targetOfjs');\r\nconst utils = require('./utils');\r\n\r\n// function to find all files in a directory with a specific extension\r\nfunction findByExt(base,exts,files,result) \r\n{\r\n    files = files || fs.readdirSync(base) \r\n    result = result || [] \r\n\r\n    files.forEach( \r\n        function (file) {\r\n            var newbase = path.join(base,file)\r\n            if (!fs.statSync(newbase).isDirectory())\r\n            {\r\n                for (let i = 0; i < exts.length; i++) {\r\n                    const ext = exts[i];\r\n                    if ( file.substr(-1*(ext.length+1)) == '.' + ext )\r\n                    {\r\n                        result.push(newbase);\r\n                        break;\r\n                    } \r\n                }\r\n            }\r\n        }\r\n    )\r\n    return result\r\n}\r\n\r\nasync function convert(input_path) {\r\n    if (!input_path) {\r\n        return;\r\n    }\r\n\r\n    if (!fs.existsSync(input_path)) {\r\n        console.log(`ERROR: File or directory \"${input_path}\" not found!`);\r\n        return;\r\n    }\r\n\r\n    const is_dir = fs.lstatSync(input_path).isDirectory();\r\n\r\n    let files = null;\r\n\r\n    if (is_dir) {\r\n        // gets all files in input with extension 'xlf' or 'xliff'\r\n        files = findByExt(input_path, ['xlf', 'xliff']);\r\n    } else {\r\n        files = [input_path];\r\n    }\r\n\r\n    if (files.length === 0) {\r\n        console.log(`ERROR: No files found in \"${input_path}\"!`);\r\n        return;\r\n    }\r\n\r\n    for (let i = 0; i < files.length; i++) {\r\n        let file = files[i];\r\n        let base_file_name = file.replace(/^.*[\\\\\\/]/, '');\r\n\r\n        let file_info = fs.readFileSync(file, 'utf8');\r\n\r\n        // getting data\r\n        const json_obj = await determineXliffVersion(file_info) === '2.0' ? await xliff2js(file_info) : await xliff12js(file_info);\r\n\r\n        // got data, now convert to JSON\r\n        const res = targetOfjs(json_obj);\r\n        const string_res = JSON.stringify(res, null, 2);\r\n\r\n        // writes new JSON file\r\n        const new_path = path.join(is_dir ? input_path : path.dirname(input_path), base_file_name.substring(0, base_file_name.length - 3) + 'json');\r\n        if (fs.existsSync(new_path)) {\r\n            const old_file = fs.readFileSync(new_path, 'utf8');\r\n            if (old_file === string_res) {\r\n                console.log(`INFO: Skipping converting \"${file}\" to \"${new_path}\" as the output is equivalent.`);\r\n            } else {\r\n                console.log(`INFO: Overwriting \"${file}\" with \"${new_path}\".`);\r\n                fs.writeFileSync(new_path, string_res);\r\n            }\r\n        } else {\r\n            fs.writeFileSync(new_path, string_res);\r\n            console.log(`INFO: Converted \"${file}\" to \"${new_path}\".`);\r\n        }\r\n    }\r\n}\r\n\r\nasync function determineXliffVersion(xliffString) {\r\n    return new Promise((resolve, reject) => {\r\n      xml2js.parseString(xliffString, (err, result) => {\r\n            if (err) {\r\n                reject(err);\r\n            } else {\r\n                try {\r\n                    // Check for XLIFF 2.0\r\n                    if (result.xliff && result.xliff.$.version === '2.0') {\r\n                        resolve('2.0');\r\n                    }\r\n                    // Check for XLIFF 1.2\r\n                    else if (result.xliff && result.xliff.$.version === '1.2') {\r\n                        resolve('1.2');\r\n                    }\r\n                    // Version not recognized\r\n                    else {\r\n                        resolve(null);\r\n                    }\r\n                } catch (e) {\r\n                    reject(null);\r\n                }\r\n            }\r\n        });\r\n    });\r\n}\r\n\r\nif (require.main === module) {\r\n    const input_path = utils.getPath(false);\r\n    convert(input_path);\r\n}\r\n\r\nmodule.exports = {\r\n    convert: convert\r\n}"]}