@adventurelabs/scout-core 1.5.5 → 2.0.1

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.
Files changed (224) hide show
  1. package/README.md +47 -0
  2. package/dist/api_keys/actions.d.ts +0 -1
  3. package/dist/api_keys/actions.js +0 -14
  4. package/dist/client/index.d.ts +76 -0
  5. package/dist/client/index.js +83 -0
  6. package/dist/constants/index.d.ts +1 -0
  7. package/dist/constants/index.js +1 -0
  8. package/dist/helpers/analysis_usage/jobs_server.d.ts +25 -0
  9. package/dist/helpers/analysis_usage/jobs_server.js +10 -0
  10. package/dist/helpers/analysis_usage/tasks_server.d.ts +63 -0
  11. package/dist/helpers/analysis_usage/tasks_server.js +14 -0
  12. package/dist/helpers/artifacts.d.ts +0 -1
  13. package/dist/helpers/artifacts.js +10 -147
  14. package/dist/helpers/artifacts.queries.d.ts +26 -0
  15. package/dist/helpers/{artifacts.internal.js → artifacts.queries.js} +24 -41
  16. package/dist/helpers/auth.d.ts +1 -1
  17. package/dist/helpers/auth.js +2 -3
  18. package/dist/helpers/auth_server.d.ts +2 -0
  19. package/dist/helpers/auth_server.js +10 -0
  20. package/dist/helpers/certificates_server.d.ts +101 -0
  21. package/dist/helpers/certificates_server.js +42 -0
  22. package/dist/helpers/chat.d.ts +1 -2
  23. package/dist/helpers/chat.js +3 -38
  24. package/dist/helpers/chat.queries.d.ts +13 -0
  25. package/dist/helpers/chat.queries.js +39 -0
  26. package/dist/helpers/client_abilities_jwt_keys.js +0 -1
  27. package/dist/helpers/client_abilities_token_server.d.ts +1 -0
  28. package/dist/helpers/client_abilities_token_server.js +5 -2
  29. package/dist/helpers/compliance.d.ts +26 -0
  30. package/dist/helpers/compliance.js +74 -0
  31. package/dist/helpers/compliance.queries.d.ts +28 -0
  32. package/dist/helpers/compliance.queries.js +167 -0
  33. package/dist/helpers/connectivity.d.ts +1 -5
  34. package/dist/helpers/connectivity.js +7 -140
  35. package/dist/helpers/connectivity.queries.d.ts +18 -0
  36. package/dist/helpers/connectivity.queries.js +121 -0
  37. package/dist/helpers/contacts_server.d.ts +75 -0
  38. package/dist/helpers/contacts_server.js +18 -0
  39. package/dist/helpers/deviceTransfer.js +2 -11
  40. package/dist/helpers/deviceTransfer.queries.d.ts +4 -0
  41. package/dist/helpers/deviceTransfer.queries.js +11 -0
  42. package/dist/helpers/devices.js +4 -61
  43. package/dist/helpers/devices.queries.d.ts +4 -1
  44. package/dist/helpers/devices.queries.js +52 -0
  45. package/dist/helpers/document_templates.js +6 -52
  46. package/dist/helpers/document_templates.queries.d.ts +9 -0
  47. package/dist/helpers/document_templates.queries.js +56 -0
  48. package/dist/helpers/documents_server.d.ts +226 -0
  49. package/dist/helpers/documents_server.js +38 -0
  50. package/dist/helpers/email.d.ts +0 -6
  51. package/dist/helpers/email.js +1 -19
  52. package/dist/helpers/embeddings.d.ts +0 -5
  53. package/dist/helpers/embeddings.js +2 -19
  54. package/dist/helpers/embeddings.queries.d.ts +7 -0
  55. package/dist/helpers/{embeddings.internal.js → embeddings.queries.js} +2 -2
  56. package/dist/helpers/eventUtils.d.ts +3 -12
  57. package/dist/helpers/eventUtils.js +0 -10
  58. package/dist/helpers/events.d.ts +0 -1
  59. package/dist/helpers/events.js +7 -107
  60. package/dist/helpers/events.queries.d.ts +17 -0
  61. package/dist/helpers/{events.internal.js → events.queries.js} +24 -15
  62. package/dist/helpers/health_metrics.js +3 -38
  63. package/dist/helpers/health_metrics.queries.d.ts +12 -0
  64. package/dist/helpers/health_metrics.queries.js +39 -0
  65. package/dist/helpers/heartbeats.js +4 -83
  66. package/dist/helpers/heartbeats.queries.d.ts +11 -0
  67. package/dist/helpers/heartbeats.queries.js +76 -0
  68. package/dist/helpers/herd_allowed_domains.js +2 -12
  69. package/dist/helpers/{herd_allowed_domains_internal.d.ts → herd_allowed_domains.queries.d.ts} +1 -1
  70. package/dist/helpers/{herd_allowed_domains_internal.js → herd_allowed_domains.queries.js} +2 -2
  71. package/dist/helpers/herd_credentials_server.d.ts +76 -0
  72. package/dist/helpers/herd_credentials_server.js +22 -0
  73. package/dist/helpers/herd_modules.queries.js +10 -7
  74. package/dist/helpers/herd_roles.js +13 -148
  75. package/dist/helpers/herd_roles.queries.d.ts +18 -0
  76. package/dist/helpers/{herd_roles_internal.js → herd_roles.queries.js} +28 -28
  77. package/dist/helpers/herds.js +5 -47
  78. package/dist/helpers/herds.queries.d.ts +8 -1
  79. package/dist/helpers/herds.queries.js +48 -0
  80. package/dist/helpers/invitations.js +7 -58
  81. package/dist/helpers/invitations.queries.d.ts +10 -0
  82. package/dist/helpers/{invitations_internal.js → invitations.queries.js} +12 -12
  83. package/dist/helpers/issuers.js +6 -52
  84. package/dist/helpers/issuers.queries.d.ts +9 -0
  85. package/dist/helpers/issuers.queries.js +53 -0
  86. package/dist/helpers/layers.js +2 -20
  87. package/dist/helpers/layers.queries.d.ts +2 -1
  88. package/dist/helpers/layers.queries.js +9 -13
  89. package/dist/helpers/lifecycle_server.d.ts +178 -0
  90. package/dist/helpers/lifecycle_server.js +38 -0
  91. package/dist/helpers/localizations.js +5 -42
  92. package/dist/helpers/localizations.queries.d.ts +8 -0
  93. package/dist/helpers/localizations.queries.js +45 -0
  94. package/dist/helpers/maintenance_requests_server.d.ts +124 -0
  95. package/dist/helpers/maintenance_requests_server.js +34 -0
  96. package/dist/helpers/manufacturers.js +5 -43
  97. package/dist/helpers/manufacturers.queries.d.ts +10 -0
  98. package/dist/helpers/manufacturers.queries.js +46 -0
  99. package/dist/helpers/media_urls.d.ts +13 -0
  100. package/dist/helpers/media_urls.js +21 -0
  101. package/dist/helpers/models.js +8 -80
  102. package/dist/helpers/models.queries.d.ts +13 -0
  103. package/dist/helpers/models.queries.js +79 -0
  104. package/dist/helpers/observations_server.d.ts +51 -0
  105. package/dist/helpers/observations_server.js +22 -0
  106. package/dist/helpers/operating_contexts.js +39 -154
  107. package/dist/helpers/operating_contexts.queries.d.ts +48 -0
  108. package/dist/helpers/operating_contexts.queries.js +223 -0
  109. package/dist/helpers/operators.js +4 -57
  110. package/dist/helpers/operators.queries.d.ts +7 -0
  111. package/dist/helpers/operators.queries.js +55 -0
  112. package/dist/helpers/parts.d.ts +0 -87
  113. package/dist/helpers/parts.js +1 -89
  114. package/dist/helpers/parts_server.d.ts +260 -0
  115. package/dist/helpers/parts_server.js +71 -0
  116. package/dist/helpers/pins_server.d.ts +118 -0
  117. package/dist/helpers/pins_server.js +38 -0
  118. package/dist/helpers/plans.js +4 -56
  119. package/dist/helpers/plans.queries.d.ts +4 -1
  120. package/dist/helpers/plans.queries.js +39 -12
  121. package/dist/helpers/points_for_user_server.d.ts +9 -0
  122. package/dist/helpers/points_for_user_server.js +14 -0
  123. package/dist/helpers/product_compatibilities.js +6 -78
  124. package/dist/helpers/product_compatibilities.queries.d.ts +9 -0
  125. package/dist/helpers/product_compatibilities.queries.js +83 -0
  126. package/dist/helpers/product_numbers.js +6 -55
  127. package/dist/helpers/product_numbers.queries.d.ts +9 -0
  128. package/dist/helpers/product_numbers.queries.js +58 -0
  129. package/dist/helpers/products.js +6 -54
  130. package/dist/helpers/products.queries.d.ts +11 -0
  131. package/dist/helpers/products.queries.js +58 -0
  132. package/dist/helpers/providers.js +5 -71
  133. package/dist/helpers/providers.queries.d.ts +5 -1
  134. package/dist/helpers/providers.queries.js +52 -11
  135. package/dist/helpers/pubsub_token_server.d.ts +1 -0
  136. package/dist/helpers/pubsub_token_server.js +5 -2
  137. package/dist/helpers/segmentations_sam3.js +5 -78
  138. package/dist/helpers/segmentations_sam3.queries.d.ts +16 -0
  139. package/dist/helpers/segmentations_sam3.queries.js +81 -0
  140. package/dist/helpers/sensor_poses_server.d.ts +98 -0
  141. package/dist/helpers/sensor_poses_server.js +26 -0
  142. package/dist/helpers/session_incidents_server.d.ts +106 -0
  143. package/dist/helpers/session_incidents_server.js +22 -0
  144. package/dist/helpers/session_summaries.d.ts +2 -0
  145. package/dist/helpers/session_summaries.js +7 -23
  146. package/dist/helpers/session_summaries.queries.d.ts +6 -3
  147. package/dist/helpers/session_summaries.queries.js +27 -0
  148. package/dist/helpers/sessions.js +8 -122
  149. package/dist/helpers/sessions.queries.d.ts +14 -2
  150. package/dist/helpers/sessions.queries.js +88 -1
  151. package/dist/helpers/storage.js +0 -1
  152. package/dist/helpers/supabase_auth.d.ts +6 -0
  153. package/dist/helpers/supabase_auth.js +37 -0
  154. package/dist/helpers/tags.d.ts +0 -1
  155. package/dist/helpers/tags.js +13 -559
  156. package/dist/helpers/tags.queries.d.ts +33 -0
  157. package/dist/helpers/tags.queries.js +454 -0
  158. package/dist/helpers/user_credentials_server.d.ts +76 -0
  159. package/dist/helpers/user_credentials_server.js +22 -0
  160. package/dist/helpers/users.d.ts +2 -2
  161. package/dist/helpers/users.js +8 -107
  162. package/dist/helpers/users.queries.d.ts +9 -1
  163. package/dist/helpers/users.queries.js +107 -0
  164. package/dist/helpers/versions_software.d.ts +3 -1
  165. package/dist/helpers/versions_software.js +24 -0
  166. package/dist/helpers/versions_software_server.d.ts +83 -4
  167. package/dist/helpers/versions_software_server.js +23 -50
  168. package/dist/helpers/zones.d.ts +1 -16
  169. package/dist/helpers/zones.js +4 -104
  170. package/dist/helpers/zones.queries.d.ts +6 -0
  171. package/dist/helpers/zones.queries.js +78 -0
  172. package/dist/hooks/useAuthorizedRealtimeTopics.js +8 -2
  173. package/dist/hooks/useInfiniteQuery.js +18 -14
  174. package/dist/hooks/useScoutRealtimeBroadcast.js +8 -6
  175. package/dist/hooks/useScoutRealtimeDocuments.js +3 -2
  176. package/dist/hooks/useScoutRefresh.d.ts +9 -25
  177. package/dist/hooks/useScoutRefresh.js +33 -213
  178. package/dist/providers/ScoutRefreshProvider.d.ts +1 -1
  179. package/dist/providers/ScoutRefreshProvider.js +56 -13
  180. package/dist/server/index.d.ts +78 -0
  181. package/dist/server/index.js +80 -0
  182. package/dist/server/middleware.d.ts +2 -0
  183. package/dist/server/middleware.js +2 -0
  184. package/dist/server/supabase.d.ts +2 -0
  185. package/dist/server/supabase.js +2 -0
  186. package/dist/store/api.d.ts +40 -40
  187. package/dist/store/api.js +38 -109
  188. package/dist/store/configureStore.d.ts +0 -55
  189. package/dist/store/configureStore.js +1 -8
  190. package/dist/store/hooks.js +1 -0
  191. package/dist/supabase/client.d.ts +3 -0
  192. package/dist/supabase/client.js +10 -0
  193. package/dist/supabase/middleware.d.ts +1 -0
  194. package/dist/supabase/middleware.js +6 -20
  195. package/dist/supabase/server.d.ts +7 -2
  196. package/dist/supabase/server.js +13 -1
  197. package/dist/types/db.d.ts +47 -3
  198. package/dist/types/index.d.ts +5 -0
  199. package/dist/types/index.js +5 -0
  200. package/dist/types/supabase.d.ts +512 -0
  201. package/package.json +53 -4
  202. package/dist/api_keys/index.d.ts +0 -1
  203. package/dist/api_keys/index.js +0 -1
  204. package/dist/helpers/artifacts.internal.d.ts +0 -22
  205. package/dist/helpers/client_abilities_jwt_keys_internal.d.ts +0 -9
  206. package/dist/helpers/client_abilities_jwt_keys_internal.js +0 -20
  207. package/dist/helpers/connectivity.internal.d.ts +0 -10
  208. package/dist/helpers/connectivity.internal.js +0 -47
  209. package/dist/helpers/credentials.d.ts +0 -9
  210. package/dist/helpers/credentials.js +0 -92
  211. package/dist/helpers/embeddings.internal.d.ts +0 -5
  212. package/dist/helpers/events.internal.d.ts +0 -13
  213. package/dist/helpers/herd_roles_internal.d.ts +0 -18
  214. package/dist/helpers/index.d.ts +0 -56
  215. package/dist/helpers/index.js +0 -56
  216. package/dist/helpers/invitations_internal.d.ts +0 -10
  217. package/dist/helpers/versions_software_internal.d.ts +0 -6
  218. package/dist/helpers/versions_software_internal.js +0 -53
  219. package/dist/hooks/useDeviceDisplayName.d.ts +0 -8
  220. package/dist/hooks/useDeviceDisplayName.js +0 -49
  221. package/dist/index.d.ts +0 -108
  222. package/dist/index.js +0 -114
  223. package/dist/supabase/index.d.ts +0 -2
  224. package/dist/supabase/index.js +0 -2
