{"version":3,"sources":["jsdelivr-header.js","/npm/zig@0.3.0/zig.js"],"names":[],"mappings":"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","file":"/npm/zig@0.3.0/zig.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/zig@0.3.0/zig.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/* Copyright (c) 2014-2015 Richard Rodger, MIT License */\n\"use strict\";\n/* jshint node:true, asi:true, eqnull:true */\n\n\nvar util = require('util')\n\nvar _ = require('lodash')\n\n\nfunction Zig( options ) {\n  var self = this\n  options = options || {}\n\n  var trace = options.trace || function(){}\n  trace = (_.isBoolean(trace) && trace) ? function(){\n    var args = Array.prototype.slice.apply(arguments)\n    args.unshift('zig')\n    args = _.map(args,function(a){\n      return _.isObject(a) ? util.inspect(a) : a\n    })\n    console.log(args.join('\\t'))\n  } : trace\n\n  var errhandler = console.log\n  var complete   = console.log\n  var ifdepth    = 0\n\n  var steps = []\n\n  function execute() {\n    var step,data,dead=false\n    var ifdepth = 0, active = true\n    var collect = 0, collected = 0, collector = []\n    var to\n\n    if( options.timeout ) {\n      to = setTimeout(function(){\n        dead = true\n\n        // TODO: use eraro\n        var err = new Error('TIMEOUT')\n        err.code = 'timeout'\n        errhandler(err)\n\n      },options.timeout)\n    }\n\n    function nextstep() {\n      if( dead ) return;\n\n      step = steps.shift()\n\n      if( !step ) return exit();\n\n      step.fn = step.fn || {nm:'---anon---'}\n      step.fn.nm = step.fn.nm || step.fn.name\n\n      if( 'step' == step.type && active ) {\n        data = step.fn(data)\n        trace(step.type,step.fn.nm,data)\n        if( null == data ) return exit();\n        nextstep()\n      }\n      else if( 'run' == step.type && active ) {\n        var pos = collect\n        collect++\n        collector.push(null)\n        step.fn(data,function(err,out){\n          if( err ) return errhandler(err);\n          collected++\n          collector[pos] = out\n          check_collect()\n        })\n        trace(step.type,step.fn.nm,data)\n        nextstep()\n      }\n      else if( 'wait' == step.type && active ) {\n        trace(step.type,step.fn.nm,data)\n        if( 0 === collect ) return wait_fn();\n        check_collect()\n      }\n      else if( 'if' == step.type ) {\n        if( active ) {\n          active = evalif(data,step.cond)\n          ifdepth++;\n        }\n        else ifdepth++;\n\n        trace(step.type,step.fn.nm,active,ifdepth)\n        nextstep()\n      }\n      else if( 'endif' == step.type ) {\n        ifdepth--;\n        ifdepth = ifdepth < 0 ? 0 : ifdepth;\n        active = 0 === ifdepth;\n\n        trace(step.type,step.fn.nm,active,ifdepth+1)\n        nextstep()\n      }\n      else nextstep()\n\n\n      function check_collect() {\n        if( dead ) return;\n        if( collected >= collect ) {\n          data = _.clone(collector)\n          collect = 0\n          collected = 0\n          collector = []\n          wait_fn()\n        }\n      }\n\n      function wait_fn() {\n        step.fn(data,function(err,out){\n          if( err ) return errhandler(err);\n          data = out\n          setImmediate(nextstep)\n        })\n      }\n\n      function exit() {\n        if( 0 < ifdepth ) throw new Error(ifdepth+' missing endifs.')\n        clearTimeout(to)\n        return complete(null,data);\n      }\n    }\n    nextstep()\n  }\n\n\n  function evalif(data,cond) {\n    var bool = false\n\n    if( _.isFunction(cond) ) {\n      bool = cond(data)\n    }\n    else if( _.isBoolean(cond) ) {\n      bool = cond\n    }\n    else if( _.isString(cond) ) {\n      /* jshint evil:true */\n      bool = !!eval(cond)\n    }\n\n    return bool\n  }\n\n\n  self.start = function( cb ) {\n    errhandler = cb || errhandler\n    return self;\n  }\n\n  self.end = function( cb ) {\n    complete = cb || errhandler\n    errhandler = complete\n    execute()\n  }\n\n  self.wait = function( fn ) {\n    steps.push({\n      type:'wait',\n      fn:fn\n    })\n    return self;\n  }\n\n  self.step = function( fn ) {\n    steps.push({\n      type:'step',\n      fn:fn\n    })\n    return self;\n  }\n\n  self.if = function( cond ) {\n    steps.push({\n      type:'if',\n      cond:cond\n    })\n    return self;\n  }\n\n  self.endif = function() {\n    steps.push({\n      type:'endif'\n    })\n    return self;\n  }\n\n  self.run = function( fn ) {\n    steps.push({\n      type:'run',\n      fn:fn\n    })\n    return self;\n  }\n\n}\n\n\n\nmodule.exports = function(options){\n  return new Zig(options)\n}\n"]}