diff --git a/.changeset/cold-ravens-drum.md b/.changeset/cold-ravens-drum.md new file mode 100644 index 0000000..6a872f7 --- /dev/null +++ b/.changeset/cold-ravens-drum.md @@ -0,0 +1,5 @@ +--- +"@byteslice/events": minor +--- + +Added info and debug logger. diff --git a/bun.lock b/bun.lock index d1e992d..a84a60f 100644 --- a/bun.lock +++ b/bun.lock @@ -15,7 +15,7 @@ }, "apps/playground": { "name": "@byteslice/playground", - "version": "0.2.2", + "version": "0.2.3", "dependencies": { "@byteslice/events": "workspace:0.5.0", "next": "15.1.3", @@ -33,7 +33,7 @@ }, "packages/events": { "name": "@byteslice/events", - "version": "0.5.0", + "version": "0.6.0", "dependencies": { "@byteslice/result": "0.2.2", "@supabase/supabase-js": "2.50.0", diff --git a/packages/events/src/server/index.ts b/packages/events/src/server/index.ts index d340862..821fcc3 100644 --- a/packages/events/src/server/index.ts +++ b/packages/events/src/server/index.ts @@ -3,6 +3,23 @@ import { createClient } from '@supabase/supabase-js' import { Resend } from 'resend' import type { EventProperties, PageParams } from './types' +type LogLevel = 'info' | 'debug' | 'none' + +const LOG_LEVEL = (process.env.BYTESLICE_LOG_LEVEL || 'none') as LogLevel + +const logger = { + info: (...args: unknown[]) => { + if (LOG_LEVEL === 'info' || LOG_LEVEL === 'debug') { + console.log('[ByteSlice Events]', ...args) + } + }, + debug: (...args: unknown[]) => { + if (LOG_LEVEL === 'debug') { + console.debug('[ByteSlice Events]', ...args) + } + }, +} + if ( !process.env.NEXT_PUBLIC_SUPABASE_URL || !process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY @@ -27,6 +44,9 @@ export function track( ): Promise> { return withResult( async () => { + logger.info('Tracking event:', event) + logger.debug('Event properties:', properties) + const { data, error } = await supabase .from('events') .insert({ @@ -40,7 +60,11 @@ export function track( .select('id') .single() + logger.info('Event tracked:', data?.id) + logger.debug('Event data:', data) + if (error) { + logger.debug('Error tracking event:', error) throw error } @@ -61,6 +85,9 @@ export function page( ): Promise> { return withResult( async () => { + logger.info('Tracking page view') + logger.debug('Page params:', params) + const { data, error } = await supabase .from('events') .insert({ @@ -72,7 +99,11 @@ export function page( .select('id') .single() + logger.info('Page view tracked:', data?.id) + logger.debug('Page view data:', data) + if (error) { + logger.debug('Error tracking page view:', error) throw error } @@ -98,6 +129,12 @@ export async function sendEmail( ): Promise> { return withResult( async () => { + logger.info('Sending email to:', params.to) + logger.debug('Email details:', { + subject: params.subject, + from: params.from, + }) + const { data, error } = await resend.emails.send({ from: params.from ?? 'transactions@byteslice.co', to: params.to, @@ -105,7 +142,11 @@ export async function sendEmail( html: params.html, }) + logger.info('Email sent:', data?.id) + logger.debug('Email data:', data) + if (error) { + logger.debug('Error sending email:', error) throw error }