angular.module('fbMocks') .factory('uniqueIdService', [function ( ): fb.IMockUniqueIdService { 'use strict'; var ids: { [str: string]: number[] } = {}; var idsNoLimit: { [str: string]: number } = {}; var occupieds: { [str: string]: boolean } = {}; var getUniqueId = function (prefix: string): string { if (!ids[prefix]) { ids[prefix] = []; for (var i: number = 0; i < 1000; i++) { ids[prefix].push(i); } } for (var j: number = 0; j < 1000; j++) { if (!occupieds[prefix + j]) { occupieds[prefix + j] = true; return prefix + j; } } return ''; }; var getUniqueIdNoLimit = function (prefix: string): string { if (angular.isUndefined(idsNoLimit[prefix])) { idsNoLimit[prefix] = -1; } idsNoLimit[prefix] = idsNoLimit[prefix] + 1; return prefix + idsNoLimit[prefix]; }; var removeUniqueId = function (id: string): void { delete occupieds[id]; }; var isUsed = function (identifier: string): boolean { return occupieds[identifier]; }; return { isUsed: isUsed, getUniqueId: getUniqueId, getUniqueIdNoLimit: getUniqueIdNoLimit, removeUniqueId: removeUniqueId }; }]);