types-nora-api 0.0.468 → 0.0.472
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/acessos/index.d.ts +8 -0
- package/dist/acessos/index.js +5 -0
- package/dist/api/graphql/index.d.ts +1 -0
- package/dist/api/graphql/index.js +3 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +4 -0
- package/dist/api/rest/index.d.ts +1 -0
- package/dist/api/rest/index.js +3 -0
- package/dist/classes.d.ts +1 -3747
- package/dist/classes.js +2 -1227
- package/dist/dominio/index.d.ts +899 -0
- package/dist/dominio/index.js +237 -0
- package/dist/dtos/index.d.ts +2140 -0
- package/dist/dtos/index.js +363 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +11 -1
- package/dist/menus/index.d.ts +127 -0
- package/dist/menus/index.js +279 -0
- package/dist/paginas/index.d.ts +172 -0
- package/dist/paginas/index.js +137 -0
- package/dist/shared/index.d.ts +175 -0
- package/dist/shared/index.js +138 -0
- package/dist/uploads/index.d.ts +47 -0
- package/dist/uploads/index.js +112 -0
- package/dist/ws/index.d.ts +236 -0
- package/dist/ws/index.js +20 -0
- package/package.json +56 -2
package/dist/classes.js
CHANGED
|
@@ -1,1228 +1,3 @@
|
|
|
1
1
|
// AUTO-GENERATED FILE - DO NOT EDIT
|
|
2
|
-
// Gerado automaticamente por
|
|
3
|
-
|
|
4
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
5
|
-
// Para atualizar: npm run codegen:contratos
|
|
6
|
-
const ARQUIVOS_INTERNOS = {
|
|
7
|
-
AVATAR_PADRAO: { caminhoArquivo: 'RecursosInternos/cebadeaf-6c1b-441e-87f5-abe38e18cf8e.webp', id: 209 },
|
|
8
|
-
BACKGROUND_ACESSAR: { caminhoArquivo: 'RecursosInternos/861fb939-1658-4310-a522-02d4acb7edea.webp', id: 68 },
|
|
9
|
-
BOTAO_CRIACAO__FICHA__IMAGEM__COPIA: { caminhoArquivo: 'RecursosInternos/43aec7b5-bc08-408f-95d3-bc2116706829.webp', id: 81 },
|
|
10
|
-
BOTAO_CRIACAO__FICHA__IMAGEM__CRIA: { caminhoArquivo: 'RecursosInternos/443a5cb8-3dde-4e85-8b3e-d860cd5dd8b6.webp', id: 80 },
|
|
11
|
-
BOTAO_CRIACAO__FUNDO: { caminhoArquivo: 'RecursosInternos/293f0bdc-9d1b-4796-8a79-3a23cf1e4e57.webp', id: 78 },
|
|
12
|
-
BOTAO_CRIACAO__ORNAMENTO: { caminhoArquivo: 'RecursosInternos/f1a2b62d-e322-47b3-81b0-b788320e59b1.svg', id: 79 },
|
|
13
|
-
BOTAO_CRIACAO__PERSONAGEM__IMAGEM__COPIA: { caminhoArquivo: 'RecursosInternos/432f9fac-a4dd-4f7a-9aad-dc69b8452543.webp', id: 84 },
|
|
14
|
-
BOTAO_CRIACAO__PERSONAGEM__IMAGEM__NOVO: { caminhoArquivo: 'RecursosInternos/6f88f8e2-ad3d-45ae-bbb9-6a3eae43b3cf.webp', id: 83 },
|
|
15
|
-
CARD_ACESSAR: { caminhoArquivo: 'RecursosInternos/cce6bdea-0aee-4424-86a1-36a5279cee0d.webp', id: 69 },
|
|
16
|
-
GUIA_AVATAR: { caminhoArquivo: 'RecursosInternos/184b10c9-dcc9-491d-9141-96c9e724c777.webp', id: 94 },
|
|
17
|
-
IMAGENS_CLASSES__DOMINANTE: { caminhoArquivo: 'RecursosInternos/c2dea8b3-18bd-4860-850f-30affcd9b9e6.webp', id: 65 },
|
|
18
|
-
IMAGENS_CLASSES__MARCADO: { caminhoArquivo: 'RecursosInternos/47bc5d7f-0dbc-4be5-a793-5773c25f93f7.webp', id: 67 },
|
|
19
|
-
IMAGENS_CLASSES__VERSATIL: { caminhoArquivo: 'RecursosInternos/4a72a81c-d084-4cca-9411-df93c85514ae.webp', id: 66 },
|
|
20
|
-
LOGO: { caminhoArquivo: 'RecursosInternos/4cc77fa6-d0f3-4b1d-bdb0-2e42c89fe53b.svg', id: 71 },
|
|
21
|
-
MENU_PRINCIPAL__BOTAO_ABRIR: { caminhoArquivo: 'RecursosInternos/77be9843-77e8-412e-9967-911908fc9308.svg', id: 73 },
|
|
22
|
-
MENU_PRINCIPAL__CAMADA_1: { caminhoArquivo: 'RecursosInternos/5c938b7d-767d-4975-b19e-ff634e42b514.svg', id: 75 },
|
|
23
|
-
MENU_PRINCIPAL__CAMADA_2: { caminhoArquivo: 'RecursosInternos/ba820662-3acb-4775-9c28-b3bf16e4b7d5.svg', id: 76 },
|
|
24
|
-
MENU_PRINCIPAL__CAMADA_3: { caminhoArquivo: 'RecursosInternos/f707c9f5-fa85-4376-bb92-4a52a1eadb9b.svg', id: 77 },
|
|
25
|
-
MENU_PRINCIPAL__MOLDURA: { caminhoArquivo: 'RecursosInternos/7ff3130f-dde0-43e0-bdc8-bb9e2295eb75.svg', id: 74 },
|
|
26
|
-
PAGINA_ATERRISSAGEM__BOTAO_ACESSAR__BORDA: { caminhoArquivo: 'RecursosInternos/c758f4fb-8866-4e13-a1d5-7162cbaf3482.svg', id: 5 },
|
|
27
|
-
PAGINA_ATERRISSAGEM__BOTAO_ACESSAR__FUNDO: { caminhoArquivo: 'RecursosInternos/d338f07e-7685-407a-8814-d6d9b0f2d0cd.svg', id: 7 },
|
|
28
|
-
PAGINA_ATERRISSAGEM__BOTAO_ACESSAR__TEXTO: { caminhoArquivo: 'RecursosInternos/c1f61701-a7b5-4a03-822b-c9e852988733.svg', id: 8 },
|
|
29
|
-
PAGINA_ATERRISSAGEM__BOTAO_MISSAO: { caminhoArquivo: 'RecursosInternos/949d1dcf-534d-4914-a1eb-09899cebb425.webp', id: 18 },
|
|
30
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_1__FUNDO: { caminhoArquivo: 'RecursosInternos/ec609e11-8fe5-44ab-bd21-41808805e1aa.webp', id: 27 },
|
|
31
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_1__SOBREPOSICAO: { caminhoArquivo: 'RecursosInternos/38a53e58-9d2b-4edc-8a7d-0d6869788ebf.webp', id: 31 },
|
|
32
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_2__FUNDO: { caminhoArquivo: 'RecursosInternos/88a0a242-8c6d-4cc1-9126-71eebf894735.webp', id: 28 },
|
|
33
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_2__SOBREPOSICAO: { caminhoArquivo: 'RecursosInternos/bf901f20-a5eb-448f-94aa-2bdae207fbf6.webp', id: 32 },
|
|
34
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_3__FUNDO: { caminhoArquivo: 'RecursosInternos/7fd7cc74-d2f4-4b73-8370-e1e2741587fc.webp', id: 29 },
|
|
35
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_3__SOBREPOSICAO: { caminhoArquivo: 'RecursosInternos/36401dfc-d6fc-41ec-bfdc-27a5afb2c8d2.webp', id: 33 },
|
|
36
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_4__FUNDO: { caminhoArquivo: 'RecursosInternos/a3708333-a56f-48a7-bf91-386215b7697f.webp', id: 30 },
|
|
37
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__ARTIGO_4__SOBREPOSICAO: { caminhoArquivo: 'RecursosInternos/39662591-df83-4f39-8bc9-3328041374bc.webp', id: 34 },
|
|
38
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__BORDA: { caminhoArquivo: 'RecursosInternos/cff279aa-6309-4709-8387-d1245a2fc9a8.webp', id: 40 },
|
|
39
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__BORDA_DOURADA: { caminhoArquivo: 'RecursosInternos/5110b915-c1c9-4021-ab4b-88b2410fd21e.webp', id: 48 },
|
|
40
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__SETA_ANTERIOR: { caminhoArquivo: 'RecursosInternos/52dc0326-4eec-4b3c-ab40-a78d2ecaf4b1.webp', id: 60 },
|
|
41
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__SETA_PROXIMO: { caminhoArquivo: 'RecursosInternos/fe9cf077-ec2e-4f96-986b-2986c681b126.webp', id: 59 },
|
|
42
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_ARTIGOS__SETAS_FUNDO: { caminhoArquivo: 'RecursosInternos/56b41e02-ece7-40c5-a835-73d14b539318.webp', id: 47 },
|
|
43
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__ADESIVOS: { caminhoArquivo: 'RecursosInternos/3ed03313-40df-463c-b695-75b48140835a.webp', id: 21 },
|
|
44
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__CRISTAL_DIREITA: { caminhoArquivo: 'RecursosInternos/0e5b89bc-fdbb-4f0d-bc9f-80473cdb26cf.svg', id: 20 },
|
|
45
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__CRISTAL_ESQUERDA: { caminhoArquivo: 'RecursosInternos/8570294b-98f3-4c5e-8a8d-74b2044a0662.svg', id: 19 },
|
|
46
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__DOT: { caminhoArquivo: 'RecursosInternos/2ed5061e-c430-42e1-b263-41d0c62a2753.svg', id: 57 },
|
|
47
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__DOT_ATIVO: { caminhoArquivo: 'RecursosInternos/02d7c255-c7b8-4a4b-a582-b0b2efc6063d.webp', id: 14 },
|
|
48
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__MOLDURA: { caminhoArquivo: 'RecursosInternos/da3e7c39-b7c2-4881-bb17-13894c011621.svg', id: 22 },
|
|
49
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__MOLDURA_DOTS__DIREITA: { caminhoArquivo: 'RecursosInternos/989ec3ae-8fe6-4121-b776-0cb24f8730ff.svg', id: 50 },
|
|
50
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__MOLDURA_DOTS__ESQUERDA: { caminhoArquivo: 'RecursosInternos/bb6d8556-3a31-45fe-88b9-42958946b4ce.svg', id: 51 },
|
|
51
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__ORNAMENTO_TOPO: { caminhoArquivo: 'RecursosInternos/83f32754-f2c4-4d0b-8ecf-6a585073ffa7.webp', id: 11 },
|
|
52
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__SETA_ANTERIOR: { caminhoArquivo: 'RecursosInternos/422c322e-db24-4d0d-b2b0-8d88768e249d.svg', id: 16 },
|
|
53
|
-
PAGINA_ATERRISSAGEM__CARROSSEL_PRINCIPAL__SETA_PROXIMO: { caminhoArquivo: 'RecursosInternos/2bb90801-ae5b-4cca-b6d1-868a15ce38be.svg', id: 15 },
|
|
54
|
-
PAGINA_ATERRISSAGEM__EXTERNO_MISSAO: { caminhoArquivo: 'RecursosInternos/739ea312-6d25-4f0d-97ae-ba4f22395867.webp', id: 24 },
|
|
55
|
-
PAGINA_ATERRISSAGEM__FUNDO_MISSAO: { caminhoArquivo: 'RecursosInternos/2b42443e-a8f2-44d0-90b6-e8234e8d4074.webp', id: 23 },
|
|
56
|
-
PAGINA_ATERRISSAGEM__FUNDO_TINTA: { caminhoArquivo: 'RecursosInternos/9bcc2643-f20d-457b-9052-f2b31ed146c6.svg', id: 35 },
|
|
57
|
-
PAGINA_ATERRISSAGEM__MARCA_PAGINA: { caminhoArquivo: 'RecursosInternos/4bf9ff41-66dc-4fcc-8b9e-e5aac5789c8b.webp', id: 41 },
|
|
58
|
-
PAGINA_ATERRISSAGEM__MARCA_PAGINA__BASE: { caminhoArquivo: 'RecursosInternos/b1d3ead1-69df-456d-be65-b3d03c2a8e45.webp', id: 43 },
|
|
59
|
-
PAGINA_ATERRISSAGEM__MARCA_PAGINA__DETALHE_BORDA: { caminhoArquivo: 'RecursosInternos/b0dd4e07-c7fd-4b10-9a43-2419fb2bf244.webp', id: 42 },
|
|
60
|
-
PAGINA_ATERRISSAGEM__MARCA_PAGINA__VETOR: { caminhoArquivo: 'RecursosInternos/d825ef40-3d64-4be5-879d-357f0a14b815.svg', id: 49 },
|
|
61
|
-
PAGINA_ATERRISSAGEM__MASCARA_CARROSSEL: { caminhoArquivo: 'RecursosInternos/463d4bf4-1ce9-4004-a2d8-d3796d01f6e5.svg', id: 56 },
|
|
62
|
-
PAGINA_ATERRISSAGEM__MOLDURA_MISSAO: { caminhoArquivo: 'RecursosInternos/84c75e7f-7393-402f-9b63-8efce24fc8fc.svg', id: 54 },
|
|
63
|
-
PAGINA_ATERRISSAGEM__MOLDURA_TITULO_DIREITA: { caminhoArquivo: 'RecursosInternos/dbb87df4-3812-443a-a6f0-26acd7a755d8.svg', id: 38 },
|
|
64
|
-
PAGINA_ATERRISSAGEM__MOLDURA_TITULO_ESQUERDA: { caminhoArquivo: 'RecursosInternos/6f1858e0-2826-4b5a-bfc3-61017fec5c99.svg', id: 52 },
|
|
65
|
-
PAGINA_ATERRISSAGEM__ORNAMENTO_DIVISORIA: { caminhoArquivo: 'RecursosInternos/7fa9b480-f623-462b-afcd-25876dee3fa6.webp', id: 39 },
|
|
66
|
-
PAGINA_ATERRISSAGEM__ORNAMENTO_MISSAO: { caminhoArquivo: 'RecursosInternos/84da34a5-e36d-4e54-aca1-46277f3e64c9.svg', id: 55 },
|
|
67
|
-
PAGINA_ATERRISSAGEM__RODAPE: { caminhoArquivo: 'RecursosInternos/6eb1dde2-d63b-4622-a667-bf316a9062ca.webp', id: 17 },
|
|
68
|
-
PAGINA_ATERRISSAGEM__SECAO_PRINCIPAL__BOTAO_JOGUE_AGORA: { caminhoArquivo: 'RecursosInternos/e272cc23-a845-4889-91ab-c83c17a99865.webp', id: 25 },
|
|
69
|
-
PAGINA_ATERRISSAGEM__SECAO_PRINCIPAL__FUNDO: { caminhoArquivo: 'RecursosInternos/72adaebf-3f5e-4e14-a3c2-bf43f95d60b0.webp', id: 58 },
|
|
70
|
-
PAGINA_ATERRISSAGEM__SECAO_PRINCIPAL__MOLDURA: { caminhoArquivo: 'RecursosInternos/bae11b79-b786-48eb-8853-3d1cbb5c78f0.svg', id: 72 },
|
|
71
|
-
PAGINA_ATERRISSAGEM__SECAO_PRINCIPAL__MOLDURA_TITULO: { caminhoArquivo: 'RecursosInternos/fdd4a955-47d9-41fa-86c8-a510640f5353.svg', id: 10 },
|
|
72
|
-
PAGINA_ATERRISSAGEM__SECAO_PRINCIPAL__SETA_JOGUE_AGORA: { caminhoArquivo: 'RecursosInternos/c74b5064-8ca7-472b-a17a-553829959f50.webp', id: 26 },
|
|
73
|
-
PAGINA_ATERRISSAGEM__SIMBOLOS_FUNDO: { caminhoArquivo: 'RecursosInternos/cd7505b7-4176-4d61-b12d-d8ead8277765.webp', id: 36 },
|
|
74
|
-
PAGINA_ATERRISSAGEM__SOBREPOSICAO_TINTA: { caminhoArquivo: 'RecursosInternos/e749d16f-11ce-40ba-bc25-28a6373232b1.webp', id: 37 },
|
|
75
|
-
SIMBOLO_ITEM_MENU: { caminhoArquivo: 'RecursosInternos/bdd722a4-40d6-4301-8272-8b3ddfa99378.svg', id: 70 },
|
|
76
|
-
};
|
|
77
|
-
/* eslint-disable */
|
|
78
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
79
|
-
// Para atualizar: npm run codegen:contratos
|
|
80
|
-
const ATRIBUTOS = {
|
|
81
|
-
AGI: { descricao: 'Índice da velocidade e precisão que seu corpo responde a estímulos', id: 1, idLinhaEfeito: 1, nome: 'Agilidade', nomeAbreviado: 'AGI' },
|
|
82
|
-
FOR: { descricao: 'Índice da construção física de seu corpo', id: 2, idLinhaEfeito: 2, nome: 'Força', nomeAbreviado: 'FOR' },
|
|
83
|
-
INT: { descricao: 'Índice da sua capacidade mental, que responde à atividades intelectuais e memórias', id: 3, idLinhaEfeito: 3, nome: 'Inteligência', nomeAbreviado: 'INT' },
|
|
84
|
-
PRE: { descricao: 'Índice de seus sentidos e habilidades sociais', id: 4, idLinhaEfeito: 4, nome: 'Presença', nomeAbreviado: 'PRE' },
|
|
85
|
-
VIG: { descricao: 'Índice da sua resistência física e persistência', id: 5, idLinhaEfeito: 5, nome: 'Vigor', nomeAbreviado: 'VIG' },
|
|
86
|
-
};
|
|
87
|
-
/* eslint-disable */
|
|
88
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
89
|
-
// Para atualizar: npm run codegen:contratos
|
|
90
|
-
const CAPACIDADES = {
|
|
91
|
-
ADMINISTRADOR__ACOMPANHAMENTO__SESSAO_DE_JOGO: { id: 29, nome: 'ADMINISTRADOR.ACOMPANHAMENTO.SESSAO_DE_JOGO' },
|
|
92
|
-
ADMINISTRADOR__ACOMPANHAMENTO__WEBSOCKET: { id: 23, nome: 'ADMINISTRADOR.ACOMPANHAMENTO.WEBSOCKET' },
|
|
93
|
-
ADMINISTRADOR__GERENCIAMENTO__AVENTURAS_E_SESSOES: { id: 19, nome: 'ADMINISTRADOR.GERENCIAMENTO.AVENTURAS_E_SESSOES' },
|
|
94
|
-
ADMINISTRADOR__GERENCIAMENTO__UPLOAD_RECURSOS_INTERNOS: { id: 21, nome: 'ADMINISTRADOR.GERENCIAMENTO.UPLOAD_RECURSOS_INTERNOS' },
|
|
95
|
-
ADMINISTRADOR__GERENCIAMENTO__VARIAVEIS_DE_AMBIENTE: { id: 20, nome: 'ADMINISTRADOR.GERENCIAMENTO.VARIAVEIS_DE_AMBIENTE' },
|
|
96
|
-
ADMINISTRADOR__PERMISSOES__ALTERACAO_CAPACIDADES_GERAIS_USUARIOS: { id: 3, nome: 'ADMINISTRADOR.PERMISSOES.ALTERACAO_CAPACIDADES_GERAIS_USUARIOS' },
|
|
97
|
-
ADMINISTRADOR__PERMISSOES__CRIACAO_CAPACIDADES: { id: 11, nome: 'ADMINISTRADOR.PERMISSOES.CRIACAO_CAPACIDADES' },
|
|
98
|
-
ADMINISTRADOR__SUDO__BURLAR_CAPACIDADES: { id: 9, nome: 'ADMINISTRADOR.SUDO.BURLAR_CAPACIDADES' },
|
|
99
|
-
ADMINISTRADOR__SUDO__BURLAR_MODO_MANUTENÇÃO: { id: 8, nome: 'ADMINISTRADOR.SUDO.BURLAR_MODO_MANUTENÇÃO' },
|
|
100
|
-
ADMINISTRADOR__SUDO__DELETAR_ARQUIVOS_FILE_SERVER: { id: 32, nome: 'ADMINISTRADOR.SUDO.DELETAR_ARQUIVOS_FILE_SERVER' },
|
|
101
|
-
ARTISTA__CRIACAO__NAO_PRECISA_APROVACAO: { id: 35, nome: 'ARTISTA.CRIACAO.NAO_PRECISA_APROVACAO' },
|
|
102
|
-
ARTISTA__CRIACAO__RESPONSABILIDADES__AVATARES: { id: 41, nome: 'ARTISTA.CRIACAO.RESPONSABILIDADES.AVATARES' },
|
|
103
|
-
ARTISTA__CRIACAO__RESPONSABILIDADES__EMBLEMAS: { id: 42, nome: 'ARTISTA.CRIACAO.RESPONSABILIDADES.EMBLEMAS' },
|
|
104
|
-
ARTISTA__CRIACAO__UPLOAD_IMAGEM: { id: 6, nome: 'ARTISTA.CRIACAO.UPLOAD_IMAGEM' },
|
|
105
|
-
DESENVOLVEDOR: { id: 36, nome: 'DESENVOLVEDOR' },
|
|
106
|
-
MESTRE__CRIACAO__AVENTURA: { id: 37, nome: 'MESTRE.CRIACAO.AVENTURA' },
|
|
107
|
-
MESTRE__CRIACAO__RASCUNHO_AVENTURA: { id: 27, nome: 'MESTRE.CRIACAO.RASCUNHO_AVENTURA' },
|
|
108
|
-
MESTRE__CRIACAO__RASCUNHO_SESSAO_UNICA: { id: 26, nome: 'MESTRE.CRIACAO.RASCUNHO_SESSAO_UNICA' },
|
|
109
|
-
MESTRE__CRIACAO__SESSAO_DE_JOGO: { id: 28, nome: 'MESTRE.CRIACAO.SESSAO_DE_JOGO' },
|
|
110
|
-
MODERADOR__IMAGENS: { id: 34, nome: 'MODERADOR.IMAGENS' },
|
|
111
|
-
PASSE_LIVRE: { id: 39, nome: 'PASSE_LIVRE' },
|
|
112
|
-
STREAMER: { id: 38, nome: 'STREAMER' },
|
|
113
|
-
TITULOS__ADMINISTRADOR: { id: 14, nome: 'TITULOS.ADMINISTRADOR' },
|
|
114
|
-
TITULOS__JOGADOR__INICIADO: { id: 16, nome: 'TITULOS.JOGADOR.INICIADO' },
|
|
115
|
-
TITULOS__JOGADOR__INICIANTE: { id: 15, nome: 'TITULOS.JOGADOR.INICIANTE' },
|
|
116
|
-
TITULOS__JOGADOR__VETERANO: { id: 17, nome: 'TITULOS.JOGADOR.VETERANO' },
|
|
117
|
-
TITULOS__MESTRE: { id: 13, nome: 'TITULOS.MESTRE' },
|
|
118
|
-
};
|
|
119
|
-
/* eslint-disable */
|
|
120
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
121
|
-
// Para atualizar: npm run codegen:contratos
|
|
122
|
-
const CLASSES = {
|
|
123
|
-
DOMINANTE: { descricao: 'O Paranormal alterou a velocidade na qual seus músculos e raciocínio evoluem. Você recebe Pontos de Atributos extras, melhores Ganhos de Estatísticas e terá o limite de Atributos maior que outras classes', id: 2, nome: 'Dominante' },
|
|
124
|
-
MARCADO: { descricao: 'O Paranormal se conectou a sua alma. Além de receber mais Pontos de Sanidade, tem a possibilidade de aprender e customizar mais Rituais e Habilidades Paranormais, além de se comunicar com o Outro Lado com mais facilidade que outras classes', id: 4, nome: 'Marcado' },
|
|
125
|
-
MUNDANO: { descricao: '', id: 1, nome: 'Mundano' },
|
|
126
|
-
VERSATIL: { descricao: 'O Paranormal se vinculou a suas vontades e práticas. Você recebe Pontos de Melhoria de Perícia extras e terá uma quantidade maior de Pontos de Habilidades Especiais que outras classes', id: 3, nome: 'Versátil' },
|
|
127
|
-
};
|
|
128
|
-
/* eslint-disable */
|
|
129
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
130
|
-
// Para atualizar: npm run codegen:contratos
|
|
131
|
-
const ESTATISTICAS_DANIFICAVEIS = {
|
|
132
|
-
PE: { cor: '#47BA16', descricao: 'Mostram a sua capacidade de agir além do seu limite habitual, como Ações Especiais e Usar o Paranormal, traduzindo o seu cansaço', id: 3, nome: 'Pontos de Esforço', nomeAbreviado: 'P.E.' },
|
|
133
|
-
PS: { cor: '#324A99', descricao: 'Mostram o seu Estado de Mente e Espírito, traduzindo sua proximidade com o Paranormal. Ao zerar, você automaticamente recebe a condição Enlouquecendo', id: 2, nome: 'Pontos de Sanidade', nomeAbreviado: 'P.S.' },
|
|
134
|
-
PV: { cor: '#FF0000', descricao: 'Mostram a Saúde Física e Vital do seu Personagem, traduzindo Ferimentos e Condições Físicas. Ao zerar, você automaticamente recebe a condição Morrendo', id: 1, nome: 'Pontos de Vida', nomeAbreviado: 'P.V.' },
|
|
135
|
-
};
|
|
136
|
-
/* eslint-disable */
|
|
137
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
138
|
-
// Para atualizar: npm run codegen:contratos
|
|
139
|
-
const ESTILOS_SESSAO_MESTRADA = {
|
|
140
|
-
AVENTURA: { ehSessaoUnica: false, id: 1, nome: 'Aventura' },
|
|
141
|
-
SESSAO_UNICA_CANONICA: { ehSessaoUnica: true, id: 2, nome: 'Sessão Única Canônica' },
|
|
142
|
-
SESSAO_UNICA_NAO_CANONICA: { ehSessaoUnica: true, id: 3, nome: 'Sessão Única não Canônica' },
|
|
143
|
-
};
|
|
144
|
-
/* eslint-disable */
|
|
145
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
146
|
-
// Para atualizar: npm run codegen:contratos
|
|
147
|
-
const PASSES = {
|
|
148
|
-
PASSE_DE_FUNDADOR: { ativo: true, codigo_interno: 'PASSE_DE_FUNDADOR', descricao: 'Passe de Apoio durante desenvolvimento inicial', id: 1, nome: 'Passe de Fundador' },
|
|
149
|
-
};
|
|
150
|
-
/* eslint-disable */
|
|
151
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
152
|
-
// Para atualizar: npm run codegen:contratos
|
|
153
|
-
const PATENTES_PERICIAS = {
|
|
154
|
-
D: { bonusPatente: 10, cor: '#E59627', descricao: 'Você escuta vozes que ecoam em sua cabeça que riem do seu conhecimento previamente adquirido sobre essa Perícia. O Outro Lado te mostra visões e segredos que reconstroem suas crenças e paradigmas, como o instinto em busca da perfeição em algo que antes, eram apenas experimentos de Mundanos curiosos e intrometidos', id: 3, nome: 'Desperta', nomeAbreviado: 'D', varianciaQualidadeAcao: 19 },
|
|
155
|
-
E: { bonusPatente: 5, cor: '#EBEF5D', descricao: 'Você aprendeu e pratica sobre essa Perícia com outros Experientes. Você pode trabalhar em áreas relacionadas e até mesmo formando outros Experientes, usando dos conhecimentos guardados pela comunidade dessa área em mídias e outros acessos comuns', id: 2, nome: 'Experiente', nomeAbreviado: 'E', varianciaQualidadeAcao: 19 },
|
|
156
|
-
L: { bonusPatente: 0, cor: '#CDCDCD', descricao: 'Você possui conhecimentos básicos nessa Perícia, vindos da intuição, instinto ou da experiência de outras pessoas. A teoria por trás dessas ações são desconhecidas, e você tenta replicar o que já viu de praticas de outras pessoas ou até mesmo se arrisca fazendo o que parece estar certo, mesmo que na maioria das vezes não esteja', id: 1, nome: 'Leiga', nomeAbreviado: 'L', varianciaQualidadeAcao: 19 },
|
|
157
|
-
S: { bonusPatente: 15, cor: '#FFFFFF', descricao: 'Como se conectado nas fundações dessas práticas, em seus sonhos você vê cada um que usou e vai usar dessas técnicas por toda a história, e eles também vão te assistir. Os segredos dessas ações agora estão em suas mãos não como vozes, mas como a cristalização da prática, aperfeiçoada por dentre os ecos do Outro Lado', id: 5, nome: 'Soberena', nomeAbreviado: 'S', varianciaQualidadeAcao: 49 },
|
|
158
|
-
V: { bonusPatente: 15, cor: '#FF4A24', descricao: 'Você se funde as vozes. Cada segredo e detalhe, agora moldáveis e personalizáveis à seu prazer, são como informações e experiências visíveis e audíveis ao redor de toda ação dessa Perícia praticada ao seu redor. Você vê o que poucos vêem', id: 4, nome: 'Visionária', nomeAbreviado: 'V', varianciaQualidadeAcao: 19 },
|
|
159
|
-
};
|
|
160
|
-
/* eslint-disable */
|
|
161
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
162
|
-
// Para atualizar: npm run codegen:contratos
|
|
163
|
-
const PERICIAS = {
|
|
164
|
-
ACRO: { descricao: 'Experiência em movimentação vertical e manobras, como realizar movimentos não lineares ou em maior velocidade', id: 1, idAtributo: 1, idLinhaEfeito: 6, nome: 'Acrobacia', nomeAbreviado: 'ACRO' },
|
|
165
|
-
ADES: { descricao: 'Experiência na domesticação, treinamento e relacionamento com seres domesticáveis', id: 9, idAtributo: 3, idLinhaEfeito: 7, nome: 'Adestramento', nomeAbreviado: 'ADES' },
|
|
166
|
-
ARTE: { descricao: 'Experiência na execução de ações magistrais, que procuram chamar atenção do público', id: 10, idAtributo: 3, idLinhaEfeito: 8, nome: 'Artes', nomeAbreviado: 'ARTE' },
|
|
167
|
-
ATLE: { descricao: 'Experiência em utilizar o máximo de sua capacidade física', id: 7, idAtributo: 2, idLinhaEfeito: 9, nome: 'Atletismo', nomeAbreviado: 'ATLE' },
|
|
168
|
-
ATUA: { descricao: 'Experiência no estudo de acontecimentos do mundo e como eles se afetam', id: 11, idAtributo: 3, idLinhaEfeito: 10, nome: 'Atualidades', nomeAbreviado: 'ATUA' },
|
|
169
|
-
CIEN: { descricao: 'Experiência no estudo de matérias biológicas e lógicas, utilizadas na confecção e produção de substâncias', id: 12, idAtributo: 3, idLinhaEfeito: 11, nome: 'Ciências', nomeAbreviado: 'CIEN' },
|
|
170
|
-
CRIM: { descricao: 'Experiência no roubo e encobrimento de objetos, assim como a resolução e manuseio de pequenos mecanismos', id: 2, idAtributo: 1, idLinhaEfeito: 12, nome: 'Crime', nomeAbreviado: 'CRIM' },
|
|
171
|
-
DIPL: { descricao: 'Experiência na comunicação com outros seres racionais e suas vantagens', id: 20, idAtributo: 4, idLinhaEfeito: 13, nome: 'Diplomacia', nomeAbreviado: 'DIPL' },
|
|
172
|
-
ENGA: { descricao: 'Experiência em esconder ou mentir informações e trabalhar com disfarces', id: 21, idAtributo: 4, idLinhaEfeito: 14, nome: 'Enganação', nomeAbreviado: 'ENGA' },
|
|
173
|
-
ENGE: { descricao: 'Experiência na produção de ferramentas, equipamentos e utensílios', id: 13, idAtributo: 3, idLinhaEfeito: 15, nome: 'Engenharia', nomeAbreviado: 'ENGE' },
|
|
174
|
-
FORT: { descricao: 'Experiência em resistir a condições e danos físicos, assim como danos graves', id: 26, idAtributo: 5, idLinhaEfeito: 16, nome: 'Fortitude', nomeAbreviado: 'FORT' },
|
|
175
|
-
FURT: { descricao: 'Experiência em se esconder e tomar ações estando despercebido, assim como atacar furtivamente e se mesclar no ambiente', id: 3, idAtributo: 1, idLinhaEfeito: 17, nome: 'Furtividade', nomeAbreviado: 'FURT' },
|
|
176
|
-
INIC: { descricao: 'Experiência em tomar ações de maneira preventiva, se preparando para situações especificas ou reagindo a ações tomadas por outros', id: 4, idAtributo: 1, idLinhaEfeito: 18, nome: 'Iniciativa', nomeAbreviado: 'INIC' },
|
|
177
|
-
INTI: { descricao: 'Experiência em coagir oui amendrontar seus alvos', id: 22, idAtributo: 4, idLinhaEfeito: 19, nome: 'Intimidação', nomeAbreviado: 'INTI' },
|
|
178
|
-
INTU: { descricao: 'Experiência na analise da omissão de informações de outros seres racionais', id: 23, idAtributo: 4, idLinhaEfeito: 20, nome: 'Intuição', nomeAbreviado: 'INTU' },
|
|
179
|
-
INVE: { descricao: 'Experiência na busca de detalhes e atenção a pistas no ambiente ou em objetos', id: 14, idAtributo: 3, idLinhaEfeito: 21, nome: 'Investigação', nomeAbreviado: 'INVE' },
|
|
180
|
-
LUTA: { descricao: 'Experiência no manuseio de armas corpo-a-corpo e suas utlizações', id: 8, idAtributo: 2, idLinhaEfeito: 22, nome: 'Luta', nomeAbreviado: 'LUTA' },
|
|
181
|
-
MEDI: { descricao: 'Experiência no tratamento de ferimentos, condições negativas e suas adversidades em materiais biológicos', id: 15, idAtributo: 3, idLinhaEfeito: 23, nome: 'Medicina', nomeAbreviado: 'MEDI' },
|
|
182
|
-
OCUL: { descricao: 'Experiência em estudar e se comunicar com o outro lado', id: 16, idAtributo: 3, idLinhaEfeito: 24, nome: 'Ocultismo', nomeAbreviado: 'OCUL' },
|
|
183
|
-
PERC: { descricao: 'Experiência em observar, analisar e estudar seus arredores, como padrões ou alterações no ambiente', id: 24, idAtributo: 4, idLinhaEfeito: 25, nome: 'Percepção', nomeAbreviado: 'PERC' },
|
|
184
|
-
PONT: { descricao: 'Experiência no manuseio de armas de longo alcance e suas utilizações', id: 5, idAtributo: 1, idLinhaEfeito: 26, nome: 'Pontaria', nomeAbreviado: 'PONT' },
|
|
185
|
-
REFL: { descricao: 'Experiência em reagir defensivamente a situações inesperadas', id: 6, idAtributo: 1, idLinhaEfeito: 27, nome: 'Reflexo', nomeAbreviado: 'REFL' },
|
|
186
|
-
SOBR: { descricao: 'Experiência em utilizar de materiais naturais para sobreviver ou se adaptar à ambientes inóspitos e vida selvagem', id: 17, idAtributo: 3, idLinhaEfeito: 28, nome: 'Sobrevivência', nomeAbreviado: 'SOBR' },
|
|
187
|
-
TATI: { descricao: 'Experiência em estudar e analisar o ambiente e seus alvos para melhor explorá-los', id: 18, idAtributo: 3, idLinhaEfeito: 29, nome: 'Tática', nomeAbreviado: 'TATI' },
|
|
188
|
-
TECN: { descricao: 'Experiência na utilizaçao de equipamentos tecnológicos e seus conhecimentos', id: 19, idAtributo: 3, idLinhaEfeito: 30, nome: 'Tecnologia', nomeAbreviado: 'TECN' },
|
|
189
|
-
VONT: { descricao: 'Experiência em resistir a condições e danos mentais', id: 25, idAtributo: 4, idLinhaEfeito: 31, nome: 'Vontade', nomeAbreviado: 'VONT' },
|
|
190
|
-
};
|
|
191
|
-
/* eslint-disable */
|
|
192
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
193
|
-
// Para atualizar: npm run codegen:contratos
|
|
194
|
-
const PERMISSOES_ESTADOS = {
|
|
195
|
-
CONCEDIDA: { chave: 'CONCEDIDA', id: 3, permissao: true },
|
|
196
|
-
NEGADA: { chave: 'NEGADA', id: 2, permissao: false },
|
|
197
|
-
REQUISITADA: { chave: 'REQUISITADA', id: 1, permissao: false },
|
|
198
|
-
REVOGADA: { chave: 'REVOGADA', id: 4, permissao: false },
|
|
199
|
-
};
|
|
200
|
-
/* eslint-disable */
|
|
201
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
202
|
-
// Para atualizar: npm run codegen:contratos
|
|
203
|
-
const PRODUTOS = {
|
|
204
|
-
CONTRIBUICAO_ABERTA: { ativo: true, codigo_interno: 'CONTRIBUICAO_ABERTA', descricao: 'Doação para desenvolvimento do projeto', id: 1, nome: 'Contribuição Aberta', valor_centavos: null },
|
|
205
|
-
PASSE_DE_FUNDADOR_30_DIAS: { ativo: true, codigo_interno: 'PASSE_DE_FUNDADOR__30_DIAS', descricao: 'Assinatura Mensal durante desenvolvimento inicial', id: 2, nome: 'Passe de Fundador - Mensal', valor_centavos: 1190 },
|
|
206
|
-
};
|
|
207
|
-
/* eslint-disable */
|
|
208
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
209
|
-
// Para atualizar: npm run codegen:contratos
|
|
210
|
-
const TIPOS_ARQUIVO = {
|
|
211
|
-
AVATAR_PERSONAGEM: { id: 2, nome: 'avatar_personagem' },
|
|
212
|
-
IMAGEM_ESPECIAL_ARTISTA: { id: 3, nome: 'imagem_especial_artista' },
|
|
213
|
-
ITENS_EMBLEMAS: { id: 4, nome: 'itens_emblemas' },
|
|
214
|
-
RECURSOS_INTERNOS: { id: 1, nome: 'recursos_internos' },
|
|
215
|
-
};
|
|
216
|
-
/* eslint-disable */
|
|
217
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
218
|
-
// Para atualizar: npm run codegen:contratos
|
|
219
|
-
const TIPOS_GANHO_NIVEL = {
|
|
220
|
-
ALTERACAO_ATRIBUTOS: { id: 1, nome: 'Alterações de Atributos', ordem: 4 },
|
|
221
|
-
ALTERACAO_ESTATISTICAS: { id: 3, nome: 'Alterações de Estatísticas', ordem: 3 },
|
|
222
|
-
ALTERACAO_PERICIAS: { id: 2, nome: 'Alterações de Perícias', ordem: 5 },
|
|
223
|
-
AUMENTO_VALOR_MAXIMO_ATRIBUTO: { id: 5, nome: 'Aumento de Valor Máximo de Atributo', ordem: 2 },
|
|
224
|
-
GANHO_PONTOS_HABILIDADE_ELEMENTAL: { id: 8, nome: 'Ganho de Pontos de Habilidade Elemental', ordem: 8 },
|
|
225
|
-
GANHO_PONTOS_HABILIDADES_ESPECIAL: { id: 6, nome: 'Ganho de Pontos de Habilidades Especial', ordem: 6 },
|
|
226
|
-
GANHO_PONTOS_HABILIDADES_PARANORMAL: { id: 7, nome: 'Ganho de Pontos de Habilidades Paranormal', ordem: 7 },
|
|
227
|
-
SELECAO_CLASSE: { id: 4, nome: 'Seleção de Classe', ordem: 1 },
|
|
228
|
-
};
|
|
229
|
-
/* eslint-disable */
|
|
230
|
-
// Arquivo gerado automaticamente. Não edite manualmente.
|
|
231
|
-
// Para atualizar: npm run codegen:contratos
|
|
232
|
-
const TIPOS_PERSONAGEM = {
|
|
233
|
-
PERSONAGEM_DE_JOGADOR: { descricao: 'Personagens que são únicos de um Usuário', id: 1, nome: 'Personagem de Jogador' },
|
|
234
|
-
PERSONAGEM_DE_MESTRE: { descricao: 'Personagens que são participantes da história, compartilhados por mestres', id: 2, nome: 'Personagem de Mestre' },
|
|
235
|
-
PERSONAGEM_GENERICO: { descricao: 'Personagens "sem nome", como inimigos e massa de população', id: 3, nome: 'Personagem Genérico' },
|
|
236
|
-
};
|
|
237
|
-
function temSudoBurlarCapacidades(ctx) { return ctx.estaAutenticado && ctx.verificarCapacidade(CAPACIDADES.ADMINISTRADOR__SUDO__BURLAR_CAPACIDADES); }
|
|
238
|
-
var ApiTransporte;
|
|
239
|
-
(function (ApiTransporte) {
|
|
240
|
-
ApiTransporte["GRAPHQL"] = "GRAPHQL";
|
|
241
|
-
ApiTransporte["REST"] = "REST";
|
|
242
|
-
})(ApiTransporte || (ApiTransporte = {}));
|
|
243
|
-
var ApiTipoRequisicao;
|
|
244
|
-
(function (ApiTipoRequisicao) {
|
|
245
|
-
ApiTipoRequisicao["GET"] = "GET";
|
|
246
|
-
ApiTipoRequisicao["POST"] = "POST";
|
|
247
|
-
ApiTipoRequisicao["PATCH"] = "PATCH";
|
|
248
|
-
ApiTipoRequisicao["DELETE"] = "DELETE";
|
|
249
|
-
})(ApiTipoRequisicao || (ApiTipoRequisicao = {}));
|
|
250
|
-
var ApiMetodoHttp;
|
|
251
|
-
(function (ApiMetodoHttp) {
|
|
252
|
-
ApiMetodoHttp["GET"] = "GET";
|
|
253
|
-
ApiMetodoHttp["POST"] = "POST";
|
|
254
|
-
ApiMetodoHttp["PATCH"] = "PATCH";
|
|
255
|
-
ApiMetodoHttp["DELETE"] = "DELETE";
|
|
256
|
-
})(ApiMetodoHttp || (ApiMetodoHttp = {}));
|
|
257
|
-
function createApiGraphqlGet(definicao) { return definicao; }
|
|
258
|
-
var EventosApi;
|
|
259
|
-
(function (EventosApi) {
|
|
260
|
-
const Graphql = {
|
|
261
|
-
testeGraphql: createApiGraphqlGet({
|
|
262
|
-
transporte: ApiTransporte.GRAPHQL,
|
|
263
|
-
tipoRequisicao: ApiTipoRequisicao.GET,
|
|
264
|
-
metodoHttp: ApiMetodoHttp.POST,
|
|
265
|
-
nome: 'testeGraphql',
|
|
266
|
-
endpoint: '/graphql',
|
|
267
|
-
nomeOperacaoGraphql: 'TesteGraphql',
|
|
268
|
-
query: `
|
|
269
|
-
query TesteGraphql {
|
|
270
|
-
testeGraphql
|
|
271
|
-
}
|
|
272
|
-
`,
|
|
273
|
-
montaVariaveis: () => ({}),
|
|
274
|
-
}),
|
|
275
|
-
};
|
|
276
|
-
EventosApi.GET = { Graphql };
|
|
277
|
-
})(EventosApi || (EventosApi = {}));
|
|
278
|
-
const ARQUIVO_UPLOAD_DEFINICOES = {
|
|
279
|
-
[TIPOS_ARQUIVO.RECURSOS_INTERNOS.id]: {
|
|
280
|
-
tipoArquivoId: TIPOS_ARQUIVO.RECURSOS_INTERNOS.id,
|
|
281
|
-
camposExtras: [
|
|
282
|
-
{ nome: 'nomeRecursoInterno', tipo: 'texto', obrigatorio: true },
|
|
283
|
-
],
|
|
284
|
-
arquivos: [
|
|
285
|
-
{ nome: 'arquivo', obrigatorio: true, multiplicidade: 'unico' },
|
|
286
|
-
],
|
|
287
|
-
},
|
|
288
|
-
[TIPOS_ARQUIVO.AVATAR_PERSONAGEM.id]: {
|
|
289
|
-
tipoArquivoId: TIPOS_ARQUIVO.AVATAR_PERSONAGEM.id,
|
|
290
|
-
camposExtras: [
|
|
291
|
-
{ nome: 'idChaveNovoAvatar', tipo: 'numero', obrigatorio: true },
|
|
292
|
-
],
|
|
293
|
-
arquivos: [
|
|
294
|
-
{ nome: 'arquivo', obrigatorio: true, multiplicidade: 'unico' },
|
|
295
|
-
],
|
|
296
|
-
},
|
|
297
|
-
[TIPOS_ARQUIVO.IMAGEM_ESPECIAL_ARTISTA.id]: {
|
|
298
|
-
tipoArquivoId: TIPOS_ARQUIVO.IMAGEM_ESPECIAL_ARTISTA.id,
|
|
299
|
-
camposExtras: [],
|
|
300
|
-
arquivos: [
|
|
301
|
-
{ nome: 'arquivo', obrigatorio: true, multiplicidade: 'unico' },
|
|
302
|
-
],
|
|
303
|
-
},
|
|
304
|
-
[TIPOS_ARQUIVO.ITENS_EMBLEMAS.id]: {
|
|
305
|
-
tipoArquivoId: TIPOS_ARQUIVO.ITENS_EMBLEMAS.id,
|
|
306
|
-
camposExtras: [
|
|
307
|
-
{ nome: 'nomeEmblema', tipo: 'texto', obrigatorio: true },
|
|
308
|
-
],
|
|
309
|
-
arquivos: [
|
|
310
|
-
{ nome: 'moldura', obrigatorio: true, multiplicidade: 'unico' },
|
|
311
|
-
{ nome: 'insignia', obrigatorio: true, multiplicidade: 'unico' },
|
|
312
|
-
{ nome: 'separador', obrigatorio: true, multiplicidade: 'unico' },
|
|
313
|
-
],
|
|
314
|
-
},
|
|
315
|
-
};
|
|
316
|
-
function obtemDefinicaoUploadTipoArquivo(tipoArquivoId) {
|
|
317
|
-
return ARQUIVO_UPLOAD_DEFINICOES[tipoArquivoId] ?? null;
|
|
318
|
-
}
|
|
319
|
-
const criaCaminhoArquivoArte = (caminhoArquivo) => caminhoArquivo;
|
|
320
|
-
const criaCaminhoArquivoAvatar = (caminhoArquivo) => caminhoArquivo;
|
|
321
|
-
var RegistroPixProvedor;
|
|
322
|
-
(function (RegistroPixProvedor) {
|
|
323
|
-
RegistroPixProvedor["Efi"] = "EFI";
|
|
324
|
-
})(RegistroPixProvedor || (RegistroPixProvedor = {}));
|
|
325
|
-
// Outros Types //
|
|
326
|
-
var TipoSessao;
|
|
327
|
-
(function (TipoSessao) {
|
|
328
|
-
TipoSessao["AVENTURA"] = "AVENTURA";
|
|
329
|
-
TipoSessao["SESSAO_UNICA_CANONICA"] = "SESSAO_UNICA_CANONICA";
|
|
330
|
-
TipoSessao["SESSAO_UNICA_NAO_CANONICA"] = "SESSAO_UNICA_NAO_CANONICA";
|
|
331
|
-
})(TipoSessao || (TipoSessao = {}));
|
|
332
|
-
const TIPO_SESSAO_LABEL = {
|
|
333
|
-
AVENTURA: 'Aventura',
|
|
334
|
-
SESSAO_UNICA_CANONICA: 'Sessão Única Canônica',
|
|
335
|
-
SESSAO_UNICA_NAO_CANONICA: 'Sessão Única Não Canônica',
|
|
336
|
-
};
|
|
337
|
-
class AuthSession {
|
|
338
|
-
expiredAt;
|
|
339
|
-
id;
|
|
340
|
-
destroyedAt;
|
|
341
|
-
json;
|
|
342
|
-
constructor(expiredAt, id, json, destroyedAt) {
|
|
343
|
-
this.expiredAt = expiredAt;
|
|
344
|
-
this.id = id;
|
|
345
|
-
this.destroyedAt = destroyedAt;
|
|
346
|
-
this.json = json;
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
//
|
|
350
|
-
var ParticipanteSessao_Tipo;
|
|
351
|
-
(function (ParticipanteSessao_Tipo) {
|
|
352
|
-
ParticipanteSessao_Tipo["NARRADOR"] = "Narrador";
|
|
353
|
-
ParticipanteSessao_Tipo["JOGADOR"] = "Jogador";
|
|
354
|
-
})(ParticipanteSessao_Tipo || (ParticipanteSessao_Tipo = {}));
|
|
355
|
-
var TipoVinculoSessaoJogador;
|
|
356
|
-
(function (TipoVinculoSessaoJogador) {
|
|
357
|
-
TipoVinculoSessaoJogador["FICHA_TEMPORARIA_PENDENTE"] = "FICHA_TEMPORARIA_PENDENTE";
|
|
358
|
-
TipoVinculoSessaoJogador["PERSONAGEM"] = "PERSONAGEM";
|
|
359
|
-
TipoVinculoSessaoJogador["FICHA_TEMPORARIA"] = "FICHA_TEMPORARIA";
|
|
360
|
-
})(TipoVinculoSessaoJogador || (TipoVinculoSessaoJogador = {}));
|
|
361
|
-
var SalaDeJogo_Tipo;
|
|
362
|
-
(function (SalaDeJogo_Tipo) {
|
|
363
|
-
SalaDeJogo_Tipo["SALA__SOLO"] = "Sess\u00E3o Solo";
|
|
364
|
-
SalaDeJogo_Tipo["SALA__SESSAO_UNICA"] = "Sess\u00E3o \u00DAnica";
|
|
365
|
-
SalaDeJogo_Tipo["SALA__SESSAO_AVENTURA"] = "Sess\u00E3o Aventura";
|
|
366
|
-
})(SalaDeJogo_Tipo || (SalaDeJogo_Tipo = {}));
|
|
367
|
-
var SalaDeJogo_Estado;
|
|
368
|
-
(function (SalaDeJogo_Estado) {
|
|
369
|
-
SalaDeJogo_Estado["SALA__EM_ESPERA"] = "Em Espera";
|
|
370
|
-
SalaDeJogo_Estado["SALA__EM_ANDAMENTO"] = "Em Andamento";
|
|
371
|
-
})(SalaDeJogo_Estado || (SalaDeJogo_Estado = {}));
|
|
372
|
-
//
|
|
373
|
-
// #endregion
|
|
374
|
-
// #region Mestre da Sala
|
|
375
|
-
//
|
|
376
|
-
var SalaDeJogo_TipoMestre;
|
|
377
|
-
(function (SalaDeJogo_TipoMestre) {
|
|
378
|
-
SalaDeJogo_TipoMestre["SALA__MESTRADA"] = "SALA__MESTRADA";
|
|
379
|
-
SalaDeJogo_TipoMestre["SALA__INTELIGENTE"] = "SALA__INTELIGENTE";
|
|
380
|
-
})(SalaDeJogo_TipoMestre || (SalaDeJogo_TipoMestre = {}));
|
|
381
|
-
//
|
|
382
|
-
// #endregion
|
|
383
|
-
// #region Participante da Sala
|
|
384
|
-
//
|
|
385
|
-
var SalaDeJogo_TipoParticipante;
|
|
386
|
-
(function (SalaDeJogo_TipoParticipante) {
|
|
387
|
-
SalaDeJogo_TipoParticipante["NARRADOR"] = "Narrador";
|
|
388
|
-
SalaDeJogo_TipoParticipante["JOGADOR"] = "Jogador";
|
|
389
|
-
})(SalaDeJogo_TipoParticipante || (SalaDeJogo_TipoParticipante = {}));
|
|
390
|
-
function menuItem(titulo, destino) { return { tipo: 'item', titulo, destino }; }
|
|
391
|
-
function menuGrupo(titulo, itens) { return { tipo: 'grupo', titulo, itens }; }
|
|
392
|
-
function menuVazio() { return { tipo: 'vazio' }; }
|
|
393
|
-
function menuDinamico() { return { tipo: 'dinamico' }; }
|
|
394
|
-
function montarHref(template, params) {
|
|
395
|
-
const out = template.replace(/\[\[\.\.\.([^\]]+)\]\]|\[\.\.\.([^\]]+)\]|\[([^\]]+)\]/g, (_m, optCatchAll, catchAll, single) => {
|
|
396
|
-
const key = (optCatchAll || catchAll || single);
|
|
397
|
-
const value = params[key];
|
|
398
|
-
if (optCatchAll) {
|
|
399
|
-
if (value == null)
|
|
400
|
-
return '';
|
|
401
|
-
if (!Array.isArray(value))
|
|
402
|
-
throw new Error(`PAGINAS.montarHref: "${key}" deve ser (string|number)[] (optional catch-all)`);
|
|
403
|
-
return value.map((x) => encodeURIComponent(String(x))).join('/');
|
|
404
|
-
}
|
|
405
|
-
if (catchAll) {
|
|
406
|
-
if (!Array.isArray(value))
|
|
407
|
-
throw new Error(`PAGINAS.montarHref: "${key}" deve ser (string|number)[] (catch-all)`);
|
|
408
|
-
return value.map((x) => encodeURIComponent(String(x))).join('/');
|
|
409
|
-
}
|
|
410
|
-
if (value == null)
|
|
411
|
-
throw new Error(`PAGINAS.montarHref: "${key}" é obrigatório`);
|
|
412
|
-
if (Array.isArray(value))
|
|
413
|
-
throw new Error(`PAGINAS.montarHref: "${key}" deve ser string|number (single param)`);
|
|
414
|
-
return encodeURIComponent(String(value));
|
|
415
|
-
});
|
|
416
|
-
const cleaned = out.replace(/\/+/g, '/').replace(/\/$/, '');
|
|
417
|
-
return cleaned === '' ? '/' : cleaned;
|
|
418
|
-
}
|
|
419
|
-
function limparUndefined(obj) {
|
|
420
|
-
const out = {};
|
|
421
|
-
for (const k in obj) {
|
|
422
|
-
if (!Object.prototype.hasOwnProperty.call(obj, k))
|
|
423
|
-
continue;
|
|
424
|
-
const key = k;
|
|
425
|
-
const v = obj[key];
|
|
426
|
-
if (v !== undefined)
|
|
427
|
-
out[key] = v;
|
|
428
|
-
}
|
|
429
|
-
return out;
|
|
430
|
-
}
|
|
431
|
-
function pagina(hrefTemplate, info) {
|
|
432
|
-
const template = hrefTemplate;
|
|
433
|
-
return limparUndefined({ template, hrefTemplate, href: hrefTemplate, ...info });
|
|
434
|
-
}
|
|
435
|
-
function paginaComLayoutContextualizado(hrefTemplate, info, layoutContextualizadoInicial) {
|
|
436
|
-
const template = hrefTemplate;
|
|
437
|
-
return limparUndefined({ template, hrefTemplate, href: hrefTemplate, ...info, layoutContextualizadoInicial });
|
|
438
|
-
}
|
|
439
|
-
function toParamsRecord(params) {
|
|
440
|
-
const out = {};
|
|
441
|
-
for (const k in params) {
|
|
442
|
-
if (!Object.prototype.hasOwnProperty.call(params, k))
|
|
443
|
-
continue;
|
|
444
|
-
out[k] = params[k];
|
|
445
|
-
}
|
|
446
|
-
return out;
|
|
447
|
-
}
|
|
448
|
-
function isWsErrorResponse(payload) { return !!payload && typeof payload === "object" && payload._wsErro === true; }
|
|
449
|
-
function isWsUnauthorizedErrorResponse(payload) { return isWsErrorResponse(payload) && payload.code === "UNAUTHORIZED"; }
|
|
450
|
-
function wsErro(mensagem, extra) { return { _wsErro: true, mensagem, ...(extra ?? {}) }; }
|
|
451
|
-
function wsUnauthorized(mensagem = "Não autorizado", detalhes) { return { _wsErro: true, mensagem, code: "UNAUTHORIZED", detalhes }; }
|
|
452
|
-
// helper que elimina o if manual no gateway
|
|
453
|
-
function wsMap(value, mapper) { return isWsErrorResponse(value) ? value : mapper(value); }
|
|
454
|
-
// opcional para encadear fluxos no service/repository se quiser evoluir
|
|
455
|
-
function wsChain(value, next) { return isWsErrorResponse(value) ? value : next(value); }
|
|
456
|
-
function createGateway(def) { return def; }
|
|
457
|
-
//
|
|
458
|
-
var EventosWebSocket;
|
|
459
|
-
(function (EventosWebSocket) {
|
|
460
|
-
const Chat = createGateway({
|
|
461
|
-
enviaMensagem: {
|
|
462
|
-
tipo: 'envia',
|
|
463
|
-
payload: { salaId: '', conteudoMensagem: '' },
|
|
464
|
-
},
|
|
465
|
-
emitirSalas: {
|
|
466
|
-
tipo: 'envia-e-recebe',
|
|
467
|
-
payload: {},
|
|
468
|
-
response: { salas: [] },
|
|
469
|
-
// autenticacao_necessaria: false,
|
|
470
|
-
},
|
|
471
|
-
emitirMensagem: {
|
|
472
|
-
tipo: 'emite',
|
|
473
|
-
payload: { mensagemId: 0 },
|
|
474
|
-
response: { conteudoMensagem: {} },
|
|
475
|
-
delivery: 'broadcast',
|
|
476
|
-
},
|
|
477
|
-
});
|
|
478
|
-
const ExecucaoDeJogo = createGateway({
|
|
479
|
-
executaTestePericia: {
|
|
480
|
-
tipo: 'envia',
|
|
481
|
-
payload: {},
|
|
482
|
-
},
|
|
483
|
-
emitirMensagemSalaJogo: {
|
|
484
|
-
tipo: 'emite',
|
|
485
|
-
payload: { mensagemSalaJogo: {} },
|
|
486
|
-
response: { mensagemSalaJogo: {} },
|
|
487
|
-
},
|
|
488
|
-
});
|
|
489
|
-
const Jogo = createGateway({
|
|
490
|
-
requisicaoDeFechamentoDeSalaAberta: {
|
|
491
|
-
tipo: 'envia-e-recebe',
|
|
492
|
-
payload: { codigoSalaDeJogo: {} },
|
|
493
|
-
response: {},
|
|
494
|
-
},
|
|
495
|
-
emitirEstouEmJogo: {
|
|
496
|
-
tipo: 'emite',
|
|
497
|
-
payload: {},
|
|
498
|
-
response: { objetoEstouEmJogo: {} },
|
|
499
|
-
delivery: 'perRecipient',
|
|
500
|
-
},
|
|
501
|
-
emitirObjetoEmJogo: {
|
|
502
|
-
tipo: 'emite',
|
|
503
|
-
payload: {},
|
|
504
|
-
response: { objetoEmJogo: {} },
|
|
505
|
-
delivery: 'perRecipient',
|
|
506
|
-
},
|
|
507
|
-
emitirSessaoEmAndamento: {
|
|
508
|
-
tipo: 'emite',
|
|
509
|
-
payload: {},
|
|
510
|
-
response: { sessaoEmAndamento: {} },
|
|
511
|
-
delivery: 'perRecipient',
|
|
512
|
-
},
|
|
513
|
-
emitirTodasSalas: {
|
|
514
|
-
tipo: 'emite',
|
|
515
|
-
payload: {},
|
|
516
|
-
response: { salas: [] },
|
|
517
|
-
delivery: 'broadcast',
|
|
518
|
-
},
|
|
519
|
-
NARRADOR_executaAcaoParticipante_PROTOTIPO: {
|
|
520
|
-
tipo: 'envia',
|
|
521
|
-
payload: {},
|
|
522
|
-
},
|
|
523
|
-
emitirFichaEmJogo: {
|
|
524
|
-
tipo: 'emite',
|
|
525
|
-
payload: {},
|
|
526
|
-
response: { fichaAtualizada: {} }
|
|
527
|
-
},
|
|
528
|
-
});
|
|
529
|
-
const UsuariosConectados = createGateway({
|
|
530
|
-
emitirUsuariosConectadosAgora: {
|
|
531
|
-
tipo: 'emite',
|
|
532
|
-
payload: {},
|
|
533
|
-
response: { usuariosConectados: [] },
|
|
534
|
-
delivery: 'broadcast',
|
|
535
|
-
},
|
|
536
|
-
});
|
|
537
|
-
const UsuariosExistentes = createGateway({
|
|
538
|
-
obterTodos: {
|
|
539
|
-
tipo: 'envia-e-recebe',
|
|
540
|
-
payload: {},
|
|
541
|
-
response: { usuariosExistentes: [] },
|
|
542
|
-
// autenticacao_necessaria: false,
|
|
543
|
-
},
|
|
544
|
-
});
|
|
545
|
-
EventosWebSocket.gateways = { Chat, Jogo, ExecucaoDeJogo, UsuariosConectados, UsuariosExistentes };
|
|
546
|
-
})(EventosWebSocket || (EventosWebSocket = {}));
|
|
547
|
-
function isRecord(value) { return typeof value === 'object' && value !== null; }
|
|
548
|
-
function getEmitDelivery(gatewayName, eventName) {
|
|
549
|
-
const gatewaysUnknown = EventosWebSocket.gateways;
|
|
550
|
-
if (!isRecord(gatewaysUnknown))
|
|
551
|
-
return undefined;
|
|
552
|
-
const gw = gatewaysUnknown[gatewayName];
|
|
553
|
-
if (!isRecord(gw))
|
|
554
|
-
return undefined;
|
|
555
|
-
const schema = gw[eventName];
|
|
556
|
-
if (!isRecord(schema))
|
|
557
|
-
return undefined;
|
|
558
|
-
if (schema.tipo !== 'emite')
|
|
559
|
-
return undefined;
|
|
560
|
-
const delivery = schema.delivery;
|
|
561
|
-
if (delivery === 'broadcast' || delivery === 'perRecipient')
|
|
562
|
-
return delivery;
|
|
563
|
-
return undefined;
|
|
564
|
-
}
|
|
565
|
-
// @tipoCompartilhadoFront
|
|
566
|
-
var AventuraEstado;
|
|
567
|
-
(function (AventuraEstado) {
|
|
568
|
-
AventuraEstado["EM_PREPARO"] = "Em Preparo";
|
|
569
|
-
AventuraEstado["EM_ANDAMENTO"] = "Em Andamento";
|
|
570
|
-
AventuraEstado["FINALIZADA"] = "Finalizada";
|
|
571
|
-
})(AventuraEstado || (AventuraEstado = {}));
|
|
572
|
-
// @tipoCompartilhadoFront
|
|
573
|
-
var EstadoPendenciaPersonagem;
|
|
574
|
-
(function (EstadoPendenciaPersonagem) {
|
|
575
|
-
EstadoPendenciaPersonagem["RESUMO_AVENTURA_PENDENTE"] = "Informa\u00E7\u00F5es sobre Aventura Pendentes";
|
|
576
|
-
EstadoPendenciaPersonagem["FICHA_NAO_CRIADA"] = "Cria\u00E7\u00E3o da Ficha Pendente";
|
|
577
|
-
EstadoPendenciaPersonagem["FICHA_PENDENTE"] = "Atualiza\u00E7\u00E3o de Ficha Pendente";
|
|
578
|
-
EstadoPendenciaPersonagem["SEM_PENDENCIAS"] = "";
|
|
579
|
-
})(EstadoPendenciaPersonagem || (EstadoPendenciaPersonagem = {}));
|
|
580
|
-
// @tipoCompartilhadoFront
|
|
581
|
-
var EstadoPendenciaAdministrativaPersonagem;
|
|
582
|
-
(function (EstadoPendenciaAdministrativaPersonagem) {
|
|
583
|
-
EstadoPendenciaAdministrativaPersonagem["SEM_AVATAR"] = "O Administrador ainda n\u00E3o vinculou o avatar do personagem";
|
|
584
|
-
EstadoPendenciaAdministrativaPersonagem["SEM_PENDENCIAS"] = "";
|
|
585
|
-
})(EstadoPendenciaAdministrativaPersonagem || (EstadoPendenciaAdministrativaPersonagem = {}));
|
|
586
|
-
// @tipoCompartilhadoFront
|
|
587
|
-
var EstadoOcupacaoPersonagem;
|
|
588
|
-
(function (EstadoOcupacaoPersonagem) {
|
|
589
|
-
EstadoOcupacaoPersonagem[EstadoOcupacaoPersonagem["SE_PREPARANDO_AVENTURA"] = 0] = "SE_PREPARANDO_AVENTURA";
|
|
590
|
-
EstadoOcupacaoPersonagem[EstadoOcupacaoPersonagem["EM_AVENTURA"] = 1] = "EM_AVENTURA";
|
|
591
|
-
EstadoOcupacaoPersonagem[EstadoOcupacaoPersonagem["EM_ESPERA"] = 2] = "EM_ESPERA";
|
|
592
|
-
})(EstadoOcupacaoPersonagem || (EstadoOcupacaoPersonagem = {}));
|
|
593
|
-
// @tipoCompartilhadoFront
|
|
594
|
-
var EstadoSessao;
|
|
595
|
-
(function (EstadoSessao) {
|
|
596
|
-
EstadoSessao["MARCADA"] = "A Sess\u00E3o est\u00E1 marcada";
|
|
597
|
-
EstadoSessao["EM_ANDAMENTO"] = "A Sess\u00E3o est\u00E1 em andamento nesse momento";
|
|
598
|
-
EstadoSessao["FINALIZADA"] = "A Sess\u00E3o j\u00E1 foi realizada";
|
|
599
|
-
})(EstadoSessao || (EstadoSessao = {}));
|
|
600
|
-
// @tipoCompartilhadoFront
|
|
601
|
-
var DiaDaSemana;
|
|
602
|
-
(function (DiaDaSemana) {
|
|
603
|
-
DiaDaSemana[DiaDaSemana["DOMINGO"] = 0] = "DOMINGO";
|
|
604
|
-
DiaDaSemana[DiaDaSemana["SEGUNDA"] = 1] = "SEGUNDA";
|
|
605
|
-
DiaDaSemana[DiaDaSemana["TERCA"] = 2] = "TERCA";
|
|
606
|
-
DiaDaSemana[DiaDaSemana["QUARTA"] = 3] = "QUARTA";
|
|
607
|
-
DiaDaSemana[DiaDaSemana["QUINTA"] = 4] = "QUINTA";
|
|
608
|
-
DiaDaSemana[DiaDaSemana["SEXTA"] = 5] = "SEXTA";
|
|
609
|
-
DiaDaSemana[DiaDaSemana["SABADO"] = 6] = "SABADO";
|
|
610
|
-
})(DiaDaSemana || (DiaDaSemana = {}));
|
|
611
|
-
// @tipoCompartilhadoFront
|
|
612
|
-
function obtemDiaDaSemanaPorExtensoPorDDS(dds, plural = false) {
|
|
613
|
-
const diasDaSemanaSingular = [
|
|
614
|
-
'Domingo',
|
|
615
|
-
'Segunda-feira',
|
|
616
|
-
'Terça-feira',
|
|
617
|
-
'Quarta-feira',
|
|
618
|
-
'Quinta-feira',
|
|
619
|
-
'Sexta-feira',
|
|
620
|
-
'Sábado',
|
|
621
|
-
];
|
|
622
|
-
const diasDaSemanaPlural = [
|
|
623
|
-
'Domingos',
|
|
624
|
-
'Segundas-feiras',
|
|
625
|
-
'Terças-feiras',
|
|
626
|
-
'Quartas-feiras',
|
|
627
|
-
'Quintas-feiras',
|
|
628
|
-
'Sextas-feiras',
|
|
629
|
-
'Sábados',
|
|
630
|
-
];
|
|
631
|
-
return plural ? diasDaSemanaPlural[dds] : diasDaSemanaSingular[dds];
|
|
632
|
-
}
|
|
633
|
-
// @tipoCompartilhadoFront
|
|
634
|
-
var CargoExibicaoUsuario;
|
|
635
|
-
(function (CargoExibicaoUsuario) {
|
|
636
|
-
CargoExibicaoUsuario[CargoExibicaoUsuario["ADMIN"] = 0] = "ADMIN";
|
|
637
|
-
CargoExibicaoUsuario[CargoExibicaoUsuario["MESTRE"] = 1] = "MESTRE";
|
|
638
|
-
CargoExibicaoUsuario[CargoExibicaoUsuario["JOGADOR"] = 2] = "JOGADOR";
|
|
639
|
-
CargoExibicaoUsuario[CargoExibicaoUsuario["ESPECTADOR"] = 3] = "ESPECTADOR";
|
|
640
|
-
})(CargoExibicaoUsuario || (CargoExibicaoUsuario = {}));
|
|
641
|
-
// @tipoCompartilhadoFront
|
|
642
|
-
var FormatoMomento;
|
|
643
|
-
(function (FormatoMomento) {
|
|
644
|
-
FormatoMomento[FormatoMomento["HMS"] = 0] = "HMS";
|
|
645
|
-
FormatoMomento[FormatoMomento["EXTENSO"] = 1] = "EXTENSO";
|
|
646
|
-
FormatoMomento[FormatoMomento["EXTENSO_APROXIMADO"] = 2] = "EXTENSO_APROXIMADO";
|
|
647
|
-
})(FormatoMomento || (FormatoMomento = {}));
|
|
648
|
-
// @tipoCompartilhadoFront
|
|
649
|
-
const PathAvatarPadrao = criaCaminhoArquivoAvatar(ARQUIVOS_INTERNOS.AVATAR_PADRAO.caminhoArquivo);
|
|
650
|
-
const PathArteCapaPadrao = criaCaminhoArquivoArte('RecursosPublicos/imagem_especial_artista/e1e4973b-d681-4387-8028-2cce061939c6.webp');
|
|
651
|
-
// @tipoCompartilhadoFront
|
|
652
|
-
function momentoParaMinutos(momento) {
|
|
653
|
-
const partes = momento.split(':');
|
|
654
|
-
const hh = Number(partes[0]);
|
|
655
|
-
const mm = Number(partes[1]);
|
|
656
|
-
if (!Number.isFinite(hh) || !Number.isFinite(mm))
|
|
657
|
-
throw new Error(`Momento inválido: ${momento}`);
|
|
658
|
-
return (hh * 60) + mm;
|
|
659
|
-
}
|
|
660
|
-
// @tipoCompartilhadoFront
|
|
661
|
-
function concatenarDataEHoraEmNovaData(data, hora, utcOffsetMinutes = -180) {
|
|
662
|
-
const base = typeof data === 'string' ? new Date(data) : new Date(data);
|
|
663
|
-
if (Number.isNaN(base.getTime()))
|
|
664
|
-
throw new Error('Data inválida');
|
|
665
|
-
const partes = hora.split(':');
|
|
666
|
-
if (partes.length !== 2)
|
|
667
|
-
throw new Error('Hora inválida, esperado HH:mm');
|
|
668
|
-
const h = Number(partes[0]);
|
|
669
|
-
const m = Number(partes[1]);
|
|
670
|
-
if (!Number.isInteger(h) || !Number.isInteger(m) || h < 0 || h > 23 || m < 0 || m > 59)
|
|
671
|
-
throw new Error('Hora inválida, esperado HH:mm');
|
|
672
|
-
const y = base.getUTCFullYear();
|
|
673
|
-
const mo = base.getUTCMonth();
|
|
674
|
-
const d = base.getUTCDate();
|
|
675
|
-
const localMinutes = (h * 60) + m;
|
|
676
|
-
const utcMinutes = localMinutes - utcOffsetMinutes;
|
|
677
|
-
const inicioDoDiaUtcMs = Date.UTC(y, mo, d, 0, 0, 0, 0);
|
|
678
|
-
return new Date(inicioDoDiaUtcMs + (utcMinutes * 60_000));
|
|
679
|
-
}
|
|
680
|
-
// @tipoCompartilhadoFront
|
|
681
|
-
const pluralize = (count, singular, plural) => {
|
|
682
|
-
const pluralForm = plural || `${singular}s`;
|
|
683
|
-
return count === 1 ? singular : pluralForm;
|
|
684
|
-
};
|
|
685
|
-
// @tipoCompartilhadoFront
|
|
686
|
-
function minutosParaMs(minutos) { return minutos * 60 * 1000; }
|
|
687
|
-
// @tipoCompartilhadoFront
|
|
688
|
-
function formataDataCompacta(data = new Date()) {
|
|
689
|
-
const ano = data.getFullYear();
|
|
690
|
-
const mes = String(data.getMonth() + 1).padStart(2, '0');
|
|
691
|
-
const dia = String(data.getDate()).padStart(2, '0');
|
|
692
|
-
const hora = String(data.getHours()).padStart(2, '0');
|
|
693
|
-
const minuto = String(data.getMinutes()).padStart(2, '0');
|
|
694
|
-
const segundo = String(data.getSeconds()).padStart(2, '0');
|
|
695
|
-
const milesimo = String(data.getMilliseconds()).padStart(3, '0');
|
|
696
|
-
return `${ano}${mes}${dia}_${hora}${minuto}${segundo}${milesimo}`;
|
|
697
|
-
}
|
|
698
|
-
function criarEventosFiltrados(tipo) {
|
|
699
|
-
const result = {};
|
|
700
|
-
for (const [gatewayName, gatewayDef] of Object.entries(EventosWebSocket.gateways)) {
|
|
701
|
-
const eventosFiltrados = Object.entries(gatewayDef).filter(([, evento]) => evento.tipo === tipo).map(([eventName, evento]) => [eventName, {
|
|
702
|
-
...evento,
|
|
703
|
-
nome: eventName,
|
|
704
|
-
gateway: gatewayName,
|
|
705
|
-
fullName: `${gatewayName}:${eventName}`,
|
|
706
|
-
}]);
|
|
707
|
-
result[gatewayName] = { eventos: Object.fromEntries(eventosFiltrados) };
|
|
708
|
-
}
|
|
709
|
-
return result;
|
|
710
|
-
}
|
|
711
|
-
const Eventos_Envia = criarEventosFiltrados('envia');
|
|
712
|
-
const Eventos_Emite = criarEventosFiltrados('emite');
|
|
713
|
-
const Eventos_EnviaERecebe = criarEventosFiltrados('envia-e-recebe');
|
|
714
|
-
/*
|
|
715
|
-
SSOT: regra de acesso única, usada por:
|
|
716
|
-
- ControladorSlot (bloqueio/redirect)
|
|
717
|
-
- Menu principal (filtrar itens antes de render)
|
|
718
|
-
- Menus internos (filtrar itens antes de render)
|
|
719
|
-
*/
|
|
720
|
-
function decidirAcessoPagina(pagina, ctx, opts) {
|
|
721
|
-
const visitados = new Set();
|
|
722
|
-
return decidirAcessoPagina_Rec(pagina, ctx, opts, visitados);
|
|
723
|
-
}
|
|
724
|
-
function decidirAcessoPagina_Rec(pagina, ctx, opts, visitados) {
|
|
725
|
-
const key = String(pagina.template);
|
|
726
|
-
if (visitados.has(key))
|
|
727
|
-
return { permitido: true };
|
|
728
|
-
visitados.add(key);
|
|
729
|
-
const acesso = pagina.acesso;
|
|
730
|
-
if (acesso != null && 'cadastroPermitido' in acesso) {
|
|
731
|
-
if (!ctx.cadastroPermitido)
|
|
732
|
-
return { permitido: false, motivo: 'NAO_AUTENTICADO', redirecionarPara: opts.redirectNaoAutenticado };
|
|
733
|
-
}
|
|
734
|
-
if (acesso != null && 'listaDeCapacidadesNecessarias' in acesso) {
|
|
735
|
-
if (!ctx.estaAutenticado)
|
|
736
|
-
return { permitido: false, motivo: 'NAO_AUTENTICADO', redirecionarPara: opts.redirectNaoAutenticado };
|
|
737
|
-
if (temSudoBurlarCapacidades(ctx))
|
|
738
|
-
return { permitido: true };
|
|
739
|
-
const lista = acesso.listaDeCapacidadesNecessarias;
|
|
740
|
-
const permitido = Array.isArray(lista) && lista.length > 0 && lista.every((cap) => ctx.verificarCapacidade(cap));
|
|
741
|
-
if (!permitido)
|
|
742
|
-
return { permitido: false, motivo: 'SEM_CAPACIDADE', redirecionarPara: opts.redirectSemCapacidade };
|
|
743
|
-
}
|
|
744
|
-
if (acesso != null && 'autenticado' in acesso) {
|
|
745
|
-
if (!ctx.estaAutenticado)
|
|
746
|
-
return { permitido: false, motivo: 'NAO_AUTENTICADO', redirecionarPara: opts.redirectNaoAutenticado };
|
|
747
|
-
}
|
|
748
|
-
if (pagina.acessoPorMenuInterno === true) {
|
|
749
|
-
if (!ctx.estaAutenticado)
|
|
750
|
-
return { permitido: false, motivo: 'NAO_AUTENTICADO', redirecionarPara: opts.redirectNaoAutenticado };
|
|
751
|
-
if (temSudoBurlarCapacidades(ctx))
|
|
752
|
-
return { permitido: true };
|
|
753
|
-
const folhas = (opts.resolverMenuInterno?.(pagina) ?? []).filter((p) => String(p.template) !== String(pagina.template));
|
|
754
|
-
const permitido = folhas.some((p) => decidirAcessoPagina_Rec(p, ctx, opts, visitados).permitido);
|
|
755
|
-
if (!permitido)
|
|
756
|
-
return { permitido: false, motivo: 'SEM_CAPACIDADE', redirecionarPara: opts.redirectSemCapacidade };
|
|
757
|
-
}
|
|
758
|
-
return { permitido: true };
|
|
759
|
-
}
|
|
760
|
-
const PAGINAS = {
|
|
761
|
-
home: pagina('/', { label: 'Página Inicial', comCabecalho: true }),
|
|
762
|
-
acessar: pagina('/acessar', { label: 'Acessar' }),
|
|
763
|
-
cadastrar: pagina('/cadastrar', { label: 'Cadastrar', acesso: { cadastroPermitido: true } }),
|
|
764
|
-
definicoes: pagina('/definicoes/[[...slug]]', { label: 'Definições', comCabecalho: true }),
|
|
765
|
-
dicas: pagina('/dicas/[[...slug]]', { label: 'Dicas', comCabecalho: true }),
|
|
766
|
-
jogo: {
|
|
767
|
-
admin: {
|
|
768
|
-
gerenciarSalas: paginaComLayoutContextualizado('/jogo/admin/gerenciar-salas', { label: 'Admin - Gerenciar Salas', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__ACOMPANHAMENTO__SESSAO_DE_JOGO] } }, { titulo: 'Gerenciar Salas', proporcaoConteudo: 84 }),
|
|
769
|
-
},
|
|
770
|
-
mestre: {
|
|
771
|
-
sessoesMestre: paginaComLayoutContextualizado('/jogo/mestre/sessoes-mestre', { label: 'Mestre - Sessões', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__SESSAO_DE_JOGO] } }, { titulo: 'Criação de Sala', proporcaoConteudo: 84 }),
|
|
772
|
-
},
|
|
773
|
-
jogador: paginaComLayoutContextualizado('/jogo/jogador', { label: 'Jogo - Jogador', acesso: { autenticado: true } }, { titulo: null, proporcaoConteudo: 84 }),
|
|
774
|
-
emJogo: pagina('/jogo/em-jogo', { label: 'Em Jogo', acesso: { autenticado: true } }),
|
|
775
|
-
},
|
|
776
|
-
linhaDoTempo: pagina('/linha-do-tempo', { label: 'Linha do Tempo' }),
|
|
777
|
-
minhaPagina: pagina('/minha-pagina', { label: 'Minha Página', acesso: { autenticado: true } }),
|
|
778
|
-
minhasPaginas: {
|
|
779
|
-
...paginaComLayoutContextualizado('/minhas-paginas', { label: 'Minhas Paginas', acesso: { autenticado: true } }, { titulo: 'Minhas Paginas', proporcaoConteudo: 84 }),
|
|
780
|
-
admin: {
|
|
781
|
-
...paginaComLayoutContextualizado('/minhas-paginas/admin', { label: 'Administração', acesso: { autenticado: true }, acessoPorMenuInterno: true }, { titulo: 'Página de Administrador', proporcaoConteudo: 84 }),
|
|
782
|
-
aventura: paginaComLayoutContextualizado('/minhas-paginas/admin/aventura/[id]', { label: 'Admin - Aventura', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__GERENCIAMENTO__AVENTURAS_E_SESSOES] } }, { titulo: 'TROCA', proporcaoConteudo: 84 }),
|
|
783
|
-
aventuras: paginaComLayoutContextualizado('/minhas-paginas/admin/aventuras', { label: 'Admin - Aventuras', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__GERENCIAMENTO__AVENTURAS_E_SESSOES] } }, { titulo: 'Gerenciamento de Aventuras', proporcaoConteudo: 84 }),
|
|
784
|
-
dashboardWs: paginaComLayoutContextualizado('/minhas-paginas/admin/dashboard-ws', { label: 'Admin - Dashboard WS', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__ACOMPANHAMENTO__WEBSOCKET] } }, { titulo: 'Dashboard: WebSocket', proporcaoConteudo: 84 }),
|
|
785
|
-
sessao: paginaComLayoutContextualizado('/minhas-paginas/admin/sessao/[id]', { label: 'Admin - Sessão', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__GERENCIAMENTO__AVENTURAS_E_SESSOES] } }, { titulo: 'Gerenciamento de Sessão', proporcaoConteudo: 84 }),
|
|
786
|
-
variaveisAmbiente: paginaComLayoutContextualizado('/minhas-paginas/admin/variaveis-ambiente', { label: 'Admin - Variáveis de Ambiente', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__GERENCIAMENTO__VARIAVEIS_DE_AMBIENTE] } }, { titulo: 'Variáveis de Ambiente', proporcaoConteudo: 84 }),
|
|
787
|
-
dashboardPermissoes: paginaComLayoutContextualizado('/minhas-paginas/admin/permissoes', { label: 'Admin - Permissões', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__PERMISSOES__CRIACAO_CAPACIDADES] } }, { titulo: 'Gerenciamento de Permissões', proporcaoConteudo: 84 }),
|
|
788
|
-
dashboardPermissoesUsuarios: paginaComLayoutContextualizado('/minhas-paginas/admin/permissoes-usuarios', { label: 'Admin - Permissões de Usuários', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__PERMISSOES__ALTERACAO_CAPACIDADES_GERAIS_USUARIOS] } }, { titulo: 'Permissões de Usuário', proporcaoConteudo: 84 }),
|
|
789
|
-
deletarArquivosAbsoluto: paginaComLayoutContextualizado('/minhas-paginas/admin/deletar-arquivos-absoluto', { label: 'Admin - Deletar Arquivos SUDO', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__SUDO__DELETAR_ARQUIVOS_FILE_SERVER] } }, { titulo: 'Deletar Arquivos', proporcaoConteudo: 84 }),
|
|
790
|
-
deletarArquivosFileServer: paginaComLayoutContextualizado('/minhas-paginas/admin/deletar-arquivos-file-server', { label: 'Admin - Deletar Arquivos', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__SUDO__DELETAR_ARQUIVOS_FILE_SERVER] } }, { titulo: 'Deletar Arquivos', proporcaoConteudo: 84 }),
|
|
791
|
-
uploadRecursosInternos: paginaComLayoutContextualizado('/minhas-paginas/admin/uploads-recursos-internos', { label: 'Admin - Uploads', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ADMINISTRADOR__GERENCIAMENTO__UPLOAD_RECURSOS_INTERNOS] } }, { titulo: 'Upload de Recursos Internos', proporcaoConteudo: 84 }),
|
|
792
|
-
},
|
|
793
|
-
moderador: {
|
|
794
|
-
...paginaComLayoutContextualizado('/minhas-paginas/moderador', { label: 'Área do Moderador', acesso: { autenticado: true }, acessoPorMenuInterno: true }, { titulo: 'Página de Moderador', proporcaoConteudo: 84 }),
|
|
795
|
-
dashboardAprovacaoImagensArtista: paginaComLayoutContextualizado('/minhas-paginas/moderador/aprovar-imagens-artista', { label: 'Aprovar Imagens de Artistas', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MODERADOR__IMAGENS] } }, { titulo: 'Aprovar Imagens de Artistas', proporcaoConteudo: 84 }),
|
|
796
|
-
},
|
|
797
|
-
mestre: {
|
|
798
|
-
...paginaComLayoutContextualizado('/minhas-paginas/mestre', { label: 'Área do Mestre', acessoPorMenuInterno: true }, { titulo: 'Página de Mestre', proporcaoConteudo: 84 }),
|
|
799
|
-
aventura: paginaComLayoutContextualizado('/minhas-paginas/mestre/aventura/[id]', { label: 'Mestre - Aventura', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__AVENTURA] } }, { titulo: 'TROCAR', proporcaoConteudo: 84 }),
|
|
800
|
-
aventuras: paginaComLayoutContextualizado('/minhas-paginas/mestre/aventuras', { label: 'Mestre - Aventuras', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__AVENTURA] } }, { titulo: 'Minhas Aventuras', proporcaoConteudo: 84 }),
|
|
801
|
-
sessoesUnicas: paginaComLayoutContextualizado('/minhas-paginas/mestre/sessoes-unicas', { label: 'Mestre - Sessões Únicas', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__SESSAO_DE_JOGO] } }, { titulo: 'Minhas Sessões Únicas', proporcaoConteudo: 84 }),
|
|
802
|
-
personagens: paginaComLayoutContextualizado('/minhas-paginas/mestre/personagens', { label: 'Mestre - Personagens', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__AVENTURA] } }, { titulo: 'Meus Personagens de Mestre', proporcaoConteudo: 84 }),
|
|
803
|
-
rascunhos: {
|
|
804
|
-
aventuras: paginaComLayoutContextualizado('/minhas-paginas/mestre/rascunhos/aventuras', { label: 'Rascunhos - Aventuras', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__RASCUNHO_AVENTURA] } }, { titulo: 'Meus Rascunhos de Aventuras', proporcaoConteudo: 84 }),
|
|
805
|
-
sessoesUnicas: paginaComLayoutContextualizado('/minhas-paginas/mestre/rascunhos/sessoes-unicas', { label: 'Rascunhos - Sessões Únicas', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__RASCUNHO_SESSAO_UNICA] } }, { titulo: 'Meus Rascunhos de Sessões Únicas', proporcaoConteudo: 84 }),
|
|
806
|
-
},
|
|
807
|
-
temporario: {
|
|
808
|
-
consultarDisponibilidades: paginaComLayoutContextualizado('/minhas-paginas/mestre/consultar-disponibilidades', { label: 'Consultando Disponibilidades', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__SESSAO_DE_JOGO] } }, { titulo: 'Consultando Disponibilidades', proporcaoConteudo: 100 }),
|
|
809
|
-
criarSessaoUnica: paginaComLayoutContextualizado('/minhas-paginas/mestre/criar-sessao-unica', { label: 'Criando Sessão Única', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__SESSAO_DE_JOGO] } }, { titulo: 'Criando Sessão Única', proporcaoConteudo: 100 }),
|
|
810
|
-
},
|
|
811
|
-
sessao: paginaComLayoutContextualizado('/minhas-paginas/mestre/sessao/[id]', { label: 'Mestre - Sessão', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.MESTRE__CRIACAO__SESSAO_DE_JOGO] } }, { titulo: 'TROCAR', proporcaoConteudo: 84 }),
|
|
812
|
-
},
|
|
813
|
-
artista: {
|
|
814
|
-
...paginaComLayoutContextualizado('/minhas-paginas/artista', { label: 'Área do Artista', acesso: { autenticado: true }, acessoPorMenuInterno: true }, { titulo: 'Página de Artista', proporcaoConteudo: 84 }),
|
|
815
|
-
minhasImagens: paginaComLayoutContextualizado('/minhas-paginas/artista/minhas-imagens', { label: 'Minhas Imagens', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ARTISTA__CRIACAO__UPLOAD_IMAGEM] } }, { titulo: 'Minhas Imagens', proporcaoConteudo: 84 }),
|
|
816
|
-
adicionarImagem: paginaComLayoutContextualizado('/minhas-paginas/artista/adicionar-imagem', { label: 'Adicionar Imagem', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ARTISTA__CRIACAO__UPLOAD_IMAGEM] } }, { titulo: 'Adicionar Nova Imagem', proporcaoConteudo: 84 }),
|
|
817
|
-
avatares: {
|
|
818
|
-
gerenciarAvatares: paginaComLayoutContextualizado('/minhas-paginas/artista/avatares', { label: 'Gerenciar Avatares', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ARTISTA__CRIACAO__RESPONSABILIDADES__AVATARES] } }, { titulo: 'Gerenciar Avatares', proporcaoConteudo: 84 }),
|
|
819
|
-
},
|
|
820
|
-
emblemas: {
|
|
821
|
-
gerenciarEmblemas: paginaComLayoutContextualizado('/minhas-paginas/artista/emblemas', { label: 'Gerenciar Emblemas', acesso: { listaDeCapacidadesNecessarias: [CAPACIDADES.ARTISTA__CRIACAO__RESPONSABILIDADES__EMBLEMAS] } }, { titulo: 'Gerenciar Emblemas', proporcaoConteudo: 84 }),
|
|
822
|
-
},
|
|
823
|
-
},
|
|
824
|
-
jogador: {
|
|
825
|
-
...paginaComLayoutContextualizado('/minhas-paginas/jogador', { label: 'Área do Jogador', acesso: { autenticado: true }, acessoPorMenuInterno: true }, { titulo: 'Página de Jogador', proporcaoConteudo: 84 }),
|
|
826
|
-
meusPersonagens: paginaComLayoutContextualizado('/minhas-paginas/jogador/meus-personagens', { label: 'Meus Personagens', acesso: { autenticado: true } }, { titulo: 'Meus Personagens', proporcaoConteudo: 84 }),
|
|
827
|
-
minhasFichas: paginaComLayoutContextualizado('/minhas-paginas/jogador/minhas-fichas', { label: 'Minhas Fichas', acesso: { autenticado: true } }, { titulo: 'Minhas Fichas', proporcaoConteudo: 84 }),
|
|
828
|
-
criar: {
|
|
829
|
-
ficha: paginaComLayoutContextualizado('/minhas-paginas/jogador/criar/ficha', { label: 'Criando Ficha', acesso: { autenticado: true } }, { titulo: 'Criando Ficha', proporcaoConteudo: 100 }),
|
|
830
|
-
personagem: paginaComLayoutContextualizado('/minhas-paginas/jogador/criar/personagem', { label: 'Criando Personagem', acesso: { autenticado: true } }, { titulo: 'Criando Personagem', proporcaoConteudo: 100 }),
|
|
831
|
-
},
|
|
832
|
-
},
|
|
833
|
-
minhasDisponibilidades: paginaComLayoutContextualizado('/minhas-paginas/minhas-disponibilidades', { label: 'Minhas Disponibilidades', acesso: { autenticado: true } }, { titulo: 'Minhas Disponibilidades', proporcaoConteudo: 100 }),
|
|
834
|
-
minhasConfiguracoes: {
|
|
835
|
-
...paginaComLayoutContextualizado('/minhas-paginas/minhas-configuracoes', { label: 'Minhas Configurações', acesso: { autenticado: true } }, { titulo: 'Minhas Configurações', proporcaoConteudo: 84 }),
|
|
836
|
-
passeDeJogador: paginaComLayoutContextualizado('/minhas-paginas/minhas-configuracoes/passe-de-jogador', { label: 'Meu Passe de Jogador', acesso: { autenticado: true } }, { titulo: 'Meu Passe de Jogador', proporcaoConteudo: 84 }),
|
|
837
|
-
}
|
|
838
|
-
},
|
|
839
|
-
fichas: paginaComLayoutContextualizado('/fichas', { label: 'Fichas', acesso: { autenticado: true } }, { titulo: 'Minhas Fichas', proporcaoConteudo: 84 }),
|
|
840
|
-
personagens: paginaComLayoutContextualizado('/personagens', { label: 'Personagens', acesso: { autenticado: true } }, { titulo: 'Meus Personagens', proporcaoConteudo: 84 }),
|
|
841
|
-
sessoes: paginaComLayoutContextualizado('/sessoes', { label: 'Sessões' }, { titulo: 'TROCA', proporcaoConteudo: 100 }),
|
|
842
|
-
sessaoAovivo: pagina('/sessao-aovivo', { label: 'Sessão Ao Vivo', acesso: { autenticado: true } }),
|
|
843
|
-
assistir: paginaComLayoutContextualizado('/assistir', { label: 'Assistir' }, { titulo: 'Assistir', proporcaoConteudo: 80 }),
|
|
844
|
-
};
|
|
845
|
-
function filtrarMenuPorAcesso(nodes, ctx) {
|
|
846
|
-
const out = [];
|
|
847
|
-
for (const node of nodes) {
|
|
848
|
-
if (node.tipo === 'item') {
|
|
849
|
-
const decisao = decidirAcessoPagina(node.destino.pagina, ctx, { resolverMenuInterno, redirectNaoAutenticado: PAGINAS.acessar, redirectSemCapacidade: PAGINAS.home });
|
|
850
|
-
if (decisao.permitido)
|
|
851
|
-
out.push(node);
|
|
852
|
-
continue;
|
|
853
|
-
}
|
|
854
|
-
const itensFiltrados = filtrarMenuPorAcesso(node.itens, ctx);
|
|
855
|
-
if (itensFiltrados.length > 0)
|
|
856
|
-
out.push({ tipo: 'grupo', titulo: node.titulo, itens: itensFiltrados });
|
|
857
|
-
}
|
|
858
|
-
return out;
|
|
859
|
-
}
|
|
860
|
-
const MENU_PRINCIPAL = [
|
|
861
|
-
menuItem('Minhas Páginas', { pagina: PAGINAS.minhasPaginas }),
|
|
862
|
-
menuItem('Fichas', { pagina: PAGINAS.fichas }),
|
|
863
|
-
menuItem('Personagens', { pagina: PAGINAS.personagens }),
|
|
864
|
-
menuItem('Jogue Agora!', { pagina: PAGINAS.jogo.jogador }),
|
|
865
|
-
menuItem('Assistir', { pagina: PAGINAS.assistir }),
|
|
866
|
-
menuItem('Sessão Ao Vivo', { pagina: PAGINAS.sessaoAovivo }),
|
|
867
|
-
menuItem('Hall', { pagina: PAGINAS.minhaPagina }),
|
|
868
|
-
menuItem('Definições', { pagina: PAGINAS.definicoes, params: { slug: [] } }),
|
|
869
|
-
menuItem('Dicas', { pagina: PAGINAS.dicas, params: { slug: [] } }),
|
|
870
|
-
];
|
|
871
|
-
const MENUS_INTERNOS = {
|
|
872
|
-
PAGINAS: {
|
|
873
|
-
jogo: [
|
|
874
|
-
menuGrupo('Administrador', [
|
|
875
|
-
menuItem('Salas', { pagina: PAGINAS.jogo.admin.gerenciarSalas }),
|
|
876
|
-
]),
|
|
877
|
-
menuGrupo('Mestre', [
|
|
878
|
-
menuItem('Sessões', { pagina: PAGINAS.jogo.mestre.sessoesMestre }),
|
|
879
|
-
]),
|
|
880
|
-
menuGrupo('Jogador', [
|
|
881
|
-
menuItem('Início', { pagina: PAGINAS.jogo.jogador }),
|
|
882
|
-
]),
|
|
883
|
-
],
|
|
884
|
-
minhasPaginas: {
|
|
885
|
-
menu: [
|
|
886
|
-
menuItem('Administrador', { pagina: PAGINAS.minhasPaginas.admin }),
|
|
887
|
-
menuItem('Moderador', { pagina: PAGINAS.minhasPaginas.moderador }),
|
|
888
|
-
menuItem('Mestre', { pagina: PAGINAS.minhasPaginas.mestre }),
|
|
889
|
-
menuItem('Artista', { pagina: PAGINAS.minhasPaginas.artista }),
|
|
890
|
-
menuItem('Jogador', { pagina: PAGINAS.minhasPaginas.jogador }),
|
|
891
|
-
menuItem('Disponibilidades', { pagina: PAGINAS.minhasPaginas.minhasDisponibilidades }),
|
|
892
|
-
menuItem('Configurações', { pagina: PAGINAS.minhasPaginas.minhasConfiguracoes }),
|
|
893
|
-
],
|
|
894
|
-
admin: [
|
|
895
|
-
menuItem('Variáveis de Ambiente', { pagina: PAGINAS.minhasPaginas.admin.variaveisAmbiente }),
|
|
896
|
-
menuItem('Aventuras', { pagina: PAGINAS.minhasPaginas.admin.aventuras }),
|
|
897
|
-
menuItem('Dashboard WebSocket', { pagina: PAGINAS.minhasPaginas.admin.dashboardWs }),
|
|
898
|
-
menuGrupo('Permissões', [
|
|
899
|
-
menuItem('Permissões', { pagina: PAGINAS.minhasPaginas.admin.dashboardPermissoes }),
|
|
900
|
-
menuItem('Permissões de Usuários', { pagina: PAGINAS.minhasPaginas.admin.dashboardPermissoesUsuarios }),
|
|
901
|
-
]),
|
|
902
|
-
menuGrupo('File Server', [
|
|
903
|
-
menuItem('Deletar Arquivos por Caminho', { pagina: PAGINAS.minhasPaginas.admin.deletarArquivosAbsoluto }),
|
|
904
|
-
menuItem('Deletar Arquivos', { pagina: PAGINAS.minhasPaginas.admin.deletarArquivosFileServer }),
|
|
905
|
-
menuItem('Upload de Recursos Internos', { pagina: PAGINAS.minhasPaginas.admin.uploadRecursosInternos }),
|
|
906
|
-
]),
|
|
907
|
-
],
|
|
908
|
-
moderador: [
|
|
909
|
-
menuItem('Imagens pendentes de Aprovação', { pagina: PAGINAS.minhasPaginas.moderador.dashboardAprovacaoImagensArtista }),
|
|
910
|
-
],
|
|
911
|
-
mestre: [
|
|
912
|
-
menuGrupo('Mestre', [
|
|
913
|
-
menuItem('Início', { pagina: PAGINAS.minhasPaginas.mestre }),
|
|
914
|
-
]),
|
|
915
|
-
menuGrupo('Relíquia', [
|
|
916
|
-
menuGrupo('Aventuras', [
|
|
917
|
-
menuItem('Minhas Aventuras', { pagina: PAGINAS.minhasPaginas.mestre.aventuras }),
|
|
918
|
-
menuItem('Rascunhos de Aventuras', { pagina: PAGINAS.minhasPaginas.mestre.rascunhos.aventuras }),
|
|
919
|
-
]),
|
|
920
|
-
menuItem('Personagens', { pagina: PAGINAS.minhasPaginas.mestre.personagens }),
|
|
921
|
-
]),
|
|
922
|
-
menuGrupo('Criatura', [
|
|
923
|
-
menuGrupo('Sessões Únicas', [
|
|
924
|
-
menuItem('Minhas Sessões Únicas', { pagina: PAGINAS.minhasPaginas.mestre.sessoesUnicas }),
|
|
925
|
-
menuItem('Rascunhos de Sessões Únicas', { pagina: PAGINAS.minhasPaginas.mestre.rascunhos.sessoesUnicas }),
|
|
926
|
-
]),
|
|
927
|
-
]),
|
|
928
|
-
menuGrupo('Temporário', [
|
|
929
|
-
menuItem('Consultar Disponibilidades', { pagina: PAGINAS.minhasPaginas.mestre.temporario.consultarDisponibilidades }),
|
|
930
|
-
menuItem('Criar Sessões Únicas', { pagina: PAGINAS.minhasPaginas.mestre.temporario.criarSessaoUnica }),
|
|
931
|
-
]),
|
|
932
|
-
],
|
|
933
|
-
artista: [
|
|
934
|
-
menuItem('Minhas Imagens', { pagina: PAGINAS.minhasPaginas.artista.minhasImagens }),
|
|
935
|
-
menuItem('Adicionar Nova Imagem', { pagina: PAGINAS.minhasPaginas.artista.adicionarImagem }),
|
|
936
|
-
menuGrupo('Avatares', [
|
|
937
|
-
menuItem('Gerenciar Avatares', { pagina: PAGINAS.minhasPaginas.artista.avatares.gerenciarAvatares }),
|
|
938
|
-
]),
|
|
939
|
-
menuGrupo('Emblemas', [
|
|
940
|
-
menuItem('Gerenciar Emblemas', { pagina: PAGINAS.minhasPaginas.artista.emblemas.gerenciarEmblemas }),
|
|
941
|
-
]),
|
|
942
|
-
],
|
|
943
|
-
jogador: [
|
|
944
|
-
menuGrupo('Jogador', [
|
|
945
|
-
menuItem('Início', { pagina: PAGINAS.minhasPaginas.jogador }),
|
|
946
|
-
menuItem('Meus Personagens', { pagina: PAGINAS.minhasPaginas.jogador.meusPersonagens }),
|
|
947
|
-
menuItem('Minhas Fichas', { pagina: PAGINAS.minhasPaginas.jogador.minhasFichas }),
|
|
948
|
-
]),
|
|
949
|
-
],
|
|
950
|
-
minhasConfiguracoes: [
|
|
951
|
-
menuItem('Configurações', { pagina: PAGINAS.minhasPaginas.minhasConfiguracoes }),
|
|
952
|
-
menuItem('Passe de Jogador', { pagina: PAGINAS.minhasPaginas.minhasConfiguracoes.passeDeJogador }),
|
|
953
|
-
],
|
|
954
|
-
},
|
|
955
|
-
},
|
|
956
|
-
};
|
|
957
|
-
const MENUS_INTERNOS_LAYOUTCONTEXTO = {
|
|
958
|
-
PAGINAS: {
|
|
959
|
-
assistir: menuDinamico(),
|
|
960
|
-
jogo: {
|
|
961
|
-
admin: {
|
|
962
|
-
gerenciarSalas: MENUS_INTERNOS.PAGINAS.jogo,
|
|
963
|
-
},
|
|
964
|
-
mestre: {
|
|
965
|
-
sessoesMestre: MENUS_INTERNOS.PAGINAS.jogo,
|
|
966
|
-
},
|
|
967
|
-
jogador: MENUS_INTERNOS.PAGINAS.jogo,
|
|
968
|
-
},
|
|
969
|
-
minhasPaginas: {
|
|
970
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.menu,
|
|
971
|
-
admin: {
|
|
972
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
973
|
-
aventura: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
974
|
-
aventuras: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
975
|
-
dashboardWs: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
976
|
-
sessao: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
977
|
-
variaveisAmbiente: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
978
|
-
dashboardPermissoes: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
979
|
-
dashboardPermissoesUsuarios: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
980
|
-
deletarArquivosAbsoluto: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
981
|
-
deletarArquivosFileServer: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
982
|
-
uploadRecursosInternos: MENUS_INTERNOS.PAGINAS.minhasPaginas.admin,
|
|
983
|
-
},
|
|
984
|
-
moderador: {
|
|
985
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.moderador,
|
|
986
|
-
dashboardAprovacaoImagensArtista: MENUS_INTERNOS.PAGINAS.minhasPaginas.moderador,
|
|
987
|
-
},
|
|
988
|
-
mestre: {
|
|
989
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
990
|
-
aventura: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
991
|
-
aventuras: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
992
|
-
sessoesUnicas: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
993
|
-
personagens: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
994
|
-
rascunhos: {
|
|
995
|
-
aventuras: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
996
|
-
sessoesUnicas: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
997
|
-
},
|
|
998
|
-
sessao: MENUS_INTERNOS.PAGINAS.minhasPaginas.mestre,
|
|
999
|
-
temporario: {
|
|
1000
|
-
consultarDisponibilidades: menuVazio(),
|
|
1001
|
-
criarSessaoUnica: menuVazio(),
|
|
1002
|
-
},
|
|
1003
|
-
},
|
|
1004
|
-
artista: {
|
|
1005
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.artista,
|
|
1006
|
-
minhasImagens: MENUS_INTERNOS.PAGINAS.minhasPaginas.artista,
|
|
1007
|
-
adicionarImagem: MENUS_INTERNOS.PAGINAS.minhasPaginas.artista,
|
|
1008
|
-
avatares: {
|
|
1009
|
-
gerenciarAvatares: MENUS_INTERNOS.PAGINAS.minhasPaginas.artista,
|
|
1010
|
-
},
|
|
1011
|
-
emblemas: {
|
|
1012
|
-
gerenciarEmblemas: MENUS_INTERNOS.PAGINAS.minhasPaginas.artista,
|
|
1013
|
-
},
|
|
1014
|
-
},
|
|
1015
|
-
jogador: {
|
|
1016
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.jogador,
|
|
1017
|
-
meusPersonagens: MENUS_INTERNOS.PAGINAS.minhasPaginas.jogador,
|
|
1018
|
-
minhasFichas: MENUS_INTERNOS.PAGINAS.minhasPaginas.jogador,
|
|
1019
|
-
criar: {
|
|
1020
|
-
ficha: menuVazio(),
|
|
1021
|
-
personagem: menuVazio(),
|
|
1022
|
-
},
|
|
1023
|
-
},
|
|
1024
|
-
minhasDisponibilidades: menuVazio(),
|
|
1025
|
-
minhasConfiguracoes: {
|
|
1026
|
-
menu: MENUS_INTERNOS.PAGINAS.minhasPaginas.minhasConfiguracoes,
|
|
1027
|
-
passeDeJogador: MENUS_INTERNOS.PAGINAS.minhasPaginas.minhasConfiguracoes,
|
|
1028
|
-
},
|
|
1029
|
-
},
|
|
1030
|
-
fichas: menuDinamico(),
|
|
1031
|
-
personagens: menuDinamico(),
|
|
1032
|
-
sessoes: menuVazio(),
|
|
1033
|
-
},
|
|
1034
|
-
};
|
|
1035
|
-
function isPaginaComLayout(node) { return 'layoutContextualizadoInicial' in node && 'template' in node; }
|
|
1036
|
-
function isMenuLeaf(node) {
|
|
1037
|
-
if (Array.isArray(node))
|
|
1038
|
-
return true;
|
|
1039
|
-
if ('tipo' in node)
|
|
1040
|
-
return true;
|
|
1041
|
-
return false;
|
|
1042
|
-
}
|
|
1043
|
-
function getPaginaKey(pagina) { return String(pagina.template); }
|
|
1044
|
-
const MENUS_LAYOUTCONTEXTO_POR_PAGINA = (() => {
|
|
1045
|
-
const out = new Map();
|
|
1046
|
-
const rec = (paginasNode, menusNode) => {
|
|
1047
|
-
if (isMenuLeaf(menusNode)) {
|
|
1048
|
-
if (isPaginaComLayout(paginasNode))
|
|
1049
|
-
out.set(getPaginaKey(paginasNode), menusNode);
|
|
1050
|
-
return;
|
|
1051
|
-
}
|
|
1052
|
-
const menusObj = menusNode;
|
|
1053
|
-
const paginasObj = paginasNode;
|
|
1054
|
-
const menuDoProprioNo = menusObj.menu;
|
|
1055
|
-
if (menuDoProprioNo && isMenuLeaf(menuDoProprioNo) && isPaginaComLayout(paginasNode))
|
|
1056
|
-
out.set(getPaginaKey(paginasNode), menuDoProprioNo);
|
|
1057
|
-
for (const k of Object.keys(menusObj)) {
|
|
1058
|
-
if (k === 'menu')
|
|
1059
|
-
continue;
|
|
1060
|
-
const nextMenus = menusObj[k];
|
|
1061
|
-
if (!nextMenus)
|
|
1062
|
-
continue;
|
|
1063
|
-
const nextPaginas = paginasObj[k];
|
|
1064
|
-
if (!nextPaginas || typeof nextPaginas !== 'object')
|
|
1065
|
-
continue;
|
|
1066
|
-
rec(nextPaginas, nextMenus);
|
|
1067
|
-
}
|
|
1068
|
-
};
|
|
1069
|
-
rec(PAGINAS, MENUS_INTERNOS_LAYOUTCONTEXTO.PAGINAS);
|
|
1070
|
-
return out;
|
|
1071
|
-
})();
|
|
1072
|
-
function obterMenuInternoLayoutContexto(pagina) {
|
|
1073
|
-
return MENUS_LAYOUTCONTEXTO_POR_PAGINA.get(getPaginaKey(pagina));
|
|
1074
|
-
}
|
|
1075
|
-
const MENUS_INTERNOS_POR_PAGINA = (() => {
|
|
1076
|
-
const out = new Map();
|
|
1077
|
-
function isObject(v) { return typeof v === 'object' && v !== null; }
|
|
1078
|
-
function hasTemplate(v) { return isObject(v) && 'template' in v; }
|
|
1079
|
-
function getKey(v, k) {
|
|
1080
|
-
if (!isObject(v))
|
|
1081
|
-
return undefined;
|
|
1082
|
-
return v[k];
|
|
1083
|
-
}
|
|
1084
|
-
const rec = (paginasNode, menusNode) => {
|
|
1085
|
-
if (Array.isArray(menusNode)) {
|
|
1086
|
-
if (hasTemplate(paginasNode))
|
|
1087
|
-
out.set(String(paginasNode.template), menusNode);
|
|
1088
|
-
return;
|
|
1089
|
-
}
|
|
1090
|
-
if (!isObject(menusNode))
|
|
1091
|
-
return;
|
|
1092
|
-
for (const k of Object.keys(menusNode)) {
|
|
1093
|
-
const nextPaginas = getKey(paginasNode, k);
|
|
1094
|
-
const nextMenus = getKey(menusNode, k);
|
|
1095
|
-
rec(nextPaginas ?? undefined, nextMenus ?? undefined);
|
|
1096
|
-
}
|
|
1097
|
-
};
|
|
1098
|
-
rec(PAGINAS, MENUS_INTERNOS.PAGINAS);
|
|
1099
|
-
return out;
|
|
1100
|
-
})();
|
|
1101
|
-
function obterMenuInterno(pagina) {
|
|
1102
|
-
return MENUS_INTERNOS_POR_PAGINA.get(getPaginaKey(pagina));
|
|
1103
|
-
}
|
|
1104
|
-
function resolverMenuInterno(pagina) {
|
|
1105
|
-
const nodes = obterMenuInterno(pagina);
|
|
1106
|
-
if (!nodes)
|
|
1107
|
-
return undefined;
|
|
1108
|
-
const folhas = [];
|
|
1109
|
-
const stack = [...nodes];
|
|
1110
|
-
while (stack.length > 0) {
|
|
1111
|
-
const cur = stack.pop();
|
|
1112
|
-
if (cur.tipo === 'item')
|
|
1113
|
-
folhas.push(cur.destino.pagina);
|
|
1114
|
-
if (cur.tipo === 'grupo')
|
|
1115
|
-
stack.push(...cur.itens);
|
|
1116
|
-
}
|
|
1117
|
-
return folhas;
|
|
1118
|
-
}
|
|
1119
|
-
function isNumeroInteiroPositivo(n) { return Number.isInteger(n) && n > 0; }
|
|
1120
|
-
function isNumeroPositivo(n) { return typeof n === 'number' && Number.isFinite(n) && n > 0; }
|
|
1121
|
-
function pushErro(erros, msg) { erros.push(msg); }
|
|
1122
|
-
function validarFormatos(formatos, erros) {
|
|
1123
|
-
if (!Array.isArray(formatos) || formatos.length === 0) {
|
|
1124
|
-
pushErro(erros, 'formatosPermitidos deve ter pelo menos 1 formato.');
|
|
1125
|
-
return;
|
|
1126
|
-
}
|
|
1127
|
-
const set = new Set();
|
|
1128
|
-
for (const f of formatos) {
|
|
1129
|
-
if (f !== 'png' && f !== 'webp' && f !== 'svg')
|
|
1130
|
-
pushErro(erros, `Formato inválido em formatosPermitidos: ${String(f)}`);
|
|
1131
|
-
if (set.has(f))
|
|
1132
|
-
pushErro(erros, `Formato duplicado em formatosPermitidos: ${f}`);
|
|
1133
|
-
set.add(f);
|
|
1134
|
-
}
|
|
1135
|
-
}
|
|
1136
|
-
function validarTamanho(regras, erros) {
|
|
1137
|
-
if (!('tamanho' in regras) || !regras.tamanho)
|
|
1138
|
-
return;
|
|
1139
|
-
const { minBytes, maxBytes } = regras.tamanho;
|
|
1140
|
-
if (minBytes === undefined && maxBytes === undefined)
|
|
1141
|
-
pushErro(erros, 'tamanho não pode ser {}: informe minBytes e/ou maxBytes.');
|
|
1142
|
-
if (minBytes !== undefined && (!isNumeroInteiroPositivo(minBytes) || minBytes < 1))
|
|
1143
|
-
pushErro(erros, 'tamanho.minBytes deve ser inteiro positivo.');
|
|
1144
|
-
if (maxBytes !== undefined && (!isNumeroInteiroPositivo(maxBytes) || maxBytes < 1))
|
|
1145
|
-
pushErro(erros, 'tamanho.maxBytes deve ser inteiro positivo.');
|
|
1146
|
-
if (minBytes !== undefined && maxBytes !== undefined && minBytes > maxBytes)
|
|
1147
|
-
pushErro(erros, 'tamanho.minBytes não pode ser maior que tamanho.maxBytes.');
|
|
1148
|
-
}
|
|
1149
|
-
function validarDimensoesDim(d, path, erros) {
|
|
1150
|
-
if (!isNumeroInteiroPositivo(d.largura))
|
|
1151
|
-
pushErro(erros, `${path}.largura deve ser inteiro positivo.`);
|
|
1152
|
-
if (!isNumeroInteiroPositivo(d.altura))
|
|
1153
|
-
pushErro(erros, `${path}.altura deve ser inteiro positivo.`);
|
|
1154
|
-
}
|
|
1155
|
-
function validarDimensoesRegra(regra, erros) {
|
|
1156
|
-
if (regra.modo === 'exato') {
|
|
1157
|
-
validarDimensoesDim(regra.exato, 'imagem.dimensoes.exato', erros);
|
|
1158
|
-
return;
|
|
1159
|
-
}
|
|
1160
|
-
const min = regra.min;
|
|
1161
|
-
const max = regra.max;
|
|
1162
|
-
if (!min && !max)
|
|
1163
|
-
pushErro(erros, 'imagem.dimensoes (intervalo) exige min e/ou max.');
|
|
1164
|
-
if (min)
|
|
1165
|
-
validarDimensoesDim(min, 'imagem.dimensoes.min', erros);
|
|
1166
|
-
if (max)
|
|
1167
|
-
validarDimensoesDim(max, 'imagem.dimensoes.max', erros);
|
|
1168
|
-
if (min && max) {
|
|
1169
|
-
if (min.largura > max.largura)
|
|
1170
|
-
pushErro(erros, 'imagem.dimensoes.min.largura não pode ser maior que imagem.dimensoes.max.largura.');
|
|
1171
|
-
if (min.altura > max.altura)
|
|
1172
|
-
pushErro(erros, 'imagem.dimensoes.min.altura não pode ser maior que imagem.dimensoes.max.altura.');
|
|
1173
|
-
}
|
|
1174
|
-
}
|
|
1175
|
-
function validarProporcao(regra, erros) {
|
|
1176
|
-
if (!isNumeroInteiroPositivo(regra.largura))
|
|
1177
|
-
pushErro(erros, 'imagem.proporcao.largura deve ser inteiro positivo.');
|
|
1178
|
-
if (!isNumeroInteiroPositivo(regra.altura))
|
|
1179
|
-
pushErro(erros, 'imagem.proporcao.altura deve ser inteiro positivo.');
|
|
1180
|
-
if (regra.toleranciaPercentual !== undefined && (!isNumeroPositivo(regra.toleranciaPercentual) || regra.toleranciaPercentual > 50))
|
|
1181
|
-
pushErro(erros, 'imagem.proporcao.toleranciaPercentual deve ser > 0 e <= 50.');
|
|
1182
|
-
}
|
|
1183
|
-
function validarMaxPixels(maxPixels, erros) {
|
|
1184
|
-
if (maxPixels === undefined)
|
|
1185
|
-
return;
|
|
1186
|
-
if (!isNumeroInteiroPositivo(maxPixels))
|
|
1187
|
-
pushErro(erros, 'imagem.maxPixels deve ser inteiro positivo.');
|
|
1188
|
-
}
|
|
1189
|
-
function validarImagem(regras, erros) {
|
|
1190
|
-
if (!('imagem' in regras) || !regras.imagem)
|
|
1191
|
-
return;
|
|
1192
|
-
const imagem = regras.imagem;
|
|
1193
|
-
if (imagem.tipoValidacao === 'dimensoes') {
|
|
1194
|
-
validarDimensoesRegra(imagem.dimensoes, erros);
|
|
1195
|
-
validarMaxPixels(imagem.maxPixels, erros);
|
|
1196
|
-
return;
|
|
1197
|
-
}
|
|
1198
|
-
if (imagem.tipoValidacao === 'proporcao') {
|
|
1199
|
-
validarProporcao(imagem.proporcao, erros);
|
|
1200
|
-
validarMaxPixels(imagem.maxPixels, erros);
|
|
1201
|
-
return;
|
|
1202
|
-
}
|
|
1203
|
-
if (imagem.tipoValidacao === 'nenhuma') {
|
|
1204
|
-
validarMaxPixels(imagem.maxPixels, erros);
|
|
1205
|
-
return;
|
|
1206
|
-
}
|
|
1207
|
-
pushErro(erros, 'imagem.tipoValidacao inválido.');
|
|
1208
|
-
}
|
|
1209
|
-
function validarRegrasUploadArquivo(regras) {
|
|
1210
|
-
const erros = [];
|
|
1211
|
-
validarFormatos(regras.formatosPermitidos, erros);
|
|
1212
|
-
validarTamanho(regras, erros);
|
|
1213
|
-
validarImagem(regras, erros);
|
|
1214
|
-
return erros.length === 0 ? { ok: true } : { ok: false, erros };
|
|
1215
|
-
}
|
|
1216
|
-
function isRegrasUploadArquivoValidas(regras) { return validarRegrasUploadArquivo(regras).ok; }
|
|
1217
|
-
function mimeFromFormato(formato) {
|
|
1218
|
-
if (formato === 'webp')
|
|
1219
|
-
return 'image/webp';
|
|
1220
|
-
if (formato === 'svg')
|
|
1221
|
-
return 'image/svg+xml';
|
|
1222
|
-
if (formato === 'png')
|
|
1223
|
-
return 'image/png';
|
|
1224
|
-
return null;
|
|
1225
|
-
}
|
|
1226
|
-
function acceptFromFormatos(formatos) { return Array.from(new Set(formatos.map(mimeFromFormato).filter((v) => v !== null))).join(','); }
|
|
1227
|
-
function isFormatoImagemBitmap(formato) { return formato === 'webp' || formato === 'png'; }
|
|
1228
|
-
export { ARQUIVOS_INTERNOS, ATRIBUTOS, CAPACIDADES, CLASSES, ESTATISTICAS_DANIFICAVEIS, ESTILOS_SESSAO_MESTRADA, PASSES, PATENTES_PERICIAS, PERICIAS, PERMISSOES_ESTADOS, PRODUTOS, TIPOS_ARQUIVO, TIPOS_GANHO_NIVEL, TIPOS_PERSONAGEM, temSudoBurlarCapacidades, ApiTransporte, ApiTipoRequisicao, ApiMetodoHttp, createApiGraphqlGet, EventosApi, ARQUIVO_UPLOAD_DEFINICOES, obtemDefinicaoUploadTipoArquivo, criaCaminhoArquivoArte, criaCaminhoArquivoAvatar, RegistroPixProvedor, TipoSessao, TIPO_SESSAO_LABEL, AuthSession, ParticipanteSessao_Tipo, TipoVinculoSessaoJogador, SalaDeJogo_Tipo, SalaDeJogo_Estado, SalaDeJogo_TipoMestre, SalaDeJogo_TipoParticipante, menuItem, menuGrupo, menuVazio, menuDinamico, montarHref, limparUndefined, pagina, paginaComLayoutContextualizado, toParamsRecord, isWsErrorResponse, isWsUnauthorizedErrorResponse, wsErro, wsUnauthorized, wsMap, wsChain, createGateway, EventosWebSocket, isRecord, getEmitDelivery, AventuraEstado, EstadoPendenciaPersonagem, EstadoPendenciaAdministrativaPersonagem, EstadoOcupacaoPersonagem, EstadoSessao, DiaDaSemana, obtemDiaDaSemanaPorExtensoPorDDS, CargoExibicaoUsuario, FormatoMomento, PathAvatarPadrao, PathArteCapaPadrao, momentoParaMinutos, concatenarDataEHoraEmNovaData, pluralize, minutosParaMs, formataDataCompacta, criarEventosFiltrados, Eventos_Envia, Eventos_Emite, Eventos_EnviaERecebe, decidirAcessoPagina, decidirAcessoPagina_Rec, PAGINAS, filtrarMenuPorAcesso, MENU_PRINCIPAL, MENUS_INTERNOS, MENUS_INTERNOS_LAYOUTCONTEXTO, isPaginaComLayout, isMenuLeaf, getPaginaKey, MENUS_LAYOUTCONTEXTO_POR_PAGINA, obterMenuInternoLayoutContexto, MENUS_INTERNOS_POR_PAGINA, obterMenuInterno, resolverMenuInterno, isNumeroInteiroPositivo, isNumeroPositivo, pushErro, validarFormatos, validarTamanho, validarDimensoesDim, validarDimensoesRegra, validarProporcao, validarMaxPixels, validarImagem, validarRegrasUploadArquivo, isRegrasUploadArquivoValidas, mimeFromFormato, acceptFromFormatos, isFormatoImagemBitmap };
|
|
2
|
+
// Gerado automaticamente por gerarTypesNoraApi.ts
|
|
3
|
+
export * from './index';
|