@@ -0,0 +1,55 @@
1
+ import { EnumWebResponse, IWebResponse, } from "../types/requests";
2
+ export async function get_operators_by_session_id_query(client, sessionId) {
3
+ const { data, error } = await client
4
+ .from("operators")
5
+ .select("*")
6
+ .eq("session_id", sessionId)
7
+ .order("created_at", { ascending: false });
8
+ if (error) {
9
+ console.warn("Error fetching operators by session id:", error.message);
10
+ return {
11
+ status: EnumWebResponse.ERROR,
12
+ msg: error.message,
13
+ data: [],
14
+ };
15
+ }
16
+ return IWebResponse.success(data || []).to_compatible();
17
+ }
18
+ export async function get_operators_by_user_id_query(client, userId) {
19
+ const { data, error } = await client
20
+ .from("operators")
21
+ .select("*")
22
+ .eq("user_id", userId)
23
+ .order("created_at", { ascending: false });
24
+ if (error) {
25
+ console.warn("Error fetching operators by user id:", error.message);
26
+ return {
27
+ status: EnumWebResponse.ERROR,
28
+ msg: error.message,
29
+ data: [],
30
+ };
31
+ }
32
+ return IWebResponse.success(data || []).to_compatible();
33
+ }
34
+ export async function get_operators_by_session_id_filtered_query(client, sessionId, action, timestampAfter) {
35
+ let query = client
36
+ .from("operators")
37
+ .select("*")
38
+ .eq("session_id", sessionId);
39
+ if (action) {
40
+ query = query.eq("action", action);
41
+ }
42
+ if (timestampAfter) {
43
+ query = query.gte("timestamp", timestampAfter);
44
+ }
45
+ const { data, error } = await query.order("timestamp", { ascending: false });
46
+ if (error) {
47
+ console.warn("Error fetching filtered operators by session id:", error.message);
48
+ return {
49
+ status: EnumWebResponse.ERROR,
50
+ msg: error.message,
51
+ data: [],
52
+ };
53
+ }
54
+ return IWebResponse.success(data || []).to_compatible();
55
+ }
@@ -3,108 +3,21 @@ import { EntityLifecycle, IPart, IPartWithProduct, PartInsert } from "../types/d
3
3
  import { IWebResponseCompatible } from "../types/requests";
