@yakuzaa/jade-runtime 0.1.0
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/apis/audit_service.d.ts +43 -0
- package/dist/apis/audit_service.d.ts.map +1 -0
- package/dist/apis/audit_service.js +73 -0
- package/dist/apis/audit_service.js.map +1 -0
- package/dist/apis/auth_service.d.ts +51 -0
- package/dist/apis/auth_service.d.ts.map +1 -0
- package/dist/apis/auth_service.js +120 -0
- package/dist/apis/auth_service.js.map +1 -0
- package/dist/apis/console_api.d.ts +34 -0
- package/dist/apis/console_api.d.ts.map +1 -0
- package/dist/apis/console_api.js +90 -0
- package/dist/apis/console_api.js.map +1 -0
- package/dist/apis/datetime_api.d.ts +13 -0
- package/dist/apis/datetime_api.d.ts.map +1 -0
- package/dist/apis/datetime_api.js +89 -0
- package/dist/apis/datetime_api.js.map +1 -0
- package/dist/apis/http_client.d.ts +32 -0
- package/dist/apis/http_client.d.ts.map +1 -0
- package/dist/apis/http_client.js +83 -0
- package/dist/apis/http_client.js.map +1 -0
- package/dist/apis/permission_service.d.ts +18 -0
- package/dist/apis/permission_service.d.ts.map +1 -0
- package/dist/apis/permission_service.js +56 -0
- package/dist/apis/permission_service.js.map +1 -0
- package/dist/core/event_loop.d.ts +14 -0
- package/dist/core/event_loop.d.ts.map +1 -0
- package/dist/core/event_loop.js +60 -0
- package/dist/core/event_loop.js.map +1 -0
- package/dist/core/memory_manager.d.ts +43 -0
- package/dist/core/memory_manager.d.ts.map +1 -0
- package/dist/core/memory_manager.js +218 -0
- package/dist/core/memory_manager.js.map +1 -0
- package/dist/core/runtime.d.ts +18 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +116 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/persistence/local_datastore.d.ts +34 -0
- package/dist/persistence/local_datastore.d.ts.map +1 -0
- package/dist/persistence/local_datastore.js +112 -0
- package/dist/persistence/local_datastore.js.map +1 -0
- package/dist/persistence/sync_manager.d.ts +49 -0
- package/dist/persistence/sync_manager.d.ts.map +1 -0
- package/dist/persistence/sync_manager.js +187 -0
- package/dist/persistence/sync_manager.js.map +1 -0
- package/dist/pwa/pwa_generator.d.ts +16 -0
- package/dist/pwa/pwa_generator.d.ts.map +1 -0
- package/dist/pwa/pwa_generator.js +107 -0
- package/dist/pwa/pwa_generator.js.map +1 -0
- package/dist/stdlib/matematica.d.ts +121 -0
- package/dist/stdlib/matematica.d.ts.map +1 -0
- package/dist/stdlib/matematica.js +250 -0
- package/dist/stdlib/matematica.js.map +1 -0
- package/dist/stdlib/moeda.d.ts +129 -0
- package/dist/stdlib/moeda.d.ts.map +1 -0
- package/dist/stdlib/moeda.js +212 -0
- package/dist/stdlib/moeda.js.map +1 -0
- package/dist/stdlib/texto.d.ts +101 -0
- package/dist/stdlib/texto.d.ts.map +1 -0
- package/dist/stdlib/texto.js +205 -0
- package/dist/stdlib/texto.js.map +1 -0
- package/dist/stdlib/xml.d.ts +77 -0
- package/dist/stdlib/xml.d.ts.map +1 -0
- package/dist/stdlib/xml.js +212 -0
- package/dist/stdlib/xml.js.map +1 -0
- package/dist/ui/binding.d.ts +22 -0
- package/dist/ui/binding.d.ts.map +1 -0
- package/dist/ui/binding.js +62 -0
- package/dist/ui/binding.js.map +1 -0
- package/dist/ui/components/botao.d.ts +4 -0
- package/dist/ui/components/botao.d.ts.map +1 -0
- package/dist/ui/components/botao.js +4 -0
- package/dist/ui/components/botao.js.map +1 -0
- package/dist/ui/components/campo.d.ts +8 -0
- package/dist/ui/components/campo.d.ts.map +1 -0
- package/dist/ui/components/campo.js +9 -0
- package/dist/ui/components/campo.js.map +1 -0
- package/dist/ui/components/card.d.ts +4 -0
- package/dist/ui/components/card.d.ts.map +1 -0
- package/dist/ui/components/card.js +4 -0
- package/dist/ui/components/card.js.map +1 -0
- package/dist/ui/components/formulario.d.ts +4 -0
- package/dist/ui/components/formulario.d.ts.map +1 -0
- package/dist/ui/components/formulario.js +4 -0
- package/dist/ui/components/formulario.js.map +1 -0
- package/dist/ui/components/tabela.d.ts +3 -0
- package/dist/ui/components/tabela.d.ts.map +1 -0
- package/dist/ui/components/tabela.js +4 -0
- package/dist/ui/components/tabela.js.map +1 -0
- package/dist/ui/reactive.d.ts +61 -0
- package/dist/ui/reactive.d.ts.map +1 -0
- package/dist/ui/reactive.js +149 -0
- package/dist/ui/reactive.js.map +1 -0
- package/dist/ui/refs.d.ts +13 -0
- package/dist/ui/refs.d.ts.map +1 -0
- package/dist/ui/refs.js +32 -0
- package/dist/ui/refs.js.map +1 -0
- package/dist/ui/router.d.ts +39 -0
- package/dist/ui/router.d.ts.map +1 -0
- package/dist/ui/router.js +74 -0
- package/dist/ui/router.js.map +1 -0
- package/dist/ui/theme.d.ts +19 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +183 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/ui_engine.d.ts +89 -0
- package/dist/ui/ui_engine.d.ts.map +1 -0
- package/dist/ui/ui_engine.js +406 -0
- package/dist/ui/ui_engine.js.map +1 -0
- package/dist/ui/virtual_list.d.ts +29 -0
- package/dist/ui/virtual_list.d.ts.map +1 -0
- package/dist/ui/virtual_list.js +88 -0
- package/dist/ui/virtual_list.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export type AuditAction = 'criar' | 'atualizar' | 'excluir' | 'visualizar' | 'login' | 'logout' | string;
|
|
2
|
+
export interface AuditLog {
|
|
3
|
+
id: string;
|
|
4
|
+
timestamp: string;
|
|
5
|
+
tabela: string;
|
|
6
|
+
registroId?: string;
|
|
7
|
+
usuario: string;
|
|
8
|
+
acao: AuditAction;
|
|
9
|
+
campo?: string;
|
|
10
|
+
valorAntigo?: any;
|
|
11
|
+
valorNovo?: any;
|
|
12
|
+
ip?: string;
|
|
13
|
+
detalhes?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AuditFilter {
|
|
16
|
+
tabela?: string;
|
|
17
|
+
usuario?: string;
|
|
18
|
+
acao?: AuditAction;
|
|
19
|
+
dataInicio?: string;
|
|
20
|
+
dataFim?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare class AuditService {
|
|
23
|
+
private logs;
|
|
24
|
+
private enabled;
|
|
25
|
+
private maxLogs;
|
|
26
|
+
private currentUser;
|
|
27
|
+
enable(): void;
|
|
28
|
+
disable(): void;
|
|
29
|
+
setCurrentUser(username: string): void;
|
|
30
|
+
log(entry: Omit<AuditLog, 'id' | 'timestamp' | 'usuario'> & {
|
|
31
|
+
usuario?: string;
|
|
32
|
+
}): void;
|
|
33
|
+
logCriar(tabela: string, registroId: string, dados?: any): void;
|
|
34
|
+
logAtualizar(tabela: string, registroId: string, campo: string, antigo: any, novo: any): void;
|
|
35
|
+
logExcluir(tabela: string, registroId: string, dados?: any): void;
|
|
36
|
+
logLogin(usuario: string, ip?: string): void;
|
|
37
|
+
logLogout(usuario: string): void;
|
|
38
|
+
query(filter?: AuditFilter): AuditLog[];
|
|
39
|
+
clear(): void;
|
|
40
|
+
count(): number;
|
|
41
|
+
private generateId;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=audit_service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit_service.d.ts","sourceRoot":"","sources":["../../apis/audit_service.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzG,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAqB;IAExC,MAAM,IAAI,IAAI;IACd,OAAO,IAAI,IAAI;IAEf,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKtC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAmBvF,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAI/D,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI;IAI7F,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAIjE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5C,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKhC,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,QAAQ,EAAE;IAsBvC,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,MAAM;IAIf,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export class AuditService {
|
|
2
|
+
logs = [];
|
|
3
|
+
enabled = true;
|
|
4
|
+
maxLogs = 10000;
|
|
5
|
+
currentUser = 'sistema';
|
|
6
|
+
enable() { this.enabled = true; }
|
|
7
|
+
disable() { this.enabled = false; }
|
|
8
|
+
setCurrentUser(username) {
|
|
9
|
+
this.currentUser = username;
|
|
10
|
+
}
|
|
11
|
+
// Registra ação de auditoria
|
|
12
|
+
log(entry) {
|
|
13
|
+
if (!this.enabled)
|
|
14
|
+
return;
|
|
15
|
+
const auditLog = {
|
|
16
|
+
id: this.generateId(),
|
|
17
|
+
timestamp: new Date().toISOString(),
|
|
18
|
+
usuario: entry.usuario ?? this.currentUser,
|
|
19
|
+
...entry
|
|
20
|
+
};
|
|
21
|
+
this.logs.push(auditLog);
|
|
22
|
+
// Manter limite de logs em memória
|
|
23
|
+
if (this.logs.length > this.maxLogs) {
|
|
24
|
+
this.logs.shift();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Atalhos para ações comuns
|
|
28
|
+
logCriar(tabela, registroId, dados) {
|
|
29
|
+
this.log({ tabela, registroId, acao: 'criar', valorNovo: dados });
|
|
30
|
+
}
|
|
31
|
+
logAtualizar(tabela, registroId, campo, antigo, novo) {
|
|
32
|
+
this.log({ tabela, registroId, acao: 'atualizar', campo, valorAntigo: antigo, valorNovo: novo });
|
|
33
|
+
}
|
|
34
|
+
logExcluir(tabela, registroId, dados) {
|
|
35
|
+
this.log({ tabela, registroId, acao: 'excluir', valorAntigo: dados });
|
|
36
|
+
}
|
|
37
|
+
logLogin(usuario, ip) {
|
|
38
|
+
this.log({ tabela: 'sessao', acao: 'login', usuario, ip });
|
|
39
|
+
}
|
|
40
|
+
logLogout(usuario) {
|
|
41
|
+
this.log({ tabela: 'sessao', acao: 'logout', usuario });
|
|
42
|
+
}
|
|
43
|
+
// Consulta logs com filtros
|
|
44
|
+
query(filter) {
|
|
45
|
+
let result = [...this.logs];
|
|
46
|
+
if (filter?.tabela) {
|
|
47
|
+
result = result.filter(l => l.tabela === filter.tabela);
|
|
48
|
+
}
|
|
49
|
+
if (filter?.usuario) {
|
|
50
|
+
result = result.filter(l => l.usuario === filter.usuario);
|
|
51
|
+
}
|
|
52
|
+
if (filter?.acao) {
|
|
53
|
+
result = result.filter(l => l.acao === filter.acao);
|
|
54
|
+
}
|
|
55
|
+
if (filter?.dataInicio) {
|
|
56
|
+
result = result.filter(l => l.timestamp >= filter.dataInicio);
|
|
57
|
+
}
|
|
58
|
+
if (filter?.dataFim) {
|
|
59
|
+
result = result.filter(l => l.timestamp <= filter.dataFim);
|
|
60
|
+
}
|
|
61
|
+
return result.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
|
|
62
|
+
}
|
|
63
|
+
clear() {
|
|
64
|
+
this.logs = [];
|
|
65
|
+
}
|
|
66
|
+
count() {
|
|
67
|
+
return this.logs.length;
|
|
68
|
+
}
|
|
69
|
+
generateId() {
|
|
70
|
+
return `audit_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=audit_service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit_service.js","sourceRoot":"","sources":["../../apis/audit_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface LoginCredentials {
|
|
2
|
+
username: string;
|
|
3
|
+
password: string;
|
|
4
|
+
rememberMe?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface User {
|
|
7
|
+
id: string;
|
|
8
|
+
username: string;
|
|
9
|
+
email: string;
|
|
10
|
+
roles: string[];
|
|
11
|
+
permissions: string[];
|
|
12
|
+
passwordHash?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AuthResult {
|
|
15
|
+
user: Omit<User, 'passwordHash'>;
|
|
16
|
+
accessToken: string;
|
|
17
|
+
refreshToken: string;
|
|
18
|
+
expiresIn: number;
|
|
19
|
+
}
|
|
20
|
+
export interface TokenPayload {
|
|
21
|
+
userId: string;
|
|
22
|
+
username: string;
|
|
23
|
+
roles: string[];
|
|
24
|
+
permissions: string[];
|
|
25
|
+
exp: number;
|
|
26
|
+
iat: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class AuthService {
|
|
29
|
+
private users;
|
|
30
|
+
private sessions;
|
|
31
|
+
private jwtSecret;
|
|
32
|
+
private tokenExpirySeconds;
|
|
33
|
+
constructor(jwtSecret?: string, tokenExpirySeconds?: number);
|
|
34
|
+
register(userData: {
|
|
35
|
+
username: string;
|
|
36
|
+
email: string;
|
|
37
|
+
password: string;
|
|
38
|
+
roles?: string[];
|
|
39
|
+
permissions?: string[];
|
|
40
|
+
}): Promise<Omit<User, 'passwordHash'>>;
|
|
41
|
+
login(credentials: LoginCredentials): Promise<AuthResult>;
|
|
42
|
+
logout(refreshToken: string): Promise<void>;
|
|
43
|
+
verifyToken(token: string): TokenPayload;
|
|
44
|
+
refreshToken(refreshToken: string): Promise<string>;
|
|
45
|
+
private findUserByUsername;
|
|
46
|
+
private hashPassword;
|
|
47
|
+
private generateToken;
|
|
48
|
+
private sign;
|
|
49
|
+
private generateId;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=auth_service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth_service.d.ts","sourceRoot":"","sources":["../../apis/auth_service.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,QAAQ,CAAiE;IACjF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,SAAS,GAAE,MAA0B,EAAE,kBAAkB,GAAE,MAAc;IAM/E,QAAQ,CAAC,QAAQ,EAAE;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAoBjC,KAAK,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IA4BzD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAwBlC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAczD,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { createHmac, randomUUID } from 'crypto';
|
|
2
|
+
export class AuthService {
|
|
3
|
+
users = new Map();
|
|
4
|
+
sessions = new Map();
|
|
5
|
+
jwtSecret;
|
|
6
|
+
tokenExpirySeconds;
|
|
7
|
+
constructor(jwtSecret = 'jade-secret-key', tokenExpirySeconds = 86400) {
|
|
8
|
+
this.jwtSecret = jwtSecret;
|
|
9
|
+
this.tokenExpirySeconds = tokenExpirySeconds;
|
|
10
|
+
}
|
|
11
|
+
// Registra usuário no sistema
|
|
12
|
+
async register(userData) {
|
|
13
|
+
if (this.findUserByUsername(userData.username)) {
|
|
14
|
+
throw new Error(`Usuário '${userData.username}' já existe`);
|
|
15
|
+
}
|
|
16
|
+
const user = {
|
|
17
|
+
id: this.generateId(),
|
|
18
|
+
username: userData.username,
|
|
19
|
+
email: userData.email,
|
|
20
|
+
roles: userData.roles ?? ['usuario'],
|
|
21
|
+
permissions: userData.permissions ?? [],
|
|
22
|
+
passwordHash: this.hashPassword(userData.password)
|
|
23
|
+
};
|
|
24
|
+
this.users.set(user.id, user);
|
|
25
|
+
const { passwordHash, ...safeUser } = user;
|
|
26
|
+
return safeUser;
|
|
27
|
+
}
|
|
28
|
+
// Login — retorna tokens
|
|
29
|
+
async login(credentials) {
|
|
30
|
+
const user = this.findUserByUsername(credentials.username);
|
|
31
|
+
if (!user) {
|
|
32
|
+
throw new Error('Usuário ou senha inválidos');
|
|
33
|
+
}
|
|
34
|
+
const hash = this.hashPassword(credentials.password);
|
|
35
|
+
if (hash !== user.passwordHash) {
|
|
36
|
+
throw new Error('Usuário ou senha inválidos');
|
|
37
|
+
}
|
|
38
|
+
const expiresIn = credentials.rememberMe
|
|
39
|
+
? this.tokenExpirySeconds * 7 // 7 dias
|
|
40
|
+
: this.tokenExpirySeconds; // 1 dia
|
|
41
|
+
const accessToken = this.generateToken(user, expiresIn);
|
|
42
|
+
const refreshToken = this.generateId();
|
|
43
|
+
this.sessions.set(refreshToken, {
|
|
44
|
+
userId: user.id,
|
|
45
|
+
expiresAt: Date.now() + expiresIn * 1000
|
|
46
|
+
});
|
|
47
|
+
const { passwordHash, ...safeUser } = user;
|
|
48
|
+
return { user: safeUser, accessToken, refreshToken, expiresIn };
|
|
49
|
+
}
|
|
50
|
+
// Logout — invalida refresh token
|
|
51
|
+
async logout(refreshToken) {
|
|
52
|
+
this.sessions.delete(refreshToken);
|
|
53
|
+
}
|
|
54
|
+
// Verifica token JWT e retorna payload
|
|
55
|
+
verifyToken(token) {
|
|
56
|
+
try {
|
|
57
|
+
const [headerB64, payloadB64, signature] = token.split('.');
|
|
58
|
+
const expectedSig = this.sign(`${headerB64}.${payloadB64}`);
|
|
59
|
+
if (signature !== expectedSig) {
|
|
60
|
+
throw new Error('Assinatura inválida');
|
|
61
|
+
}
|
|
62
|
+
const payload = JSON.parse(Buffer.from(payloadB64, 'base64url').toString());
|
|
63
|
+
if (payload.exp < Math.floor(Date.now() / 1000)) {
|
|
64
|
+
throw new Error('Token expirado');
|
|
65
|
+
}
|
|
66
|
+
return payload;
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
throw new Error(`Token inválido: ${e.message}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Refresh — gera novo access token
|
|
73
|
+
async refreshToken(refreshToken) {
|
|
74
|
+
const session = this.sessions.get(refreshToken);
|
|
75
|
+
if (!session || session.expiresAt < Date.now()) {
|
|
76
|
+
this.sessions.delete(refreshToken);
|
|
77
|
+
throw new Error('Sessão expirada. Faça login novamente.');
|
|
78
|
+
}
|
|
79
|
+
const user = this.users.get(session.userId);
|
|
80
|
+
if (!user)
|
|
81
|
+
throw new Error('Usuário não encontrado');
|
|
82
|
+
return this.generateToken(user, this.tokenExpirySeconds);
|
|
83
|
+
}
|
|
84
|
+
// Utilitários privados
|
|
85
|
+
findUserByUsername(username) {
|
|
86
|
+
for (const user of this.users.values()) {
|
|
87
|
+
if (user.username === username)
|
|
88
|
+
return user;
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
hashPassword(password) {
|
|
93
|
+
return createHmac('sha256', this.jwtSecret)
|
|
94
|
+
.update(password)
|
|
95
|
+
.digest('hex');
|
|
96
|
+
}
|
|
97
|
+
generateToken(user, expiresIn) {
|
|
98
|
+
const header = Buffer.from(JSON.stringify({ alg: 'HS256', typ: 'JWT' }))
|
|
99
|
+
.toString('base64url');
|
|
100
|
+
const payload = Buffer.from(JSON.stringify({
|
|
101
|
+
userId: user.id,
|
|
102
|
+
username: user.username,
|
|
103
|
+
roles: user.roles,
|
|
104
|
+
permissions: user.permissions,
|
|
105
|
+
iat: Math.floor(Date.now() / 1000),
|
|
106
|
+
exp: Math.floor(Date.now() / 1000) + expiresIn
|
|
107
|
+
})).toString('base64url');
|
|
108
|
+
const signature = this.sign(`${header}.${payload}`);
|
|
109
|
+
return `${header}.${payload}.${signature}`;
|
|
110
|
+
}
|
|
111
|
+
sign(data) {
|
|
112
|
+
return createHmac('sha256', this.jwtSecret)
|
|
113
|
+
.update(data)
|
|
114
|
+
.digest('base64url');
|
|
115
|
+
}
|
|
116
|
+
generateId() {
|
|
117
|
+
return randomUUID();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=auth_service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth_service.js","sourceRoot":"","sources":["../../apis/auth_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
2
|
+
export interface LogEntry {
|
|
3
|
+
level: LogLevel;
|
|
4
|
+
message: string;
|
|
5
|
+
args: any[];
|
|
6
|
+
timestamp: string;
|
|
7
|
+
group?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class ConsoleAPI {
|
|
10
|
+
private minLevel;
|
|
11
|
+
private currentGroup;
|
|
12
|
+
private timers;
|
|
13
|
+
private counters;
|
|
14
|
+
private history;
|
|
15
|
+
private maxHistory;
|
|
16
|
+
private levels;
|
|
17
|
+
setLevel(level: LogLevel): void;
|
|
18
|
+
getHistory(): LogEntry[];
|
|
19
|
+
debug(...args: any[]): void;
|
|
20
|
+
info(...args: any[]): void;
|
|
21
|
+
warn(...args: any[]): void;
|
|
22
|
+
error(...args: any[]): void;
|
|
23
|
+
log(level: LogLevel, ...args: any[]): void;
|
|
24
|
+
table(data: any[]): void;
|
|
25
|
+
group(label?: string): void;
|
|
26
|
+
groupEnd(): void;
|
|
27
|
+
time(label?: string): void;
|
|
28
|
+
timeEnd(label?: string): number;
|
|
29
|
+
count(label?: string): number;
|
|
30
|
+
countReset(label?: string): void;
|
|
31
|
+
assert(condition: boolean, message?: string): void;
|
|
32
|
+
clear(): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=console_api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console_api.d.ts","sourceRoot":"","sources":["../../apis/console_api.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,MAAM,CAEZ;IAEF,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,UAAU,IAAI,QAAQ,EAAE;IAIxB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAC3B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAC1B,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAC1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAE3B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAgC1C,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIxB,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAK3B,QAAQ,IAAI,IAAI;IAKhB,IAAI,CAAC,KAAK,GAAE,MAAkB,GAAG,IAAI;IAIrC,OAAO,CAAC,KAAK,GAAE,MAAkB,GAAG,MAAM;IAY1C,KAAK,CAAC,KAAK,GAAE,MAAkB,GAAG,MAAM;IAOxC,UAAU,CAAC,KAAK,GAAE,MAAkB,GAAG,IAAI;IAI3C,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAOlD,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export class ConsoleAPI {
|
|
2
|
+
minLevel = 'debug';
|
|
3
|
+
currentGroup = null;
|
|
4
|
+
timers = new Map();
|
|
5
|
+
counters = new Map();
|
|
6
|
+
history = [];
|
|
7
|
+
maxHistory = 1000;
|
|
8
|
+
levels = {
|
|
9
|
+
debug: 0, info: 1, warn: 2, error: 3
|
|
10
|
+
};
|
|
11
|
+
setLevel(level) {
|
|
12
|
+
this.minLevel = level;
|
|
13
|
+
}
|
|
14
|
+
getHistory() {
|
|
15
|
+
return [...this.history];
|
|
16
|
+
}
|
|
17
|
+
debug(...args) { this.log('debug', ...args); }
|
|
18
|
+
info(...args) { this.log('info', ...args); }
|
|
19
|
+
warn(...args) { this.log('warn', ...args); }
|
|
20
|
+
error(...args) { this.log('error', ...args); }
|
|
21
|
+
log(level, ...args) {
|
|
22
|
+
if (this.levels[level] < this.levels[this.minLevel])
|
|
23
|
+
return;
|
|
24
|
+
const message = args.map(a => typeof a === 'object' ? JSON.stringify(a) : String(a)).join(' ');
|
|
25
|
+
const indent = this.currentGroup ? ' ' : '';
|
|
26
|
+
const prefix = this.currentGroup ? `[${this.currentGroup}] ` : '';
|
|
27
|
+
const timestamp = new Date().toISOString();
|
|
28
|
+
const entry = {
|
|
29
|
+
level,
|
|
30
|
+
message: `${prefix}${message}`,
|
|
31
|
+
args,
|
|
32
|
+
timestamp,
|
|
33
|
+
group: this.currentGroup ?? undefined
|
|
34
|
+
};
|
|
35
|
+
this.history.push(entry);
|
|
36
|
+
if (this.history.length > this.maxHistory) {
|
|
37
|
+
this.history.shift();
|
|
38
|
+
}
|
|
39
|
+
const consoleFn = level === 'debug' ? console.debug
|
|
40
|
+
: level === 'warn' ? console.warn
|
|
41
|
+
: level === 'error' ? console.error
|
|
42
|
+
: console.log;
|
|
43
|
+
consoleFn(`[JADE ${level.toUpperCase()}] ${indent}${prefix}${message}`);
|
|
44
|
+
}
|
|
45
|
+
table(data) {
|
|
46
|
+
console.table(data);
|
|
47
|
+
}
|
|
48
|
+
group(label) {
|
|
49
|
+
this.currentGroup = label ?? 'grupo';
|
|
50
|
+
console.group(label);
|
|
51
|
+
}
|
|
52
|
+
groupEnd() {
|
|
53
|
+
this.currentGroup = null;
|
|
54
|
+
console.groupEnd();
|
|
55
|
+
}
|
|
56
|
+
time(label = 'default') {
|
|
57
|
+
this.timers.set(label, Date.now());
|
|
58
|
+
}
|
|
59
|
+
timeEnd(label = 'default') {
|
|
60
|
+
const start = this.timers.get(label);
|
|
61
|
+
if (start === undefined) {
|
|
62
|
+
this.warn(`Timer '${label}' não iniciado`);
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
const elapsed = Date.now() - start;
|
|
66
|
+
this.timers.delete(label);
|
|
67
|
+
this.info(`${label}: ${elapsed}ms`);
|
|
68
|
+
return elapsed;
|
|
69
|
+
}
|
|
70
|
+
count(label = 'default') {
|
|
71
|
+
const current = (this.counters.get(label) ?? 0) + 1;
|
|
72
|
+
this.counters.set(label, current);
|
|
73
|
+
this.info(`${label}: ${current}`);
|
|
74
|
+
return current;
|
|
75
|
+
}
|
|
76
|
+
countReset(label = 'default') {
|
|
77
|
+
this.counters.delete(label);
|
|
78
|
+
}
|
|
79
|
+
assert(condition, message) {
|
|
80
|
+
if (!condition) {
|
|
81
|
+
this.error('Assertion falhou:', message ?? 'sem mensagem');
|
|
82
|
+
throw new Error(`[JADE Assert] ${message ?? 'Assertion falhou'}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
clear() {
|
|
86
|
+
this.history = [];
|
|
87
|
+
console.clear();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=console_api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console_api.js","sourceRoot":"","sources":["../../apis/console_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type TimeUnit = 'anos' | 'meses' | 'dias' | 'horas' | 'minutos' | 'segundos' | 'milissegundos';
|
|
2
|
+
export declare class DateTimeAPI {
|
|
3
|
+
agora(): Date;
|
|
4
|
+
hoje(): Date;
|
|
5
|
+
formatar(date: Date, formato: string): string;
|
|
6
|
+
parsear(str: string, formato: string): Date;
|
|
7
|
+
adicionar(date: Date, quantidade: number, unidade: TimeUnit): Date;
|
|
8
|
+
subtrair(date: Date, quantidade: number, unidade: TimeUnit): Date;
|
|
9
|
+
diferenca(data1: Date, data2: Date, unidade?: TimeUnit): number;
|
|
10
|
+
eValida(valor: any): boolean;
|
|
11
|
+
eAnoBissexto(ano: number): boolean;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=datetime_api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime_api.d.ts","sourceRoot":"","sources":["../../apis/datetime_api.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,CAAC;AAEtG,qBAAa,WAAW;IAEtB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAOZ,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAa7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAuB3C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAelE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI;IAKjE,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,GAAE,QAAiB,GAAG,MAAM;IAcvE,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI5B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGnC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export class DateTimeAPI {
|
|
2
|
+
// Data e hora atual
|
|
3
|
+
agora() {
|
|
4
|
+
return new Date();
|
|
5
|
+
}
|
|
6
|
+
hoje() {
|
|
7
|
+
const d = new Date();
|
|
8
|
+
d.setHours(0, 0, 0, 0);
|
|
9
|
+
return d;
|
|
10
|
+
}
|
|
11
|
+
// Formata data — suporta dd/MM/yyyy HH:mm:ss e variações
|
|
12
|
+
formatar(date, formato) {
|
|
13
|
+
const pad = (n, len = 2) => String(n).padStart(len, '0');
|
|
14
|
+
return formato
|
|
15
|
+
.replace('yyyy', String(date.getFullYear()))
|
|
16
|
+
.replace('MM', pad(date.getMonth() + 1))
|
|
17
|
+
.replace('dd', pad(date.getDate()))
|
|
18
|
+
.replace('HH', pad(date.getHours()))
|
|
19
|
+
.replace('mm', pad(date.getMinutes()))
|
|
20
|
+
.replace('ss', pad(date.getSeconds()))
|
|
21
|
+
.replace('SSS', pad(date.getMilliseconds(), 3));
|
|
22
|
+
}
|
|
23
|
+
// Parseia string de data
|
|
24
|
+
parsear(str, formato) {
|
|
25
|
+
const tokens = {};
|
|
26
|
+
const fmtParts = formato.match(/yyyy|MM|dd|HH|mm|ss/g) ?? [];
|
|
27
|
+
let regex = formato.replace(/yyyy|MM|dd|HH|mm|ss/g, '(\\d+)');
|
|
28
|
+
const match = str.match(new RegExp(regex));
|
|
29
|
+
if (!match)
|
|
30
|
+
throw new Error(`Não foi possível parsear '${str}' com formato '${formato}'`);
|
|
31
|
+
fmtParts.forEach((part, i) => {
|
|
32
|
+
tokens[part] = parseInt(match[i + 1]);
|
|
33
|
+
});
|
|
34
|
+
return new Date(tokens['yyyy'] ?? 0, (tokens['MM'] ?? 1) - 1, tokens['dd'] ?? 1, tokens['HH'] ?? 0, tokens['mm'] ?? 0, tokens['ss'] ?? 0);
|
|
35
|
+
}
|
|
36
|
+
// Adiciona unidade de tempo
|
|
37
|
+
adicionar(date, quantidade, unidade) {
|
|
38
|
+
const d = new Date(date);
|
|
39
|
+
switch (unidade) {
|
|
40
|
+
case 'anos':
|
|
41
|
+
d.setFullYear(d.getFullYear() + quantidade);
|
|
42
|
+
break;
|
|
43
|
+
case 'meses':
|
|
44
|
+
d.setMonth(d.getMonth() + quantidade);
|
|
45
|
+
break;
|
|
46
|
+
case 'dias':
|
|
47
|
+
d.setDate(d.getDate() + quantidade);
|
|
48
|
+
break;
|
|
49
|
+
case 'horas':
|
|
50
|
+
d.setHours(d.getHours() + quantidade);
|
|
51
|
+
break;
|
|
52
|
+
case 'minutos':
|
|
53
|
+
d.setMinutes(d.getMinutes() + quantidade);
|
|
54
|
+
break;
|
|
55
|
+
case 'segundos':
|
|
56
|
+
d.setSeconds(d.getSeconds() + quantidade);
|
|
57
|
+
break;
|
|
58
|
+
case 'milissegundos':
|
|
59
|
+
d.setMilliseconds(d.getMilliseconds() + quantidade);
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
return d;
|
|
63
|
+
}
|
|
64
|
+
// Subtrai unidade de tempo
|
|
65
|
+
subtrair(date, quantidade, unidade) {
|
|
66
|
+
return this.adicionar(date, -quantidade, unidade);
|
|
67
|
+
}
|
|
68
|
+
// Diferença entre datas na unidade especificada
|
|
69
|
+
diferenca(data1, data2, unidade = 'dias') {
|
|
70
|
+
const ms = Math.abs(data2.getTime() - data1.getTime());
|
|
71
|
+
switch (unidade) {
|
|
72
|
+
case 'milissegundos': return ms;
|
|
73
|
+
case 'segundos': return Math.floor(ms / 1000);
|
|
74
|
+
case 'minutos': return Math.floor(ms / 60000);
|
|
75
|
+
case 'horas': return Math.floor(ms / 3600000);
|
|
76
|
+
case 'dias': return Math.floor(ms / 86400000);
|
|
77
|
+
case 'meses': return Math.floor(ms / (86400000 * 30));
|
|
78
|
+
case 'anos': return Math.floor(ms / (86400000 * 365));
|
|
79
|
+
default: return ms;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
eValida(valor) {
|
|
83
|
+
return valor instanceof Date && !isNaN(valor.getTime());
|
|
84
|
+
}
|
|
85
|
+
eAnoBissexto(ano) {
|
|
86
|
+
return (ano % 4 === 0 && ano % 100 !== 0) || (ano % 400 === 0);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=datetime_api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime_api.js","sourceRoot":"","sources":["../../apis/datetime_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface RequestOptions {
|
|
2
|
+
headers?: Record<string, string>;
|
|
3
|
+
params?: Record<string, any>;
|
|
4
|
+
timeout?: number;
|
|
5
|
+
retries?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface HttpResponse<T = any> {
|
|
8
|
+
data: T;
|
|
9
|
+
status: number;
|
|
10
|
+
headers: Record<string, string>;
|
|
11
|
+
ok: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare class HttpClient {
|
|
14
|
+
private defaultHeaders;
|
|
15
|
+
private interceptors;
|
|
16
|
+
setDefaultHeaders(headers: Record<string, string>): void;
|
|
17
|
+
addInterceptor(fn: (config: any) => any): void;
|
|
18
|
+
get<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
|
|
19
|
+
post<T>(url: string, data?: any, options?: RequestOptions): Promise<HttpResponse<T>>;
|
|
20
|
+
put<T>(url: string, data?: any, options?: RequestOptions): Promise<HttpResponse<T>>;
|
|
21
|
+
delete<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
|
|
22
|
+
request<T>(config: {
|
|
23
|
+
method: string;
|
|
24
|
+
url: string;
|
|
25
|
+
data?: any;
|
|
26
|
+
headers?: Record<string, string>;
|
|
27
|
+
params?: Record<string, any>;
|
|
28
|
+
timeout?: number;
|
|
29
|
+
retries?: number;
|
|
30
|
+
}): Promise<HttpResponse<T>>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=http_client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http_client.d.ts","sourceRoot":"","sources":["../../apis/http_client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,EAAE,EAAE,OAAO,CAAC;CACb;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAEpB;IACF,OAAO,CAAC,YAAY,CAAmC;IAGvD,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKxD,cAAc,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,GAAG,IAAI;IAIxC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIvE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAIpF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAInF,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAI1E,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAoE7B"}
|