{"version":3,"sources":["jsdelivr-header.js","/npm/cordova-build-increment@0.1.0/incrementBuildNum.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,OAAO,QAAU,SAAS,GACX,QAAQ,QAAnB,IAUI,EACA,EAVH,EAAK,QAAQ,MACV,EAAO,QAAQ,QACf,EAAS,QAAQ,UAEjB,EAAY,EAAQ,KAAK,UACzB,EAAa,EAAQ,QACrB,EAAW,aACX,EAAW,EAAK,UAAU,EAAK,KAAK,EAAQ,KAAK,YAAa,IAC9D,EAAS,IAAI,EAAO,OAGpB,GAAc,EACd,EAAgB,GAEhB,IAAc,EAAW,QAAQ,aAAe,GAChD,IAAoB,EAAW,QAAQ,sBAAwB,GAC/D,EAAoB,EAAW,QAAQ,kBAAoB,EAqE/D,SAAS,EAAa,GAClB,IAAI,EAAc,KAYlB,OAXG,EAAO,OAAO,EAAE,IACf,EAAa,EAAmB,EAAO,OAAO,EAAE,KAChC,EAAO,OAAO,EAAE,GAAiB,EAC5C,EAAc,KAAK,EAAe,wBAA0B,EAAO,OAAO,EAAE,GAAiB,KAElG,EAAc,KAAK,EAAe,2BAEnC,IACC,GAAc,EACd,EAAc,KAAK,EAAe,iCAAmC,EAAa,MAE/E,CACX,CASA,SAAS,EAAmB,GACxB,IAAK,EAAM,OAAO,KAClB,IAAI,EAAU,EAAK,QAAQ,UAAW,GACtC,OAAI,GAAW,EAAa,KACrB,CACX,CAEA,SAAS,EAAW,EAAO,EAAQ,GAC/B,IAAI,EAAO,OAAO,KAClB,IACI,IAAI,EAAI,EAAM,OAEd,OAMR,SAAa,EAAM,GAEf,IADA,EAAO,EAAK,YACH,QAAU,EAAS,OAAO,EACnC,KAAM,EAAK,OAAS,GAChB,EAAO,IAAM,EAEjB,OAAO,CACX,CAbe,CADP,EAAQ,SAAS,GAAS,EACR,EACtB,CAAE,MAAO,GACL,OAAO,IACX,CACJ,CA1GI,EAKJ,EAAG,SAAS,EAAU,CAAE,SAAS,SAAU,SAAS,EAAK,GACrD,GAAG,EAAK,MAAM,EACd,EAAO,YAAY,GAAM,SAAU,EAAK,GACpC,GAAG,EAAK,MAAM,GAMtB,SAAqB,GACb,GACA,EAAU,SAAQ,SAAU,IA0BpC,SAAyB,GACrB,OAAQ,GACJ,IAAK,UACD,EAAgB,sBAChB,EAAe,UACf,MACJ,IAAK,MACD,EAAgB,sBAChB,EAAe,MACf,MACJ,IAAK,MACD,EAAgB,sBAChB,EAAe,OACf,MACJ,IAAK,UACD,EAAgB,yBAChB,EAAe,UACf,MACJ,QAEI,OADA,QAAQ,IAAI,iEAAmE,EAAW,mBACnF,EAEf,OAAO,CACX,EAhDe,CAAgB,KACf,EAAa,EAAa,GAClC,IAEA,IACA,EAAgB,UAChB,EAAe,MACf,EAAa,EAAa,IAG3B,EAOP,SAAuB,GACnB,EAAG,UAAU,GAgDC,EAhDkB,EAiD5B,EAAU,IAAI,EAAO,QACzB,EAAQ,QAAQ,WAAW,OAAS,KAC5B,EAAQ,YAAY,GACnB,YApDgC,CAAE,SAAS,SAAU,SAAS,GACnE,GAAG,EAAK,MAAM,EACd,EAAc,KAAK,YAAc,GACjC,EAAc,SAAS,SAAS,GAAQ,QAAQ,IAAI,EAAO,GAC/D,IA4CJ,IAAkB,EACV,CA5CR,CAZQ,CAAc,GAEd,QAAQ,IAAI,EAAW,6BAE/B,CAtBQ,CAAY,EAChB,GACJ,IAXI,QAAQ,IAAI,uDAmHpB","file":"/npm/cordova-build-increment@0.1.0/incrementBuildNum.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/cordova-build-increment@0.1.0/incrementBuildNum.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","module.exports = function(context) {\n    var util = require('util'),\n    \tfs = require('fs'),\n        path = require('path'),\n        xml2js = require('xml2js');\n\n    var platforms = context.opts.platforms,\n        cliCommand = context.cmdLine,\n        fileName = 'config.xml',\n        filePath = path.normalize(path.join(context.opts.projectRoot, fileName)),\n        parser = new xml2js.Parser(),\n        changeVersion,\n        platformName,\n        needRewrite = false,\n        finishMessage = [];\n    // hook configuration\n    var increment = !(cliCommand.indexOf('--no-inc') > -1),\n        platformVersion = !(cliCommand.indexOf('--no-platform-inc') > -1),\n        incrementVersion = (cliCommand.indexOf('--inc-version') > -1);\n\n    if(!increment) {\n        console.log('--no-inc flag detected. No build increment executed.');\n        return;\n    }\n\n    fs.readFile(filePath, { encoding:'utf8' }, function(err, data) {\n        if(err) throw err;\n        parser.parseString(data, function (err, result) {\n            if(err) throw err;\n\n            parseConfig(result);\n        });\n    });\n\n    function parseConfig(configOpts) {\n        if (platformVersion) {\n            platforms.forEach(function (platform) {\n                if(setPlatformInfo(platform))\n                    configOpts = handleResult(configOpts);\n            });\n        } \n        if (incrementVersion) {\n            changeVersion = 'version';\n            platformName = 'App';\n            configOpts = handleResult(configOpts);\n        }\n\n        if(needRewrite) {\n            rewriteConfig(configOpts);\n        } else {\n            console.log(fileName + ' build numbers not changed');\n        }\n    }\n\n    function rewriteConfig(result) {\n        fs.writeFile(filePath, buildXML(result), { encoding:'utf8' }, function(err) {\n            if(err) throw err;\n            finishMessage.push('Saved in ' + fileName);\n            finishMessage.forEach( function(line) { console.log(line); } );\n        });\n    }\n\n    function setPlatformInfo(platform) {\n        switch (platform) {\n            case 'android':\n                changeVersion = 'android-versionCode';\n                platformName = 'Android';\n                break;\n            case 'ios':\n                changeVersion = 'ios-CFBundleVersion';\n                platformName = 'iOS';\n                break;\n            case 'osx':\n                changeVersion = 'osx-CFBundleVersion';\n                platformName = 'OS X';\n                break;\n            case 'windows':\n                changeVersion = 'windows-packageVersion';\n                platformName = 'Windows';\n                break;\n            default:\n                console.log('This hook supports Android, iOS, OS X, and Windows currently, ' + platform + ' not supported');\n                return false;\n        }\n        return true;\n    }\n\n    function handleResult(result) {\n        var newVersion =  null;\n        if(result.widget.$[changeVersion]) { \n            newVersion = processVersionCode(result.widget.$[changeVersion]);\n            if (newVersion) result.widget.$[changeVersion] = newVersion;\n            else finishMessage.push(platformName + ' version code still \"' + result.widget.$[changeVersion] + '\"');\n        } else {\n            finishMessage.push(platformName + ' version code not found');\n        }\n        if(newVersion) {\n            needRewrite = true;\n            finishMessage.push(platformName + ' build number incremented to \"' + newVersion + '\"');\n        }\n        return result;\n    }\n\n    function buildXML(obj) {\n        var builder = new xml2js.Builder();\n        builder.options.renderOpts.indent = '\\t';\n        var x = builder.buildObject(obj);\n        return x.toString();\n    }\n\n    function processVersionCode(code) {\n        if (!code) return null;\n        var newCode = code.replace(/[0-9]+$/, newVersion);\n        if (newCode == code) return null; //Version not changed, no match\n        return newCode;\n    }\n\n    function newVersion(match, offset, original) {\n        if(!match) return null;\n        try {\n            var l = match.length;\n            match = parseInt(match) + 1;\n            return pad(match, l);\n        } catch (e) {\n            return null;\n        }\n    }\n\n    function pad(code, origLen) {\n        code = code.toString();\n        if (code.length >= origLen) return code;\n        while(code.length < origLen) {\n            code = '0' + code;\n        }\n        return code;\n    }\n}"]}