{"version":3,"sources":["jsdelivr-header.js","/npm/nodejection@1.3.0/index.js"],"names":[],"mappings":"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","file":"/npm/nodejection@1.3.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/nodejection@1.3.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\r\nvar _ = require('lodash'),\r\n    Promise = require('bluebird'),\r\n    util = require('util'),\r\n    errors = require('./errors');\r\n\r\nfunction defer() {\r\n  var resolve, reject;\r\n  var promise = new Promise(function() {\r\n    resolve = arguments[0];\r\n    reject = arguments[1];\r\n  });\r\n  return {\r\n    resolve: resolve,\r\n    reject: reject,\r\n    promise: promise\r\n  };\r\n}\r\n\r\nfunction nodejection() {\r\n  var dependencies = {};\r\n\r\n  function register (dependencyName, dependencyPath) {\r\n    var that = this;\r\n\r\n    if (arguments.length == 2) { \r\n      if (_.isString(dependencyPath)) { // Dependency is a file, need to require it.\r\n        dependencyPath = require(dependencyPath);\r\n      }\r\n\r\n      var deferred = defer();\r\n\r\n      dependencies[dependencyName] = {\r\n        definition: dependencyPath,\r\n        deferred: deferred,\r\n        promise: deferred.promise\r\n      };\r\n    } else if (arguments.length == 1 && _.isArray(arguments[0])) {\r\n      _.each(arguments[0], function (argument) {\r\n        that.register.apply(undefined, argument);\r\n      });\r\n    }\r\n  }\r\n\r\n  function resolveFunctionDependency (name, dependencyFunction, promise, dependencyArguments) {\r\n    try {\r\n      var result = dependencyFunction.apply(undefined, dependencyArguments);\r\n\r\n      if (result instanceof Promise) {\r\n        result.then(function (obj) {\r\n          promise.resolve(obj);\r\n        }, function (reason) {\r\n          promise.reject(new errors.RejectedDependencyPromiseError(name, reason));\r\n        });\r\n      } else {\r\n        promise.resolve(result);\r\n      }\r\n    } catch (err) {\r\n      promise.reject(new errors.UnhandledDependencyError(name, err));\r\n    }\r\n  }\r\n\r\n  function innerInject (requestedDependency, stack) {\r\n    var dependency;\r\n\r\n    if (_.isString(requestedDependency)) {\r\n      dependency = dependencies[requestedDependency];\r\n\r\n       if (_.contains(stack, requestedDependency)) {\r\n        return Promise.reject(new errors.CircularDependencyError(requestedDependency));\r\n       }\r\n       stack.push(requestedDependency);\r\n    } else {\r\n      var deferred = defer();\r\n      dependency = {\r\n        definition: requestedDependency,\r\n        deferred: deferred,\r\n        promise: deferred.promise\r\n      };\r\n      requestedDependency = 'anonymous';\r\n    }\r\n\r\n    if (_.isUndefined(dependency)) {\r\n      return Promise.reject(new errors.UnknownDependencyError(requestedDependency));\r\n    }\r\n\r\n    if (dependency.promise.isPending() && !(_.isBoolean(dependency.initializing) && dependency.initializing)) {\r\n      dependency.initializing = true;\r\n      if (_.isFunction(dependency.definition)) {\r\n        resolveFunctionDependency(requestedDependency, dependency.definition, dependency.deferred);\r\n      } else if (_.isArray(dependency.definition)) {\r\n        if (dependency.definition.length == 1) {\r\n          if (_.isFunction(dependency.definition[0])) {\r\n            resolveFunctionDependency(requestedDependency, dependency.definition[0], dependency.deferred);\r\n          } else {\r\n            dependency.deferred.reject(new errors.UnknownDependencyError(requestedDependency));\r\n          }\r\n        } else {\r\n          var promises = _.map(_.initial(dependency.definition), function (dependencyName) {\r\n            return innerInject(dependencyName, _.clone(stack));\r\n          });\r\n\r\n          Promise.all(promises).then(function (dependencies) {\r\n            resolveFunctionDependency(requestedDependency, _.last(dependency.definition), dependency.deferred, dependencies);\r\n          }, function (reason) {\r\n            dependency.deferred.reject(new errors.ChildDependencyError(requestedDependency, reason));\r\n          });\r\n        }\r\n      } else {\r\n        dependency.deferred.resolve(dependency.definition);\r\n      }\r\n    }\r\n\r\n    return dependency.promise;\r\n  };\r\n\r\n  function inject (requestedDependency) {\r\n    var argsLength = arguments.length;\r\n\r\n    if (argsLength > 1) {\r\n      return Promise.all(_.map(arguments, function (arg) {\r\n        return innerInject(arg, []);\r\n      }));\r\n    } else {\r\n      return innerInject(requestedDependency, []);\r\n    }\r\n  };\r\n\r\n  function clean () {\r\n    dependencies = {};\r\n  };\r\n\r\n  var obj = inject;\r\n  obj.inject = inject;\r\n  obj.register = register;\r\n  obj.clean = clean;\r\n  obj.scope = nodejection;\r\n  obj.Literal = function (obj) { return function () { return obj; } };\r\n  obj.literal = obj.Literal;\r\n  obj.errors = errors;\r\n\r\n  Object.defineProperty(obj, 'services', {\r\n    get: function () {\r\n      return _.keys(dependencies);\r\n    }\r\n  });\r\n\r\n  return obj;\r\n}\r\n\r\nmodule.exports = nodejection();"]}