@adventurelabs/scout-core 1.4.55 → 1.4.57
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.
- package/dist/helpers/events.d.ts +1 -0
- package/dist/helpers/events.js +9 -0
- package/dist/helpers/session_summaries.d.ts +3 -3
- package/dist/helpers/session_summaries.js +6 -3
- package/dist/helpers/sessions.d.ts +2 -2
- package/dist/helpers/sessions.js +4 -2
- package/dist/hooks/useScoutBrowserClient.d.ts +11 -0
- package/dist/hooks/useScoutBrowserClient.js +17 -0
- package/dist/providers/ScoutRefreshProvider.d.ts +4 -0
- package/dist/store/api.d.ts +5 -0
- package/dist/store/api.js +4 -2
- package/dist/types/db.d.ts +1 -0
- package/dist/types/supabase.d.ts +4 -0
- package/package.json +1 -1
package/dist/helpers/events.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare function server_update_event(events: (EventUpdate & {
|
|
|
10
10
|
}) | (EventUpdate & {
|
|
11
11
|
id: number;
|
|
12
12
|
})[], client?: SupabaseClient): Promise<IWebResponseCompatible<IEvent[]>>;
|
|
13
|
+
export declare function server_delete_event(id: number | number[], client?: SupabaseClient): Promise<IWebResponseCompatible<boolean>>;
|
|
13
14
|
/** Semantic search over events using Vertex multimodal embedding (embedding_vertex_mm_01). */
|
|
14
15
|
export declare function server_match_events_by_vertex_embedding(query_embedding: number[], match_threshold: number, match_count: number, options?: {
|
|
15
16
|
herd_id?: number | null;
|
package/dist/helpers/events.js
CHANGED
|
@@ -94,6 +94,15 @@ export async function server_update_event(events, client) {
|
|
|
94
94
|
}
|
|
95
95
|
return IWebResponse.success(updatedEvents).to_compatible();
|
|
96
96
|
}
|
|
97
|
+
export async function server_delete_event(id, client) {
|
|
98
|
+
const supabase = client || (await newServerClient());
|
|
99
|
+
const ids = Array.isArray(id) ? id : [id];
|
|
100
|
+
const { error } = await supabase.from("events").delete().in("id", ids);
|
|
101
|
+
if (error) {
|
|
102
|
+
return IWebResponse.error(error.message).to_compatible();
|
|
103
|
+
}
|
|
104
|
+
return IWebResponse.success(true).to_compatible();
|
|
105
|
+
}
|
|
97
106
|
/** Semantic search over events using Vertex multimodal embedding (embedding_vertex_mm_01). */
|
|
98
107
|
export async function server_match_events_by_vertex_embedding(query_embedding, match_threshold, match_count, options) {
|
|
99
108
|
const supabase = options?.client ?? (await newServerClient());
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ISessionSummary } from "../types/db";
|
|
2
2
|
import { IWebResponseCompatible } from "../types/requests";
|
|
3
3
|
import { SupabaseClient } from "@supabase/supabase-js";
|
|
4
|
-
export declare function server_get_session_summaries_by_herd(herd_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number): Promise<IWebResponseCompatible<ISessionSummary>>;
|
|
5
|
-
export declare function server_get_session_summaries_by_device(device_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number): Promise<IWebResponseCompatible<ISessionSummary>>;
|
|
6
|
-
export declare function server_get_session_summaries_with_filters(herd_id?: number, device_id?: number, start_date?: string, end_date?: string, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number): Promise<IWebResponseCompatible<ISessionSummary>>;
|
|
4
|
+
export declare function server_get_session_summaries_by_herd(herd_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number, product_numbers_caller?: string[]): Promise<IWebResponseCompatible<ISessionSummary>>;
|
|
5
|
+
export declare function server_get_session_summaries_by_device(device_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number, product_numbers_caller?: string[]): Promise<IWebResponseCompatible<ISessionSummary>>;
|
|
6
|
+
export declare function server_get_session_summaries_with_filters(herd_id?: number, device_id?: number, start_date?: string, end_date?: string, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number, product_numbers_caller?: string[]): Promise<IWebResponseCompatible<ISessionSummary>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use server";
|
|
2
2
|
import { newServerClient } from "../supabase/server";
|
|
3
3
|
import { IWebResponse, } from "../types/requests";
|
|
4
|
-
export async function server_get_session_summaries_by_herd(herd_id, client, min_duration_minutes_caller, min_distance_meters_caller) {
|
|
4
|
+
export async function server_get_session_summaries_by_herd(herd_id, client, min_duration_minutes_caller, min_distance_meters_caller, product_numbers_caller) {
|
|
5
5
|
const supabase = client || (await newServerClient());
|
|
6
6
|
const { data, error } = await supabase.rpc("get_session_summaries", {
|
|
7
7
|
start_date_caller: undefined,
|
|
@@ -10,6 +10,7 @@ export async function server_get_session_summaries_by_herd(herd_id, client, min_
|
|
|
10
10
|
herd_id_caller: herd_id,
|
|
11
11
|
min_duration_minutes_caller,
|
|
12
12
|
min_distance_meters_caller,
|
|
13
|
+
product_numbers_caller,
|
|
13
14
|
});
|
|
14
15
|
if (error) {
|
|
15
16
|
return IWebResponse.error(error.message).to_compatible();
|
|
@@ -19,7 +20,7 @@ export async function server_get_session_summaries_by_herd(herd_id, client, min_
|
|
|
19
20
|
}
|
|
20
21
|
return IWebResponse.success(data).to_compatible();
|
|
21
22
|
}
|
|
22
|
-
export async function server_get_session_summaries_by_device(device_id, client, min_duration_minutes_caller, min_distance_meters_caller) {
|
|
23
|
+
export async function server_get_session_summaries_by_device(device_id, client, min_duration_minutes_caller, min_distance_meters_caller, product_numbers_caller) {
|
|
23
24
|
const supabase = client || (await newServerClient());
|
|
24
25
|
const { data, error } = await supabase.rpc("get_session_summaries", {
|
|
25
26
|
start_date_caller: undefined,
|
|
@@ -28,6 +29,7 @@ export async function server_get_session_summaries_by_device(device_id, client,
|
|
|
28
29
|
herd_id_caller: undefined,
|
|
29
30
|
min_duration_minutes_caller,
|
|
30
31
|
min_distance_meters_caller,
|
|
32
|
+
product_numbers_caller,
|
|
31
33
|
});
|
|
32
34
|
if (error) {
|
|
33
35
|
return IWebResponse.error(error.message).to_compatible();
|
|
@@ -37,7 +39,7 @@ export async function server_get_session_summaries_by_device(device_id, client,
|
|
|
37
39
|
}
|
|
38
40
|
return IWebResponse.success(data).to_compatible();
|
|
39
41
|
}
|
|
40
|
-
export async function server_get_session_summaries_with_filters(herd_id, device_id, start_date, end_date, client, min_duration_minutes_caller, min_distance_meters_caller) {
|
|
42
|
+
export async function server_get_session_summaries_with_filters(herd_id, device_id, start_date, end_date, client, min_duration_minutes_caller, min_distance_meters_caller, product_numbers_caller) {
|
|
41
43
|
const supabase = client || (await newServerClient());
|
|
42
44
|
const { data, error } = await supabase.rpc("get_session_summaries", {
|
|
43
45
|
start_date_caller: start_date || undefined,
|
|
@@ -46,6 +48,7 @@ export async function server_get_session_summaries_with_filters(herd_id, device_
|
|
|
46
48
|
herd_id_caller: herd_id || undefined,
|
|
47
49
|
min_duration_minutes_caller,
|
|
48
50
|
min_distance_meters_caller,
|
|
51
|
+
product_numbers_caller,
|
|
49
52
|
});
|
|
50
53
|
if (error) {
|
|
51
54
|
return IWebResponse.error(error.message).to_compatible();
|
|
@@ -2,8 +2,8 @@ import { ISessionWithCoordinates, ISessionUsageOverTime, IEventAndTagsPrettyLoca
|
|
|
2
2
|
import { IWebResponseCompatible } from "../types/requests";
|
|
3
3
|
import { SupabaseClient } from "@supabase/supabase-js";
|
|
4
4
|
export declare function server_get_session_by_id(sessionId: number, client?: SupabaseClient): Promise<IWebResponseCompatible<ISessionWithCoordinates | null>>;
|
|
5
|
-
export declare function server_get_session_usage_over_time_by_herd(herd_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number): Promise<IWebResponseCompatible<ISessionUsageOverTime>>;
|
|
6
|
-
export declare function server_get_session_usage_over_time_by_device(device_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number): Promise<IWebResponseCompatible<ISessionUsageOverTime>>;
|
|
5
|
+
export declare function server_get_session_usage_over_time_by_herd(herd_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number, product_numbers_caller?: string[]): Promise<IWebResponseCompatible<ISessionUsageOverTime>>;
|
|
6
|
+
export declare function server_get_session_usage_over_time_by_device(device_id: number, client?: SupabaseClient, min_duration_minutes_caller?: number, min_distance_meters_caller?: number, product_numbers_caller?: string[]): Promise<IWebResponseCompatible<ISessionUsageOverTime>>;
|
|
7
7
|
export declare function server_get_events_and_tags_by_session_id(sessionId: number, limit?: number, offset?: number): Promise<IWebResponseCompatible<IEventAndTagsPrettyLocation[]>>;
|
|
8
8
|
export declare function server_insert_session(sessions: SessionInsert | SessionInsert[], client?: SupabaseClient): Promise<IWebResponseCompatible<ISession[]>>;
|
|
9
9
|
export declare function server_update_session(sessions: (SessionUpdate & {
|
package/dist/helpers/sessions.js
CHANGED
|
@@ -21,7 +21,7 @@ export async function server_get_session_by_id(sessionId, client) {
|
|
|
21
21
|
return IWebResponse.success(session).to_compatible();
|
|
22
22
|
}
|
|
23
23
|
// Get session usage over time by herd
|
|
24
|
-
export async function server_get_session_usage_over_time_by_herd(herd_id, client, min_duration_minutes_caller, min_distance_meters_caller) {
|
|
24
|
+
export async function server_get_session_usage_over_time_by_herd(herd_id, client, min_duration_minutes_caller, min_distance_meters_caller, product_numbers_caller) {
|
|
25
25
|
const supabase = client || (await newServerClient());
|
|
26
26
|
const { data, error } = await supabase.rpc("get_session_usage_over_time", {
|
|
27
27
|
start_date_caller: undefined,
|
|
@@ -30,6 +30,7 @@ export async function server_get_session_usage_over_time_by_herd(herd_id, client
|
|
|
30
30
|
herd_id_caller: herd_id,
|
|
31
31
|
min_duration_minutes_caller,
|
|
32
32
|
min_distance_meters_caller,
|
|
33
|
+
product_numbers_caller,
|
|
33
34
|
});
|
|
34
35
|
if (error) {
|
|
35
36
|
return IWebResponse.error(error.message).to_compatible();
|
|
@@ -40,7 +41,7 @@ export async function server_get_session_usage_over_time_by_herd(herd_id, client
|
|
|
40
41
|
return IWebResponse.success(data).to_compatible();
|
|
41
42
|
}
|
|
42
43
|
// Get session usage over time by device
|
|
43
|
-
export async function server_get_session_usage_over_time_by_device(device_id, client, min_duration_minutes_caller, min_distance_meters_caller) {
|
|
44
|
+
export async function server_get_session_usage_over_time_by_device(device_id, client, min_duration_minutes_caller, min_distance_meters_caller, product_numbers_caller) {
|
|
44
45
|
const supabase = client || (await newServerClient());
|
|
45
46
|
const { data, error } = await supabase.rpc("get_session_usage_over_time", {
|
|
46
47
|
start_date_caller: undefined,
|
|
@@ -49,6 +50,7 @@ export async function server_get_session_usage_over_time_by_device(device_id, cl
|
|
|
49
50
|
herd_id_caller: undefined,
|
|
50
51
|
min_duration_minutes_caller,
|
|
51
52
|
min_distance_meters_caller,
|
|
53
|
+
product_numbers_caller,
|
|
52
54
|
});
|
|
53
55
|
if (error) {
|
|
54
56
|
return IWebResponse.error(error.message).to_compatible();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
import { Database } from "../types/supabase";
|
|
3
|
+
/**
|
|
4
|
+
* Creates one browser Supabase client (reads NEXT_PUBLIC_* env each call).
|
|
5
|
+
* Prefer {@link useScoutBrowserClient} in components so creation runs once via lazy state init.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createScoutBrowserClient(): SupabaseClient<Database>;
|
|
8
|
+
/**
|
|
9
|
+
* One browser Supabase client per component instance, created on first render (lazy state initializer).
|
|
10
|
+
*/
|
|
11
|
+
export declare function useScoutBrowserClient(): SupabaseClient<Database>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { createBrowserClient } from "@supabase/ssr";
|
|
4
|
+
/**
|
|
5
|
+
* Creates one browser Supabase client (reads NEXT_PUBLIC_* env each call).
|
|
6
|
+
* Prefer {@link useScoutBrowserClient} in components so creation runs once via lazy state init.
|
|
7
|
+
*/
|
|
8
|
+
export function createScoutBrowserClient() {
|
|
9
|
+
return createBrowserClient(process.env.NEXT_PUBLIC_SUPABASE_URL || "", process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || "");
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One browser Supabase client per component instance, created on first render (lazy state initializer).
|
|
13
|
+
*/
|
|
14
|
+
export function useScoutBrowserClient() {
|
|
15
|
+
const [client] = useState(createScoutBrowserClient);
|
|
16
|
+
return client;
|
|
17
|
+
}
|
|
@@ -2463,6 +2463,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
|
|
|
2463
2463
|
herd_id_caller?: number;
|
|
2464
2464
|
min_distance_meters_caller?: number;
|
|
2465
2465
|
min_duration_minutes_caller?: number;
|
|
2466
|
+
product_numbers_caller?: string[];
|
|
2466
2467
|
start_date_caller?: string;
|
|
2467
2468
|
};
|
|
2468
2469
|
Returns: import("../types/supabase").Json;
|
|
@@ -2474,6 +2475,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
|
|
|
2474
2475
|
herd_id_caller?: number;
|
|
2475
2476
|
min_distance_meters_caller?: number;
|
|
2476
2477
|
min_duration_minutes_caller?: number;
|
|
2478
|
+
product_numbers_caller?: string[];
|
|
2477
2479
|
start_date_caller?: string;
|
|
2478
2480
|
};
|
|
2479
2481
|
Returns: import("../types/supabase").Json;
|
|
@@ -2486,6 +2488,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
|
|
|
2486
2488
|
limit_caller?: number;
|
|
2487
2489
|
min_flight_distance_meters?: number;
|
|
2488
2490
|
min_flight_time_minutes?: number;
|
|
2491
|
+
product_numbers_caller?: string[];
|
|
2489
2492
|
range_end?: string;
|
|
2490
2493
|
range_start?: string;
|
|
2491
2494
|
};
|
|
@@ -2505,6 +2508,7 @@ export declare function useSupabase(): SupabaseClient<Database, "public", "publi
|
|
|
2505
2508
|
limit_caller?: number;
|
|
2506
2509
|
min_flight_distance_meters?: number;
|
|
2507
2510
|
min_flight_time_minutes?: number;
|
|
2511
|
+
product_numbers_caller?: string[];
|
|
2508
2512
|
range_end?: string;
|
|
2509
2513
|
range_start?: string;
|
|
2510
2514
|
};
|
package/dist/store/api.d.ts
CHANGED
|
@@ -15,6 +15,11 @@ export interface InfiniteQueryArgs {
|
|
|
15
15
|
minFlightTimeMinutes?: number | null;
|
|
16
16
|
/** Sessions RPC only: minimum distance_total in meters. */
|
|
17
17
|
minFlightDistanceMeters?: number | null;
|
|
18
|
+
/**
|
|
19
|
+
* Sessions infinite RPCs only: filter to devices with a matching non-deleted part.
|
|
20
|
+
* Omitted/null = no filter; empty array = no sessions.
|
|
21
|
+
*/
|
|
22
|
+
productNumbers?: string[] | null;
|
|
18
23
|
}
|
|
19
24
|
export interface SessionsInfiniteResponse {
|
|
20
25
|
sessions: ISessionWithCoordinates[];
|
package/dist/store/api.js
CHANGED
|
@@ -16,7 +16,7 @@ export const scoutApi = createApi({
|
|
|
16
16
|
// =====================================================
|
|
17
17
|
getSessionsInfiniteByHerd: builder.query({
|
|
18
18
|
serializeQueryArgs,
|
|
19
|
-
async queryFn({ herdId, limit = 20, cursor, rangeStart, rangeEnd, minFlightTimeMinutes, minFlightDistanceMeters, supabase, }) {
|
|
19
|
+
async queryFn({ herdId, limit = 20, cursor, rangeStart, rangeEnd, minFlightTimeMinutes, minFlightDistanceMeters, productNumbers, supabase, }) {
|
|
20
20
|
try {
|
|
21
21
|
if (!herdId) {
|
|
22
22
|
return {
|
|
@@ -32,6 +32,7 @@ export const scoutApi = createApi({
|
|
|
32
32
|
range_end: rangeEnd ?? null,
|
|
33
33
|
min_flight_time_minutes: minFlightTimeMinutes ?? null,
|
|
34
34
|
min_flight_distance_meters: minFlightDistanceMeters ?? null,
|
|
35
|
+
product_numbers_caller: productNumbers ?? undefined,
|
|
35
36
|
});
|
|
36
37
|
if (error) {
|
|
37
38
|
return {
|
|
@@ -72,7 +73,7 @@ export const scoutApi = createApi({
|
|
|
72
73
|
}),
|
|
73
74
|
getSessionsInfiniteByDevice: builder.query({
|
|
74
75
|
serializeQueryArgs,
|
|
75
|
-
async queryFn({ deviceId, limit = 20, cursor, rangeStart, rangeEnd, minFlightTimeMinutes, minFlightDistanceMeters, supabase, }) {
|
|
76
|
+
async queryFn({ deviceId, limit = 20, cursor, rangeStart, rangeEnd, minFlightTimeMinutes, minFlightDistanceMeters, productNumbers, supabase, }) {
|
|
76
77
|
try {
|
|
77
78
|
if (!deviceId) {
|
|
78
79
|
return {
|
|
@@ -88,6 +89,7 @@ export const scoutApi = createApi({
|
|
|
88
89
|
range_end: rangeEnd ?? null,
|
|
89
90
|
min_flight_time_minutes: minFlightTimeMinutes ?? null,
|
|
90
91
|
min_flight_distance_meters: minFlightDistanceMeters ?? null,
|
|
92
|
+
product_numbers_caller: productNumbers ?? undefined,
|
|
91
93
|
});
|
|
92
94
|
if (error) {
|
|
93
95
|
return {
|
package/dist/types/db.d.ts
CHANGED
|
@@ -64,6 +64,7 @@ export interface ISessionSummary {
|
|
|
64
64
|
herd_id: number | null;
|
|
65
65
|
min_duration_minutes: number | null;
|
|
66
66
|
min_distance_meters: number | null;
|
|
67
|
+
product_numbers: string[] | null;
|
|
67
68
|
};
|
|
68
69
|
}
|
|
69
70
|
export type ISessionUsageOverTime = Database["public"]["Functions"]["get_session_usage_over_time"]["Returns"];
|
package/dist/types/supabase.d.ts
CHANGED
|
@@ -2548,6 +2548,7 @@ export type Database = {
|
|
|
2548
2548
|
herd_id_caller?: number;
|
|
2549
2549
|
min_distance_meters_caller?: number;
|
|
2550
2550
|
min_duration_minutes_caller?: number;
|
|
2551
|
+
product_numbers_caller?: string[];
|
|
2551
2552
|
start_date_caller?: string;
|
|
2552
2553
|
};
|
|
2553
2554
|
Returns: Json;
|
|
@@ -2559,6 +2560,7 @@ export type Database = {
|
|
|
2559
2560
|
herd_id_caller?: number;
|
|
2560
2561
|
min_distance_meters_caller?: number;
|
|
2561
2562
|
min_duration_minutes_caller?: number;
|
|
2563
|
+
product_numbers_caller?: string[];
|
|
2562
2564
|
start_date_caller?: string;
|
|
2563
2565
|
};
|
|
2564
2566
|
Returns: Json;
|
|
@@ -2571,6 +2573,7 @@ export type Database = {
|
|
|
2571
2573
|
limit_caller?: number;
|
|
2572
2574
|
min_flight_distance_meters?: number;
|
|
2573
2575
|
min_flight_time_minutes?: number;
|
|
2576
|
+
product_numbers_caller?: string[];
|
|
2574
2577
|
range_end?: string;
|
|
2575
2578
|
range_start?: string;
|
|
2576
2579
|
};
|
|
@@ -2590,6 +2593,7 @@ export type Database = {
|
|
|
2590
2593
|
limit_caller?: number;
|
|
2591
2594
|
min_flight_distance_meters?: number;
|
|
2592
2595
|
min_flight_time_minutes?: number;
|
|
2596
|
+
product_numbers_caller?: string[];
|
|
2593
2597
|
range_end?: string;
|
|
2594
2598
|
range_start?: string;
|
|
2595
2599
|
};
|