4
4
  import { SupabaseClient } from "@supabase/supabase-js";
5
5
  import { LifecycleUpdateOptions } from "./lifecycle";
6
- /**
7
- * Retrieves all active parts for a specific device
8
- * @param client - Supabase client instance
9
- * @param device_id - ID of the device to get parts for
10
- */
11
6
  export declare function get_parts_by_device_id(client: SupabaseClient<Database>, device_id: number): Promise<IWebResponseCompatible<IPart[]>>;
12
- /**
13
- * Retrieves a single active part by its ID
14
- * @param client - Supabase client instance
15
- * @param part_id - ID of the part to retrieve
16
- */
17
7
  export declare function get_part_by_id(client: SupabaseClient<Database>, part_id: number): Promise<IWebResponseCompatible<IPart | null>>;
18
- /**
19
- * Retrieves all active parts with a specific serial number
20
- * @param client - Supabase client instance
21
- * @param serial_number - Serial number to search for
22
- */
23
8
  export declare function get_parts_by_serial_number(client: SupabaseClient<Database>, serial_number: string): Promise<IWebResponseCompatible<IPart[]>>;
24
- /**
25
- * Retrieves all active parts with a specific product number
26
- * @param client - Supabase client instance
27
- * @param product_number - Product number to search for
28
- */
29
9
  export declare function get_parts_by_product_number(client: SupabaseClient<Database>, product_number: string): Promise<IWebResponseCompatible<IPart[]>>;
