types-nora-api 0.0.220 → 0.0.222

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/classes.d.ts CHANGED
@@ -894,6 +894,144 @@ type ParamsProps<P extends PaginaFolha> = RequiredKeys<PaginaParams<P>> extends
894
894
  type PaginaDestino = PaginaFolha extends infer P ? P extends PaginaFolha ? {
895
895
  pagina: P;
896
896
  } & ParamsProps<P> : never : never;
897
+ type CtxAcesso = {
898
+ estaAutenticado: boolean;
899
+ verificarCapacidade: (capacidade: Capacidade) => boolean;
900
+ };
901
+ type DecisaoAcessoPagina = {
902
+ permitido: true;
903
+ } | {
904
+ permitido: false;
905
+ motivo: 'NAO_AUTENTICADO';
906
+ redirecionarPara: PaginaFolha;
907
+ } | {
908
+ permitido: false;
909
+ motivo: 'SEM_CAPACIDADE';
910
+ redirecionarPara: PaginaFolha;
911
+ };
912
+ declare function decidirAcessoPagina(acesso: AcessoPagina | undefined, ctx: CtxAcesso): DecisaoAcessoPagina;
913
+ type ItemMenu = {
914
+ readonly titulo: string;
915
+ readonly destino?: PaginaDestino;
916
+ readonly subItens?: readonly ItemMenu[];
917
+ };
918
+ declare const MENU_SWIPER_ESQUERDA: readonly [{
919
+ readonly titulo: "Minhas Páginas";
920
+ readonly subItens: readonly [{
921
+ readonly titulo: "Jogador";
922
+ readonly destino: {
923
+ readonly pagina: {
924
+ readonly meusPersonagens: PaginaDef<"/minhas-paginas/jogador/meus-personagens">;
925
+ readonly label: string;
926
+ readonly comCabecalho?: true;
927
+ readonly acesso?: AcessoPagina;
928
+ readonly template: PaginaTemplate<"/minhas-paginas/jogador">;
929
+ readonly hrefTemplate: "/minhas-paginas/jogador";
930
+ readonly href: "/minhas-paginas/jogador";
931
+ };
932
+ };
933
+ }, {
934
+ readonly titulo: "Disponibilidades";
935
+ readonly destino: {
936
+ readonly pagina: PaginaDef<"/minhas-paginas/minhas-disponibilidades">;
937
+ };
938
+ }, {
939
+ readonly titulo: "Mestre";
940
+ readonly destino: {
941
+ readonly pagina: {
942
+ readonly aventura: PaginaDef<"/minhas-paginas/mestre/aventura/[id]">;
943
+ readonly aventuras: PaginaDef<"/minhas-paginas/mestre/aventuras">;
944
+ readonly personagens: PaginaDef<"/minhas-paginas/mestre/personagens">;
945
+ readonly rascunhos: {
946
+ readonly aventuras: PaginaDef<"/minhas-paginas/mestre/rascunhos/aventuras">;
947
+ readonly sessoesUnicas: PaginaDef<"/minhas-paginas/mestre/rascunhos/sessoes-unicas">;
948
+ };
949
+ readonly sessao: PaginaDef<"/minhas-paginas/mestre/sessao/[id]">;
950
+ readonly label: string;
951
+ readonly comCabecalho?: true;
952
+ readonly acesso?: AcessoPagina;
953
+ readonly template: PaginaTemplate<"/minhas-paginas/mestre">;
954
+ readonly hrefTemplate: "/minhas-paginas/mestre";
955
+ readonly href: "/minhas-paginas/mestre";
956
+ };
957
+ };
958
+ }, {
959
+ readonly titulo: "Administrador";
960
+ readonly destino: {
961
+ readonly pagina: {
962
+ readonly aventura: PaginaDef<"/minhas-paginas/admin/aventura/[id]">;
963
+ readonly aventuras: PaginaDef<"/minhas-paginas/admin/aventuras">;
964
+ readonly dashboardWs: PaginaDef<"/minhas-paginas/admin/dashboard-ws">;
965
+ readonly sessao: PaginaDef<"/minhas-paginas/admin/sessao/[id]">;
966
+ readonly uploads: PaginaDef<"/minhas-paginas/admin/uploads">;
967
+ readonly variaveisAmbiente: PaginaDef<"/minhas-paginas/admin/variaveis-ambiente">;
968
+ readonly label: string;
969
+ readonly comCabecalho?: true;
970
+ readonly acesso?: AcessoPagina;
971
+ readonly template: PaginaTemplate<"/minhas-paginas/admin">;
972
+ readonly hrefTemplate: "/minhas-paginas/admin";
973
+ readonly href: "/minhas-paginas/admin";
974
+ };
975
+ };
976
+ }];
977
+ }, {
978
+ readonly titulo: "Personagens";
979
+ readonly destino: {
980
+ readonly pagina: PaginaDef<"/personagens">;
981
+ };
982
+ }, {
983
+ readonly titulo: "Jogue Agora!";
984
+ readonly destino: {
985
+ readonly pagina: {
986
+ readonly jogador: PaginaDef<"/jogo/jogador">;
987
+ readonly mestre: {
988
+ readonly sessoesMestre: PaginaDef<"/jogo/mestre/sessoes-mestre">;
989
+ };
990
+ readonly admin: {
991
+ readonly gerenciarSalas: PaginaDef<"/jogo/admin/gerenciar-salas">;
992
+ };
993
+ readonly emJogo: PaginaDef<"/jogo/em-jogo">;
994
+ readonly label: string;
995
+ readonly comCabecalho?: true;
996
+ readonly acesso?: AcessoPagina;
997
+ readonly template: PaginaTemplate<"/jogo">;
998
+ readonly hrefTemplate: "/jogo";
999
+ readonly href: "/jogo";
1000
+ };
1001
+ };
1002
+ }, {
1003
+ readonly titulo: "Assistir";
1004
+ readonly destino: {
1005
+ readonly pagina: PaginaDef<"/aventuras">;
1006
+ };
1007
+ }, {
1008
+ readonly titulo: "Sessão Ao Vivo";
1009
+ readonly destino: {
1010
+ readonly pagina: PaginaDef<"/sessao-aovivo">;
1011
+ };
1012
+ }, {
1013
+ readonly titulo: "Hall";
1014
+ readonly destino: {
1015
+ readonly pagina: PaginaDef<"/minha-pagina">;
1016
+ };
1017
+ }, {
1018
+ readonly titulo: "Definições";
1019
+ readonly destino: {
1020
+ readonly pagina: PaginaDef<"/definicoes/[[...slug]]">;
1021
+ readonly params: {
1022
+ readonly slug: [];
1023
+ };
1024
+ };
1025
+ }, {
1026
+ readonly titulo: "Dicas";
1027
+ readonly destino: {
1028
+ readonly pagina: PaginaDef<"/dicas/[[...slug]]">;
1029
+ readonly params: {
1030
+ readonly slug: [];
1031
+ };
1032
+ };
1033
+ }];
1034
+ declare function filtrarMenuPorAcesso(menu: readonly ItemMenu[], ctx: CtxAcesso): ItemMenu[];
897
1035
  interface MensagemChatRecebida {
898
1036
  salaId: string;
899
1037
  idUsuario: number;
@@ -1446,4 +1584,4 @@ declare const Eventos_EnviaERecebe: {
1446
1584
  };
1447
1585
  };
