@adventurelabs/scout-core 2.0.0 → 2.0.2

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.
@@ -0,0 +1,74 @@
1
+ import { newServerClient } from "../supabase/server";
2
+ import * as queries from "./compliance.queries";
3
+ export async function server_get_contact_types_by_localization(localizationId, options) {
4
+ return queries.get_contact_types_by_localization_query(await newServerClient(), localizationId, options);
5
+ }
6
+ export async function server_create_contact_type(row) {
7
+ return queries.create_contact_type_query(await newServerClient(), row);
8
+ }
9
+ export async function server_update_contact_type(id, updates) {
10
+ return queries.update_contact_type_query(await newServerClient(), id, updates);
11
+ }
12
+ export async function server_get_operating_context_point_of_interest_types_by_localization(localizationId, options) {
13
+ return queries.get_operating_context_point_of_interest_types_by_localization_query(await newServerClient(), localizationId, options);
14
+ }
15
+ export async function server_create_operating_context_point_of_interest_type(row) {
16
+ return queries.create_operating_context_point_of_interest_type_query(await newServerClient(), row);
17
+ }
18
+ export async function server_update_operating_context_point_of_interest_type(id, updates) {
19
+ return queries.update_operating_context_point_of_interest_type_query(await newServerClient(), id, updates);
20
+ }
21
+ export async function server_get_operating_permissions_by_localization(localizationId, options) {
22
+ return queries.get_operating_permissions_by_localization_query(await newServerClient(), localizationId, options);
23
+ }
24
+ export async function server_create_operating_permission(row) {
25
+ return queries.create_operating_permission_query(await newServerClient(), row);
26
+ }
27
+ export async function server_update_operating_permission(id, updates) {
28
+ return queries.update_operating_permission_query(await newServerClient(), id, updates);
29
+ }
30
+ export async function server_get_compliance_resource_types(options) {
31
+ return queries.get_compliance_resource_types_query(await newServerClient(), options);
32
+ }
33
+ export async function server_create_compliance_resource_type(row) {
34
+ return queries.create_compliance_resource_type_query(await newServerClient(), row);
35
+ }
36
+ export async function server_update_compliance_resource_type(id, updates) {
37
+ return queries.update_compliance_resource_type_query(await newServerClient(), id, updates);
38
+ }
39
+ export async function server_get_compliance_resources_by_localization(localizationId, options) {
40
+ return queries.get_compliance_resources_by_localization_query(await newServerClient(), localizationId, options);
41
+ }
42
+ export async function server_create_compliance_resource(row) {
43
+ return queries.create_compliance_resource_query(await newServerClient(), row);
44
+ }
45
+ export async function server_update_compliance_resource(id, updates) {
46
+ return queries.update_compliance_resource_query(await newServerClient(), id, updates);
47
+ }
48
+ export async function server_get_operating_context_points_of_interest_by_operating_context(operatingContextId, options) {
49
+ return queries.get_operating_context_points_of_interest_by_operating_context_query(await newServerClient(), operatingContextId, options);
50
+ }
51
+ export async function server_create_operating_context_point_of_interest(row) {
52
+ return queries.create_operating_context_point_of_interest_query(await newServerClient(), row);
53
+ }
54
+ export async function server_update_operating_context_point_of_interest(id, updates) {
55
+ return queries.update_operating_context_point_of_interest_query(await newServerClient(), id, updates);
56
+ }
57
+ export async function server_get_operating_context_contacts_by_operating_context(operatingContextId, options) {
58
+ return queries.get_operating_context_contacts_by_operating_context_query(await newServerClient(), operatingContextId, options);
59
+ }
60
+ export async function server_create_operating_context_contact(row) {
61
+ return queries.create_operating_context_contact_query(await newServerClient(), row);
62
+ }
63
+ export async function server_update_operating_context_contact(id, updates) {
64
+ return queries.update_operating_context_contact_query(await newServerClient(), id, updates);
65
+ }
66
+ export async function server_get_herd_operating_permissions_by_herd(herdId, options) {
67
+ return queries.get_herd_operating_permissions_by_herd_query(await newServerClient(), herdId, options);
68
+ }
69
+ export async function server_create_herd_operating_permission(row) {
70
+ return queries.create_herd_operating_permission_query(await newServerClient(), row);
71
+ }
72
+ export async function server_update_herd_operating_permission(id, updates) {
73
+ return queries.update_herd_operating_permission_query(await newServerClient(), id, updates);
74
+ }
@@ -0,0 +1,28 @@
1
+ import type { SupabaseClient } from "@supabase/supabase-js";
2
+ import type { ComplianceResourceCreateInput, ComplianceResourceTypeCreateInput, ComplianceResourceTypeUpdateInput, ComplianceResourceUpdateInput, ContactTypeCreateInput, ContactTypeUpdateInput, HerdOperatingPermissionCreateInput, HerdOperatingPermissionUpdateInput, IComplianceResource, IComplianceResourceType, IContactType, IHerdOperatingPermission, IOperatingContextContact, IOperatingContextPointOfInterest, IOperatingContextPointOfInterestType, IOperatingPermission, OperatingContextContactCreateInput, OperatingContextContactUpdateInput, OperatingContextListOptions, OperatingContextPointOfInterestCreateInput, OperatingContextPointOfInterestTypeCreateInput, OperatingContextPointOfInterestTypeUpdateInput, OperatingContextPointOfInterestUpdateInput, OperatingPermissionCreateInput, OperatingPermissionUpdateInput } from "../types/db";
3
+ import { type IWebResponseCompatible } from "../types/requests";
4
+ import type { Database } from "../types/supabase";
5
+ export declare function get_contact_types_by_localization_query(client: SupabaseClient<Database>, localizationId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IContactType[]>>;
6
+ export declare function create_contact_type_query(client: SupabaseClient<Database>, row: ContactTypeCreateInput): Promise<IWebResponseCompatible<IContactType | null>>;
7
+ export declare function update_contact_type_query(client: SupabaseClient<Database>, id: number, updates: ContactTypeUpdateInput): Promise<IWebResponseCompatible<IContactType | null>>;
8
+ export declare function get_operating_context_point_of_interest_types_by_localization_query(client: SupabaseClient<Database>, localizationId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextPointOfInterestType[]>>;
9
+ export declare function create_operating_context_point_of_interest_type_query(client: SupabaseClient<Database>, row: OperatingContextPointOfInterestTypeCreateInput): Promise<IWebResponseCompatible<IOperatingContextPointOfInterestType | null>>;
10
+ export declare function update_operating_context_point_of_interest_type_query(client: SupabaseClient<Database>, id: number, updates: OperatingContextPointOfInterestTypeUpdateInput): Promise<IWebResponseCompatible<IOperatingContextPointOfInterestType | null>>;
11
+ export declare function get_operating_permissions_by_localization_query(client: SupabaseClient<Database>, localizationId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingPermission[]>>;
12
+ export declare function create_operating_permission_query(client: SupabaseClient<Database>, row: OperatingPermissionCreateInput): Promise<IWebResponseCompatible<IOperatingPermission | null>>;
13
+ export declare function update_operating_permission_query(client: SupabaseClient<Database>, id: number, updates: OperatingPermissionUpdateInput): Promise<IWebResponseCompatible<IOperatingPermission | null>>;
14
+ export declare function get_compliance_resource_types_query(client: SupabaseClient<Database>, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IComplianceResourceType[]>>;
15
+ export declare function create_compliance_resource_type_query(client: SupabaseClient<Database>, row: ComplianceResourceTypeCreateInput): Promise<IWebResponseCompatible<IComplianceResourceType | null>>;
16
+ export declare function update_compliance_resource_type_query(client: SupabaseClient<Database>, id: number, updates: ComplianceResourceTypeUpdateInput): Promise<IWebResponseCompatible<IComplianceResourceType | null>>;
17
+ export declare function get_compliance_resources_by_localization_query(client: SupabaseClient<Database>, localizationId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IComplianceResource[]>>;
18
+ export declare function create_compliance_resource_query(client: SupabaseClient<Database>, row: ComplianceResourceCreateInput): Promise<IWebResponseCompatible<IComplianceResource | null>>;
19
+ export declare function update_compliance_resource_query(client: SupabaseClient<Database>, id: number, updates: ComplianceResourceUpdateInput): Promise<IWebResponseCompatible<IComplianceResource | null>>;
20
+ export declare function get_operating_context_points_of_interest_by_operating_context_query(client: SupabaseClient<Database>, operatingContextId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextPointOfInterest[]>>;
21
+ export declare function create_operating_context_point_of_interest_query(client: SupabaseClient<Database>, row: OperatingContextPointOfInterestCreateInput): Promise<IWebResponseCompatible<IOperatingContextPointOfInterest | null>>;
22
+ export declare function update_operating_context_point_of_interest_query(client: SupabaseClient<Database>, id: number, updates: OperatingContextPointOfInterestUpdateInput): Promise<IWebResponseCompatible<IOperatingContextPointOfInterest | null>>;
23
+ export declare function get_operating_context_contacts_by_operating_context_query(client: SupabaseClient<Database>, operatingContextId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IOperatingContextContact[]>>;
24
+ export declare function create_operating_context_contact_query(client: SupabaseClient<Database>, row: OperatingContextContactCreateInput): Promise<IWebResponseCompatible<IOperatingContextContact | null>>;
25
+ export declare function update_operating_context_contact_query(client: SupabaseClient<Database>, id: number, updates: OperatingContextContactUpdateInput): Promise<IWebResponseCompatible<IOperatingContextContact | null>>;
26
+ export declare function get_herd_operating_permissions_by_herd_query(client: SupabaseClient<Database>, herdId: number, options?: OperatingContextListOptions): Promise<IWebResponseCompatible<IHerdOperatingPermission[]>>;
27
+ export declare function create_herd_operating_permission_query(client: SupabaseClient<Database>, row: HerdOperatingPermissionCreateInput): Promise<IWebResponseCompatible<IHerdOperatingPermission | null>>;
28
+ export declare function update_herd_operating_permission_query(client: SupabaseClient<Database>, id: number, updates: HerdOperatingPermissionUpdateInput): Promise<IWebResponseCompatible<IHerdOperatingPermission | null>>;
@@ -0,0 +1,167 @@
1
+ import { IWebResponse } from "../types/requests";
2
+ function responseError(message) {
3
+ return IWebResponse.error(message).to_compatible();
4
+ }
5
+ function pageLimit(options) {
6
+ const limit = options?.limit ?? 100;
7
+ return limit < 1 || limit > 500 ? null : limit;
8
+ }
9
+ function updateError(updates) {
10
+ if (Object.keys(updates).length === 0)
11
+ return "no fields to update";
12
+ if (updates.lifecycle_reason !== undefined && updates.lifecycle === undefined) {
13
+ return "lifecycle_reason requires lifecycle";
14
+ }
15
+ return null;
16
+ }
17
+ async function authenticatedUserId(client) {
18
+ const { data, error } = await client.auth.getUser();
19
+ return error ? null : (data.user?.id ?? null);
20
+ }
21
+ function withLifecycleActor(updates, userId) {
22
+ return updates.lifecycle
23
+ ? { ...updates, lifecycle_changed_by: userId }
24
+ : updates;
25
+ }
26
+ async function listBy(client, table, column, value, options) {
27
+ const limit = pageLimit(options);
28
+ if (limit == null)
29
+ return responseError("limit must be between 1 and 500");
30
+ let query = client
31
+ .from(table)
32
+ .select("*")
33
+ .eq(column, value)
34
+ .order("id")
35
+ .limit(limit);
36
+ if (!options?.include_inactive)
37
+ query = query.eq("lifecycle", "active");
38
+ if (options?.after_id != null)
39
+ query = query.gt("id", options.after_id);
40
+ const { data, error } = await query;
41
+ return error
42
+ ? responseError(error.message)
43
+ : IWebResponse.success((data ?? [])).to_compatible();
44
+ }
45
+ async function listAll(client, table, options) {
46
+ const limit = pageLimit(options);
47
+ if (limit == null)
48
+ return responseError("limit must be between 1 and 500");
49
+ let query = client.from(table).select("*").order("id").limit(limit);
50
+ if (!options?.include_inactive)
51
+ query = query.eq("lifecycle", "active");
52
+ if (options?.after_id != null)
53
+ query = query.gt("id", options.after_id);
54
+ const { data, error } = await query;
55
+ return error
56
+ ? responseError(error.message)
57
+ : IWebResponse.success((data ?? [])).to_compatible();
58
+ }
59
+ async function insertRow(client, table, row) {
60
+ const { data, error } = await client
61
+ .from(table)
62
+ .insert(row)
63
+ .select("*")
64
+ .single();
65
+ return error
66
+ ? responseError(error.message)
67
+ : IWebResponse.success(data).to_compatible();
68
+ }
69
+ async function insertWithCreator(client, table, row) {
70
+ const userId = await authenticatedUserId(client);
71
+ if (!userId)
72
+ return responseError("authentication required");
73
+ return insertRow(client, table, { ...row, created_by: userId });
74
+ }
75
+ async function patchRow(client, table, id, updates, trackUpdater = false) {
76
+ const invalid = updateError(updates);
77
+ if (invalid)
78
+ return responseError(invalid);
79
+ const userId = await authenticatedUserId(client);
80
+ if (!userId)
81
+ return responseError("authentication required");
82
+ const payload = {
83
+ ...withLifecycleActor(updates, userId),
84
+ ...(trackUpdater && { updated_by: userId }),
85
+ };
86
+ const { data, error } = await client
87
+ .from(table)
88
+ .update(payload)
89
+ .eq("id", id)
90
+ .select("*")
91
+ .single();
92
+ return error
93
+ ? responseError(error.message)
94
+ : IWebResponse.success(data).to_compatible();
95
+ }
96
+ export async function get_contact_types_by_localization_query(client, localizationId, options) {
97
+ return listBy(client, "contact_types", "localization_id", localizationId, options);
98
+ }
99
+ export async function create_contact_type_query(client, row) {
100
+ return insertRow(client, "contact_types", row);
101
+ }
102
+ export async function update_contact_type_query(client, id, updates) {
103
+ return patchRow(client, "contact_types", id, updates);
104
+ }
105
+ export async function get_operating_context_point_of_interest_types_by_localization_query(client, localizationId, options) {
106
+ return listBy(client, "operating_context_point_of_interest_types", "localization_id", localizationId, options);
107
+ }
108
+ export async function create_operating_context_point_of_interest_type_query(client, row) {
109
+ return insertRow(client, "operating_context_point_of_interest_types", row);
110
+ }
111
+ export async function update_operating_context_point_of_interest_type_query(client, id, updates) {
112
+ return patchRow(client, "operating_context_point_of_interest_types", id, updates);
113
+ }
114
+ export async function get_operating_permissions_by_localization_query(client, localizationId, options) {
115
+ return listBy(client, "operating_permissions", "localization_id", localizationId, options);
116
+ }
117
+ export async function create_operating_permission_query(client, row) {
118
+ return insertRow(client, "operating_permissions", row);
119
+ }
120
+ export async function update_operating_permission_query(client, id, updates) {
121
+ return patchRow(client, "operating_permissions", id, updates);
122
+ }
123
+ export async function get_compliance_resource_types_query(client, options) {
124
+ return listAll(client, "compliance_resource_types", options);
125
+ }
126
+ export async function create_compliance_resource_type_query(client, row) {
127
+ return insertRow(client, "compliance_resource_types", row);
128
+ }
129
+ export async function update_compliance_resource_type_query(client, id, updates) {
130
+ return patchRow(client, "compliance_resource_types", id, updates);
131
+ }
132
+ export async function get_compliance_resources_by_localization_query(client, localizationId, options) {
133
+ return listBy(client, "compliance_resources", "localization_id", localizationId, options);
134
+ }
135
+ export async function create_compliance_resource_query(client, row) {
136
+ return insertRow(client, "compliance_resources", row);
137
+ }
138
+ export async function update_compliance_resource_query(client, id, updates) {
139
+ return patchRow(client, "compliance_resources", id, updates);
140
+ }
141
+ export async function get_operating_context_points_of_interest_by_operating_context_query(client, operatingContextId, options) {
142
+ return listBy(client, "operating_context_points_of_interest", "operating_context_id", operatingContextId, options);
143
+ }
144
+ export async function create_operating_context_point_of_interest_query(client, row) {
145
+ return insertWithCreator(client, "operating_context_points_of_interest", row);
146
+ }
147
+ export async function update_operating_context_point_of_interest_query(client, id, updates) {
148
+ return patchRow(client, "operating_context_points_of_interest", id, updates, true);
149
+ }
150
+ export async function get_operating_context_contacts_by_operating_context_query(client, operatingContextId, options) {
151
+ return listBy(client, "operating_context_contacts", "operating_context_id", operatingContextId, options);
152
+ }
153
+ export async function create_operating_context_contact_query(client, row) {
154
+ return insertRow(client, "operating_context_contacts", row);
155
+ }
156
+ export async function update_operating_context_contact_query(client, id, updates) {
157
+ return patchRow(client, "operating_context_contacts", id, updates);
158
+ }
159
+ export async function get_herd_operating_permissions_by_herd_query(client, herdId, options) {
160
+ return listBy(client, "herd_operating_permissions", "herd_id", herdId, options);
161
+ }
162
+ export async function create_herd_operating_permission_query(client, row) {
163
+ return insertRow(client, "herd_operating_permissions", row);
164
+ }
165
+ export async function update_herd_operating_permission_query(client, id, updates) {
166
+ return patchRow(client, "herd_operating_permissions", id, updates);
167
+ }
@@ -2,6 +2,7 @@ import { ContactInsert, ContactUpdate } from "../types/db";
2
2
  export declare function server_get_contacts_by_herd_id(herd_id: number, options?: {
3
3
  include_inactive?: boolean;
4
4
  }): Promise<import("../types").IWebResponseCompatible<{
5
+ contact_type_id: number | null;
5
6
  created_at: string;
6
7
  created_by: string | null;
7
8
  email: string | null;
@@ -12,11 +13,14 @@ export declare function server_get_contacts_by_herd_id(herd_id: number, options?
12
13
  lifecycle_changed_by: string | null;
13
14
  lifecycle_reason: string | null;
14
15
  name: string;
16
+ notes: string | null;
15
17
  phone: string | null;
18
+ radio_frequency: string | null;
16
19
  updated_at: string;
17
20
  updated_by: string | null;
18
21
  }[]>>;
19
22
  export declare function server_get_contact_by_id(contact_id: number): Promise<import("../types").IWebResponseCompatible<{
23
+ contact_type_id: number | null;
20
24
  created_at: string;
21
25
  created_by: string | null;
22
26
  email: string | null;
@@ -27,11 +31,14 @@ export declare function server_get_contact_by_id(contact_id: number): Promise<im
27
31
  lifecycle_changed_by: string | null;
28
32
  lifecycle_reason: string | null;
29
33
  name: string;
34
+ notes: string | null;
30
35
  phone: string | null;
36
+ radio_frequency: string | null;
31
37
  updated_at: string;
32
38
  updated_by: string | null;
33
39
  } | null>>;
34
40
  export declare function server_create_contact(row: ContactInsert): Promise<import("../types").IWebResponseCompatible<{
41
+ contact_type_id: number | null;
35
42
  created_at: string;
36
43
  created_by: string | null;
37
44
  email: string | null;
@@ -42,11 +49,14 @@ export declare function server_create_contact(row: ContactInsert): Promise<impor
42
49
  lifecycle_changed_by: string | null;
43
50
  lifecycle_reason: string | null;
44
51
  name: string;
52
+ notes: string | null;
45
53
  phone: string | null;
54
+ radio_frequency: string | null;
46
55
  updated_at: string;
47
56
  updated_by: string | null;
48
57
  } | null>>;
49
58
  export declare function server_update_contact(contact_id: number, patch: ContactUpdate): Promise<import("../types").IWebResponseCompatible<{
59
+ contact_type_id: number | null;
50
60
  created_at: string;
51
61
  created_by: string | null;
52
62
  email: string | null;
@@ -57,7 +67,9 @@ export declare function server_update_contact(contact_id: number, patch: Contact
57
67
  lifecycle_changed_by: string | null;
58
68
  lifecycle_reason: string | null;
59
69
  name: string;
70
+ notes: string | null;
60
71
  phone: string | null;
72
+ radio_frequency: string | null;
61
73
  updated_at: string;
62
74
  updated_by: string | null;
63
75
  } | null>>;
@@ -149,6 +149,7 @@ export declare function server_update_user_role_per_herd_lifecycle(membership_id
149
149
  user_id: string;
150
150
  } | null>>;
151
151
  export declare function server_update_contact_lifecycle(contact_id: number, lifecycle: EntityLifecycle, options?: LifecycleUpdateOptions): Promise<import("../types").IWebResponseCompatible<{
152
+ contact_type_id: number | null;
152
153
  created_at: string;
153
154
  created_by: string | null;
154
155
  email: string | null;
@@ -159,7 +160,9 @@ export declare function server_update_contact_lifecycle(contact_id: number, life
159
160
  lifecycle_changed_by: string | null;
160
161
  lifecycle_reason: string | null;
161
162
  name: string;
163
+ notes: string | null;
162
164
  phone: string | null;
165
+ radio_frequency: string | null;
163
166
  updated_at: string;
164
167
  updated_by: string | null;
165
168
  } | null>>;
@@ -15,6 +15,6 @@ export { useScoutRealtimeDocuments, type DocumentRealtimeChannel, } from "./useS
15
15
  export { useScoutRealtimeMaintenanceRequests } from "./useScoutRealtimeMaintenanceRequests";
16
16
  export { useScoutRealtimeContacts } from "./useScoutRealtimeContacts";
17
17
  export { useScoutRealtimeSessionIncidents } from "./useScoutRealtimeSessionIncidents";
18
- export { useScoutRealtimeOperatingContexts, type OperatingContextRealtimeData, type OperatingContextRealtimeRow, } from "./useScoutRealtimeOperatingContexts";
18
+ export { useScoutRealtimeOperatingContexts, type ComplianceRealtimeData, type ComplianceRealtimeRow, type OperatingContextRealtimeData, type OperatingContextRealtimeRow, } from "./useScoutRealtimeOperatingContexts";
19
19
  export { useInfiniteSessionsByHerd, useInfiniteSessionsByDevice, useInfiniteEventsByHerd, useInfiniteEventsByDevice, useInfiniteArtifactsByHerd, useInfiniteArtifactsByDevice, useInfiniteFeedByHerd, useInfiniteFeedByDevice, useInfiniteAnalysisJobs, useInfiniteAnalysisTasks, useIntersectionObserver, type UseInfiniteScrollOptions, type UseAnalysisJobsInfiniteOptions, type UseAnalysisTasksInfiniteOptions, } from "./useInfiniteQuery";
20
20
  export { useLoadingPerformance, useSessionSummariesByHerd, useHasSessionSummaries, } from "../store/hooks";
@@ -1,12 +1,14 @@
1
1
  import { SupabaseClient } from "@supabase/supabase-js";
2
2
  import { Database } from "../types/supabase";
3
- import { IOperatingContext, IOperatingContextDevice, IOperatingContextEquipmentRequirement, IOperatingContextPayload, IOperatingContextRegion, IOperatingContextRisk, IOperatingContextRoleAssignment } from "../types/db";
3
+ import { IComplianceResource, IComplianceResourceType, IContactType, IHerdOperatingPermission, IOperatingContext, IOperatingContextContact, IOperatingContextDevice, IOperatingContextEquipmentRequirement, IOperatingContextPayload, IOperatingContextPointOfInterest, IOperatingContextPointOfInterestType, IOperatingContextRegion, IOperatingContextRisk, IOperatingContextRoleAssignment, IOperatingPermission } from "../types/db";
4
4
  import { RealtimeData } from "../types/realtime";
5
5
  import { ScoutRealtimeBroadcastOptions } from "./useScoutRealtimeBroadcast";
6
- export type OperatingContextRealtimeRow = IOperatingContext | IOperatingContextDevice | IOperatingContextPayload | IOperatingContextRoleAssignment | IOperatingContextEquipmentRequirement | IOperatingContextRegion | IOperatingContextRisk;
6
+ export type ComplianceRealtimeRow = IContactType | IOperatingContextPointOfInterestType | IOperatingPermission | IComplianceResourceType | IComplianceResource | IOperatingContextPointOfInterest | IOperatingContextContact | IHerdOperatingPermission;
7
+ export type OperatingContextRealtimeRow = IOperatingContext | IOperatingContextDevice | IOperatingContextPayload | IOperatingContextRoleAssignment | IOperatingContextEquipmentRequirement | IOperatingContextRegion | IOperatingContextRisk | ComplianceRealtimeRow;
7
8
  type OperatingContextRealtimeChange<T, Table extends string> = Omit<RealtimeData<T>, "table"> & {
8
9
  table: Table;
9
10
  };
10
- export type OperatingContextRealtimeData = OperatingContextRealtimeChange<IOperatingContext, "operating_contexts"> | OperatingContextRealtimeChange<IOperatingContextDevice, "operating_contexts_devices"> | OperatingContextRealtimeChange<IOperatingContextPayload, "operating_context_payloads"> | OperatingContextRealtimeChange<IOperatingContextRoleAssignment, "operating_context_role_assignments"> | OperatingContextRealtimeChange<IOperatingContextEquipmentRequirement, "operating_context_equipment_requirements"> | OperatingContextRealtimeChange<IOperatingContextRegion, "operating_context_regions"> | OperatingContextRealtimeChange<IOperatingContextRisk, "operating_context_risks">;
11
+ export type OperatingContextRealtimeData = OperatingContextRealtimeChange<IOperatingContext, "operating_contexts"> | OperatingContextRealtimeChange<IOperatingContextDevice, "operating_contexts_devices"> | OperatingContextRealtimeChange<IOperatingContextPayload, "operating_context_payloads"> | OperatingContextRealtimeChange<IOperatingContextRoleAssignment, "operating_context_role_assignments"> | OperatingContextRealtimeChange<IOperatingContextEquipmentRequirement, "operating_context_equipment_requirements"> | OperatingContextRealtimeChange<IOperatingContextRegion, "operating_context_regions"> | OperatingContextRealtimeChange<IOperatingContextRisk, "operating_context_risks"> | ComplianceRealtimeData;
12
+ export type ComplianceRealtimeData = OperatingContextRealtimeChange<IContactType, "contact_types"> | OperatingContextRealtimeChange<IOperatingContextPointOfInterestType, "operating_context_point_of_interest_types"> | OperatingContextRealtimeChange<IOperatingPermission, "operating_permissions"> | OperatingContextRealtimeChange<IComplianceResourceType, "compliance_resource_types"> | OperatingContextRealtimeChange<IComplianceResource, "compliance_resources"> | OperatingContextRealtimeChange<IOperatingContextPointOfInterest, "operating_context_points_of_interest"> | OperatingContextRealtimeChange<IOperatingContextContact, "operating_context_contacts"> | OperatingContextRealtimeChange<IHerdOperatingPermission, "herd_operating_permissions">;
11
13
  export declare function useScoutRealtimeOperatingContexts(scoutSupabase: SupabaseClient<Database>, options?: ScoutRealtimeBroadcastOptions): [OperatingContextRealtimeData | null, () => void];
12
14
  export {};
@@ -10,6 +10,14 @@ const TABLE_MARKERS = [
10
10
  ["operating_context_equipment_requirements", "equipment_item_id"],
11
11
  ["operating_context_regions", "is_exclusion"],
12
12
  ["operating_context_risks", "probability_before"],
13
+ ["contact_types", "num_required"],
14
+ ["operating_context_point_of_interest_types", "system_name"],
15
+ ["operating_permissions", "description"],
16
+ ["compliance_resource_types", "system_name"],
17
+ ["compliance_resources", "compliance_resource_type_id"],
18
+ ["operating_context_points_of_interest", "point_of_interest_type_id"],
19
+ ["operating_context_contacts", "contact_id"],
20
+ ["herd_operating_permissions", "operating_permission_id"],
13
21
  ];
14
22
  function discriminate(update) {
15
23
  if (!update)
@@ -1,3 +1,4 @@
1
+ import { clearScoutClientState } from "../helpers/cache";
1
2
  import type { SupabaseClient } from "@supabase/supabase-js";
2
3
  import type { Database } from "../types/supabase";
3
4
  export interface UseScoutRefreshOptions {
@@ -14,10 +15,10 @@ export interface ScoutRefreshRequest {
14
15
  /**
15
16
  * Refreshes Scout state from cache and the API.
16
17
  *
17
- * Manual refreshes force an API request by default. Automatic mount refreshes
18
- * finish from a fresh cache without requesting the API.
18
+ * Automatic refreshes hydrate from cache before revalidating online.
19
19
  */
20
20
  export declare function useScoutRefresh(options?: UseScoutRefreshOptions): {
21
21
  handleRefresh: ({ force }?: ScoutRefreshRequest) => Promise<void>;
22
22
  clearCache: () => Promise<void>;
23
+ clearScoutClientState: typeof clearScoutClientState;
23
24
  };