@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.
Files changed (113) hide show
  1. package/dist/apis/audit_service.d.ts +43 -0
  2. package/dist/apis/audit_service.d.ts.map +1 -0
  3. package/dist/apis/audit_service.js +73 -0
  4. package/dist/apis/audit_service.js.map +1 -0
  5. package/dist/apis/auth_service.d.ts +51 -0
  6. package/dist/apis/auth_service.d.ts.map +1 -0
  7. package/dist/apis/auth_service.js +120 -0
  8. package/dist/apis/auth_service.js.map +1 -0
  9. package/dist/apis/console_api.d.ts +34 -0
  10. package/dist/apis/console_api.d.ts.map +1 -0
  11. package/dist/apis/console_api.js +90 -0
  12. package/dist/apis/console_api.js.map +1 -0
  13. package/dist/apis/datetime_api.d.ts +13 -0
  14. package/dist/apis/datetime_api.d.ts.map +1 -0
  15. package/dist/apis/datetime_api.js +89 -0
  16. package/dist/apis/datetime_api.js.map +1 -0
  17. package/dist/apis/http_client.d.ts +32 -0
  18. package/dist/apis/http_client.d.ts.map +1 -0
  19. package/dist/apis/http_client.js +83 -0
  20. package/dist/apis/http_client.js.map +1 -0
  21. package/dist/apis/permission_service.d.ts +18 -0
  22. package/dist/apis/permission_service.d.ts.map +1 -0
  23. package/dist/apis/permission_service.js +56 -0
  24. package/dist/apis/permission_service.js.map +1 -0
  25. package/dist/core/event_loop.d.ts +14 -0
  26. package/dist/core/event_loop.d.ts.map +1 -0
  27. package/dist/core/event_loop.js +60 -0
  28. package/dist/core/event_loop.js.map +1 -0
  29. package/dist/core/memory_manager.d.ts +43 -0
  30. package/dist/core/memory_manager.d.ts.map +1 -0
  31. package/dist/core/memory_manager.js +218 -0
  32. package/dist/core/memory_manager.js.map +1 -0
  33. package/dist/core/runtime.d.ts +18 -0
  34. package/dist/core/runtime.d.ts.map +1 -0
  35. package/dist/core/runtime.js +116 -0
  36. package/dist/core/runtime.js.map +1 -0
  37. package/dist/persistence/local_datastore.d.ts +34 -0
  38. package/dist/persistence/local_datastore.d.ts.map +1 -0
  39. package/dist/persistence/local_datastore.js +112 -0
  40. package/dist/persistence/local_datastore.js.map +1 -0
  41. package/dist/persistence/sync_manager.d.ts +49 -0
  42. package/dist/persistence/sync_manager.d.ts.map +1 -0
  43. package/dist/persistence/sync_manager.js +187 -0
  44. package/dist/persistence/sync_manager.js.map +1 -0
  45. package/dist/pwa/pwa_generator.d.ts +16 -0
  46. package/dist/pwa/pwa_generator.d.ts.map +1 -0
  47. package/dist/pwa/pwa_generator.js +107 -0
  48. package/dist/pwa/pwa_generator.js.map +1 -0
  49. package/dist/stdlib/matematica.d.ts +121 -0
  50. package/dist/stdlib/matematica.d.ts.map +1 -0
  51. package/dist/stdlib/matematica.js +250 -0
  52. package/dist/stdlib/matematica.js.map +1 -0
  53. package/dist/stdlib/moeda.d.ts +129 -0
  54. package/dist/stdlib/moeda.d.ts.map +1 -0
  55. package/dist/stdlib/moeda.js +212 -0
  56. package/dist/stdlib/moeda.js.map +1 -0
  57. package/dist/stdlib/texto.d.ts +101 -0
  58. package/dist/stdlib/texto.d.ts.map +1 -0
  59. package/dist/stdlib/texto.js +205 -0
  60. package/dist/stdlib/texto.js.map +1 -0
  61. package/dist/stdlib/xml.d.ts +77 -0
  62. package/dist/stdlib/xml.d.ts.map +1 -0
  63. package/dist/stdlib/xml.js +212 -0
  64. package/dist/stdlib/xml.js.map +1 -0
  65. package/dist/ui/binding.d.ts +22 -0
  66. package/dist/ui/binding.d.ts.map +1 -0
  67. package/dist/ui/binding.js +62 -0
  68. package/dist/ui/binding.js.map +1 -0
  69. package/dist/ui/components/botao.d.ts +4 -0
  70. package/dist/ui/components/botao.d.ts.map +1 -0
  71. package/dist/ui/components/botao.js +4 -0
  72. package/dist/ui/components/botao.js.map +1 -0
  73. package/dist/ui/components/campo.d.ts +8 -0
  74. package/dist/ui/components/campo.d.ts.map +1 -0
  75. package/dist/ui/components/campo.js +9 -0
  76. package/dist/ui/components/campo.js.map +1 -0
  77. package/dist/ui/components/card.d.ts +4 -0
  78. package/dist/ui/components/card.d.ts.map +1 -0
  79. package/dist/ui/components/card.js +4 -0
  80. package/dist/ui/components/card.js.map +1 -0
  81. package/dist/ui/components/formulario.d.ts +4 -0
  82. package/dist/ui/components/formulario.d.ts.map +1 -0
  83. package/dist/ui/components/formulario.js +4 -0
  84. package/dist/ui/components/formulario.js.map +1 -0
  85. package/dist/ui/components/tabela.d.ts +3 -0
  86. package/dist/ui/components/tabela.d.ts.map +1 -0
  87. package/dist/ui/components/tabela.js +4 -0
  88. package/dist/ui/components/tabela.js.map +1 -0
  89. package/dist/ui/reactive.d.ts +61 -0
  90. package/dist/ui/reactive.d.ts.map +1 -0
  91. package/dist/ui/reactive.js +149 -0
  92. package/dist/ui/reactive.js.map +1 -0
  93. package/dist/ui/refs.d.ts +13 -0
  94. package/dist/ui/refs.d.ts.map +1 -0
  95. package/dist/ui/refs.js +32 -0
  96. package/dist/ui/refs.js.map +1 -0
  97. package/dist/ui/router.d.ts +39 -0
  98. package/dist/ui/router.d.ts.map +1 -0
  99. package/dist/ui/router.js +74 -0
  100. package/dist/ui/router.js.map +1 -0
  101. package/dist/ui/theme.d.ts +19 -0
  102. package/dist/ui/theme.d.ts.map +1 -0
  103. package/dist/ui/theme.js +183 -0
  104. package/dist/ui/theme.js.map +1 -0
  105. package/dist/ui/ui_engine.d.ts +89 -0
  106. package/dist/ui/ui_engine.d.ts.map +1 -0
  107. package/dist/ui/ui_engine.js +406 -0
  108. package/dist/ui/ui_engine.js.map +1 -0
  109. package/dist/ui/virtual_list.d.ts +29 -0
  110. package/dist/ui/virtual_list.d.ts.map +1 -0
  111. package/dist/ui/virtual_list.js +88 -0
  112. package/dist/ui/virtual_list.js.map +1 -0
  113. 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"}