1448
1586
  };
1449
- export { CAPACIDADES, IPermissoesEstado, PermissoesEstadoDto, IPermissoesItem, PermissoesItemDto, IPermissoesUsuario, PermissoesUsuarioDto, IPermissoesUsuariosHistorico, PermissoesUsuariosHistoricoDto, IArcoAventura, ArcoAventuraDto, IAventura, AventuraDto, IConviteGrupoAventuraPersonagem, ConviteGrupoAventuraPersonagemDto, IGrupoAventura, GrupoAventuraDto, IGrupoAventuraPersonagem, GrupoAventuraPersonagemDto, IRespostaConvite, RespostaConviteDto, IVariavelAmbiente, VariavelAmbienteDto, IConquista, ConquistaDto, ITipoConquista, TipoConquistaDto, IDetalheSessaoAventura, DetalheSessaoAventuraDto, IDetalheSessaoCanonica, DetalheSessaoCanonicaDto, CapituloSessaoCanonica, IDetalheSessaoUnica, DetalheSessaoUnicaDto, IParticipanteSessaoUnica, ParticipanteSessaoUnicaDto, ICoeficienteGanhoEstatisticaClasse, CoeficienteGanhoEstatisticaClasseDto, IGanhoNivelClasse, GanhoNivelClasseDto, DadosDoTipoGanho, DadosGanho_Atributos, DadosGanho_Pericias, DadosGanho_Estatisticas, DadosGanho_Classes, DadosGanho_ValorMaximoAtributo, DadosGanho_PontosHabilidadesEspeciais, DadosGanho_PontosHabilidadesParanormais, DadosGanho_PontosHabilidadeElemental, IGanhoRelativoCoeficienteAtributo, GanhoRelativoCoeficienteAtributoDto, ITipoGanhoNivel, TipoGanhoNivelDto, IGeracao, GeracaoDto, IImagem, ImagemDto, ITipoImagem, TipoImagemDto, IAlcance, AlcanceDto, IAtributo, AtributoDto, ICategoriaRitual, CategoriaRitualDto, ICirculoRitual, CirculoRitualDto, IClasse, ClasseDto, IDuracao, DuracaoDto, IElemento, ElementoDto, IEstatisticaDanificavel, EstatisticaDanificavelDto, IExecucao, ExecucaoDto, IFormatoAlcance, FormatoAlcanceDto, ILinhaEfeito, LinhaEfeitoDto, INivel, NivelDto, INivelComponente, NivelComponenteDto, INivelProficiencia, NivelProficienciaDto, INivelRitual, NivelRitualDto, IPatentePericia, PatentePericiaDto, IPericia, PericiaDto, IProficiencia, ProficienciaDto, ITipoAlvo, TipoAlvoDto, ITipoCategoria, TipoCategoriaDto, ITipoDano, TipoDanoDto, ITipoEfeito, TipoEfeitoDto, ITipoItem, TipoItemDto, ITipoProficiencia, TipoProficienciaDto, ILink, LinkDto, ITipoLink, TipoLinkDto, IDificuldadeSessao, DificuldadeSessaoDto, IEstiloSessaoMestrada, EstiloSessaoMestradaDto, ITipoSessao, TipoSessaoDto, IPerfilAdmin, PerfilAdminDto, IPerfilJogador, PerfilJogadorDto, IPerfilMestre, PerfilMestreDto, IFichaPersonagem, FichaPersonagemDto, ObjetoFicha, DetalheEvolucao, DetalhesExtras, FichaDeJogo, AtributoFicha, PericiaFicha, EstatisticaDanificavelFicha, DetalheFicha, RegistroPericiaLivre, IInformacaoPersonagem, InformacaoPersonagemDto, IPersonagem, PersonagemDto, PersonagemSalaJogoDto, IResumoPersonagemAventura, ResumoPersonagemAventuraDto, ITipoPersonagem, TipoPersonagemDto, IDetalheRascunhoAventura, DetalheRascunhoAventuraDto, IDetalheRascunhoSessaoUnicaCanonica, DetalheRascunhoSessaoUnicaCanonicaDto, IDetalheRascunhoSessaoUnicaNaoCanonica, DetalheRascunhoSessaoUnicaNaoCanonicaDto, IRascunho, RascunhoDto, IEstudo, EstudoDto, IRegistroSessao, RegistroSessaoDto, ISessao, SessaoDto, SessaoDadosGerais, ParticipanteSessao, AuthSession, ICustomizacaoUsuario, CustomizacaoUsuarioDto, IDisponibilidadeUsuario, DisponibilidadeUsuarioDto, ListaDisponibilidadesUsuario, DisponibilidadesDDS, JanelaDisponibilidade, IUsuario, UsuarioDto, SalaDeJogo_Codigo, SalaDeJogoParams, SalaDeJogo_Tipo, SalaDeJogo_Estado, SalaDeJogo_TipoMestre, SalaDeJogo_Mestre, SalaDeJogo_Mestre_Mestrada, SalaDeJogo_Mestre_Inteligente, SalaDeJogo_TipoParticipante, SalaDeJogo_Participante, SalaDeJogo_Participante_Narrador, SalaDeJogo_Participante_Jogador, SalaDeJogo_FUNC_AtualizaParticipanteParams, SalaDeJogoDto, Brand, ExtrairParamsDoTemplate, PaginaParamsDoTemplate, PaginaInfo, PaginaTemplate, PaginaDef, PaginaParams, montarHref, pagina, PAGINAS, Folhas, PaginaFolha, RequiredKeys, ParamsProps, PaginaDestino, MensagemChatRecebida, SalaChat, SalaChatFront, MensagemChatPayload, SOCKET_AcessoUsuario, SOCKET_UsuarioExistente, TelemetryConnectionInfo, WsEventAudienceUnico, WsEventAudienceMultiplo, WsEventAudience, TelemetryEventLog, TelemetrySnapshot, WsErrorResponse, WsUnauthorizedErrorResponse, WsResult, isWsErrorResponse, isWsUnauthorizedErrorResponse, wsErro, wsUnauthorized, wsMap, wsChain, EventoTipo, EmitDelivery, EventoAuthDefault, EventoEnvia, EventoEmite, EventoEnviaERecebe, EventoSchema, GatewayDef, createGateway, EventosWebSocket, isRecord, getEmitDelivery, WsEmitTarget, WsEmitParams, EventosEmiteMap, EventoEmiteAny, PaletaCores, EstruturaPaginaDefinicao, ConteudoItem, DefinicaoElemento, ListaItem, AventuraEstado, EstadoPendenciaPersonagem, EstadoPendenciaAdministrativaPersonagem, EstadoOcupacaoPersonagem, EstadoSessao, DiaDaSemana, obtemDiaDaSemanaPorExtensoPorDDS, NumeroHora24, NumeroMomento, MomentoFormatado24, MomentoFormatado, CargoExibicaoUsuario, CargosUsuario, ObjetoAutenticacao, ObjetoCache, ObjetoPendeciaPersonagem, TipoVariavelAmbiente, ObjetoEvolucaoCompleto, ObjetoEvolucao, ObjetoGanhosEvolucao, GanhoEstatistica, FormatoMomento, DetalheUtilizacaoRascunho, EstiloSessao, PathTokenPadrao, TituloSessaoInteligente, Capacidade, LISTA_CAPACIDADES, PermissaoItemMinimo, ListaCapacidadesNecessarias, AcessoPagina, Gateways, EventoTipoLiteral, FiltraEventosPorTipo, criarEventosFiltrados, Eventos_Envia, Eventos_Emite, Eventos_EnviaERecebe };
1587
+ export { CAPACIDADES, IPermissoesEstado, PermissoesEstadoDto, IPermissoesItem, PermissoesItemDto, IPermissoesUsuario, PermissoesUsuarioDto, IPermissoesUsuariosHistorico, PermissoesUsuariosHistoricoDto, IArcoAventura, ArcoAventuraDto, IAventura, AventuraDto, IConviteGrupoAventuraPersonagem, ConviteGrupoAventuraPersonagemDto, IGrupoAventura, GrupoAventuraDto, IGrupoAventuraPersonagem, GrupoAventuraPersonagemDto, IRespostaConvite, RespostaConviteDto, IVariavelAmbiente, VariavelAmbienteDto, IConquista, ConquistaDto, ITipoConquista, TipoConquistaDto, IDetalheSessaoAventura, DetalheSessaoAventuraDto, IDetalheSessaoCanonica, DetalheSessaoCanonicaDto, CapituloSessaoCanonica, IDetalheSessaoUnica, DetalheSessaoUnicaDto, IParticipanteSessaoUnica, ParticipanteSessaoUnicaDto, ICoeficienteGanhoEstatisticaClasse, CoeficienteGanhoEstatisticaClasseDto, IGanhoNivelClasse, GanhoNivelClasseDto, DadosDoTipoGanho, DadosGanho_Atributos, DadosGanho_Pericias, DadosGanho_Estatisticas, DadosGanho_Classes, DadosGanho_ValorMaximoAtributo, DadosGanho_PontosHabilidadesEspeciais, DadosGanho_PontosHabilidadesParanormais, DadosGanho_PontosHabilidadeElemental, IGanhoRelativoCoeficienteAtributo, GanhoRelativoCoeficienteAtributoDto, ITipoGanhoNivel, TipoGanhoNivelDto, IGeracao, GeracaoDto, IImagem, ImagemDto, ITipoImagem, TipoImagemDto, IAlcance, AlcanceDto, IAtributo, AtributoDto, ICategoriaRitual, CategoriaRitualDto, ICirculoRitual, CirculoRitualDto, IClasse, ClasseDto, IDuracao, DuracaoDto, IElemento, ElementoDto, IEstatisticaDanificavel, EstatisticaDanificavelDto, IExecucao, ExecucaoDto, IFormatoAlcance, FormatoAlcanceDto, ILinhaEfeito, LinhaEfeitoDto, INivel, NivelDto, INivelComponente, NivelComponenteDto, INivelProficiencia, NivelProficienciaDto, INivelRitual, NivelRitualDto, IPatentePericia, PatentePericiaDto, IPericia, PericiaDto, IProficiencia, ProficienciaDto, ITipoAlvo, TipoAlvoDto, ITipoCategoria, TipoCategoriaDto, ITipoDano, TipoDanoDto, ITipoEfeito, TipoEfeitoDto, ITipoItem, TipoItemDto, ITipoProficiencia, TipoProficienciaDto, ILink, LinkDto, ITipoLink, TipoLinkDto, IDificuldadeSessao, DificuldadeSessaoDto, IEstiloSessaoMestrada, EstiloSessaoMestradaDto, ITipoSessao, TipoSessaoDto, IPerfilAdmin, PerfilAdminDto, IPerfilJogador, PerfilJogadorDto, IPerfilMestre, PerfilMestreDto, IFichaPersonagem, FichaPersonagemDto, ObjetoFicha, DetalheEvolucao, DetalhesExtras, FichaDeJogo, AtributoFicha, PericiaFicha, EstatisticaDanificavelFicha, DetalheFicha, RegistroPericiaLivre, IInformacaoPersonagem, InformacaoPersonagemDto, IPersonagem, PersonagemDto, PersonagemSalaJogoDto, IResumoPersonagemAventura, ResumoPersonagemAventuraDto, ITipoPersonagem, TipoPersonagemDto, IDetalheRascunhoAventura, DetalheRascunhoAventuraDto, IDetalheRascunhoSessaoUnicaCanonica, DetalheRascunhoSessaoUnicaCanonicaDto, IDetalheRascunhoSessaoUnicaNaoCanonica, DetalheRascunhoSessaoUnicaNaoCanonicaDto, IRascunho, RascunhoDto, IEstudo, EstudoDto, IRegistroSessao, RegistroSessaoDto, ISessao, SessaoDto, SessaoDadosGerais, ParticipanteSessao, AuthSession, ICustomizacaoUsuario, CustomizacaoUsuarioDto, IDisponibilidadeUsuario, DisponibilidadeUsuarioDto, ListaDisponibilidadesUsuario, DisponibilidadesDDS, JanelaDisponibilidade, IUsuario, UsuarioDto, SalaDeJogo_Codigo, SalaDeJogoParams, SalaDeJogo_Tipo, SalaDeJogo_Estado, SalaDeJogo_TipoMestre, SalaDeJogo_Mestre, SalaDeJogo_Mestre_Mestrada, SalaDeJogo_Mestre_Inteligente, SalaDeJogo_TipoParticipante, SalaDeJogo_Participante, SalaDeJogo_Participante_Narrador, SalaDeJogo_Participante_Jogador, SalaDeJogo_FUNC_AtualizaParticipanteParams, SalaDeJogoDto, Brand, ExtrairParamsDoTemplate, PaginaParamsDoTemplate, PaginaInfo, PaginaTemplate, PaginaDef, PaginaParams, montarHref, pagina, PAGINAS, Folhas, PaginaFolha, RequiredKeys, ParamsProps, PaginaDestino, CtxAcesso, DecisaoAcessoPagina, decidirAcessoPagina, ItemMenu, MENU_SWIPER_ESQUERDA, filtrarMenuPorAcesso, MensagemChatRecebida, SalaChat, SalaChatFront, MensagemChatPayload, SOCKET_AcessoUsuario, SOCKET_UsuarioExistente, TelemetryConnectionInfo, WsEventAudienceUnico, WsEventAudienceMultiplo, WsEventAudience, TelemetryEventLog, TelemetrySnapshot, WsErrorResponse, WsUnauthorizedErrorResponse, WsResult, isWsErrorResponse, isWsUnauthorizedErrorResponse, wsErro, wsUnauthorized, wsMap, wsChain, EventoTipo, EmitDelivery, EventoAuthDefault, EventoEnvia, EventoEmite, EventoEnviaERecebe, EventoSchema, GatewayDef, createGateway, EventosWebSocket, isRecord, getEmitDelivery, WsEmitTarget, WsEmitParams, EventosEmiteMap, EventoEmiteAny, PaletaCores, EstruturaPaginaDefinicao, ConteudoItem, DefinicaoElemento, ListaItem, AventuraEstado, EstadoPendenciaPersonagem, EstadoPendenciaAdministrativaPersonagem, EstadoOcupacaoPersonagem, EstadoSessao, DiaDaSemana, obtemDiaDaSemanaPorExtensoPorDDS, NumeroHora24, NumeroMomento, MomentoFormatado24, MomentoFormatado, CargoExibicaoUsuario, CargosUsuario, ObjetoAutenticacao, ObjetoCache, ObjetoPendeciaPersonagem, TipoVariavelAmbiente, ObjetoEvolucaoCompleto, ObjetoEvolucao, ObjetoGanhosEvolucao, GanhoEstatistica, FormatoMomento, DetalheUtilizacaoRascunho, EstiloSessao, PathTokenPadrao, TituloSessaoInteligente, Capacidade, LISTA_CAPACIDADES, PermissaoItemMinimo, ListaCapacidadesNecessarias, AcessoPagina, Gateways, EventoTipoLiteral, FiltraEventosPorTipo, criarEventosFiltrados, Eventos_Envia, Eventos_Emite, Eventos_EnviaERecebe };
package/dist/classes.js CHANGED
@@ -99,7 +99,7 @@ const PAGINAS = {
99
99
  emJogo: pagina('/jogo/em-jogo', { label: 'Em Jogo', acesso: { autenticado: true } }),
100
100
  },