30
- /**
31
- * Retrieves all parts with a specific lifecycle state
32
- * @param client - Supabase client instance
33
- * @param lifecycle - Lifecycle state to filter by
34
- */
35
10
  export declare function get_parts_by_lifecycle(client: SupabaseClient<Database>, lifecycle: EntityLifecycle): Promise<IWebResponseCompatible<IPart[]>>;
36
11
  /** @deprecated Use get_parts_by_lifecycle */
37
12
  export declare const get_parts_by_status: typeof get_parts_by_lifecycle;
38
- /**
39
- * Creates a new part with validation
40
- * @param client - Supabase client instance
41
- * @param newPart - Part data to create
42
- */
43
13
  export declare function create_part(client: SupabaseClient<Database>, newPart: PartInsert): Promise<IWebResponseCompatible<IPart | null>>;
44
- /**
45
- * Updates an existing part
46
- * @param client - Supabase client instance
47
- * @param part_id - ID of the part to update
48
- * @param updatedPart - Partial part data to update
49
- */
50
14
  export declare function update_part(client: SupabaseClient<Database>, part_id: number, updatedPart: Partial<PartInsert>): Promise<IWebResponseCompatible<IPart | null>>;
51
- /**
52
- * Marks an active part as deleted (lifecycle)
53
- * @param client - Supabase client instance
54
- * @param part_id - ID of the part to delete
55
- * @param options - Optional lifecycle metadata
56
- */
57
15
  export declare function delete_part(client: SupabaseClient<Database>, part_id: number, options?: LifecycleUpdateOptions): Promise<IWebResponseCompatible<IPart | null>>;
58
- /**
59
- * Updates the lifecycle of a specific part
60
- * @param client - Supabase client instance
61
- * @param part_id - ID of the part to update
62
- * @param lifecycle - New lifecycle state
63
- * @param options - Optional lifecycle metadata
64
- */
65
16
  export declare function update_part_status(client: SupabaseClient<Database>, part_id: number, lifecycle: EntityLifecycle, options?: LifecycleUpdateOptions): Promise<IWebResponseCompatible<IPart | null>>;
66
- /**
67
- * Retrieves all active parts associated with a certificate
68
- * @param client - Supabase client instance
69
- * @param certificate_id - ID of the certificate to search for
70
- */
71
17
  export declare function get_parts_by_certificate_id(client: SupabaseClient<Database>, certificate_id: number): Promise<IWebResponseCompatible<IPart[]>>;
72
- /**
73
- * Retrieves all active parts for a herd
74
- * @param client - Supabase client instance
75
- * @param herd_id - ID of the herd to get parts for
76
- */
77
18
  export declare function get_parts_by_herd_id(client: SupabaseClient<Database>, herd_id: number): Promise<IWebResponseCompatible<IPart[]>>;
