{"version":3,"sources":["lang.es6"],"names":[],"mappings":"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","file":"angular2/src/facade/lang.es6","sourcesContent":["var _global = typeof window === 'undefined' ? global : window;\nexport {_global as global};\n\nexport var Type = Function;\nexport var Math = _global.Math;\nexport var Date = _global.Date;\n\nvar assertionsEnabled_ = typeof assert !== 'undefined';\n\nvar int;\n// global assert support, as Dart has it...\n// TODO: `assert` calls need to be removed in production code!\nif (assertionsEnabled_) {\n  _global.assert = assert;\n  // `int` is not a valid JS type\n  int = assert.define('int', function(value) {\n    return typeof value === 'number' && value%1 === 0;\n  });\n} else {\n  int = {};\n  _global.assert = function() {};\n}\nexport {int};\n\nexport class CONST {}\nexport class ABSTRACT {}\nexport class IMPLEMENTS {}\n\nexport function isPresent(obj):boolean {\n  return obj !== undefined && obj !== null;\n}\n\nexport function isBlank(obj):boolean {\n  return obj === undefined || obj === null;\n}\n\nexport function isString(obj):boolean {\n  return typeof obj === \"string\";\n}\n\nexport function isFunction(obj):boolean {\n  return typeof obj === \"function\";\n}\n\nexport function stringify(token):string {\n  if (typeof token === 'string') {\n    return token;\n  }\n\n  if (token === undefined || token === null) {\n    return '' + token;\n  }\n\n  if (token.name) {\n    return token.name;\n  }\n\n  return token.toString();\n}\n\nexport class StringWrapper {\n  static fromCharCode(code:int):string {\n    return String.fromCharCode(code);\n  }\n\n  static charCodeAt(s:string, index:int) {\n    return s.charCodeAt(index);\n  }\n\n  static split(s:string, regExp) {\n    return s.split(regExp);\n  }\n\n  static equals(s:string, s2:string):boolean {\n    return s === s2;\n  }\n\n  static replace(s:string, from: string, replace:string): string {\n    return s.replace(from, replace);\n  }\n\n  static replaceAll(s:string, from:RegExp, replace:string):string {\n    return s.replace(from, replace);\n  }\n\n  static startsWith(s:string, start:string) {\n    return s.startsWith(start);\n  }\n\n  static substring(s:string, start:int, end:int = null) {\n    return s.substring(start, end === null ? undefined: end);\n  }\n\n  static replaceAllMapped(s:string, from:RegExp, cb:Function): string {\n    return s.replace(from, function(...matches) {\n      // Remove offset & string from the result array\n      matches.splice(-2, 2);\n      // The callback receives match, p1, ..., pn\n      return cb(matches);\n    });\n  }\n\n  static contains(s:string, substr:string): boolean {\n    return s.indexOf(substr) != -1;\n  }\n}\n\nexport class StringJoiner {\n  constructor() {\n    this.parts = [];\n  }\n\n  add(part:string) {\n    this.parts.push(part);\n  }\n\n  toString():string {\n    return this.parts.join(\"\");\n  }\n}\n\nexport class NumberParseError extends Error {\n  constructor(message) {\n    super();\n    this.message = message;\n  }\n\n  toString() {\n    return this.message;\n  }\n}\n\n\nexport class NumberWrapper {\n  static toFixed(n:number, fractionDigits:int):string {\n    return n.toFixed(fractionDigits);\n  }\n\n  static equal(a, b):boolean {\n    return a === b;\n  }\n\n  static parseIntAutoRadix(text:string):int {\n    var result:int = parseInt(text);\n    if (isNaN(result)) {\n      throw new NumberParseError(\"Invalid integer literal when parsing \" + text);\n    }\n    return result;\n  }\n\n  static parseInt(text:string, radix:int):int {\n    if (radix == 10) {\n      if (/^(\\-|\\+)?[0-9]+$/.test(text)) {\n        return parseInt(text, radix);\n      }\n    } else if (radix == 16) {\n      if (/^(\\-|\\+)?[0-9ABCDEFabcdef]+$/.test(text)) {\n        return parseInt(text, radix);\n      }\n    } else {\n      var result:int = parseInt(text, radix);\n      if (!isNaN(result)) {\n        return result;\n      }\n    }\n    throw new NumberParseError(\"Invalid integer literal when parsing \" + text + \" in base \" + radix);\n  }\n\n  // TODO: NaN is a valid literal but is returned by parseFloat to indicate an error.\n  static parseFloat(text:string):number {\n    return parseFloat(text);\n  }\n\n  static get NaN():number {\n    return NaN;\n  }\n\n  static isNaN(value):boolean {\n    return isNaN(value);\n  }\n\n  static isInteger(value):boolean {\n    return Number.isInteger(value);\n  }\n}\n\nexport var RegExp = _global.RegExp;\n\nexport class RegExpWrapper {\n  static create(regExpStr, flags:string = ''):RegExp {\n    flags = flags.replace(/g/g, '');\n    return new _global.RegExp(regExpStr, flags + 'g');\n  }\n  static firstMatch(regExp, input) {\n    // Reset multimatch regex state\n    regExp.lastIndex = 0;\n    return regExp.exec(input);\n  }\n  static matcher(regExp, input) {\n    // Reset regex state for the case\n    // someone did not loop over all matches\n    // last time.\n    regExp.lastIndex = 0;\n    return {\n      re: regExp,\n      input: input\n    };\n  }\n}\n\nexport class RegExpMatcherWrapper {\n  static next(matcher) {\n    return matcher.re.exec(matcher.input);\n  }\n}\n\nexport class FunctionWrapper {\n  static apply(fn:Function, posArgs) {\n    return fn.apply(null, posArgs);\n  }\n}\n\n// No subclass so that we preserve error stack.\nexport var BaseException = Error;\n\n// JS has NaN !== NaN\nexport function looseIdentical(a, b):boolean {\n  return a === b ||\n    typeof a === \"number\" && typeof b === \"number\" && isNaN(a) && isNaN(b);\n}\n\n// JS considers NaN is the same as NaN for map Key (while NaN !== NaN otherwise)\n// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\nexport function getMapKey(value) {\n  return value;\n}\n\nexport function normalizeBlank(obj) {\n  return isBlank(obj) ? null : obj;\n}\n\nexport function isJsObject(o):boolean {\n  return o !== null && (typeof o === \"function\" || typeof o === \"object\");\n}\n\nexport function assertionsEnabled():boolean {\n  return assertionsEnabled_;\n}\n\nexport function print(obj) {\n  if (obj instanceof Error) {\n    console.log(obj.stack);\n  } else {\n    console.log(obj);\n  }\n}\n\n// Can't be all uppercase as our transpiler would think it is a special directive...\nexport var Json = _global.JSON;\n\nexport class DateWrapper {\n  static fromMillis(ms) {\n    return new Date(ms);\n  }\n  static toMillis(date:Date) {\n    return date.getTime();\n  }\n  static now() {\n    return new Date();\n  }\n  static toJson(date) {\n    return date.toJSON();\n  }\n}\n"]}