101
101
  linhaDoTempo: pagina('/linha-do-tempo', { label: 'Linha do Tempo' }),
102
- minhaPagina: pagina('/minha-pagina', { label: 'Minha Página' }),
102
+ minhaPagina: pagina('/minha-pagina', { label: 'Minha Página', acesso: { autenticado: true } }),
103
103
  minhasPaginas: {
104
104
  admin: {
105
105
  ...pagina('/minhas-paginas/admin', { label: 'Administração', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__SUDO__BURLAR_CAPACIDADES] } }),
@@ -128,10 +128,70 @@ const PAGINAS = {
128
128
  minhasDisponibilidades: pagina('/minhas-paginas/minhas-disponibilidades', { label: 'Minhas Disponibilidades', acesso: { autenticado: true } }),
129
129
  },
130
130
  personagens: pagina('/personagens', { label: 'Personagens', acesso: { autenticado: true } }),
131
- sessoes: pagina('/sessoes', { label: 'Sessões', acesso: { autenticado: true } }),
131
+ sessoes: pagina('/sessoes', { label: 'Sessões' }),
132
132
  sessaoAovivo: pagina('/sessao-aovivo', { label: 'Sessão Ao Vivo', acesso: { autenticado: true } }),
133
- sessao: pagina('/sessao/[id]', { label: 'Sessão', acesso: { autenticado: true } }),
133
+ sessao: pagina('/sessao/[id]', { label: 'Sessão' }),
134
134
  };
