melhorias na tipagem de rotas
This commit is contained in:
parent
7d4fe4ad61
commit
2cdac5c970
5 changed files with 30 additions and 11 deletions
6
dist/tipagemRotas.d.ts
vendored
6
dist/tipagemRotas.d.ts
vendored
|
|
@ -12,10 +12,14 @@ export declare class TipagemRotas<T extends {
|
||||||
[q: string]: string | undefined;
|
[q: string]: string | undefined;
|
||||||
}> {
|
}> {
|
||||||
_partesCaminho: string[];
|
_partesCaminho: string[];
|
||||||
|
_acaoIr: undefined | ((endereco: string) => undefined);
|
||||||
/** 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: string[]);
|
constructor({ caminhos, acaoIr, }: {
|
||||||
|
caminhos: string[] | string;
|
||||||
|
acaoIr: (endereco: string) => undefined;
|
||||||
|
});
|
||||||
/** Retorna o caminho completo da rota
|
/** Retorna o caminho completo da rota
|
||||||
** console.log(mCaminho.caminho)
|
** console.log(mCaminho.caminho)
|
||||||
** "/caminho"
|
** "/caminho"
|
||||||
|
|
|
||||||
14
dist/tipagemRotas.js
vendored
14
dist/tipagemRotas.js
vendored
|
|
@ -15,9 +15,10 @@ 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) {
|
constructor({ caminhos, acaoIr, }) {
|
||||||
this._partesCaminho = [];
|
this._partesCaminho = [];
|
||||||
caminhos.forEach((caminho) => {
|
this._acaoIr = acaoIr;
|
||||||
|
[Array.isArray(caminhos) ? caminhos : [caminhos]].forEach((caminho) => {
|
||||||
String(caminho)
|
String(caminho)
|
||||||
.split("/")
|
.split("/")
|
||||||
.forEach((parte) => {
|
.forEach((parte) => {
|
||||||
|
|
@ -71,8 +72,13 @@ class TipagemRotas {
|
||||||
** window.location.href = "http://localhost:3000/caminho?q=query"
|
** window.location.href = "http://localhost:3000/caminho?q=query"
|
||||||
*/
|
*/
|
||||||
ir(query) {
|
ir(query) {
|
||||||
if (typeof window != "undefined") {
|
if (this._acaoIr) {
|
||||||
window.location.href = this.endereco(query);
|
this._acaoIr(this.endereco(query));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (typeof window != "undefined") {
|
||||||
|
window.location.href = this.endereco(query);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/** Retorna os parametros da url
|
/** Retorna os parametros da url
|
||||||
|
|
|
||||||
2
dist/tipagemRotas.js.map
vendored
2
dist/tipagemRotas.js.map
vendored
|
|
@ -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"}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "p-comuns",
|
"name": "p-comuns",
|
||||||
"version": "0.101.0",
|
"version": "0.102.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,17 @@
|
||||||
|
|
||||||
export class TipagemRotas<T extends { [q: string]: string | undefined }> {
|
export class TipagemRotas<T extends { [q: string]: string | undefined }> {
|
||||||
_partesCaminho: string[] = []
|
_partesCaminho: string[] = []
|
||||||
|
_acaoIr: undefined | ((endereco: string) => undefined)
|
||||||
|
|
||||||
/** 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: string[]) {
|
constructor({
|
||||||
caminhos.forEach((caminho) => {
|
caminhos,
|
||||||
|
acaoIr,
|
||||||
|
}: { caminhos: string[] | string; acaoIr: (endereco: string) => undefined }) {
|
||||||
|
this._acaoIr = acaoIr
|
||||||
|
;[Array.isArray(caminhos) ? caminhos : [caminhos]].forEach((caminho) => {
|
||||||
String(caminho)
|
String(caminho)
|
||||||
.split("/")
|
.split("/")
|
||||||
.forEach((parte) => {
|
.forEach((parte) => {
|
||||||
|
|
@ -86,8 +91,12 @@ export class TipagemRotas<T extends { [q: string]: string | undefined }> {
|
||||||
** window.location.href = "http://localhost:3000/caminho?q=query"
|
** window.location.href = "http://localhost:3000/caminho?q=query"
|
||||||
*/
|
*/
|
||||||
ir(query: T) {
|
ir(query: T) {
|
||||||
if (typeof window != "undefined") {
|
if (this._acaoIr) {
|
||||||
window.location.href = this.endereco(query)
|
this._acaoIr(this.endereco(query))
|
||||||
|
} else {
|
||||||
|
if (typeof window != "undefined") {
|
||||||
|
window.location.href = this.endereco(query)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue