{"version":3,"sources":["jsdelivr-header.js","/npm/cha@0.2.1/lib/cha.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,EAAI,QAAQ,UACZ,KAAO,QAAQ,QACf,QAAU,QAAQ,aAItB,SAAS,IAAI,GACT,IAAI,EAAW,GA4Bf,OA1Ba,MAAT,IACA,EAAQ,GAAG,OAAO,GAClB,EAAQ,EAAE,IAAI,GAAO,SAAU,GAC3B,IACI,EADO,IAAI,OAAO,2BACL,KAAK,GAEtB,GAAI,EACA,MAAO,CACH,KAAM,EAAM,GACZ,QAAS,EAAM,IAGnB,MAAM,IAAI,YAAY,4BAA8B,EAE5D,IAEA,EAAW,EAAE,IAAI,GAAO,SAAU,GAC9B,IAAI,EAAO,IAAI,KAAK,EAAK,MACzB,IAAI,EAAM,MAAM,IAAI,MAAM,sBAAwB,EAAK,MACvD,OAAO,IAAI,IAAI,EAAM,KAAM,EAAK,QACpC,KAIJ,SAAS,QAAS,IAAI,MAEf,QAAQ,IAAI,GAAU,MAAK,SAAU,GACxC,OAAO,EAAE,QAAQ,EACrB,GACJ,CAEA,SAAS,SAAS,EAAa,EAAK,GAEhC,IAAI,EAAK,EAAY,UAErB,EAAE,KAAK,GAAK,SAAU,EAAM,GACxB,EAAG,GAAQ,SAAU,EAAS,GAC1B,OAAO,KAAK,MAAK,SAAU,GACvB,OAAO,IAAI,GAAY,SAAU,GAE7B,EADe,IAAI,IAAI,EAAM,EAAS,EAAS,EAAQ,GAE3D,GACJ,GACJ,CACJ,GACJ,CAlDA,OAAO,QAAU,IAuDjB,IAAI,GAAK,SAAU,EAAM,GACrB,GAAI,EAAE,SAAS,IAAS,EAAE,WAAW,GAEjC,OADA,IAAI,KAAK,GAAQ,EACV,KAEP,MAAM,IAAI,MAAM,sBAAwB,EAEhD,EAKA,IAAI,KAAO,CAAC,EAKZ,IAAI,OAAS,QAKb,IAAI,IAAM,SAAU,EAAM,EAAS,EAAS,EAAQ,GAChD,IAAI,EAGJ,GAFA,EAAS,GAAU,IAAI,OAEnB,EAAE,WAAW,IAAS,EAAK,UAAU,IAAK,CAC1C,IAAI,EAAI,IAAI,EACZ,EAAM,EAAE,IAAI,KAAK,EACrB,MAAO,GAAI,EAAE,SAAS,IAAS,EAAK,IAChC,EAAM,EAAK,IAAI,KAAK,OACjB,KAAI,EAAE,WAAW,GAGpB,MAAM,IAAI,UAAU,qBAFpB,EAAM,CAGV,CAEA,IAAI,EAAW,EAAI,EAAS,EAAS,EAAQ,GAE7C,IAAK,EAAE,WAAW,EAAS,MACvB,MAAM,IAAI,UAAU,0BAGxB,OAAO,CACX","file":"/npm/cha@0.2.1/lib/cha.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/cha@0.2.1/lib/cha.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 _ = require('lodash');\nvar path = require('path');\nvar Promise = require('./promise');\n\nmodule.exports = cha;\n\nfunction cha(exprs) {\n    var promises = [];\n\n    if (exprs != null) {\n        exprs = [].concat(exprs);\n        exprs = _.map(exprs, function (expr) {\n            var rule = new RegExp(\"\\\\s*(\\\\w+)\\\\s*:\\\\s*(.*)\");\n            var match = rule.exec(expr);\n\n            if (match) {\n                return {\n                    task: match[1],\n                    options: match[2]\n                }\n            } else {\n                throw new SyntaxError(\"Unrecognized expression: \" + expr);\n            }\n        });\n\n        promises = _.map(exprs, function (expr) {\n            var task = cha.task[expr.task];\n            if(!task) throw new Error(\"Unregistered task: \" + expr.task);\n            return cha.run(task, null, expr.options);\n        })\n    }\n\n    // Chaining tasks.\n    chaining(Promise, cha.task);\n    // Flatten results.\n    return Promise.all(promises).then(function (results) {\n        return _.flatten(results);\n    })\n}\n\nfunction chaining(constructor, fns, logger) {\n    // Make task chaining.\n    var fn = constructor.prototype;\n    // Custom tasks.\n    _.each(fns, function (task, name) {\n        fn[name] = function (options, settings) {\n            return this.then(function (records) {\n                return new constructor(function (resolve) {\n                    var thenable = cha.run(task, records, options, logger, settings);\n                    resolve(thenable);\n                });\n            });\n        }\n    });\n}\n\n/**\n * Plugins register.\n */\ncha.in = function (name, task) {\n    if (_.isObject(task) || _.isFunction(task)) {\n        cha.task[name] = task;\n        return this;\n    } else {\n        throw new Error(\"Unrecognized task: \" + task);\n    }\n};\n\n/**\n * Task collection.\n */\ncha.task = {};\n\n/**\n * Logging object.\n */\ncha.logger = console;\n\n/**\n * Run task\n */\ncha.run = function (task, records, options, logger, settings) {\n    var run;\n    logger = logger || cha.logger;\n\n    if (_.isFunction(task) && task.prototype.run) {\n        var t = new task;\n        run = t.run.bind(t);\n    } else if (_.isObject(task) && task.run) {\n        run = task.run.bind(task);\n    } else if (_.isFunction(task)) {\n        run = task;\n    } else {\n        throw new TypeError(\"Unrecognized task\");\n    }\n\n    var thenable = run(records, options, logger, settings);\n\n    if (!_.isFunction(thenable.then)) {\n        throw new TypeError(\"Must return a thenable\");\n    }\n\n    return thenable;\n};\n"]}