1- import { log } from '@hawk.so/core' ;
2- import type { AffectedUser , Breadcrumb , EventContext , EventData , JavaScriptAddons } from '@hawk.so/types' ;
3- import Sanitizer from '../modules/sanitizer' ;
1+ import { log } from '../logger/logger' ;
2+ import type { AffectedUser , Breadcrumb , EventAddons , EventContext , EventData } from '@hawk.so/types' ;
43
54/**
65 * Validates user data - basic security checks
76 *
87 * @param user - user data to validate
98 */
109export function validateUser ( user : AffectedUser ) : boolean {
11- if ( ! user || ! Sanitizer . isObject ( user ) ) {
10+ if ( ! user || ! isPlainObject ( user ) ) {
1211 log ( 'validateUser: User must be an object' , 'warn' ) ;
1312
1413 return false ;
@@ -30,7 +29,7 @@ export function validateUser(user: AffectedUser): boolean {
3029 * @param context - context data to validate
3130 */
3231export function validateContext ( context : EventContext | undefined ) : boolean {
33- if ( context && ! Sanitizer . isObject ( context ) ) {
32+ if ( context && ! isPlainObject ( context ) ) {
3433 log ( 'validateContext: Context must be an object' , 'warn' ) ;
3534
3635 return false ;
@@ -40,22 +39,23 @@ export function validateContext(context: EventContext | undefined): boolean {
4039}
4140
4241/**
43- * Checks if value is a plain object (not array, Date, etc.)
42+ * Checks if value is a plain object (not null, array, Date, Map , etc.)
4443 *
4544 * @param value - value to check
45+ * @returns `true` if value is a plain object, otherwise `false`
4646 */
47- function isPlainObject ( value : unknown ) : value is Record < string , unknown > {
47+ export function isPlainObject ( value : unknown ) : value is Record < string , unknown > {
4848 return Object . prototype . toString . call ( value ) === '[object Object]' ;
4949}
5050
5151/**
5252 * Runtime check for required EventData fields.
5353 * Per @hawk.so/types EventData, `title` is the only non-optional field.
54- * Additionally validates `backtrace` shape if present (must be an array).
54+ * Additionally, validates `backtrace` shape if present (must be an array).
5555 *
5656 * @param payload - value to validate
5757 */
58- export function isValidEventPayload ( payload : unknown ) : payload is EventData < JavaScriptAddons > {
58+ export function isValidEventPayload ( payload : unknown ) : payload is EventData < EventAddons > {
5959 if ( ! isPlainObject ( payload ) ) {
6060 return false ;
6161 }
@@ -64,11 +64,7 @@ export function isValidEventPayload(payload: unknown): payload is EventData<Java
6464 return false ;
6565 }
6666
67- if ( payload . backtrace !== undefined && ! Array . isArray ( payload . backtrace ) ) {
68- return false ;
69- }
70-
71- return true ;
67+ return ! ( payload . backtrace !== undefined && ! Array . isArray ( payload . backtrace ) ) ;
7268}
7369
7470/**
@@ -86,9 +82,5 @@ export function isValidBreadcrumb(breadcrumb: unknown): breadcrumb is Breadcrumb
8682 return false ;
8783 }
8884
89- if ( breadcrumb . timestamp !== undefined && typeof breadcrumb . timestamp !== 'number' ) {
90- return false ;
91- }
92-
93- return true ;
85+ return ! ( breadcrumb . timestamp !== undefined && typeof breadcrumb . timestamp !== 'number' ) ;
9486}
0 commit comments