adiconado tipagem rota de fornt

This commit is contained in:
Luiz Silva 2024-09-15 09:40:34 -03:00
parent e1985dd867
commit a5ca1748af
9 changed files with 175 additions and 2 deletions

1
dist/index.d.ts vendored
View file

@ -7,3 +7,4 @@ export * from "./uuid";
export * from "./provedores"; export * from "./provedores";
export * from "./ecosistema"; export * from "./ecosistema";
export * from "./variaveisComuns"; export * from "./variaveisComuns";
export * from "./tipagemRotas";

1
dist/index.js vendored
View file

@ -23,4 +23,5 @@ __exportStar(require("./uuid"), exports);
__exportStar(require("./provedores"), exports); __exportStar(require("./provedores"), exports);
__exportStar(require("./ecosistema"), exports); __exportStar(require("./ecosistema"), exports);
__exportStar(require("./variaveisComuns"), exports); __exportStar(require("./variaveisComuns"), exports);
__exportStar(require("./tipagemRotas"), exports);
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map

2
dist/index.js.map vendored
View file

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,6CAA0B;AAC1B,8CAA2B;AAC3B,gDAA6B;AAC7B,oDAAiC;AACjC,yCAAsB;AACtB,+CAA4B;AAC5B,+CAA4B;AAC5B,oDAAiC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,6CAA0B;AAC1B,8CAA2B;AAC3B,gDAA6B;AAC7B,oDAAiC;AACjC,yCAAsB;AACtB,+CAA4B;AAC5B,+CAA4B;AAC5B,oDAAiC;AACjC,iDAA8B"}

38
dist/tipagemRotas.d.ts vendored Normal file
View file