135
+ function decidirAcessoPagina(acesso, ctx) {
136
+ if (acesso == null)
137
+ return { permitido: true };
138
+ if ('listaDeCapacidadesNecessarias' in acesso) {
139
+ if (!ctx.estaAutenticado)
140
+ return { permitido: false, motivo: 'NAO_AUTENTICADO', redirecionarPara: PAGINAS.acessar };
141
+ const lista = acesso.listaDeCapacidadesNecessarias;
142
+ const permitido = Array.isArray(lista) && lista.length > 0 && lista.some((cap) => ctx.verificarCapacidade(cap));
143
+ if (!permitido)
144
+ return { permitido: false, motivo: 'SEM_CAPACIDADE', redirecionarPara: PAGINAS.home };
145
+ return { permitido: true };
146
+ }
147
+ if ('autenticado' in acesso) {
148
+ if (!ctx.estaAutenticado)
149
+ return { permitido: false, motivo: 'NAO_AUTENTICADO', redirecionarPara: PAGINAS.acessar };
150
+ return { permitido: true };
151
+ }
152
+ return { permitido: true };
153
+ }
154
+ const MENU_SWIPER_ESQUERDA = [
155
+ {
156
+ titulo: 'Minhas Páginas',
157
+ subItens: [
158
+ { titulo: 'Jogador', destino: { pagina: PAGINAS.minhasPaginas.jogador } },
159
+ { titulo: 'Disponibilidades', destino: { pagina: PAGINAS.minhasPaginas.minhasDisponibilidades } },
160
+ { titulo: 'Mestre', destino: { pagina: PAGINAS.minhasPaginas.mestre } },
161
+ { titulo: 'Administrador', destino: { pagina: PAGINAS.minhasPaginas.admin } },
162
+ ],
163
+ },
164
+ { titulo: 'Personagens', destino: { pagina: PAGINAS.personagens } },
165
+ { titulo: 'Jogue Agora!', destino: { pagina: PAGINAS.jogo } },
166
+ { titulo: 'Assistir', destino: { pagina: PAGINAS.aventuras } },
167
+ { titulo: 'Sessão Ao Vivo', destino: { pagina: PAGINAS.sessaoAovivo } },
168
+ { titulo: 'Hall', destino: { pagina: PAGINAS.minhaPagina } },
169
+ { titulo: 'Definições', destino: { pagina: PAGINAS.definicoes, params: { slug: [] } } },
170
+ { titulo: 'Dicas', destino: { pagina: PAGINAS.dicas, params: { slug: [] } } },
171
+ ];
172
+ function filtrarMenuPorAcesso(menu, ctx) {
173
+ const out = [];
174
+ for (const it of menu) {
175
+ const sub = it.subItens ? filtrarMenuPorAcesso(it.subItens, ctx) : undefined;
176
+ const temSub = sub != null && sub.length > 0;
177
+ if (it.destino) {
178
+ const decisao = decidirAcessoPagina(it.destino.pagina.acesso, ctx);
179
+ if (!decisao.permitido) {
180
+ if (temSub)
181
+ out.push({ titulo: it.titulo, subItens: sub });
182
+ continue;
183
+ }
184
+ if (temSub)
185
+ out.push({ titulo: it.titulo, destino: it.destino, subItens: sub });
186
+ else
187
+ out.push({ titulo: it.titulo, destino: it.destino });
188
+ continue;
189
+ }
190
+ if (temSub)
191
+ out.push({ titulo: it.titulo, subItens: sub });
192
+ }
193
+ return out;
194
+ }
135
195
  function isWsErrorResponse(payload) { return !!payload && typeof payload === "object" && payload._wsErro === true; }
