@adventurelabs/scout-core 1.0.63 → 1.0.65

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.
@@ -3,7 +3,12 @@ import { newServerClient } from "../supabase/server";
3
3
  import { EnumWebResponse, IWebResponse, } from "../types/requests";
4
4
  import { HerdModule, } from "../types/herd_module";
5
5
  export async function get_herds(client) {
6
+ const queryStartTime = Date.now();
7
+ console.log(`[get_herds] Starting database query at ${new Date(queryStartTime).toISOString()}`);
6
8
  const { data: herds } = await client.from("herds").select();
9
+ const queryEndTime = Date.now();
10
+ const queryDuration = queryEndTime - queryStartTime;
11
+ console.log(`[get_herds] Database query completed in ${queryDuration}ms`);
7
12
  if (!herds) {
8
13
  return {
9
14
  status: EnumWebResponse.ERROR,
@@ -65,29 +70,57 @@ export async function createHerd(newHerd) {
65
70
  }
66
71
  }
67
72
  export async function server_load_herd_modules() {
73
+ const requestReceivedTime = Date.now();
74
+ console.log(`[server_load_herd_modules] Request received at: ${new Date(requestReceivedTime).toISOString()}`);
68
75
  const startTime = Date.now();
69
- // load herds
76
+ // Measure Supabase client creation
77
+ const supabaseStartTime = Date.now();
70
78
  const client_supabase = await newServerClient();
79
+ const supabaseTime = Date.now() - supabaseStartTime;
80
+ console.log(`[server_load_herd_modules] Supabase client creation took: ${supabaseTime}ms`);
81
+ // Measure database connection and initial query
82
+ const dbStartTime = Date.now();
71
83
  let new_herds = await get_herds(client_supabase);
84
+ const dbConnectionTime = Date.now() - dbStartTime;
85
+ console.log(`[server_load_herd_modules] Database connection and initial herds query took: ${dbConnectionTime}ms`);
72
86
  if (new_herds.status != EnumWebResponse.SUCCESS || !new_herds.data) {
87
+ const errorTime = Date.now();
73
88
  return {
74
89
  status: EnumWebResponse.ERROR,
75
90
  msg: "No herds found",
76
91
  data: null,
77
- time_finished: Date.now(),
78
- time_sent: Date.now(),
79
- server_processing_time_ms: Date.now() - startTime,
92
+ time_finished: errorTime,
93
+ time_sent: errorTime,
94
+ server_processing_time_ms: errorTime - startTime,
80
95
  };
81
96
  }
82
97
  console.log(`[server_load_herd_modules] Loading ${new_herds.data.length} herds in parallel...`);
98
+ // Measure herd module creation
99
+ const herdModuleStartTime = Date.now();
83
100
  let new_herd_modules = [];
84
101
  const herdModulePromises = new_herds.data.map((herd) => HerdModule.from_herd(herd, client_supabase));
85
102
  new_herd_modules = await Promise.all(herdModulePromises);
86
- // now serialize the herd modules
103
+ const herdModuleTime = Date.now() - herdModuleStartTime;
104
+ console.log(`[server_load_herd_modules] Herd module creation took: ${herdModuleTime}ms`);
105
+ // Measure serialization
106
+ const serializationStartTime = Date.now();
87
107
  let serialized_herd_modules = new_herd_modules.map((herd_module) => herd_module.to_serializable());
108
+ const serializationTime = Date.now() - serializationStartTime;
109
+ console.log(`[server_load_herd_modules] Serialization took: ${serializationTime}ms`);
88
110
  const endTime = Date.now();
89
111
  const totalLoadTime = endTime - startTime;
112
+ // Calculate detailed timing breakdown
113
+ const timeToClient = endTime - requestReceivedTime;
114
+ const processingTime = endTime - startTime;
90
115
  console.log(`[server_load_herd_modules] Loaded ${new_herds.data.length} herds in ${totalLoadTime}ms (parallel processing)`);
116
+ console.log(`[server_load_herd_modules] Detailed timing breakdown:`);
117
+ console.log(` - Request received to start: ${startTime - requestReceivedTime}ms`);
118
+ console.log(` - Supabase client creation: ${supabaseTime}ms`);
119
+ console.log(` - Database connection & query: ${dbConnectionTime}ms`);
120
+ console.log(` - Herd module creation: ${herdModuleTime}ms`);
121
+ console.log(` - Serialization: ${serializationTime}ms`);
122
+ console.log(` - Total processing time: ${processingTime}ms`);
123
+ console.log(` - Total time to client: ${timeToClient}ms`);
91
124
  // Record the time when we're about to send the response
92
125
  const timeSent = Date.now();
93
126
  return {
@@ -59,14 +59,18 @@ export function useScoutRefresh(options = {}) {
59
59
  const [herdModulesResult, userResult] = await Promise.all([
60
60
  (async () => {
61
61
  const start = Date.now();
62
+ console.log(`[useScoutRefresh] Starting herd modules request at ${new Date(start).toISOString()}`);
62
63
  const result = await server_load_herd_modules();
63
64
  const duration = Date.now() - start;
65
+ console.log(`[useScoutRefresh] Herd modules request completed in ${duration}ms`);
64
66
  return { result, duration, start };
65
67
  })(),
66
68
  (async () => {
67
69
  const start = Date.now();
70
+ console.log(`[useScoutRefresh] Starting user request at ${new Date(start).toISOString()}`);
68
71
  const result = await server_get_user();
69
72
  const duration = Date.now() - start;
73
+ console.log(`[useScoutRefresh] User request completed in ${duration}ms`);
70
74
  return { result, duration, start };
71
75
  })(),
72
76
  ]);
@@ -77,6 +81,16 @@ export function useScoutRefresh(options = {}) {
77
81
  const res_new_user = userResult.result;
78
82
  const herdModulesDuration = herdModulesResult.duration;
79
83
  const userApiDuration = userResult.duration;
84
+ // Calculate request timing breakdown
85
+ const requestStartTime = parallelStartTime;
86
+ const requestEndTime = Date.now();
87
+ const totalRequestTime = requestEndTime - requestStartTime;
88
+ console.log(`[useScoutRefresh] Request timing breakdown:`);
89
+ console.log(` - Request started at: ${new Date(requestStartTime).toISOString()}`);
90
+ console.log(` - Request completed at: ${new Date(requestEndTime).toISOString()}`);
91
+ console.log(` - Total request time: ${totalRequestTime}ms`);
92
+ console.log(` - Parallel execution time: ${parallelDuration}ms`);
93
+ console.log(` - Request overhead: ${totalRequestTime - parallelDuration}ms`);
80
94
  // Calculate network latency for herd modules
81
95
  let networkLatencyMs = 0;
82
96
  if (herdModulesResponse.status === EnumWebResponse.SUCCESS &&
@@ -1,8 +1,14 @@
1
1
  import { createServerClient } from "@supabase/ssr";
2
2
  import { cookies } from "next/headers";
3
3
  export async function newServerClient() {
4
+ const startTime = Date.now();
5
+ console.log(`[newServerClient] Starting client creation at ${new Date(startTime).toISOString()}`);
6
+ const cookieStartTime = Date.now();
4
7
  const cookieStore = await cookies();
5
- return createServerClient(process.env.NEXT_PUBLIC_SUPABASE_URL, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY, {
8
+ const cookieTime = Date.now() - cookieStartTime;
9
+ console.log(`[newServerClient] Cookie retrieval took: ${cookieTime}ms`);
10
+ const supabaseStartTime = Date.now();
11
+ const client = createServerClient(process.env.NEXT_PUBLIC_SUPABASE_URL, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY, {
6
12
  cookies: {
7
13
  getAll() {
8
14
  return cookieStore.getAll();
@@ -19,4 +25,9 @@ export async function newServerClient() {
19
25
  },
20
26
  },
21
27
  });
28
+ const supabaseTime = Date.now() - supabaseStartTime;
29
+ console.log(`[newServerClient] Supabase client creation took: ${supabaseTime}ms`);
30
+ const totalTime = Date.now() - startTime;
31
+ console.log(`[newServerClient] Total client creation time: ${totalTime}ms`);
32
+ return client;
22
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adventurelabs/scout-core",
3
- "version": "1.0.63",
3
+ "version": "1.0.65",
4
4
  "description": "Core utilities and helpers for Adventure Labs Scout applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",