@navservice/core 1.113.0 → 1.114.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.
@@ -0,0 +1,28 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ type Level = "info" | "warn" | "error";
3
+ type LogEntry = {
4
+ level: Level;
5
+ fn: string;
6
+ message: string;
7
+ results: any;
8
+ timestamp?: number;
9
+ };
10
+ type RequestStore = {
11
+ requestId: string;
12
+ logs: LogEntry[];
13
+ startedAt: number;
14
+ };
15
+ declare class RequestLoggerClass {
16
+ storage: AsyncLocalStorage<RequestStore>;
17
+ run<T>(callback: () => Promise<T>): Promise<T>;
18
+ add(entry: Omit<LogEntry, "timestamp">): void;
19
+ build(): {
20
+ requestId: string;
21
+ durationMs: number;
22
+ level: Level;
23
+ logs: LogEntry[];
24
+ } | null;
25
+ resolveLevel(logs: LogEntry[]): Level;
26
+ }
27
+ declare const _logger: RequestLoggerClass;
28
+ export default _logger;
@@ -164,44 +164,54 @@ declare const helpers: {
164
164
  ACTION_REQUIRED({ message, results }: {
165
165
  message?: string | undefined;
166
166
  results?: unknown;
167
+ fn?: string | undefined;
167
168
  }): void;
168
169
  WARNING({ message, results }: {
169
170
  message?: string | undefined;
170
171
  results?: unknown;
172
+ fn?: string | undefined;
171
173
  }): void;
172
174
  AUTHORIZATION_ERROR({ message, results }: {
173
175
  message?: string | undefined;
174
176
  results?: unknown;
177
+ fn?: string | undefined;
175
178
  }): void;
176
179
  DATABASE_ERROR({ message, results, erro }: {
177
180
  message?: string | undefined;
178
181
  results?: unknown;
182
+ fn?: string | undefined;
179
183
  } & {
180
184
  erro: any;
181
185
  }): void;
182
186
  SCHEMA_VALIDATION({ results }: {
183
187
  message?: string | undefined;
184
188
  results?: unknown;
189
+ fn?: string | undefined;
185
190
  }): void;
186
191
  UNAUTHORIZED({ message }: {
187
192
  message?: string | undefined;
188
193
  results?: unknown;
194
+ fn?: string | undefined;
189
195
  }): void;
190
196
  INVALID_TOKEN({ message }: {
191
197
  message?: string | undefined;
192
198
  results?: unknown;
199
+ fn?: string | undefined;
193
200
  }): void;
194
201
  NOT_FOUND({ message }: {
195
202
  message?: string | undefined;
196
203
  results?: unknown;
204
+ fn?: string | undefined;
197
205
  }): void;
198
206
  BUSINESS_RULE_VIOLATION({ message, results }: {
199
207
  message?: string | undefined;
200
208
  results?: unknown;
209
+ fn?: string | undefined;
201
210
  }): void;
202
211
  PLAN_FORBIDDEN({ message, results }: {
203
212
  message?: string | undefined;
204
213
  results?: unknown;
214
+ fn?: string | undefined;
205
215
  }): void;
206
216
  };
207
217
  };
@@ -248,5 +258,45 @@ declare const helpers: {
248
258
  get get_now_format_number(): number;
249
259
  verificar_data(value: number): number;
250
260
  };
261
+ logger: {
262
+ storage: import("async_hooks").AsyncLocalStorage<{
263
+ requestId: string;
264
+ logs: {
265
+ level: "error" | "info" | "warn";
266
+ fn: string;
267
+ message: string;
268
+ results: any;
269
+ timestamp?: number;
270
+ }[];
271
+ startedAt: number;
272
+ }>;
273
+ run<T>(callback: () => Promise<T>): Promise<T>;
274
+ add(entry: Omit<{
275
+ level: "error" | "info" | "warn";
276
+ fn: string;
277
+ message: string;
278
+ results: any;
279
+ timestamp?: number;
280
+ }, "timestamp">): void;
281
+ build(): {
282
+ requestId: string;
283
+ durationMs: number;
284
+ level: "error" | "info" | "warn";
285
+ logs: {
286
+ level: "error" | "info" | "warn";
287
+ fn: string;
288
+ message: string;
289
+ results: any;
290
+ timestamp?: number;
291
+ }[];
292
+ } | null;
293
+ resolveLevel(logs: {
294
+ level: "error" | "info" | "warn";
295
+ fn: string;
296
+ message: string;
297
+ results: any;
298
+ timestamp?: number;
299
+ }[]): "error" | "info" | "warn";
300
+ };
251
301
  };
252
302
  export default helpers;
