@adventurelabs/scout-core 1.0.50 → 1.0.52

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.
@@ -32,7 +32,6 @@ export async function server_list_api_keys(device_id) {
32
32
  return data_to_return;
33
33
  }
34
34
  export async function server_list_api_keys_batch(device_ids) {
35
- const startTime = Date.now();
36
35
  const supabase = await newServerClient();
37
36
  // Check if the batch function exists by trying a simple call
38
37
  try {
@@ -75,7 +74,7 @@ export async function server_list_api_keys_batch(device_ids) {
75
74
  result[device_id] = [];
76
75
  }
77
76
  result[device_id].push({
78
- id: item.api_key_id.toString(),
77
+ id: item.api_key_id, // Now a string, no need for toString()
79
78
  key: item.api_key_key,
80
79
  });
81
80
  });
@@ -65,16 +65,21 @@ export async function createHerd(newHerd) {
65
65
  }
66
66
  }
67
67
  export async function server_load_herd_modules() {
68
+ const startTime = Date.now();
68
69
  // load herds
69
70
  const client_supabase = await newServerClient();
70
71
  let new_herds = await get_herds(client_supabase);
71
72
  if (new_herds.status != EnumWebResponse.SUCCESS || !new_herds.data) {
72
73
  return [];
73
74
  }
75
+ console.log(`[server_load_herd_modules] Loading ${new_herds.data.length} herds in parallel...`);
74
76
  let new_herd_modules = [];
75
77
  const herdModulePromises = new_herds.data.map((herd) => HerdModule.from_herd(herd, client_supabase));
76
78
  new_herd_modules = await Promise.all(herdModulePromises);
77
79
  // now serialize the herd modules
78
80
  let serialized_herd_modules = new_herd_modules.map((herd_module) => herd_module.to_serializable());
81
+ const endTime = Date.now();
82
+ const totalLoadTime = endTime - startTime;
83
+ console.log(`[server_load_herd_modules] Loaded ${new_herds.data.length} herds in ${totalLoadTime}ms (parallel processing)`);
79
84
  return serialized_herd_modules;
80
85
  }
@@ -166,7 +166,6 @@ export async function server_get_events_and_tags_for_device(device_id, limit = 3
166
166
  return IWebResponse.success(eventsWithSignedUrls).to_compatible();
167
167
  }
168
168
  export async function server_get_events_and_tags_for_devices_batch(device_ids, limit = 1) {
169
- const startTime = Date.now();
170
169
  const supabase = await newServerClient();
171
170
  // Use single RPC call for all devices
172
171
  const { data, error } = await supabase.rpc("get_events_and_tags_for_devices_batch", {
@@ -750,7 +750,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", {
750
750
  };
751
751
  Returns: {
752
752
  device_id: number;
753
- api_key_id: number;
753
+ api_key_id: string;
754
754
  api_key_key: string;
755
755
  }[];
756
756
  };
@@ -741,7 +741,7 @@ export declare function newServerClient(): Promise<import("@supabase/supabase-js
741
741
  };
742
742
  Returns: {
743
743
  device_id: number;
744
- api_key_id: number;
744
+ api_key_id: string;
745
745
  api_key_key: string;
746
746
  }[];
747
747
  };
@@ -47,6 +47,7 @@ export class HerdModule {
47
47
  };
48
48
  }
49
49
  static async from_herd(herd, client) {
50
+ const startTime = Date.now();
50
51
  try {
51
52
  // load devices
52
53
  let response_new_devices = await get_devices_by_herd(herd.id, client);
@@ -59,7 +60,6 @@ export class HerdModule {
59
60
  // get api keys and events for all devices in batch
60
61
  let recent_events_batch = {};
61
62
  if (new_devices.length > 0) {
62
- const batchStartTime = Date.now();
63
63
  try {
64
64
  const device_ids = new_devices.map((device) => device.id ?? 0);
65
65
  // Load API keys and events in parallel
@@ -136,10 +136,15 @@ export class HerdModule {
136
136
  const sessions = res_sessions.status === "fulfilled" ? res_sessions.value : [];
137
137
  // TODO: store in DB and retrieve on load?
138
138
  const newLabels = LABELS;
139
+ const endTime = Date.now();
140
+ const loadTime = endTime - startTime;
141
+ console.log(`[HerdModule] Loaded herd ${herd.slug} in ${loadTime}ms (${new_devices.length} devices)`);
139
142
  return new HerdModule(herd, new_devices, [], Date.now(), user_roles, 0, total_events, total_events, newLabels, plans, zones, sessions);
140
143
  }
141
144
  catch (error) {
142
- console.error(`[HerdModule] Critical error in HerdModule.from_herd:`, error);
145
+ const endTime = Date.now();
146
+ const loadTime = endTime - startTime;
147
+ console.error(`[HerdModule] Critical error in HerdModule.from_herd (${loadTime}ms):`, error);
143
148
  // Return a minimal but valid HerdModule instance to prevent complete failure
144
149
  return new HerdModule(herd, [], [], Date.now());
145
150
  }
@@ -808,7 +808,7 @@ export type Database = {
808
808
  };
809
809
  Returns: {
810
810
  device_id: number;
811
- api_key_id: number;
811
+ api_key_id: string;
812
812
  api_key_key: string;
813
813
  }[];
814
814
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adventurelabs/scout-core",
3
- "version": "1.0.50",
3
+ "version": "1.0.52",
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",