/tutorial/node_modules/@angular/http/src/facade/collection.js
JavaScript | 369 lines | 347 code | 0 blank | 22 comment | 60 complexity | 53f367e08e13ade356acd8dc7c68e955 MD5 | raw file
- /**
- * @license
- * Copyright Google Inc. All Rights Reserved.
- *
- * Use of this source code is governed by an MIT-style license that can be
- * found in the LICENSE file at https://angular.io/license
- */
- "use strict";
- var lang_1 = require('./lang');
- exports.Map = lang_1.global.Map;
- exports.Set = lang_1.global.Set;
- // Safari and Internet Explorer do not support the iterable parameter to the
- // Map constructor. We work around that by manually adding the items.
- var createMapFromPairs = (function () {
- try {
- if (new exports.Map([[1, 2]]).size === 1) {
- return function createMapFromPairs(pairs) { return new exports.Map(pairs); };
- }
- }
- catch (e) {
- }
- return function createMapAndPopulateFromPairs(pairs) {
- var map = new exports.Map();
- for (var i = 0; i < pairs.length; i++) {
- var pair = pairs[i];
- map.set(pair[0], pair[1]);
- }
- return map;
- };
- })();
- var createMapFromMap = (function () {
- try {
- if (new exports.Map(new exports.Map())) {
- return function createMapFromMap(m) { return new exports.Map(m); };
- }
- }
- catch (e) {
- }
- return function createMapAndPopulateFromMap(m) {
- var map = new exports.Map();
- m.forEach(function (v, k) { map.set(k, v); });
- return map;
- };
- })();
- var _clearValues = (function () {
- if ((new exports.Map()).keys().next) {
- return function _clearValues(m) {
- var keyIterator = m.keys();
- var k;
- while (!((k = keyIterator.next()).done)) {
- m.set(k.value, null);
- }
- };
- }
- else {
- return function _clearValuesWithForeEach(m) {
- m.forEach(function (v, k) { m.set(k, null); });
- };
- }
- })();
- // Safari doesn't implement MapIterator.next(), which is used is Traceur's polyfill of Array.from
- // TODO(mlaval): remove the work around once we have a working polyfill of Array.from
- var _arrayFromMap = (function () {
- try {
- if ((new exports.Map()).values().next) {
- return function createArrayFromMap(m, getValues) {
- return getValues ? Array.from(m.values()) : Array.from(m.keys());
- };
- }
- }
- catch (e) {
- }
- return function createArrayFromMapWithForeach(m, getValues) {
- var res = ListWrapper.createFixedSize(m.size), i = 0;
- m.forEach(function (v, k) {
- res[i] = getValues ? v : k;
- i++;
- });
- return res;
- };
- })();
- var MapWrapper = (function () {
- function MapWrapper() {
- }
- MapWrapper.clone = function (m) { return createMapFromMap(m); };
- MapWrapper.createFromStringMap = function (stringMap) {
- var result = new exports.Map();
- for (var prop in stringMap) {
- result.set(prop, stringMap[prop]);
- }
- return result;
- };
- MapWrapper.toStringMap = function (m) {
- var r = {};
- m.forEach(function (v, k) { return r[k] = v; });
- return r;
- };
- MapWrapper.createFromPairs = function (pairs) { return createMapFromPairs(pairs); };
- MapWrapper.clearValues = function (m) { _clearValues(m); };
- MapWrapper.iterable = function (m) { return m; };
- MapWrapper.keys = function (m) { return _arrayFromMap(m, false); };
- MapWrapper.values = function (m) { return _arrayFromMap(m, true); };
- return MapWrapper;
- }());
- exports.MapWrapper = MapWrapper;
- /**
- * Wraps Javascript Objects
- */
- var StringMapWrapper = (function () {
- function StringMapWrapper() {
- }
- StringMapWrapper.create = function () {
- // Note: We are not using Object.create(null) here due to
- // performance!
- // http://jsperf.com/ng2-object-create-null
- return {};
- };
- StringMapWrapper.contains = function (map, key) {
- return map.hasOwnProperty(key);
- };
- StringMapWrapper.get = function (map, key) {
- return map.hasOwnProperty(key) ? map[key] : undefined;
- };
- StringMapWrapper.set = function (map, key, value) { map[key] = value; };
- StringMapWrapper.keys = function (map) { return Object.keys(map); };
- StringMapWrapper.values = function (map) {
- return Object.keys(map).map(function (k) { return map[k]; });
- };
- StringMapWrapper.isEmpty = function (map) {
- for (var prop in map) {
- return false;
- }
- return true;
- };
- StringMapWrapper.delete = function (map, key) { delete map[key]; };
- StringMapWrapper.forEach = function (map, callback) {
- for (var _i = 0, _a = Object.keys(map); _i < _a.length; _i++) {
- var k = _a[_i];
- callback(map[k], k);
- }
- };
- StringMapWrapper.merge = function (m1, m2) {
- var m = {};
- for (var _i = 0, _a = Object.keys(m1); _i < _a.length; _i++) {
- var k = _a[_i];
- m[k] = m1[k];
- }
- for (var _b = 0, _c = Object.keys(m2); _b < _c.length; _b++) {
- var k = _c[_b];
- m[k] = m2[k];
- }
- return m;
- };
- StringMapWrapper.equals = function (m1, m2) {
- var k1 = Object.keys(m1);
- var k2 = Object.keys(m2);
- if (k1.length != k2.length) {
- return false;
- }
- var key;
- for (var i = 0; i < k1.length; i++) {
- key = k1[i];
- if (m1[key] !== m2[key]) {
- return false;
- }
- }
- return true;
- };
- return StringMapWrapper;
- }());
- exports.StringMapWrapper = StringMapWrapper;
- var ListWrapper = (function () {
- function ListWrapper() {
- }
- // JS has no way to express a statically fixed size list, but dart does so we
- // keep both methods.
- ListWrapper.createFixedSize = function (size) { return new Array(size); };
- ListWrapper.createGrowableSize = function (size) { return new Array(size); };
- ListWrapper.clone = function (array) { return array.slice(0); };
- ListWrapper.forEachWithIndex = function (array, fn) {
- for (var i = 0; i < array.length; i++) {
- fn(array[i], i);
- }
- };
- ListWrapper.first = function (array) {
- if (!array)
- return null;
- return array[0];
- };
- ListWrapper.last = function (array) {
- if (!array || array.length == 0)
- return null;
- return array[array.length - 1];
- };
- ListWrapper.indexOf = function (array, value, startIndex) {
- if (startIndex === void 0) { startIndex = 0; }
- return array.indexOf(value, startIndex);
- };
- ListWrapper.contains = function (list, el) { return list.indexOf(el) !== -1; };
- ListWrapper.reversed = function (array) {
- var a = ListWrapper.clone(array);
- return a.reverse();
- };
- ListWrapper.concat = function (a, b) { return a.concat(b); };
- ListWrapper.insert = function (list, index, value) { list.splice(index, 0, value); };
- ListWrapper.removeAt = function (list, index) {
- var res = list[index];
- list.splice(index, 1);
- return res;
- };
- ListWrapper.removeAll = function (list, items) {
- for (var i = 0; i < items.length; ++i) {
- var index = list.indexOf(items[i]);
- list.splice(index, 1);
- }
- };
- ListWrapper.remove = function (list, el) {
- var index = list.indexOf(el);
- if (index > -1) {
- list.splice(index, 1);
- return true;
- }
- return false;
- };
- ListWrapper.clear = function (list) { list.length = 0; };
- ListWrapper.isEmpty = function (list) { return list.length == 0; };
- ListWrapper.fill = function (list, value, start, end) {
- if (start === void 0) { start = 0; }
- if (end === void 0) { end = null; }
- list.fill(value, start, end === null ? list.length : end);
- };
- ListWrapper.equals = function (a, b) {
- if (a.length != b.length)
- return false;
- for (var i = 0; i < a.length; ++i) {
- if (a[i] !== b[i])
- return false;
- }
- return true;
- };
- ListWrapper.slice = function (l, from, to) {
- if (from === void 0) { from = 0; }
- if (to === void 0) { to = null; }
- return l.slice(from, to === null ? undefined : to);
- };
- ListWrapper.splice = function (l, from, length) { return l.splice(from, length); };
- ListWrapper.sort = function (l, compareFn) {
- if (lang_1.isPresent(compareFn)) {
- l.sort(compareFn);
- }
- else {
- l.sort();
- }
- };
- ListWrapper.toString = function (l) { return l.toString(); };
- ListWrapper.toJSON = function (l) { return JSON.stringify(l); };
- ListWrapper.maximum = function (list, predicate) {
- if (list.length == 0) {
- return null;
- }
- var solution = null;
- var maxValue = -Infinity;
- for (var index = 0; index < list.length; index++) {
- var candidate = list[index];
- if (lang_1.isBlank(candidate)) {
- continue;
- }
- var candidateValue = predicate(candidate);
- if (candidateValue > maxValue) {
- solution = candidate;
- maxValue = candidateValue;
- }
- }
- return solution;
- };
- ListWrapper.flatten = function (list) {
- var target = [];
- _flattenArray(list, target);
- return target;
- };
- ListWrapper.addAll = function (list, source) {
- for (var i = 0; i < source.length; i++) {
- list.push(source[i]);
- }
- };
- return ListWrapper;
- }());
- exports.ListWrapper = ListWrapper;
- function _flattenArray(source, target) {
- if (lang_1.isPresent(source)) {
- for (var i = 0; i < source.length; i++) {
- var item = source[i];
- if (lang_1.isArray(item)) {
- _flattenArray(item, target);
- }
- else {
- target.push(item);
- }
- }
- }
- return target;
- }
- function isListLikeIterable(obj) {
- if (!lang_1.isJsObject(obj))
- return false;
- return lang_1.isArray(obj) ||
- (!(obj instanceof exports.Map) &&
- lang_1.getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop
- }
- exports.isListLikeIterable = isListLikeIterable;
- function areIterablesEqual(a, b, comparator) {
- var iterator1 = a[lang_1.getSymbolIterator()]();
- var iterator2 = b[lang_1.getSymbolIterator()]();
- while (true) {
- var item1 = iterator1.next();
- var item2 = iterator2.next();
- if (item1.done && item2.done)
- return true;
- if (item1.done || item2.done)
- return false;
- if (!comparator(item1.value, item2.value))
- return false;
- }
- }
- exports.areIterablesEqual = areIterablesEqual;
- function iterateListLike(obj, fn) {
- if (lang_1.isArray(obj)) {
- for (var i = 0; i < obj.length; i++) {
- fn(obj[i]);
- }
- }
- else {
- var iterator = obj[lang_1.getSymbolIterator()]();
- var item;
- while (!((item = iterator.next()).done)) {
- fn(item.value);
- }
- }
- }
- exports.iterateListLike = iterateListLike;
- // Safari and Internet Explorer do not support the iterable parameter to the
- // Set constructor. We work around that by manually adding the items.
- var createSetFromList = (function () {
- var test = new exports.Set([1, 2, 3]);
- if (test.size === 3) {
- return function createSetFromList(lst) { return new exports.Set(lst); };
- }
- else {
- return function createSetAndPopulateFromList(lst) {
- var res = new exports.Set(lst);
- if (res.size !== lst.length) {
- for (var i = 0; i < lst.length; i++) {
- res.add(lst[i]);
- }
- }
- return res;
- };
- }
- })();
- var SetWrapper = (function () {
- function SetWrapper() {
- }
- SetWrapper.createFromList = function (lst) { return createSetFromList(lst); };
- SetWrapper.has = function (s, key) { return s.has(key); };
- SetWrapper.delete = function (m, k) { m.delete(k); };
- return SetWrapper;
- }());
- exports.SetWrapper = SetWrapper;
- //# sourceMappingURL=collection.js.map