78
- /**
79
- * Retrieves active parts for all devices across many herds in one query,
80
- * grouped by device_id.
81
- * @param client - Supabase client instance
82
- * @param herd_ids - IDs of the herds to get parts for
83
- */
84
19
  export declare function get_parts_by_herd_ids(client: SupabaseClient<Database>, herd_ids: number[]): Promise<IWebResponseCompatible<Record<number, IPartWithProduct[]>>>;
85
- /**
86
- * Restores a deleted part to active lifecycle
87
- * @param client - Supabase client instance
88
- * @param part_id - ID of the part to restore
89
- * @param options - Optional lifecycle metadata
90
- */
91
20
  export declare function restore_part(client: SupabaseClient<Database>, part_id: number, options?: LifecycleUpdateOptions): Promise<IWebResponseCompatible<IPart | null>>;
92
- /**
93
- * Permanently deletes a part that is already in deleted lifecycle
94
- * @param client - Supabase client instance
95
- * @param part_id - ID of the part to permanently delete
96
- */
97
21
  export declare function hard_delete_part(client: SupabaseClient<Database>, part_id: number): Promise<IWebResponseCompatible<IPart | null>>;
98
- /**
99
- * Retrieves all deleted parts for a specific device
100
- * @param client - Supabase client instance
101
- * @param device_id - ID of the device to get deleted parts for
102
- */
103
22
  export declare function get_deleted_parts_by_device_id(client: SupabaseClient<Database>, device_id: number): Promise<IWebResponseCompatible<IPart[]>>;
104
- /**
105
- * Retrieves a part by its composite unique constraint (product + serial)
106
- * @param client - Supabase client instance
107
- * @param product_number - Product number to search for
108
- * @param serial_number - Serial number to search for
109
- */
110
23
  export declare function get_parts_by_product_and_serial(client: SupabaseClient<Database>, product_number: string, serial_number: string): Promise<IWebResponseCompatible<IPart | null>>;
@@ -1,10 +1,5 @@
1
1
  import { IWebResponse } from "../types/requests";
2
2
  import { update_part_lifecycle } from "./lifecycle";
3
- /**
4
- * Retrieves all active parts for a specific device
5
- * @param client - Supabase client instance
6
- * @param device_id - ID of the device to get parts for
7
- */
8
3
  export async function get_parts_by_device_id(client, device_id) {
9
4
  const { data, error } = await client
10
5
  .from("parts")
@@ -20,11 +15,6 @@ export async function get_parts_by_device_id(client, device_id) {
20
15
  }
21
16
  return IWebResponse.success(data).to_compatible();
22
17
  }
23
- /**
24
- * Retrieves a single active part by its ID
25
- * @param client - Supabase client instance
26
- * @param part_id - ID of the part to retrieve
27
- */
28
18
  export async function get_part_by_id(client, part_id) {
29
19
  const { data, error } = await client
30
20
  .from("parts")
@@ -40,11 +30,6 @@ export async function get_part_by_id(client, part_id) {
40
30
  }
41
31
  return IWebResponse.success(data).to_compatible();
42
32
  }
43
- /**
44
- * Retrieves all active parts with a specific serial number
45
- * @param client - Supabase client instance
46
- * @param serial_number - Serial number to search for
47
- */
48
33
  export async function get_parts_by_serial_number(client, serial_number) {
49
34
  const { data, error } = await client
50
35
  .from("parts")
@@ -60,11 +45,6 @@ export async function get_parts_by_serial_number(client, serial_number) {
60
45
  }
61
46
  return IWebResponse.success(data).to_compatible();
62
47
  }
63
- /**
64
- * Retrieves all active parts with a specific product number
65
- * @param client - Supabase client instance
66
- * @param product_number - Product number to search for
67
- */
68
48
  export async function get_parts_by_product_number(client, product_number) {
69
49
  const { data, error } = await client
70
50
  .from("parts")
@@ -80,11 +60,6 @@ export async function get_parts_by_product_number(client, product_number) {
80
60
  }
81
61
  return IWebResponse.success(data).to_compatible();
82
62
  }