@@ -2,6 +2,7 @@ import v4 from "zod/v4";
2
2
  import { SignJWT, jwtVerify } from "jose";
3
3
  import { randomBytes, scrypt, timingSafeEqual } from "node:crypto";
4
4
  import { promisify } from "node:util";
5
+ import { AsyncLocalStorage } from "node:async_hooks";
5
6
  const set_response = new class {
6
7
  c = new class {
7
8
  SUCCESS({ message, results, c }) {
@@ -476,11 +477,53 @@ class _data {
476
477
  }
477
478
  }
478
479
  const helpers_data = new _data;
480
+ class RequestLoggerClass {
481
+ storage = new AsyncLocalStorage();
482
+ run(callback) {
483
+ return this.storage.run({
484
+ requestId: crypto.randomUUID(),
485
+ logs: [],
486
+ startedAt: Date.now()
487
+ }, callback);
488
+ }
489
+ add(entry) {
490
+ const store = this.storage.getStore();
491
+ if (!store) return;
492
+ store.logs.push({
493
+ ...entry,
494
+ timestamp: Date.now()
495
+ });
496
+ }
497
+ build() {
498
+ const store = this.storage.getStore();
499
+ if (!store || 0 === store.logs.length) return null;
500
+ const durationMs = Date.now() - store.startedAt;
501
+ const level = this.resolveLevel(store.logs);
502
+ const payload = {
503
+ requestId: store.requestId,
504
+ durationMs,
505
+ level,
506
+ logs: store.logs
507
+ };
508
+ const output = JSON.stringify(payload);
509
+ if ("error" === level) console.error(output);
510
+ else console.log(output);
511
+ return payload;
512
+ }
513
+ resolveLevel(logs) {
514
+ if (logs.some((l)=>"error" === l.level)) return "error";
515
+ if (logs.some((l)=>"warn" === l.level)) return "warn";
516
+ return "info";
517
+ }
518
+ }
519
+ const _logger = new RequestLoggerClass();
520
+ const helpers_logger = _logger;
479
521
  const helpers = {
480
522
  set_response: _set_response,
481
523
  token: helpers_token,
482
524
  secret: helpers_secret,
483
- data: helpers_data
525
+ data: helpers_data,
526
+ logger: helpers_logger
484
527
  };
485
528
  const src_helpers = helpers;
486
529
  export { src_helpers as default };
package/build/es/index.js CHANGED
@@ -132,7 +132,8 @@ var _usuario_TypeControllerUsuario;
132
132
  ]).optional(),
133
133
  type: TypeSchema.optional().default("success"),
134
134
  code: CodeSchema,
135
- status: v4.number().optional().default(200)
135
+ status: v4.number().optional().default(200),
136
+ fn: v4.string().optional()
136
137
  });
137
138
  })(TypeControllerResponse.Error || (TypeControllerResponse.Error = {}));
138
139
  })(_type_response_TypeControllerResponse || (_type_response_TypeControllerResponse = {}));
@@ -43,6 +43,7 @@ declare namespace TypeControllerResponse {
43
43
  type: z4.ZodDefault<z4.ZodOptional<z4.ZodDefault<z4.ZodUnion<readonly [z4.ZodLiteral<"success">, z4.ZodLiteral<"warning">, z4.ZodLiteral<"error">]>>>>;
44
44
  code: z4.ZodUnion<readonly [z4.ZodLiteral<"SUCCESS">, z4.ZodLiteral<"ACTION_REQUIRED">, z4.ZodLiteral<"CREATED">, z4.ZodLiteral<"WARNING">, z4.ZodLiteral<"AUTHORIZATION_ERROR">, z4.ZodLiteral<"SCHEMA_VALIDATION">, z4.ZodLiteral<"SERVER_ERROR">, z4.ZodLiteral<"UNAUTHORIZED">, z4.ZodLiteral<"INVALID_TOKEN">, z4.ZodLiteral<"NOT_FOUND">, z4.ZodLiteral<"SUCCESS_FILE">, z4.ZodLiteral<"DATABASE_ERROR">, z4.ZodLiteral<"BUSINESS_RULE_VIOLATION">, z4.ZodLiteral<"PLAN_FORBIDDEN">]>;
45
45
  status: z4.ZodDefault<z4.ZodOptional<z4.ZodNumber>>;
46
+ fn: z4.ZodOptional<z4.ZodString>;
46
47
  }, z4.core.$strip>;
