• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * lodash 3.0.1 (Custom Build) <https://lodash.com/>
3 * Build: `lodash modularize exports="npm" -o ./`
4 * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
5 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
6 * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7 * Available under MIT license <https://lodash.com/license>
8 */
9
10/** Used to determine if values are of the language type `Object`. */
11var objectTypes = {
12  'function': true,
13  'object': true
14};
15
16/** Detect free variable `exports`. */
17var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType)
18  ? exports
19  : undefined;
20
21/** Detect free variable `module`. */
22var freeModule = (objectTypes[typeof module] && module && !module.nodeType)
23  ? module
24  : undefined;
25
26/** Detect free variable `global` from Node.js. */
27var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global);
28
29/** Detect free variable `self`. */
30var freeSelf = checkGlobal(objectTypes[typeof self] && self);
31
32/** Detect free variable `window`. */
33var freeWindow = checkGlobal(objectTypes[typeof window] && window);
34
35/** Detect `this` as the global object. */
36var thisGlobal = checkGlobal(objectTypes[typeof this] && this);
37
38/**
39 * Used as a reference to the global object.
40 *
41 * The `this` value is used if it's the global object to avoid Greasemonkey's
42 * restricted `window` object, otherwise the `window` object is used.
43 */
44var root = freeGlobal ||
45  ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) ||
46    freeSelf || thisGlobal || Function('return this')();
47
48/**
49 * Checks if `value` is a global object.
50 *
51 * @private
52 * @param {*} value The value to check.
53 * @returns {null|Object} Returns `value` if it's a global object, else `null`.
54 */
55function checkGlobal(value) {
56  return (value && value.Object === Object) ? value : null;
57}
58
59module.exports = root;
60