@ -0,0 +1,38 @@
/** Gerar uma classe que facilita a gestão de rotas com a tipagem das querys */
export declare class TipagemRotas<T = {
[q: string]: string;
}> {
/** Prefixo da url */
PREFIXO: string | undefined;
_caminhoParcial: string;
/** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial
** export const mCaminho = new TipagemRotas<{q:string}>("/caminho")
*/
constructor(caminhoParcial: string, PREFIXO: 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"
*/
resolve(query: T): 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"}
*/
parametros(): T;
}

63
dist/tipagemRotas.js vendored Normal file
View file

@ -0,0 +1,63 @@
"use strict";
/** Gerar uma classe que facilita a gestão de rotas com a tipagem das querys */
Object.defineProperty(exports, "__esModule", { value: true });
exports.TipagemRotas = void 0;
class TipagemRotas {
/** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial
** export const mCaminho = new TipagemRotas<{q:string}>("/caminho")
*/
constructor(caminhoParcial, PREFIXO) {
/** Prefixo da url */
this.PREFIXO = undefined;
this._caminhoParcial = caminhoParcial;
if (PREFIXO)
this.PREFIXO = PREFIXO;
}
/** Retorna o caminho completo da rota
** console.log(mCaminho.caminho)
** "/caminho"
*/
get caminho() {
return this.PREFIXO + this._caminhoParcial;
}
/** Define o caminho completo da rota
** mCaminho.caminho = "/novoCaminho"
** console.log(mCaminho.caminho)
** "/novoCaminho"
** */
set caminho(caminhoParcial) {
this._caminhoParcial = caminhoParcial;
}
/** Retorna o caminho completo da rota com a query
** console.log(mCaminho.resolve({q:"query"}))
** "http://localhost:3000/caminho?q=query"
*/
resolve(query) {
const url = new URL(window.location.href);
url.pathname = this.PREFIXO + this._caminhoParcial;
const queryKeys = typeof query == "object" && query ? Object.entries(query) : [[query, ""]];
for (const [key, value] of queryKeys) {
url.searchParams.set(String(key), value);
}
return url.href;
}
/** Vai para a url
** mCaminho.ir({q:"query"})
** window.location.href = "http://localhost:3000/caminho?q=query"
*/
ir(query) {
window.location.href = this.resolve(query);
}
/** Retorna os parametros da url
** console.log(mCaminho.parametros())
** {q:"query"}
*/
parametros() {
const url = new URL(window.location.href);
const query = url.searchParams;
const queryObj = Object.fromEntries(query.entries());
return queryObj;
}
}
exports.TipagemRotas = TipagemRotas;
//# sourceMappingURL=tipagemRotas.js.map

1
dist/tipagemRotas.js.map vendored Normal file
View file

@ -0,0 +1 @@
{"version":3,"file":"tipagemRotas.js","sourceRoot":"","sources":["../src/tipagemRotas.ts"],"names":[],"mappings":";AAAA,qFAAqF;;;AAErF,MAAa,YAAY;IAKvB;;OAEG;IACH,YAAY,cAAsB,EAAE,OAA2B;QAP/D,qBAAqB;QACrB,YAAO,GAAuB,SAAS,CAAA;QAOrC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;QACrC,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACrC,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAA;IAC5C,CAAC;IACD;;;;UAIM;IACN,IAAI,OAAO,CAAC,cAAsB;QAChC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;IACvC,CAAC;IAED;;;OAGG;IAEH,OAAO,CAAC,KAAQ;QACd,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAA;QAClD,MAAM,SAAS,GACb,OAAO,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;QAE3E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAA;IACjB,CAAC;IAED;;;OAGG;IACH,EAAE,CAAC,KAAQ;QACT,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED;;;OAGG;IAEH,UAAU;QACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAA;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACpD,OAAO,QAAa,CAAA;IACtB,CAAC;CACF;AAjED,oCAiEC"}

View file

@ -1,6 +1,6 @@
{ {
"name": "p-comuns", "name": "p-comuns",
"version": "0.40.0", "version": "0.42.0",
"description": "", "description": "",
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {

View file

@ -7,3 +7,4 @@ export * from "./uuid"
export * from "./provedores" export * from "./provedores"
export * from "./ecosistema" export * from "./ecosistema"
export * from "./variaveisComuns" export * from "./variaveisComuns"
export * from "./tipagemRotas"

68
src/tipagemRotas.ts Normal file
View file

@ -0,0 +1,68 @@
/** Gerar uma classe que facilita a gestão de rotas com a tipagem das querys */
export class TipagemRotas<T = { [q: string]: string }> {
/** Prefixo da url */
PREFIXO: string | undefined = undefined
_caminhoParcial: string
/** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial
** export const mCaminho = new TipagemRotas<{q:string}>("/caminho")
*/
constructor(caminhoParcial: string, PREFIXO: string | undefined) {
this._caminhoParcial = caminhoParcial
if (PREFIXO) this.PREFIXO = PREFIXO
}
/** Retorna o caminho completo da rota
** console.log(mCaminho.caminho)
** "/caminho"
*/
get caminho() {
return this.PREFIXO + this._caminhoParcial
}
/** Define o caminho completo da rota
** mCaminho.caminho = "/novoCaminho"
** console.log(mCaminho.caminho)
** "/novoCaminho"
** */
set caminho(caminhoParcial: string) {
this._caminhoParcial = caminhoParcial
}
/** Retorna o caminho completo da rota com a query
** console.log(mCaminho.resolve({q:"query"}))
** "http://localhost:3000/caminho?q=query"
*/
resolve(query: T) {
const url = new URL(window.location.href)
url.pathname = this.PREFIXO + this._caminhoParcial
const queryKeys =
typeof query == "object" && query ? Object.entries(query) : [[query, ""]]
for (const [key, value] of queryKeys) {
url.searchParams.set(String(key), value)
}
return url.href
}
/** Vai para a url
** mCaminho.ir({q:"query"})
** window.location.href = "http://localhost:3000/caminho?q=query"
*/
ir(query: T) {
window.location.href = this.resolve(query)
}
/** Retorna os parametros da url
** console.log(mCaminho.parametros())
** {q:"query"}
*/
parametros() {
const url = new URL(window.location.href)
const query = url.searchParams
const queryObj = Object.fromEntries(query.entries())
return queryObj as T
}
}