hurbis-comum-v1
Version:
Biblioteca para uso do AngularJS com TypeScript.
253 lines (252 loc) • 9.61 kB
TypeScript
/// <reference types="angular" />
/// <reference types="angular-translate" />
/// <reference types="angular-resource" />
/// <reference types="googlemaps" />
declare namespace hurbis.comum {
interface IModuloDefinicao {
nome: string;
requisitos: string[];
}
enum FuncionalidadeTipo {
Fabrica = 0,
Provedor = 1,
Controladora = 2,
Servico = 3,
Diretiva = 4,
Componente = 5,
Filtro = 6,
Notacao = 7,
}
interface IFuncionalidadeDefinicao {
/**
* Módulo o qual a funcionalidade será registrada.
*/
moduloDefinicao?: IModuloDefinicao;
/**
* Tipo de funcionalidade.
* Obs.: Caso seja apenas uma configuração do módulo não é necessário informar.
*/
tipo?: FuncionalidadeTipo;
/**
* Nome da funcionalidade.
* Obs.: Caso seja apenas uma configuração do módulo não é necessário informar.
*/
nome?: string;
/**
* Implementação da funcionalidade ou objeto (caso seja um componente).
* Permite informar função com notação para injeção de independência. Ex.: ["teste", (teste)=>{ ... }].
* Caso esteja registrando um componente, passar o objeto (IComponentOptions) com as devidas definições.
*/
objeto: angular.Injectable<Function> | angular.Injectable<angular.FilterFactory> | angular.Injectable<angular.IDirectiveFactory> | angular.IComponentOptions | angular.IServiceProviderFactory | angular.IServiceProviderClass;
}
class GestorModulo {
private static MODULO_PADRAO;
static registrarModulo(moduloDefinicao: IModuloDefinicao): void;
/**
* Recupera/cria o módulo do Angular.
* @param moduloDefinicao Módulo a ser recuperado. O módulo padrão é: "hurbis.comum"
*/
private static modulo(moduloDefinicao?);
/**
* Delega funcionalidade para executar no comando "config" do Angular.
* @param funcionalidade Implementação a ser executada.
* @returns {}
*/
static configurarModulo(funcionalidade: IFuncionalidadeDefinicao): void;
/**
* Delega funcionalidade para executar no comando "run" do Angular.
* @param funcionalidade Implementação a ser executada.
* @returns {}
*/
static inicializarModulo(funcionalidade: IFuncionalidadeDefinicao): void;
static registrarValor(nome: string, valor: any, moduloDefinicao?: IModuloDefinicao): void;
static registrarConstante(nome: string, valor: any, moduloDefinicao?: IModuloDefinicao): void;
static registrarFuncionalidade(funcionalidade: IFuncionalidadeDefinicao): void;
static inicializar(): void;
}
}
declare namespace hurbis.comum {
interface IScriptDefinicao {
nome: string;
arquivos: string[];
}
abstract class GestorScriptBase {
desconverter(itens: oc.IModuleConfig[]): IScriptDefinicao[];
converter(itens: IScriptDefinicao[]): oc.IModuleConfig[];
}
}
declare namespace hurbis.comum {
class GestorScriptProvider extends GestorScriptBase implements angular.IServiceProvider {
private $ocLazyLoadProvider;
constructor($ocLazyLoadProvider: oc.ILazyLoadProvider);
configurar(itens: IScriptDefinicao[]): void;
criarMetodoCarregar(...tipos: string[]): any;
$get: (string | ((leitor: oc.ILazyLoad, $q: angular.IQService) => GestorScriptService))[];
static inicializar(): void;
}
}
declare namespace hurbis.comum {
class GestorScriptService extends GestorScriptBase {
private leitor;
private $q;
constructor(leitor: oc.ILazyLoad, $q: angular.IQService);
readonly scripts: string[];
getScriptDefinicao(nome: string): IScriptDefinicao;
configurar(itens: IScriptDefinicao[]): void;
carregar(tipos: string[]): angular.IPromise<any>;
}
}
declare namespace hurbis.comum.util {
class Localizacao {
private $translate;
constructor($translate: angular.translate.ITranslateService);
private static configurar($translateProvider);
traduzir(linguagem?: string): void;
traducao(palavras: string[]): ng.IPromise<{
[key: string]: string;
}>;
selecionada(): string;
sugerida(): string;
static inicializar(): void;
}
}
declare namespace hurbis.comum.util.mapa {
interface IIP {
ip: string;
country_code: string;
country_name: string;
region_code: string;
region_name: string;
city: string;
zip_code: string;
time_zone: string;
latitude: number;
longitude: number;
metro_code: string;
}
/**
* Serviço para auxiliar em funcionalidades que utilizem mapas. Padrão: Google Maps.
*/
class MapaService {
private static ENDERECO_BASE_MAPA_POR_IP;
private enderecoServico;
dado: angular.resource.IResourceClass<any>;
constructor($resource: angular.resource.IResourceService);
/**
* Calcula a distância entre 2 pontos informados.
* @param pontoA
* @param pontoB
*/
static calcularDistancia(pontoA: google.maps.LatLng, pontoB: google.maps.LatLng, exibirUnidade?: boolean): string;
static inicializar(): void;
}
}
declare namespace hurbis.comum.util {
class Objeto {
static copiar<T>(origem: T, destino?: T): T;
static estender(destino: any, ...fontes: any[]): void;
/**
* Recupera a instância do serviço.
* @param nomeServico Nome do serviço a ser recuperado.
* @param modulos Lista dos módulos onde o serviço deverá ser procurado para ser recuperado.
* @param elemento Nome do elemento raiz da árvore o qual o serviço será recuperado. Valor padrão: "document.body".
*/
static recuperarServico<T>(nomeServico: string, modulos?: string[], elemento?: HTMLElement): T;
private static excecaoObjetoNaoCarregado(objeto);
}
}
declare namespace hurbis.comum.util {
class Gerador {
/**
* Gera um código aleatório.
* @param tamanho Tamanho do código desejado.
*/
static gerarCodigoAleatorio(tamanho: number): string;
/** Gera código utilizando lógica e formato GUID. */
static gerarGUID(): string;
}
}
declare namespace hurbis.comum.util {
interface IArquivo {
nome: string;
tipo: string;
conteudo: string;
}
class Arquivo {
static fromBase64ToByteArray(conteudo: string, sliceSize?: number): Uint8Array[];
static fromByteArrayToBlob(conteudo: Uint8Array[], tipo: string): Blob;
static fromBase64ToBlob(conteudo: string, tipo?: string, sliceSize?: number): Blob;
static toBlob(arquivo: IArquivo): Blob;
}
}
declare namespace hurbis.comum.util.email {
interface IConfiguracao {
apiKey: string;
url: string;
}
interface IEndereco {
email: string;
name?: string;
}
interface IPersonalization {
to: IEndereco[];
cc?: IEndereco[];
bco?: IEndereco[];
subject?: string;
}
interface IConteudo {
type: string;
value: string;
}
interface IEmail {
from: IEndereco;
personalizations: IPersonalization[];
content: IConteudo[];
subject: string;
}
interface IEmailService {
enviar(email: IEmail): angular.IHttpPromise<{}>;
}
}
declare namespace hurbis.comum.util.email {
class EmailService implements IEmailService {
private $http;
private configuracao;
constructor($http: angular.IHttpService, configuracao: IConfiguracao);
enviar(email: IEmail): angular.IHttpPromise<{}>;
}
}
declare namespace hurbis.comum.util.email {
class EmailProvider implements angular.IServiceProvider {
$get: (string | (($http: angular.IHttpService) => IEmailService))[];
private _configuracao;
configurar(configuracao: IConfiguracao): void;
static inicializar(): void;
}
}
declare namespace hurbis.comum.util.validador {
class CPF {
private static LISTA_IGNORADA;
private static STRICT_STRIP_REGEX;
private static LOOSE_STRIP_REGEX;
private static retornarDigito(numeros);
static formatar(numero: string): string;
static limpar(numero: string, strict?: boolean): string;
private static atualizarComDV(numeroSemDV);
static validar(numero: string, strict?: boolean): boolean;
static gerar(formatado: boolean): string;
}
}
declare namespace hurbis.comum.util.validador {
class CNPJ {
private static LISTA_IGNORADA;
private static STRICT_STRIP_REGEX;
private static LOOSE_STRIP_REGEX;
private static retornarDigito(numeros);
static formatar(numero: string): string;
static limpar(numero: string, strict?: boolean): string;
private static atualizarComDV(numeroSemDV);
static validar(numero: string, strict?: boolean): boolean;
static gerar(formatado: boolean): string;
}
}