47
48
  type Input<T = unknown> = z4.infer<typeof InputSchema> & {
48
49
  results?: T;
@@ -0,0 +1,28 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ type Level = "info" | "warn" | "error";
3
+ type LogEntry = {
4
+ level: Level;
5
+ fn: string;
6
+ message: string;
7
+ results: any;
8
+ timestamp?: number;
9
+ };
10
+ type RequestStore = {
11
+ requestId: string;
12
+ logs: LogEntry[];
13
+ startedAt: number;
14
+ };
15
+ declare class RequestLoggerClass {
16
+ storage: AsyncLocalStorage<RequestStore>;
17
+ run<T>(callback: () => Promise<T>): Promise<T>;
18
+ add(entry: Omit<LogEntry, "timestamp">): void;
19
+ build(): {
20
+ requestId: string;
21
+ durationMs: number;
22
+ level: Level;
23
+ logs: LogEntry[];
24
+ } | null;
25
+ resolveLevel(logs: LogEntry[]): Level;
26
+ }
27
+ declare const _logger: RequestLoggerClass;
28
+ export default _logger;
@@ -164,44 +164,54 @@ declare const helpers: {
164
164
  ACTION_REQUIRED({ message, results }: {
165
165
  message?: string | undefined;
166
166
  results?: unknown;
167
+ fn?: string | undefined;
167
168
  }): void;
168
169
  WARNING({ message, results }: {
169
170
  message?: string | undefined;
170
171
  results?: unknown;
172
+ fn?: string | undefined;
171
173
  }): void;
172
174
  AUTHORIZATION_ERROR({ message, results }: {
173
175
  message?: string | undefined;
174
176
  results?: unknown;
177
+ fn?: string | undefined;
175
178
  }): void;
176
179
  DATABASE_ERROR({ message, results, erro }: {
177
180
  message?: string | undefined;
178
181
  results?: unknown;
182
+ fn?: string | undefined;
179
183
  } & {
180
184
  erro: any;
181
185
  }): void;
182
186
  SCHEMA_VALIDATION({ results }: {
183
187
  message?: string | undefined;
184
188
  results?: unknown;
189
+ fn?: string | undefined;
185
190
  }): void;
186
191
  UNAUTHORIZED({ message }: {
187
192
  message?: string | undefined;
188
193
  results?: unknown;
194
+ fn?: string | undefined;
189
195
  }): void;
190
196
  INVALID_TOKEN({ message }: {
191
197
  message?: string | undefined;
192
198
  results?: unknown;
199
+ fn?: string | undefined;
193
200
  }): void;
194
201
  NOT_FOUND({ message }: {
195
202
  message?: string | undefined;
196
203
  results?: unknown;
204
+ fn?: string | undefined;
197
205
  }): void;
198
206
  BUSINESS_RULE_VIOLATION({ message, results }: {
199
207
  message?: string | undefined;
200
208
  results?: unknown;
209
+ fn?: string | undefined;
201
210
  }): void;
202
211
  PLAN_FORBIDDEN({ message, results }: {
203
212
  message?: string | undefined;
204
213
  results?: unknown;
214
+ fn?: string | undefined;
205
215
  }): void;
206
216
  };
207
217
  };
@@ -248,5 +258,45 @@ declare const helpers: {
248
258
  get get_now_format_number(): number;
249
259
  verificar_data(value: number): number;
250
260
  };
261
+ logger: {
262
+ storage: import("async_hooks").AsyncLocalStorage<{
263
+ requestId: string;
264
+ logs: {
265
+ level: "error" | "info" | "warn";
266
+ fn: string;
267
+ message: string;
268
+ results: any;
269
+ timestamp?: number;
270
+ }[];
271
+ startedAt: number;
272
+ }>;
273
+ run<T>(callback: () => Promise<T>): Promise<T>;
274
+ add(entry: Omit<{
275
+ level: "error" | "info" | "warn";
276
+ fn: string;
277
+ message: string;
278
+ results: any;
279
+ timestamp?: number;
280
+ }, "timestamp">): void;
281
+ build(): {
282
+ requestId: string;
283
+ durationMs: number;
284
+ level: "error" | "info" | "warn";
285
+ logs: {
286
+ level: "error" | "info" | "warn";
287
+ fn: string;
288
+ message: string;
289
+ results: any;
290
+ timestamp?: number;
291
+ }[];
292
+ } | null;
293
+ resolveLevel(logs: {
294
+ level: "error" | "info" | "warn";
295
+ fn: string;
296
+ message: string;
297
+ results: any;
298
+ timestamp?: number;
299
+ }[]): "error" | "info" | "warn";
300
+ };
251
301
  };
252
302
  export default helpers;
@@ -571,17 +571,68 @@ class _data {
571
571
  }
572
572
  /* export default */ const helpers_data = (new _data);
573
573
 