83
- /**
84
- * Retrieves all parts with a specific lifecycle state
85
- * @param client - Supabase client instance
86
- * @param lifecycle - Lifecycle state to filter by
87
- */
88
63
  export async function get_parts_by_lifecycle(client, lifecycle) {
89
64
  const { data, error } = await client
90
65
  .from("parts")
@@ -101,13 +76,8 @@ export async function get_parts_by_lifecycle(client, lifecycle) {
101
76
  }
102
77
  /** @deprecated Use get_parts_by_lifecycle */
103
78
  export const get_parts_by_status = get_parts_by_lifecycle;
104
- /**
105
- * Creates a new part with validation
106
- * @param client - Supabase client instance
107
- * @param newPart - Part data to create
108
- */
109
79
  export async function create_part(client, newPart) {
110
- // part is scoped to exactly one of a device or a herd.
80
+ // A part belongs to one device or one herd.
111
81
  const scope_count = [newPart.device_id, newPart.herd_id].filter((scope) => scope != null).length;
112
82
  if (scope_count !== 1) {
113
83
  return IWebResponse.error("exactly one of device_id or herd_id is required").to_compatible();
@@ -131,14 +101,7 @@ export async function create_part(client, newPart) {
131
101
  }
132
102
  return IWebResponse.success(data).to_compatible();
133
103
  }
134
- /**
135
- * Updates an existing part
136
- * @param client - Supabase client instance
137
- * @param part_id - ID of the part to update
138
- * @param updatedPart - Partial part data to update
139
- */
140
104
  export async function update_part(client, part_id, updatedPart) {
141
- // Remove fields that shouldn't be updated
142
105
  const updateData = { ...updatedPart };
143
106
  delete updateData.id;
144
107
  delete updateData.created_at;
@@ -156,12 +119,6 @@ export async function update_part(client, part_id, updatedPart) {
156
119
  }
157
120
  return IWebResponse.success(data).to_compatible();
158
121
  }
159
- /**
160
- * Marks an active part as deleted (lifecycle)
161
- * @param client - Supabase client instance
162
- * @param part_id - ID of the part to delete
163
- * @param options - Optional lifecycle metadata
164
- */
165
122
  export async function delete_part(client, part_id, options) {
166
123
  const { data, error } = await client
167
124
  .from("parts")
@@ -186,21 +143,9 @@ export async function delete_part(client, part_id, options) {
186
143
  }
187
144
  return IWebResponse.success(data).to_compatible();
188
145
  }
189
- /**
190
- * Updates the lifecycle of a specific part
191
- * @param client - Supabase client instance
192
- * @param part_id - ID of the part to update
193
- * @param lifecycle - New lifecycle state
194
- * @param options - Optional lifecycle metadata
195
- */
196
146
  export async function update_part_status(client, part_id, lifecycle, options) {
197
147
  return update_part_lifecycle(client, part_id, lifecycle, options);
198
148
  }
199
- /**
200
- * Retrieves all active parts associated with a certificate
201
- * @param client - Supabase client instance
202
- * @param certificate_id - ID of the certificate to search for
203
- */
204
149
  export async function get_parts_by_certificate_id(client, certificate_id) {
205
150
  const { data, error } = await client
206
151
  .from("parts")
@@ -216,11 +161,6 @@ export async function get_parts_by_certificate_id(client, certificate_id) {
216
161
  }
217
162
  return IWebResponse.success(data).to_compatible();
218
163
  }
219
- /**
220
- * Retrieves all active parts for a herd
221
- * @param client - Supabase client instance
222
- * @param herd_id - ID of the herd to get parts for
223
- */
224
164
  export async function get_parts_by_herd_id(client, herd_id) {
225
165
  const { data, error } = await client.rpc("get_parts_for_herd", {
226
166
  herd_id_caller: herd_id,
@@ -230,12 +170,6 @@ export async function get_parts_by_herd_id(client, herd_id) {
230
170
  }
231
171
  return IWebResponse.success(data ?? []).to_compatible();
232
172
  }
233
- /**
234
- * Retrieves active parts for all devices across many herds in one query,
235
- * grouped by device_id.
236
- * @param client - Supabase client instance
237
- * @param herd_ids - IDs of the herds to get parts for
238
- */
239
173
  export async function get_parts_by_herd_ids(client, herd_ids) {
240
174
  var _a;
241
175
  if (herd_ids.length === 0) {
@@ -270,12 +204,6 @@ export async function get_parts_by_herd_ids(client, herd_ids) {
270
204
  }
271
205
  return IWebResponse.success(grouped).to_compatible();
272
206
  }
273
- /**
274
- * Restores a deleted part to active lifecycle
275
- * @param client - Supabase client instance
276
- * @param part_id - ID of the part to restore
277
- * @param options - Optional lifecycle metadata
278
- */
279
207
  export async function restore_part(client, part_id, options) {
280
208
  const { data, error } = await client
281
209
  .from("parts")
@@ -300,11 +228,6 @@ export async function restore_part(client, part_id, options) {
300
228
  }
301
229
  return IWebResponse.success(data).to_compatible();
302
230
  }
303
- /**
304
- * Permanently deletes a part that is already in deleted lifecycle
305
- * @param client - Supabase client instance
306
- * @param part_id - ID of the part to permanently delete
307
- */
308
231
  export async function hard_delete_part(client, part_id) {
309
232
  const { data, error } = await client
310
233
  .from("parts")
@@ -321,11 +244,6 @@ export async function hard_delete_part(client, part_id) {
321
244
  }
322
245
  return IWebResponse.success(data).to_compatible();
323
246
  }
324
- /**
325
- * Retrieves all deleted parts for a specific device
326
- * @param client - Supabase client instance
327
- * @param device_id - ID of the device to get deleted parts for
328
- */
329
247
  export async function get_deleted_parts_by_device_id(client, device_id) {
330
248
  const { data, error } = await client
331
249
  .from("parts")
@@ -341,12 +259,6 @@ export async function get_deleted_parts_by_device_id(client, device_id) {
341
259
  }
342
260
  return IWebResponse.success(data).to_compatible();
343
261
  }
344
- /**
345
- * Retrieves a part by its composite unique constraint (product + serial)
346
- * @param client - Supabase client instance
347
- * @param product_number - Product number to search for
348
- * @param serial_number - Serial number to search for
349
- */
350
262
  export async function get_parts_by_product_and_serial(client, product_number, serial_number) {
351
263
  const { data, error } = await client
352
264
  .from("parts")
@@ -0,0 +1,260 @@
1
+ import { EntityLifecycle, PartInsert } from "../types/db";
2
+ import { LifecycleUpdateOptions } from "./lifecycle";
3
+ export declare function server_get_parts_by_device_id(device_id: number): Promise<import("../types").IWebResponseCompatible<{
4
+ certificate_id: number | null;
5
+ created_at: string;
6
+ device_id: number | null;
7
+ health: import("../types").Database["public"]["Enums"]["health_item"];
8
+ herd_id: number | null;
9
+ id: number;
10
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
11
+ lifecycle_changed_at: string;
12
+ lifecycle_changed_by: string | null;
13
+ lifecycle_reason: string | null;
14
+ primary_calibration_id: number | null;
15
+ product_number: string;
16
+ serial_number: string;
17
+ updated_at: string | null;
18
+ }[]>>;
19
+ export declare function server_get_part_by_id(part_id: number): Promise<import("../types").IWebResponseCompatible<{
20
+ certificate_id: number | null;
21
+ created_at: string;
22
+ device_id: number | null;
23
+ health: import("../types").Database["public"]["Enums"]["health_item"];
24
+ herd_id: number | null;
25
+ id: number;
26
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
27
+ lifecycle_changed_at: string;
28
+ lifecycle_changed_by: string | null;
29
+ lifecycle_reason: string | null;
30
+ primary_calibration_id: number | null;
31
+ product_number: string;
32
+ serial_number: string;
33
+ updated_at: string | null;
34
+ } | null>>;
35
+ export declare function server_get_parts_by_serial_number(serial_number: string): Promise<import("../types").IWebResponseCompatible<{
36
+ certificate_id: number | null;
37
+ created_at: string;
38
+ device_id: number | null;
39
+ health: import("../types").Database["public"]["Enums"]["health_item"];
40
+ herd_id: number | null;
41
+ id: number;
42
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
43
+ lifecycle_changed_at: string;
44
+ lifecycle_changed_by: string | null;
45
+ lifecycle_reason: string | null;
46
+ primary_calibration_id: number | null;
47
+ product_number: string;
48
+ serial_number: string;
49
+ updated_at: string | null;
50
+ }[]>>;
51
+ export declare function server_get_parts_by_product_number(product_number: string): Promise<import("../types").IWebResponseCompatible<{
52
+ certificate_id: number | null;
53
+ created_at: string;
54
+ device_id: number | null;
55
+ health: import("../types").Database["public"]["Enums"]["health_item"];
56
+ herd_id: number | null;
57
+ id: number;
58
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
59
+ lifecycle_changed_at: string;
60
+ lifecycle_changed_by: string | null;
61
+ lifecycle_reason: string | null;
62
+ primary_calibration_id: number | null;
63
+ product_number: string;
64
+ serial_number: string;
65
+ updated_at: string | null;
66
+ }[]>>;
67
+ export declare function server_get_parts_by_lifecycle(lifecycle: EntityLifecycle): Promise<import("../types").IWebResponseCompatible<{
68
+ certificate_id: number | null;
69
+ created_at: string;
70
+ device_id: number | null;
71
+ health: import("../types").Database["public"]["Enums"]["health_item"];
72
+ herd_id: number | null;
73
+ id: number;
74
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
75
+ lifecycle_changed_at: string;
76
+ lifecycle_changed_by: string | null;
77
+ lifecycle_reason: string | null;
78
+ primary_calibration_id: number | null;
79
+ product_number: string;
80
+ serial_number: string;
81
+ updated_at: string | null;
82
+ }[]>>;
83
+ /** @deprecated Use server_get_parts_by_lifecycle */
84
+ export declare function server_get_parts_by_status(lifecycle: EntityLifecycle): Promise<import("../types").IWebResponseCompatible<{
85
+ certificate_id: number | null;
86
+ created_at: string;
87
+ device_id: number | null;
88
+ health: import("../types").Database["public"]["Enums"]["health_item"];
89
+ herd_id: number | null;
90
+ id: number;
91
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
92
+ lifecycle_changed_at: string;
93
+ lifecycle_changed_by: string | null;
94
+ lifecycle_reason: string | null;
95
+ primary_calibration_id: number | null;
96
+ product_number: string;
97
+ serial_number: string;
98
+ updated_at: string | null;
99
+ }[]>>;
100
+ export declare function server_create_part(newPart: PartInsert): Promise<import("../types").IWebResponseCompatible<{
101
+ certificate_id: number | null;
102
+ created_at: string;
103
+ device_id: number | null;
104
+ health: import("../types").Database["public"]["Enums"]["health_item"];
105
+ herd_id: number | null;
106
+ id: number;
107
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
108
+ lifecycle_changed_at: string;
109
+ lifecycle_changed_by: string | null;
110
+ lifecycle_reason: string | null;
111
+ primary_calibration_id: number | null;
112
+ product_number: string;
113
+ serial_number: string;
114
+ updated_at: string | null;
115
+ } | null>>;
116
+ export declare function server_update_part(part_id: number, updatedPart: Partial<PartInsert>): Promise<import("../types").IWebResponseCompatible<{
117
+ certificate_id: number | null;
118
+ created_at: string;
119
+ device_id: number | null;
120
+ health: import("../types").Database["public"]["Enums"]["health_item"];
121
+ herd_id: number | null;
122
+ id: number;
123
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
124
+ lifecycle_changed_at: string;
125
+ lifecycle_changed_by: string | null;
126
+ lifecycle_reason: string | null;
127
+ primary_calibration_id: number | null;
128
+ product_number: string;
129
+ serial_number: string;
130
+ updated_at: string | null;
131
+ } | null>>;
132
+ export declare function server_delete_part(part_id: number, options?: LifecycleUpdateOptions): Promise<import("../types").IWebResponseCompatible<{
133
+ certificate_id: number | null;
134
+ created_at: string;
135
+ device_id: number | null;
136
+ health: import("../types").Database["public"]["Enums"]["health_item"];
137
+ herd_id: number | null;
138
+ id: number;
139
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
140
+ lifecycle_changed_at: string;
141
+ lifecycle_changed_by: string | null;
142
+ lifecycle_reason: string | null;
143
+ primary_calibration_id: number | null;
144
+ product_number: string;
145
+ serial_number: string;
146
+ updated_at: string | null;
147
+ } | null>>;
148
+ export declare function server_update_part_status(part_id: number, lifecycle: EntityLifecycle, options?: LifecycleUpdateOptions): Promise<import("../types").IWebResponseCompatible<{
149
+ certificate_id: number | null;
150
+ created_at: string;
151
+ device_id: number | null;
152
+ health: import("../types").Database["public"]["Enums"]["health_item"];
153
+ herd_id: number | null;
154
+ id: number;
155
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
156
+ lifecycle_changed_at: string;
157
+ lifecycle_changed_by: string | null;
158
+ lifecycle_reason: string | null;
159
+ primary_calibration_id: number | null;
160
+ product_number: string;
161
+ serial_number: string;
162
+ updated_at: string | null;
163
+ } | null>>;
164
+ export declare function server_get_parts_by_certificate_id(certificate_id: number): Promise<import("../types").IWebResponseCompatible<{
165
+ certificate_id: number | null;
166
+ created_at: string;
167
+ device_id: number | null;
168
+ health: import("../types").Database["public"]["Enums"]["health_item"];
169
+ herd_id: number | null;
170
+ id: number;
171
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
172
+ lifecycle_changed_at: string;
173
+ lifecycle_changed_by: string | null;
174
+ lifecycle_reason: string | null;
175
+ primary_calibration_id: number | null;
176
+ product_number: string;
177
+ serial_number: string;
178
+ updated_at: string | null;
179
+ }[]>>;
180
+ export declare function server_get_parts_by_herd_id(herd_id: number): Promise<import("../types").IWebResponseCompatible<{
181
+ certificate_id: number | null;
182
+ created_at: string;
183
+ device_id: number | null;
184
+ health: import("../types").Database["public"]["Enums"]["health_item"];
185
+ herd_id: number | null;
186
+ id: number;
187
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
188
+ lifecycle_changed_at: string;
189
+ lifecycle_changed_by: string | null;
190
+ lifecycle_reason: string | null;
191
+ primary_calibration_id: number | null;
192
+ product_number: string;
193
+ serial_number: string;
194
+ updated_at: string | null;
195
+ }[]>>;
196
+ export declare function server_get_parts_by_herd_ids(herd_ids: number[]): Promise<import("../types").IWebResponseCompatible<Record<number, import("../types").IPartWithProduct[]>>>;
197
+ export declare function server_restore_part(part_id: number, options?: LifecycleUpdateOptions): Promise<import("../types").IWebResponseCompatible<{
198
+ certificate_id: number | null;
199
+ created_at: string;
200
+ device_id: number | null;
201
+ health: import("../types").Database["public"]["Enums"]["health_item"];
202
+ herd_id: number | null;
203
+ id: number;
204
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
205
+ lifecycle_changed_at: string;
206
+ lifecycle_changed_by: string | null;
207
+ lifecycle_reason: string | null;
208
+ primary_calibration_id: number | null;
209
+ product_number: string;
210
+ serial_number: string;
211
+ updated_at: string | null;
212
+ } | null>>;
213
+ export declare function server_hard_delete_part(part_id: number): Promise<import("../types").IWebResponseCompatible<{
214
+ certificate_id: number | null;
215
+ created_at: string;
216
+ device_id: number | null;
217
+ health: import("../types").Database["public"]["Enums"]["health_item"];
218
+ herd_id: number | null;
219
+ id: number;
220
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
221
+ lifecycle_changed_at: string;
222
+ lifecycle_changed_by: string | null;
223
+ lifecycle_reason: string | null;
224
+ primary_calibration_id: number | null;
225
+ product_number: string;
226
+ serial_number: string;
227
+ updated_at: string | null;
228
+ } | null>>;
229
+ export declare function server_get_deleted_parts_by_device_id(device_id: number): Promise<import("../types").IWebResponseCompatible<{
230
+ certificate_id: number | null;
231
+ created_at: string;
232
+ device_id: number | null;
233
+ health: import("../types").Database["public"]["Enums"]["health_item"];
234
+ herd_id: number | null;
235
+ id: number;
236
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
237
+ lifecycle_changed_at: string;
238
+ lifecycle_changed_by: string | null;
239
+ lifecycle_reason: string | null;
240
+ primary_calibration_id: number | null;
241
+ product_number: string;
242
+ serial_number: string;
243
+ updated_at: string | null;
244
+ }[]>>;
245
+ export declare function server_get_parts_by_product_and_serial(product_number: string, serial_number: string): Promise<import("../types").IWebResponseCompatible<{
246
+ certificate_id: number | null;
247
+ created_at: string;
248
+ device_id: number | null;
249
+ health: import("../types").Database["public"]["Enums"]["health_item"];
250
+ herd_id: number | null;
251
+ id: number;
252
+ lifecycle: import("../types").Database["public"]["Enums"]["entity_lifecycle"];
253
+ lifecycle_changed_at: string;
254
+ lifecycle_changed_by: string | null;
255
+ lifecycle_reason: string | null;
256
+ primary_calibration_id: number | null;
257
+ product_number: string;
258
+ serial_number: string;
259
+ updated_at: string | null;
260
+ } | null>>;