melhoria em tipagem rota

This commit is contained in:
Luiz Silva 2025-03-28 10:07:37 -03:00
parent d628f0fc32
commit 457973873b
5 changed files with 16 additions and 35 deletions

View file

@ -16,8 +16,8 @@ export declare class TipagemRotas<T extends {
/** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial /** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial
** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade") ** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade")
*/ */
constructor({ caminhos, acaoIr, }: { constructor({ caminho, acaoIr, }: {
caminhos: string[] | string; caminho: string[] | string;
acaoIr?: undefined | ((endereco: string) => undefined); acaoIr?: undefined | ((endereco: string) => undefined);
}); });
/** Retorna o caminho completo da rota /** Retorna o caminho completo da rota

20
dist/tipagemRotas.js vendored
View file

@ -15,29 +15,19 @@ class TipagemRotas {
/** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial /** Ao criar novo obijeto de tipagem de rota é necessário passar o caminho parcial
** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade") ** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade")
*/ */
constructor({ caminhos, acaoIr, }) { constructor({ caminho, acaoIr, }) {
this._partesCaminho = []; this._partesCaminho = [];
this._acaoIr = acaoIr; this._acaoIr = acaoIr;
[Array.isArray(caminhos) ? caminhos : [caminhos]].forEach((caminho) => { this._partesCaminho = (Array.isArray(caminho) ? caminho : [caminho])
String(caminho) .flatMap((a) => a.split("/"))
.split("/") .filter(Boolean);
.forEach((parte) => {
if (parte) {
this._partesCaminho.push(parte);
}
});
});
} }
/** Retorna o caminho completo da rota /** Retorna o caminho completo da rota
** console.log(mCaminho.caminho) ** console.log(mCaminho.caminho)
** "/caminho" ** "/caminho"
*/ */
get caminho() { get caminho() {
let ret = `/${this._partesCaminho.join("/")}`; const ret = `/${this._partesCaminho.join("/")}`;
ret = ret.replace(/\/+/g, "/");
if (ret.length > 1 && ret.endsWith("/")) {
ret = ret.slice(0, -1);
}
return ret; return ret;
} }
/** Define o caminho completo da rota /** Define o caminho completo da rota

View file

@ -1 +1 @@
{"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,GAIP;QAZD,mBAAc,GAAa,EAAE,CAAA;QAa3B,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;AArHD,oCAqHC"} {"version":3,"file":"tipagemRotas.js","sourceRoot":"","sources":["../src/tipagemRotas.ts"],"names":[],"mappings":"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"}

View file

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

View file

@ -17,22 +17,17 @@ export class TipagemRotas<T extends { [q: string]: string | undefined }> {
** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade") ** export const mCaminho = new TipagemRotas<{q:string}>("aplicacao","funcionalidade")
*/ */
constructor({ constructor({
caminhos, caminho,
acaoIr, acaoIr,
}: { }: {
caminhos: string[] | string caminho: string[] | string
acaoIr?: undefined | ((endereco: string) => undefined) acaoIr?: undefined | ((endereco: string) => undefined)
}) { }) {
this._acaoIr = acaoIr this._acaoIr = acaoIr
;[Array.isArray(caminhos) ? caminhos : [caminhos]].forEach((caminho) => {
String(caminho) this._partesCaminho = (Array.isArray(caminho) ? caminho : [caminho])
.split("/") .flatMap((a) => a.split("/"))
.forEach((parte) => { .filter(Boolean)
if (parte) {
this._partesCaminho.push(parte)
}
})
})
} }
/** Retorna o caminho completo da rota /** Retorna o caminho completo da rota
@ -40,11 +35,7 @@ export class TipagemRotas<T extends { [q: string]: string | undefined }> {
** "/caminho" ** "/caminho"
*/ */
get caminho() { get caminho() {
let ret = `/${this._partesCaminho.join("/")}` const ret = `/${this._partesCaminho.join("/")}`
ret = ret.replace(/\/+/g, "/")
if (ret.length > 1 && ret.endsWith("/")) {
ret = ret.slice(0, -1)
}
return ret return ret
} }
/** Define o caminho completo da rota /** Define o caminho completo da rota