574
+ ;// CONCATENATED MODULE: external "node:async_hooks"
575
+ const external_node_async_hooks_namespaceObject = require("node:async_hooks");
576
+ ;// CONCATENATED MODULE: ./src/helpers/_logger.ts
577
+
578
+ class RequestLoggerClass {
579
+ storage = new external_node_async_hooks_namespaceObject.AsyncLocalStorage();
580
+ run(callback) {
581
+ return this.storage.run({
582
+ requestId: crypto.randomUUID(),
583
+ logs: [],
584
+ startedAt: Date.now()
585
+ }, callback);
586
+ }
587
+ add(entry) {
588
+ const store = this.storage.getStore();
589
+ if (!store) return;
590
+ store.logs.push({
591
+ ...entry,
592
+ timestamp: Date.now()
593
+ });
594
+ }
595
+ build() {
596
+ const store = this.storage.getStore();
597
+ if (!store || store.logs.length === 0) return null;
598
+ const durationMs = Date.now() - store.startedAt;
599
+ const level = this.resolveLevel(store.logs);
600
+ const payload = {
601
+ requestId: store.requestId,
602
+ durationMs,
603
+ level,
604
+ logs: store.logs
605
+ };
606
+ const output = JSON.stringify(payload);
607
+ if (level === "error") {
608
+ console.error(output);
609
+ } else {
610
+ console.log(output);
611
+ }
612
+ return payload;
613
+ }
614
+ resolveLevel(logs) {
615
+ if (logs.some((l)=>l.level === "error")) return "error";
616
+ if (logs.some((l)=>l.level === "warn")) return "warn";
617
+ return "info";
618
+ }
619
+ }
620
+ const _logger = new RequestLoggerClass();
621
+ /* export default */ const helpers_logger = (_logger);
622
+
574
623
  ;// CONCATENATED MODULE: ./src/helpers/index.ts
575
624
  //_HELPERS
576
625
 
577
626
 
578
627
 
579
628
 
629
+
580
630
  const helpers = {
581
631
  set_response: _set_response,
582
632
  token: helpers_token,
583
633
  secret: helpers_secret,
584
- data: helpers_data
634
+ data: helpers_data,
635
+ logger: helpers_logger
585
636
  };
586
637
  /* export default */ const src_helpers = (helpers);
587
638
 
@@ -194,7 +194,8 @@ var _usuario_TypeControllerUsuario;
194
194
  ]).optional(),
195
195
  type: TypeSchema.optional().default("success"),
196
196
  code: CodeSchema,
197
- status: v4_default().number().optional().default(200)
197
+ status: v4_default().number().optional().default(200),
198
+ fn: v4_default().string().optional()
198
199
  });
199
200
  })(TypeControllerResponse.Error || (TypeControllerResponse.Error = {}));
200
201
  })(_type_response_TypeControllerResponse || (_type_response_TypeControllerResponse = {}));
@@ -43,6 +43,7 @@ declare namespace TypeControllerResponse {
43
43
  type: z4.ZodDefault<z4.ZodOptional<z4.ZodDefault<z4.ZodUnion<readonly [z4.ZodLiteral<"success">, z4.ZodLiteral<"warning">, z4.ZodLiteral<"error">]>>>>;
44
44
  code: z4.ZodUnion<readonly [z4.ZodLiteral<"SUCCESS">, z4.ZodLiteral<"ACTION_REQUIRED">, z4.ZodLiteral<"CREATED">, z4.ZodLiteral<"WARNING">, z4.ZodLiteral<"AUTHORIZATION_ERROR">, z4.ZodLiteral<"SCHEMA_VALIDATION">, z4.ZodLiteral<"SERVER_ERROR">, z4.ZodLiteral<"UNAUTHORIZED">, z4.ZodLiteral<"INVALID_TOKEN">, z4.ZodLiteral<"NOT_FOUND">, z4.ZodLiteral<"SUCCESS_FILE">, z4.ZodLiteral<"DATABASE_ERROR">, z4.ZodLiteral<"BUSINESS_RULE_VIOLATION">, z4.ZodLiteral<"PLAN_FORBIDDEN">]>;
45
45
  status: z4.ZodDefault<z4.ZodOptional<z4.ZodNumber>>;
46
+ fn: z4.ZodOptional<z4.ZodString>;
46
47
  }, z4.core.$strip>;
47
48
  type Input<T = unknown> = z4.infer<typeof InputSchema> & {
48
49
  results?: T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@navservice/core",
3
- "version": "1.113.0",
3
+ "version": "1.114.0",
4
4
  "description": "Service core de todos os micro serviços",
5
5
  "type": "module",
6
6
  "exports": {