melhorias na tipagem de rotas

This commit is contained in:
Luiz Silva 2025-03-23 08:47:15 -03:00
parent 7d4fe4ad61
commit 2cdac5c970
5 changed files with 30 additions and 11 deletions

View file

@ -12,10 +12,14 @@ export declare class TipagemRotas<T extends {
[q: string]: string | undefined;
}> {
_partesCaminho: string[];
_acaoIr: undefined | ((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(...caminhos: string[]);
constructor({ caminhos, acaoIr, }: {
caminhos: string[] | string;
acaoIr: (endereco: string) => undefined;
});
/** Retorna o caminho completo da rota
** console.log(mCaminho.caminho)
** "/caminho"

14
dist/tipagemRotas.js vendored
View file

@ -15,9 +15,10 @@ class TipagemRotas {
/** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial
** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade")
*/
constructor(...caminhos) {
constructor({ caminhos, acaoIr, }) {
this._partesCaminho = [];
caminhos.forEach((caminho) => {
this._acaoIr = acaoIr;
[Array.isArray(caminhos) ? caminhos : [caminhos]].forEach((caminho) => {
String(caminho)
.split("/")
.forEach((parte) => {
@ -71,8 +72,13 @@ class TipagemRotas {
** window.location.href = "http://localhost:3000/caminho?q=query"
*/
ir(query) {
if (typeof window != "undefined") {
window.location.href = this.endereco(query);
if (this._acaoIr) {
this._acaoIr(this.endereco(query));
}
else {
if (typeof window != "undefined") {
window.location.href = this.endereco(query);
}
}
}
/** Retorna os parametros da url

View file

@ -1 +1 @@
{"version":3,"file":"tipagemRotas.js","sourceRoot":"","sources":["../src/tipagemRotas.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"tipagemRotas.js","sourceRoot":"","sources":["../src/tipagemRotas.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,MAAa,YAAY;IAIvB;;OAEG;IACH,YAAY,EACV,QAAQ,EACR,MAAM,GACmE;QAT3E,mBAAc,GAAa,EAAE,CAAA;QAU3B,IAAI,CAAC,OAAO,GAAG,MAAM,CACpB;QAAA,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACrE,MAAM,CAAC,OAAO,CAAC;iBACZ,KAAK,CAAC,GAAG,CAAC;iBACV,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;QAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD;;;;UAIM;IACN,IAAI,OAAO,CAAC,cAAsB;QAChC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAC1E,CAAC;IAED;;;OAGG;IAEH,QAAQ,CAAC,KAAQ,EAAE,YAAsB;QACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAC1E,CAAA;QAED,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAA;QAE3B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAA;QAEf,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAClB,MAAM,CAAC,GAAG,CAAC,EACX,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CACnD,CAAA;QACH,CAAC;QAED,GAAG,CAAC,IAAI,GAAG,EAAE,CAAA;QAEb,IAAI,YAAY,EAAE,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAA;YAC3B,GAAG,CAAC,MAAM,GAAG,EAAE,CAAA;QACjB,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,CAAA;IACjB,CAAC;IAED;;;OAGG;IACH,EAAE,CAAC,KAAQ;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IAEH,IAAI,UAAU;QACZ,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAC1E,CAAA;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAA;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAEpD,aAAa;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QACrB,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAC7C,CAAA;YACD,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAO,CAAA;QACzC,CAAC;QAED,OAAO,QAAsB,CAAA;IAC/B,CAAC;CACF;AAlHD,oCAkHC"}

View file

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

View file

@ -11,12 +11,17 @@
export class TipagemRotas<T extends { [q: string]: string | undefined }> {
_partesCaminho: string[] = []
_acaoIr: undefined | ((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(...caminhos: string[]) {
caminhos.forEach((caminho) => {
constructor({
caminhos,
acaoIr,
}: { caminhos: string[] | string; acaoIr: (endereco: string) => undefined }) {
this._acaoIr = acaoIr
;[Array.isArray(caminhos) ? caminhos : [caminhos]].forEach((caminho) => {
String(caminho)
.split("/")
.forEach((parte) => {
@ -86,8 +91,12 @@ export class TipagemRotas<T extends { [q: string]: string | undefined }> {
** window.location.href = "http://localhost:3000/caminho?q=query"
*/
ir(query: T) {
if (typeof window != "undefined") {
window.location.href = this.endereco(query)
if (this._acaoIr) {
this._acaoIr(this.endereco(query))
} else {
if (typeof window != "undefined") {
window.location.href = this.endereco(query)
}
}
}