diff --git a/.vscode/settings.json b/.vscode/settings.json index 74bd76d..e58f186 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,7 +5,7 @@ }, "editor.defaultFormatter": "biomejs.biome", "[javascript]": { - "editor.defaultFormatter": "biomejs.biome" + "editor.defaultFormatter": "vscode.typescript-language-features" }, "[javascriptreact]": { "editor.defaultFormatter": "biomejs.biome" diff --git a/dist-front/index.d.mts b/dist-front/index.d.mts new file mode 100644 index 0000000..99ae43c --- /dev/null +++ b/dist-front/index.d.mts @@ -0,0 +1,246 @@ +export { ManipulateType, default as dayjsbr } from 'dayjs'; +import { v4 } from 'uuid'; + +declare const aleatorio: (tamanho?: number) => string; + +/** gerar uma função de cache para uso em memoria */ +declare const cacheM: (chave: any, valor?: T, validadeSeg?: number) => T | undefined; +declare const verCacheM: () => { + [k: string]: { + /** new Date().getTime() */ + validade?: number | undefined; + valor: any; + } | undefined; +}; +declare const cacheMemoria: (chave: any, valor?: T, validadeSeg?: number) => T | undefined; +/** para uso fixo dentro de uma função, trava a chave */ +declare const cacheMFixo: (chave: any) => (valor?: T) => T | undefined; + +declare const uuid_null = "00000000-0000-0000-0000-000000000000"; +/** Colunas Presentes n maioria das tabelas */ +declare enum camposComuns { + codigo = "codigo", + excluido = "excluido", + data_hora_criacao = "data_hora_criacao", + data_hora_atualizacao = "data_hora_atualizacao", + codigo_usuario_criacao = "codigo_usuario_criacao", + codigo_usuario_atualizacao = "codigo_usuario_atualizacao", + versao = "versao" +} +/** Palavras comumente usadas */ +declare enum tx { + token = "token" +} +declare enum tipoUsuarioResiduos { + Usuario = "usuario", + Fornecedor = "fornecedor" +} + +declare enum operadores { + "=" = "=", + "!=" = "!=", + ">" = ">", + ">=" = ">=", + "<" = "<", + "<=" = "<=", + like = "like", + in = "in" +} +type tipoFiltro = { + coluna: string; + valor: any; + operador: keyof typeof operadores | operadores; + ou?: boolean; +}; +type interfaceConsulta = { + offset?: number; + limit?: number; + filtros?: tipoFiltro[]; + ordem?: string; + ordemTipo?: "asc" | "desc"; + colunas?: string[]; + apenasConsulta?: boolean; + apenasContagem?: boolean; +}; + +declare const cdn_carro_de_boi = "https://carro-de-boi-idz-one.b-cdn.net"; + +type tiposArquivo = "imagem" | "documento" | "vídeo" | "outros"; +declare const extensoes: { + ext: string; + tipo: tiposArquivo; + mime: string; +}[]; +/** + * Função que retorna o tipo do arquivo + * @param nomeArquivo + * @returns + */ +declare const tipoArquivo: (nomeArquivo: string | null | undefined) => tiposArquivo; + +type tipoLokiObjeto = { + streams: { + stream: { + [k: string]: string; + }; + values: [string, string][]; + }[]; +}; +declare const postLogger: ({ objeto, }: { + objeto: tipoLokiObjeto; +}) => Promise<[objeto: tipoLokiObjeto, erro?: string]>; +/** define a localização da pasta do projeto */ +declare const defineCwd: (novoCwd: string) => void; +type tipoLevel = "info" | "warn" | "error"; +type tipoOpSessao = { + inquilino: string; + usuario: string; + parametros?: { + [k: string]: string; + }; +}; +type tipoLog = { + detalhes?: unknown[]; + __filename?: string; + local?: string; + parametros?: { + [k: string]: string; + }; +}; +type tipoLoggerLog = (level: tipoLevel, mensagem: string, op_tipoLog?: tipoLog) => Promise<[objeto: tipoLokiObjeto, erro?: string]>; +type TipoLoggerSessao = (sess: tipoOpSessao) => tipoLoggerLog; +type tipoLogger = (amb: { + app: string; + eProducao: boolean; + parametros?: { + [k: string]: string; + }; +}) => TipoLoggerSessao; +declare const logger: tipoLogger; + +declare const umaFuncao: () => string; + +declare const umaVariavel = "Ol\u00E1 Mundo! (vari\u00E1vel)"; + +/** gerar o texto de busca removendo caracteres especies e caixa alta */ +declare const texto_busca: (...texto: any[]) => string; + +/** Gerar uma classe que facilita a gestão de rotas com a tipagem das querys + * + * Definições: + * + * caminho = "/aplicacao/funcionalidade" + * + * endereco = "http://localhost:3000/aplicacao/funcionalidade" + * + * parametros = {nome:"José"} + */ +declare class TipagemRotas { + _partesCaminho: string[]; + _acaoIr?: (endereco: string) => undefined; + /** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial + ** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade") + */ + constructor({ caminho, acaoIr, }: { + caminho: string[] | string; + acaoIr?: undefined | ((endereco: string) => undefined); + }); + /** Retorna o caminho completo da rota + ** console.log(mCaminho.caminho) + ** "/caminho" + */ + get caminho(): string; + /** Define o caminho completo da rota + ** mCaminho.caminho = "/novoCaminho" + ** console.log(mCaminho.caminho) + ** "/novoCaminho" + ** */ + set caminho(caminhoParcial: string); + /** Retorna o caminho completo da rota com a query + ** console.log(mCaminho.resolve({q:"query"})) + ** "http://localhost:3000/caminho?q=query" + */ + endereco(query: T, usarComoHash?: boolean): string; + /** Vai para a url + ** mCaminho.ir({q:"query"}) + ** window.location.href = "http://localhost:3000/caminho?q=query" + */ + ir(query: T): void; + /** Retorna os parametros da url + ** console.log(mCaminho.parametros()) + ** {q:"query"} + */ + get parametros(): Partial; +} + +/** + * Essa variável se conecta a tabela_lidades + * + * onde sigla se conecta com sigla + * + * Usuário terá mais opções de unidades, quando fazer o envio para o mtr, usar a opção fornecida pelo usuarios, caso não tenha + * usar a normalizada + */ +declare enum siglas_unidades_medida { + UN = "UN", + KG = "KG", + TON = "TON", + g = "g", + "M³" = "M\u00B3", + Lt = "Lt" +} +declare const unidades_medida: { + sigla_unidade: keyof typeof siglas_unidades_medida; + nome: string; + sigla_normalizada: keyof typeof siglas_unidades_medida; + normalizar: (valor: number) => number; + tipo: "massa" | "volume" | "comprimento" | "unidade"; +}[]; + +/** + * Valida se uma string é um UUID válido (qualquer versão). + * + * @param valor - A string que será validada. + * @returns booleano indicando se é um UUID válido. + */ +declare const erUuid: RegExp; +declare const validarUuid: (uuid: string | number | undefined | null) => boolean; +/** + * Gera um UUID determinístico (versão 3) com base em uma chave e um grupo (namespace). + * + * - Usa o algoritmo MD5 (RFC 4122). + * - Sempre retorna o mesmo UUID para a mesma combinação chave + grupo. + * - Caso o grupo não seja informado, usa o UUID "nil" como namespace. + * + * @param chave - Qualquer valor que será convertido em string para gerar o UUID (ex: número, string ou objeto). + * @param grupo - Opcional. Namespace para separar domínios diferentes de UUIDs. + * @returns UUID v3 (determinístico) + */ +declare const uuidV3: (chave: any, grupo?: string | number) => string; +/** + * Gera um UUID v4 (aleatório, não determinístico). + * + * - Usado quando unicidade é necessária, mas não se exige que seja previsível. + */ +declare const uuidV4: typeof v4; +/** + * @deprecated Esta variável será descontinuada em versões futuras. + * Use a função `uuidV4()` diretamente. + */ +declare const uuid: typeof v4; + +declare const esperar: (ms: number) => Promise; +/** + * Usado para retronat o no de uma variável, deve ser usado dentro de um objeto + * const nomex = {a: 1, b: 2} + * nomeVariavel({nomex}) // retorna "nomex" + * @param v + * @returns + */ +declare const nomeVariavel: (v: { + [key: string]: any; +}) => string; + +export { TipagemRotas, type TipoLoggerSessao, aleatorio, cacheM, cacheMFixo, cacheMemoria, camposComuns, cdn_carro_de_boi, defineCwd, erUuid, esperar, extensoes, type interfaceConsulta, logger, nomeVariavel, operadores, postLogger, siglas_unidades_medida, texto_busca, tipoArquivo, type tipoFiltro, type tipoLogger, type tipoLoggerLog, type tipoLokiObjeto, tipoUsuarioResiduos, tx, umaFuncao, umaVariavel, unidades_medida, uuid, uuidV3, uuidV4, uuid_null, validarUuid, verCacheM }; diff --git a/package.json b/package.json index 3d5df40..57f4a75 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "p-comuns", - "version": "0.214.0", + "version": "0.216.0", "description": "", "main": "./dist-back/index.js", "module": "./dist-front/index.mjs", - "types": "./src/index.ts", + "types": "./dist-front/index.d.mts", "exports": { ".": { - "types": "./src/index.ts", + "types": "./dist-front/index.d.mts", "import": "./dist-front/index.mjs", "require": "./dist-back/index.js" } diff --git a/tsup/como usar.md b/tsup/como usar.md index b51cc8f..82f689b 100644 --- a/tsup/como usar.md +++ b/tsup/como usar.md @@ -4,10 +4,10 @@ tsup --config ./node_modules/p-comuns/tsup/tsup.config.ts "main": "./dist-back/index.js", "module": "./dist-front/index.mjs", - "types": "./src/index.ts", + "types": "./dist-front/index.d.mts",, "exports": { ".": { - "types": "./src/index.ts", + "types": "./dist-front/index.d.mts",, "import": "./dist-front/index.mjs", "require": "./dist-back/index.js" } diff --git a/tsup/tsup.config.front.ts b/tsup/tsup.config.front.ts index 56ade55..a960893 100644 --- a/tsup/tsup.config.front.ts +++ b/tsup/tsup.config.front.ts @@ -11,7 +11,7 @@ export const tsup_config_front: Options = { clean: true, // Limpa o diretório de saída antes de cada build bundle: true, // ESSENCIAL: Mantém a estrutura de arquivos e pastas original splitting: false, // Desnecessário quando bundle é false - dts: false, // Não gera arquivos de declaração TypeScript (.d.ts) para uso em front-end JS + dts: true, // Gera arquivos de declaração TypeScript (.d.ts) para uso em front-end JS // legacyOutput e outExtension foram removidos por não serem necessários sourcemap: false, minify: true, // Recomendado para builds de produção