136
196
  function isWsUnauthorizedErrorResponse(payload) { return isWsErrorResponse(payload) && payload.code === "UNAUTHORIZED"; }
137
197
  function wsErro(mensagem, extra) { return { _wsErro: true, mensagem, ...(extra ?? {}) }; }
@@ -340,4 +400,4 @@ function criarEventosFiltrados(tipo) {
340
400
  const Eventos_Envia = criarEventosFiltrados('envia');
341
401
  const Eventos_Emite = criarEventosFiltrados('emite');
342
402
  const Eventos_EnviaERecebe = criarEventosFiltrados('envia-e-recebe');
343
- export { CAPACIDADES, AuthSession, SalaDeJogo_Tipo, SalaDeJogo_Estado, SalaDeJogo_TipoMestre, SalaDeJogo_TipoParticipante, montarHref, pagina, PAGINAS, isWsErrorResponse, isWsUnauthorizedErrorResponse, wsErro, wsUnauthorized, wsMap, wsChain, createGateway, EventosWebSocket, isRecord, getEmitDelivery, AventuraEstado, EstadoPendenciaPersonagem, EstadoPendenciaAdministrativaPersonagem, EstadoOcupacaoPersonagem, EstadoSessao, DiaDaSemana, obtemDiaDaSemanaPorExtensoPorDDS, CargoExibicaoUsuario, FormatoMomento, EstiloSessao, PathTokenPadrao, LISTA_CAPACIDADES, criarEventosFiltrados, Eventos_Envia, Eventos_Emite, Eventos_EnviaERecebe };
403
+ export { CAPACIDADES, AuthSession, SalaDeJogo_Tipo, SalaDeJogo_Estado, SalaDeJogo_TipoMestre, SalaDeJogo_TipoParticipante, montarHref, pagina, PAGINAS, decidirAcessoPagina, MENU_SWIPER_ESQUERDA, filtrarMenuPorAcesso, isWsErrorResponse, isWsUnauthorizedErrorResponse, wsErro, wsUnauthorized, wsMap, wsChain, createGateway, EventosWebSocket, isRecord, getEmitDelivery, AventuraEstado, EstadoPendenciaPersonagem, EstadoPendenciaAdministrativaPersonagem, EstadoOcupacaoPersonagem, EstadoSessao, DiaDaSemana, obtemDiaDaSemanaPorExtensoPorDDS, CargoExibicaoUsuario, FormatoMomento, EstiloSessao, PathTokenPadrao, LISTA_CAPACIDADES, criarEventosFiltrados, Eventos_Envia, Eventos_Emite, Eventos_EnviaERecebe };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "types-nora-api",
3
- "version": "0.0.220",
3
+ "version": "0.0.222",
4
4
  "description": "Tipagem da Nora-Api compartilhada com o universodomedo.com",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",