sgerp-frontend-lib 0.1.1 → 0.1.3

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 (267) hide show
  1. package/README.md +1 -1
  2. package/dist/connection-manager.d.ts +48 -0
  3. package/dist/connection-manager.d.ts.map +1 -0
  4. package/dist/connection-manager.js +156 -0
  5. package/dist/index.js +20 -2
  6. package/dist/locales/locale-server.d.ts +10 -0
  7. package/dist/locales/locale-server.d.ts.map +1 -0
  8. package/dist/locales/locale-server.js +49 -0
  9. package/dist/locales/locale.d.ts +23 -0
  10. package/dist/locales/locale.d.ts.map +1 -0
  11. package/dist/locales/locale.js +145 -0
  12. package/dist/locales/locale_en.d.ts.map +1 -1
  13. package/dist/locales/locale_en.js +84 -9
  14. package/dist/locales/locale_ja.d.ts.map +1 -1
  15. package/dist/locales/locale_ja.js +84 -9
  16. package/dist/locales/locale_ms.d.ts.map +1 -1
  17. package/dist/locales/locale_ms.js +84 -9
  18. package/dist/locales/useLocalization.d.ts +11 -0
  19. package/dist/locales/useLocalization.d.ts.map +1 -0
  20. package/dist/locales/useLocalization.js +64 -0
  21. package/dist/locales.d.ts +228 -0
  22. package/dist/locales.d.ts.map +1 -0
  23. package/dist/locales.js +229 -0
  24. package/dist/sgerp/api/client.d.ts +45 -0
  25. package/dist/sgerp/api/client.d.ts.map +1 -0
  26. package/dist/sgerp/api/client.js +141 -0
  27. package/dist/sgerp/client.js +341 -0
  28. package/dist/sgerp/collection.d.ts +391 -0
  29. package/dist/sgerp/collection.d.ts.map +1 -0
  30. package/dist/sgerp/collection.js +756 -0
  31. package/dist/sgerp/collections/account/user.d.ts +8 -0
  32. package/dist/sgerp/collections/account/user.d.ts.map +1 -0
  33. package/dist/sgerp/collections/account/user.js +10 -0
  34. package/dist/sgerp/collections/masstransit/building.d.ts +26 -0
  35. package/dist/sgerp/collections/masstransit/building.d.ts.map +1 -0
  36. package/dist/sgerp/collections/masstransit/building.js +53 -0
  37. package/dist/sgerp/collections/masstransit/transitstop.d.ts +15 -0
  38. package/dist/sgerp/collections/masstransit/transitstop.d.ts.map +1 -0
  39. package/dist/sgerp/collections/masstransit/transitstop.js +54 -0
  40. package/dist/sgerp/collections/masstransit/transitstopset.d.ts +10 -0
  41. package/dist/sgerp/collections/masstransit/transitstopset.d.ts.map +1 -0
  42. package/dist/sgerp/collections/masstransit/transitstopset.js +10 -0
  43. package/dist/sgerp/collections/sharing/organization-project.d.ts +11 -0
  44. package/dist/sgerp/collections/sharing/organization-project.d.ts.map +1 -0
  45. package/dist/sgerp/collections/sharing/organization-project.js +13 -0
  46. package/dist/sgerp/collections/sharing/organization.d.ts +11 -0
  47. package/dist/sgerp/collections/sharing/organization.d.ts.map +1 -0
  48. package/dist/sgerp/collections/sharing/organization.js +13 -0
  49. package/dist/sgerp/collections/sharing/pricing.d.ts +18 -0
  50. package/dist/sgerp/collections/sharing/pricing.d.ts.map +1 -0
  51. package/dist/sgerp/collections/sharing/pricing.js +23 -0
  52. package/dist/sgerp/collections/sharing/project-member.d.ts +8 -0
  53. package/dist/sgerp/collections/sharing/project-member.d.ts.map +1 -0
  54. package/dist/sgerp/collections/sharing/project-member.js +10 -0
  55. package/dist/sgerp/collections/sharing/project.d.ts +8 -0
  56. package/dist/sgerp/collections/sharing/project.d.ts.map +1 -0
  57. package/dist/sgerp/collections/sharing/project.js +10 -0
  58. package/dist/sgerp/collections/simulation/booking.d.ts +11 -0
  59. package/dist/sgerp/collections/simulation/booking.d.ts.map +1 -0
  60. package/dist/sgerp/collections/simulation/booking.js +13 -0
  61. package/dist/sgerp/collections/simulation/dataset.d.ts +14 -0
  62. package/dist/sgerp/collections/simulation/dataset.d.ts.map +1 -0
  63. package/dist/sgerp/collections/simulation/dataset.js +17 -0
  64. package/dist/sgerp/collections/simulation/driver.d.ts +12 -0
  65. package/dist/sgerp/collections/simulation/driver.d.ts.map +1 -0
  66. package/dist/sgerp/collections/simulation/driver.js +40 -0
  67. package/dist/sgerp/collections/simulation/geofence.d.ts +24 -0
  68. package/dist/sgerp/collections/simulation/geofence.d.ts.map +1 -0
  69. package/dist/sgerp/collections/simulation/geofence.js +66 -0
  70. package/dist/sgerp/collections/simulation/mapboxtoken.d.ts +18 -0
  71. package/dist/sgerp/collections/simulation/mapboxtoken.d.ts.map +1 -0
  72. package/dist/sgerp/collections/simulation/mapboxtoken.js +24 -0
  73. package/dist/sgerp/collections/simulation/node.js +13 -0
  74. package/dist/sgerp/collections/simulation/operationslocation.d.ts +28 -0
  75. package/dist/sgerp/collections/simulation/operationslocation.d.ts.map +1 -0
  76. package/dist/sgerp/collections/simulation/operationslocation.js +64 -0
  77. package/dist/sgerp/collections/simulation/operationslocationgroup.d.ts +12 -0
  78. package/dist/sgerp/collections/simulation/operationslocationgroup.d.ts.map +1 -0
  79. package/dist/sgerp/collections/simulation/operationslocationgroup.js +24 -0
  80. package/dist/sgerp/collections/simulation/routingprofile.d.ts +10 -0
  81. package/dist/sgerp/collections/simulation/routingprofile.d.ts.map +1 -0
  82. package/dist/sgerp/collections/simulation/routingprofile.js +10 -0
  83. package/dist/sgerp/collections/simulation/simulation.d.ts +12 -0
  84. package/dist/sgerp/collections/simulation/simulation.d.ts.map +1 -0
  85. package/dist/sgerp/collections/simulation/simulation.js +35 -0
  86. package/dist/sgerp/collections/simulation/simulationprocessor.d.ts +19 -0
  87. package/dist/sgerp/collections/simulation/simulationprocessor.d.ts.map +1 -0
  88. package/dist/sgerp/collections/simulation/simulationprocessor.js +27 -0
  89. package/dist/sgerp/collections/simulation/vehicle.js +13 -0
  90. package/dist/sgerp/collections/simulation/vehicletype.d.ts +11 -0
  91. package/dist/sgerp/collections/simulation/vehicletype.d.ts.map +1 -0
  92. package/dist/sgerp/collections/simulation/vehicletype.js +13 -0
  93. package/dist/sgerp/collections/sms_notify/smsscheduled.d.ts +11 -0
  94. package/dist/sgerp/collections/sms_notify/smsscheduled.d.ts.map +1 -0
  95. package/dist/sgerp/collections/sms_notify/smsscheduled.js +13 -0
  96. package/dist/sgerp/collections/transportation/passenger.d.ts +8 -0
  97. package/dist/sgerp/collections/transportation/passenger.d.ts.map +1 -0
  98. package/dist/sgerp/collections/transportation/passenger.js +10 -0
  99. package/dist/sgerp/collections/transportation/ticket.d.ts +11 -0
  100. package/dist/sgerp/collections/transportation/ticket.d.ts.map +1 -0
  101. package/dist/sgerp/collections/transportation/ticket.js +13 -0
  102. package/dist/sgerp/collections/transportation/transaction.d.ts +11 -0
  103. package/dist/sgerp/collections/transportation/transaction.d.ts.map +1 -0
  104. package/dist/sgerp/collections/transportation/transaction.js +13 -0
  105. package/dist/sgerp/constants/bulkoperations-enums.d.ts +71 -0
  106. package/dist/sgerp/constants/bulkoperations-enums.d.ts.map +1 -0
  107. package/dist/sgerp/constants/bulkoperations-enums.js +99 -0
  108. package/dist/sgerp/constants/messages-enums.d.ts +47 -0
  109. package/dist/sgerp/constants/messages-enums.d.ts.map +1 -0
  110. package/dist/sgerp/constants/messages-enums.js +67 -0
  111. package/dist/sgerp/constants/scheduling-enums.d.ts +42 -0
  112. package/dist/sgerp/constants/scheduling-enums.d.ts.map +1 -0
  113. package/dist/sgerp/constants/scheduling-enums.js +61 -0
  114. package/dist/sgerp/constants/simulation-enums.d.ts +93 -0
  115. package/dist/sgerp/constants/simulation-enums.d.ts.map +1 -0
  116. package/dist/sgerp/constants/simulation-enums.js +147 -0
  117. package/dist/sgerp/constants/solver-strategies.d.ts +75 -0
  118. package/dist/sgerp/constants/solver-strategies.d.ts.map +1 -0
  119. package/dist/sgerp/constants/solver-strategies.js +26 -0
  120. package/dist/sgerp/context/sgerp-context.js +134 -0
  121. package/dist/sgerp/domains.d.ts +47 -0
  122. package/dist/sgerp/domains.d.ts.map +1 -0
  123. package/dist/sgerp/domains.js +45 -0
  124. package/dist/sgerp/hooks/use-collection.js +122 -0
  125. package/dist/sgerp/hooks/use-live-updates.js +16 -13
  126. package/dist/sgerp/index.js +153 -0
  127. package/dist/sgerp/map-states/operations-location-state.d.ts +12 -0
  128. package/dist/sgerp/map-states/operations-location-state.d.ts.map +1 -0
  129. package/dist/sgerp/map-states/operations-location-state.js +86 -0
  130. package/dist/sgerp/routing/index.d.ts +51 -0
  131. package/dist/sgerp/routing/index.d.ts.map +1 -0
  132. package/dist/sgerp/routing/index.js +373 -0
  133. package/dist/sgerp/simulation-logic/fetchUtils.d.ts +8 -8
  134. package/dist/sgerp/simulation-logic/fetchUtils.d.ts.map +1 -1
  135. package/dist/sgerp/simulation-logic/fetchUtils.js +226 -0
  136. package/dist/sgerp/simulation-logic/index.js +27 -7
  137. package/dist/sgerp/simulation-logic/manualEditUtils.d.ts +1 -1
  138. package/dist/sgerp/simulation-logic/manualEditUtils.d.ts.map +1 -1
  139. package/dist/sgerp/simulation-logic/manualEditUtils.js +69 -0
  140. package/dist/sgerp/simulation-logic/mapUtils.js +58 -0
  141. package/dist/sgerp/simulation-logic/optimisticUpdateUtils.js +8 -5
  142. package/dist/sgerp/simulation-logic/referenceUtils.d.ts +3 -3
  143. package/dist/sgerp/simulation-logic/referenceUtils.d.ts.map +1 -1
  144. package/dist/sgerp/simulation-logic/referenceUtils.js +110 -0
  145. package/dist/sgerp/simulation-logic/routeCalculationUtils.d.ts +3 -3
  146. package/dist/sgerp/simulation-logic/routeCalculationUtils.d.ts.map +1 -1
  147. package/dist/sgerp/simulation-logic/routeCalculationUtils.js +43 -0
  148. package/dist/sgerp/simulation-logic/timeShiftUtils.d.ts +1 -1
  149. package/dist/sgerp/simulation-logic/timeShiftUtils.d.ts.map +1 -1
  150. package/dist/sgerp/simulation-logic/timeShiftUtils.js +63 -0
  151. package/dist/sgerp/types/account/user.d.ts +38 -0
  152. package/dist/sgerp/types/account/user.d.ts.map +1 -0
  153. package/dist/sgerp/types/account/user.js +2 -0
  154. package/dist/sgerp/types/bulkoperations/index.d.ts +37 -0
  155. package/dist/sgerp/types/bulkoperations/index.d.ts.map +1 -0
  156. package/dist/sgerp/types/bulkoperations/index.js +35 -0
  157. package/dist/sgerp/types/bulkoperations/vehicle-upload.d.ts +335 -0
  158. package/dist/sgerp/types/bulkoperations/vehicle-upload.d.ts.map +1 -0
  159. package/dist/sgerp/types/bulkoperations/vehicle-upload.js +49 -0
  160. package/dist/sgerp/types/config.d.ts +25 -0
  161. package/dist/sgerp/types/config.d.ts.map +1 -0
  162. package/dist/sgerp/types/config.js +2 -0
  163. package/dist/sgerp/types/geojson.d.ts +45 -0
  164. package/dist/sgerp/types/geojson.d.ts.map +1 -0
  165. package/dist/sgerp/types/geojson.js +6 -0
  166. package/dist/sgerp/types/map.d.ts +24 -0
  167. package/dist/sgerp/types/map.d.ts.map +1 -0
  168. package/dist/sgerp/types/map.js +2 -0
  169. package/dist/sgerp/types/masstransit/building.d.ts +24 -0
  170. package/dist/sgerp/types/masstransit/building.d.ts.map +1 -0
  171. package/dist/sgerp/types/masstransit/building.js +2 -0
  172. package/dist/sgerp/types/masstransit/transitstop.d.ts +35 -0
  173. package/dist/sgerp/types/masstransit/transitstop.d.ts.map +1 -0
  174. package/dist/sgerp/types/masstransit/transitstop.js +2 -0
  175. package/dist/sgerp/types/masstransit/transitstopset.d.ts +14 -0
  176. package/dist/sgerp/types/masstransit/transitstopset.d.ts.map +1 -0
  177. package/dist/sgerp/types/masstransit/transitstopset.js +2 -0
  178. package/dist/sgerp/types/sharing/organization-project.d.ts +14 -0
  179. package/dist/sgerp/types/sharing/organization-project.d.ts.map +1 -0
  180. package/dist/sgerp/types/sharing/organization-project.js +2 -0
  181. package/dist/sgerp/types/sharing/organization.d.ts +14 -0
  182. package/dist/sgerp/types/sharing/organization.d.ts.map +1 -0
  183. package/dist/sgerp/types/sharing/organization.js +2 -0
  184. package/dist/sgerp/types/sharing/pricing.d.ts +98 -0
  185. package/dist/sgerp/types/sharing/pricing.d.ts.map +1 -0
  186. package/dist/sgerp/types/sharing/pricing.js +2 -0
  187. package/dist/sgerp/types/sharing/project-member.d.ts +15 -0
  188. package/dist/sgerp/types/sharing/project-member.d.ts.map +1 -0
  189. package/dist/sgerp/types/sharing/project-member.js +2 -0
  190. package/dist/sgerp/types/sharing/project.d.ts +16 -0
  191. package/dist/sgerp/types/sharing/project.d.ts.map +1 -0
  192. package/dist/sgerp/types/sharing/project.js +2 -0
  193. package/dist/sgerp/types/simulation/booking.d.ts +128 -0
  194. package/dist/sgerp/types/simulation/booking.d.ts.map +1 -0
  195. package/dist/sgerp/types/simulation/booking.js +24 -0
  196. package/dist/sgerp/types/simulation/calculation-params.d.ts +20 -0
  197. package/dist/sgerp/types/simulation/calculation-params.d.ts.map +1 -0
  198. package/dist/sgerp/types/simulation/calculation-params.js +2 -0
  199. package/dist/sgerp/types/simulation/dataset.d.ts +16 -0
  200. package/dist/sgerp/types/simulation/dataset.d.ts.map +1 -0
  201. package/dist/sgerp/types/simulation/dataset.js +2 -0
  202. package/dist/sgerp/types/simulation/driver.d.ts +19 -0
  203. package/dist/sgerp/types/simulation/driver.d.ts.map +1 -0
  204. package/dist/sgerp/types/simulation/driver.js +2 -0
  205. package/dist/sgerp/types/simulation/geofence.d.ts +19 -0
  206. package/dist/sgerp/types/simulation/geofence.d.ts.map +1 -0
  207. package/dist/sgerp/types/simulation/geofence.js +2 -0
  208. package/dist/sgerp/types/simulation/logistics-api-settings.d.ts +98 -0
  209. package/dist/sgerp/types/simulation/logistics-api-settings.d.ts.map +1 -0
  210. package/dist/sgerp/types/simulation/logistics-api-settings.js +104 -0
  211. package/dist/sgerp/types/simulation/mapboxtoken.d.ts +13 -0
  212. package/dist/sgerp/types/simulation/mapboxtoken.d.ts.map +1 -0
  213. package/dist/sgerp/types/simulation/mapboxtoken.js +2 -0
  214. package/dist/sgerp/types/simulation/node.js +5 -2
  215. package/dist/sgerp/types/simulation/operationslocation.d.ts +40 -0
  216. package/dist/sgerp/types/simulation/operationslocation.d.ts.map +1 -0
  217. package/dist/sgerp/types/simulation/operationslocation.js +2 -0
  218. package/dist/sgerp/types/simulation/operationslocationgroup.d.ts +11 -0
  219. package/dist/sgerp/types/simulation/operationslocationgroup.d.ts.map +1 -0
  220. package/dist/sgerp/types/simulation/operationslocationgroup.js +2 -0
  221. package/dist/sgerp/types/simulation/pricing.d.ts +171 -0
  222. package/dist/sgerp/types/simulation/pricing.d.ts.map +1 -0
  223. package/dist/sgerp/types/simulation/pricing.js +2 -0
  224. package/dist/sgerp/types/simulation/route-cost-modification.d.ts +35 -0
  225. package/dist/sgerp/types/simulation/route-cost-modification.d.ts.map +1 -0
  226. package/dist/sgerp/types/simulation/route-cost-modification.js +5 -0
  227. package/dist/sgerp/types/simulation/routing-engine-settings.d.ts +42 -0
  228. package/dist/sgerp/types/simulation/routing-engine-settings.d.ts.map +1 -0
  229. package/dist/sgerp/types/simulation/routing-engine-settings.js +35 -0
  230. package/dist/sgerp/types/simulation/routingprofile.d.ts +32 -0
  231. package/dist/sgerp/types/simulation/routingprofile.d.ts.map +1 -0
  232. package/dist/sgerp/types/simulation/routingprofile.js +37 -0
  233. package/dist/sgerp/types/simulation/simulation.d.ts +120 -0
  234. package/dist/sgerp/types/simulation/simulation.d.ts.map +1 -0
  235. package/dist/sgerp/types/simulation/simulation.js +2 -0
  236. package/dist/sgerp/types/simulation/simulationprocessor.d.ts +31 -0
  237. package/dist/sgerp/types/simulation/simulationprocessor.d.ts.map +1 -0
  238. package/dist/sgerp/types/simulation/simulationprocessor.js +2 -0
  239. package/dist/sgerp/types/simulation/vehicle.js +2 -1
  240. package/dist/sgerp/types/simulation/vehicletype.d.ts +33 -0
  241. package/dist/sgerp/types/simulation/vehicletype.d.ts.map +1 -0
  242. package/dist/sgerp/types/simulation/vehicletype.js +2 -0
  243. package/dist/sgerp/types/sms_notify/smsscheduled.d.ts +36 -0
  244. package/dist/sgerp/types/sms_notify/smsscheduled.d.ts.map +1 -0
  245. package/dist/sgerp/types/sms_notify/smsscheduled.js +6 -0
  246. package/dist/sgerp/types/transportation/passenger.d.ts +49 -0
  247. package/dist/sgerp/types/transportation/passenger.d.ts.map +1 -0
  248. package/dist/sgerp/types/transportation/passenger.js +13 -0
  249. package/dist/sgerp/types/transportation/ticket.d.ts +31 -0
  250. package/dist/sgerp/types/transportation/ticket.d.ts.map +1 -0
  251. package/dist/sgerp/types/transportation/ticket.js +2 -0
  252. package/dist/sgerp/types/transportation/transaction.d.ts +71 -0
  253. package/dist/sgerp/types/transportation/transaction.d.ts.map +1 -0
  254. package/dist/sgerp/types/transportation/transaction.js +54 -0
  255. package/dist/sgerp/utils/bookingPayload.d.ts +80 -0
  256. package/dist/sgerp/utils/bookingPayload.d.ts.map +1 -0
  257. package/dist/sgerp/utils/bookingPayload.js +44 -0
  258. package/dist/sgerp/utils/color.d.ts +30 -0
  259. package/dist/sgerp/utils/color.d.ts.map +1 -0
  260. package/dist/sgerp/utils/color.js +117 -0
  261. package/dist/sgerp/utils/enum-helpers.d.ts +41 -0
  262. package/dist/sgerp/utils/enum-helpers.d.ts.map +1 -0
  263. package/dist/sgerp/utils/enum-helpers.js +54 -0
  264. package/dist/sgerp/utils/routeUtils.d.ts +1 -1
  265. package/dist/sgerp/utils/routeUtils.d.ts.map +1 -1
  266. package/dist/sgerp/utils/routeUtils.js +171 -0
  267. package/package.json +1 -1
@@ -0,0 +1,391 @@
1
+ import type { SGERPListResponse, SGERPMeta } from './types/account/user';
2
+ import type { RequestConfig } from './types/config';
3
+ import type { GeoJSONFeatureCollection, ToGeoJSONFeature } from './types/geojson';
4
+ type FetchFunction<T> = (params?: unknown, config?: RequestConfig) => Promise<SGERPListResponse<T>>;
5
+ /**
6
+ * Configuration for dependent API calls
7
+ * Used to automatically fetch related data after the main collection is loaded
8
+ */
9
+ export interface DependentCall<T> {
10
+ /**
11
+ * Name of the related collection (e.g., 'user')
12
+ */
13
+ collectionName: string;
14
+ /**
15
+ * Function to extract foreign key IDs from loaded models
16
+ * @example (driver) => driver.user_id
17
+ */
18
+ extractIds: (model: T) => number | string | null | undefined;
19
+ /**
20
+ * Field name in the API response to merge back into the model
21
+ * @example 'user' - will create model.user property
22
+ */
23
+ targetField: string;
24
+ /**
25
+ * Optional: API parameter name for the ID list (defaults to 'id__in')
26
+ */
27
+ idParam?: string;
28
+ /**
29
+ * Optional: Fields to fetch from the related model (only_fields param)
30
+ */
31
+ onlyFields?: string[];
32
+ /**
33
+ * Optional: Field name in the related object to match against extractIds
34
+ * For one-to-many relationships (defaults to 'id' for one-to-one)
35
+ * @example 'user_id' for projectmember relationship
36
+ */
37
+ matchField?: string;
38
+ /**
39
+ * Optional: If true, creates an array of related objects (one-to-many)
40
+ * If false, creates a single object (one-to-one, default)
41
+ */
42
+ isArray?: boolean;
43
+ /**
44
+ * Optional: Additional filter parameters to include in the fetch request
45
+ * @example { project__organizations__type: 'participation' }
46
+ */
47
+ extraParams?: Record<string, string | number | boolean>;
48
+ /**
49
+ * Fetch function for the dependent collection
50
+ */
51
+ fetchFn: (params?: unknown, config?: RequestConfig) => Promise<SGERPListResponse<unknown>>;
52
+ }
53
+ /**
54
+ * Base Collection class inspired by Backbone.js
55
+ * Provides indexing, pagination, and utility methods for model arrays
56
+ * Uses underscore.js for collection operations
57
+ * Supports React integration via change listeners
58
+ */
59
+ export declare class Collection<T extends {
60
+ id: number | string;
61
+ }> {
62
+ protected _models: T[];
63
+ protected _index: Map<number | string, T>;
64
+ protected _meta: SGERPMeta;
65
+ protected _offset: number;
66
+ protected _limit: number;
67
+ protected fetchFn: FetchFunction<T>;
68
+ lastParams: Record<string, unknown>;
69
+ protected _listeners: Set<() => void>;
70
+ protected _dependentCalls: DependentCall<T>[];
71
+ protected _batchQueue: Map<number | string, ((value: T | null) => void)[]>;
72
+ protected _batchTimeout: NodeJS.Timeout | null;
73
+ protected _isBatchFetching: boolean;
74
+ protected _cacheHits: Set<number | string>;
75
+ constructor(fetchFn: FetchFunction<T>, models?: T[], meta?: SGERPMeta);
76
+ /**
77
+ * Register a dependent call configuration
78
+ * This will automatically fetch related data after the main collection is loaded
79
+ */
80
+ protected registerDependentCall(config: DependentCall<T>): void;
81
+ /**
82
+ * Subscribe to collection changes (for React integration)
83
+ */
84
+ onChange(listener: () => void): () => void;
85
+ /**
86
+ * Notify all listeners of changes
87
+ */
88
+ protected _notifyChange(): void;
89
+ /**
90
+ * Get all models in the collection
91
+ */
92
+ get models(): T[];
93
+ /**
94
+ * Get the number of models in the collection
95
+ */
96
+ get length(): number;
97
+ /**
98
+ * Get pagination metadata
99
+ */
100
+ get meta(): SGERPMeta;
101
+ /**
102
+ * Check if there are more pages to fetch
103
+ */
104
+ get hasMore(): boolean;
105
+ /**
106
+ * Get a model by ID from the index
107
+ */
108
+ get(id: number | string): T | undefined;
109
+ /**
110
+ * Asynchronously get a model by ID with automatic batched fetching
111
+ * If the model is not in the collection, it will be fetched along with other requested IDs
112
+ * All getAsync calls within 50ms are batched into a single API request
113
+ *
114
+ * @param id - The ID of the model to fetch
115
+ * @returns Promise that resolves to the model or null if not found
116
+ *
117
+ * @example
118
+ * const project = await api.collections.project.getAsync(123);
119
+ * if (project) {
120
+ * console.log(project.name);
121
+ * }
122
+ */
123
+ getAsync(id: number | string, forceFresh?: boolean): Promise<T | null>;
124
+ /**
125
+ * Process the batched getAsync requests
126
+ * @private
127
+ */
128
+ protected _processBatch(): Promise<void>;
129
+ /**
130
+ * Get a model at a specific position
131
+ */
132
+ at(index: number): T | undefined;
133
+ /**
134
+ * Add models to the collection and update the index
135
+ * Creates a new array reference for React compatibility
136
+ * Only triggers change notification if data actually changed
137
+ */
138
+ add(models: T | T[]): void;
139
+ /**
140
+ * Prepend models to the beginning of the collection
141
+ * Useful for adding newly created items to the top of a list
142
+ */
143
+ prepend(models: T | T[]): void;
144
+ /**
145
+ * Prepend models to the beginning of the collection and fetch their related data
146
+ * This is useful when adding newly created items without refetching the entire collection
147
+ * @param models - Model(s) to prepend
148
+ * @param config - Optional request configuration
149
+ */
150
+ prependWithRelations(models: T | T[], config?: RequestConfig): Promise<void>;
151
+ /**
152
+ * Remove a model by ID
153
+ */
154
+ remove(id: number | string): void;
155
+ /**
156
+ * Reset the collection with new models
157
+ */
158
+ reset(models: T[], meta?: SGERPMeta): void;
159
+ /**
160
+ * Get the maximum modified_at value from the collection
161
+ * Useful for incremental updates
162
+ */
163
+ getMaxModifiedAt(): string | null;
164
+ /**
165
+ * Fetch and merge updates since the last modified_at timestamp
166
+ * Returns true if new data was fetched, false otherwise
167
+ */
168
+ fetchUpdates(additionalParams?: Record<string, unknown>, useGte?: boolean): Promise<boolean>;
169
+ /**
170
+ * Clear all models from the collection
171
+ */
172
+ clear(): void;
173
+ /**
174
+ * Iterate over each model
175
+ */
176
+ forEach(callback: (model: T, index: number) => void): void;
177
+ /**
178
+ * Map over models
179
+ */
180
+ map<U>(callback: (model: T, index: number) => U): U[];
181
+ /**
182
+ * Filter models
183
+ */
184
+ filter(callback: (model: T, index: number) => boolean): T[];
185
+ /**
186
+ * Find a model
187
+ */
188
+ find(callback: (model: T, index: number) => boolean): T | undefined;
189
+ /**
190
+ * Check if collection contains a model with the given ID
191
+ */
192
+ has(id: number | string): boolean;
193
+ /**
194
+ * Convert to plain array
195
+ */
196
+ toArray(): T[];
197
+ /**
198
+ * Convert to JSON
199
+ */
200
+ toJSON(): T[];
201
+ /**
202
+ * Extract a single property from each model
203
+ * @example projects.pluck('name') // ['Project 1', 'Project 2']
204
+ */
205
+ pluck<K extends keyof T>(key: K): T[K][];
206
+ /**
207
+ * Filter models that match all the given properties
208
+ * @example projects.where({ timezone: 'UTC' })
209
+ */
210
+ where(properties: Partial<T>): T[];
211
+ /**
212
+ * Find the first model that matches all the given properties
213
+ * @example projects.findWhere({ timezone: 'UTC' })
214
+ */
215
+ findWhere(properties: Partial<T>): T | undefined;
216
+ /**
217
+ * Sort models by a property or function
218
+ * @example projects.sortBy('name')
219
+ * @example projects.sortBy(p => p.name.toLowerCase())
220
+ */
221
+ sortBy(iteratee: keyof T | ((model: T) => number | string)): T[];
222
+ /**
223
+ * Group models by a property or function
224
+ * @example projects.groupBy('timezone')
225
+ * @example projects.groupBy(p => p.name[0]) // Group by first letter
226
+ */
227
+ groupBy(iteratee: keyof T | ((model: T) => string | number)): Record<string, T[]>;
228
+ /**
229
+ * Count models by a property or function
230
+ * @example projects.countBy('timezone')
231
+ */
232
+ countBy(iteratee: keyof T | ((model: T) => string | number)): Record<string, number>;
233
+ /**
234
+ * Index models by a property or function (returns a map)
235
+ * @example projects.indexBy('name')
236
+ */
237
+ indexBy(iteratee: keyof T | ((model: T) => string | number)): Record<string, T>;
238
+ /**
239
+ * Split collection into two arrays: [matches, non-matches]
240
+ * @example const [active, inactive] = projects.partition(p => !p.is_invalidated)
241
+ */
242
+ partition(predicate: (model: T, index: number) => boolean): [T[], T[]];
243
+ /**
244
+ * Get n random models from the collection
245
+ * @example projects.sample(3) // Get 3 random projects
246
+ */
247
+ sample(n?: number): T | T[];
248
+ /**
249
+ * Shuffle the models (returns new array)
250
+ * @example projects.shuffle()
251
+ */
252
+ shuffle(): T[];
253
+ /**
254
+ * Get the first n models (or first model if n not specified)
255
+ * @example projects.first() // First project
256
+ * @example projects.first(5) // First 5 projects
257
+ */
258
+ first(n?: number): T | T[] | undefined;
259
+ /**
260
+ * Get the last n models (or last model if n not specified)
261
+ * @example projects.last() // Last project
262
+ * @example projects.last(5) // Last 5 projects
263
+ */
264
+ last(n?: number): T | T[] | undefined;
265
+ /**
266
+ * Get all models except the last n
267
+ * @example projects.initial(2) // All except last 2
268
+ */
269
+ initial(n?: number): T[];
270
+ /**
271
+ * Get all models except the first n
272
+ * @example projects.rest(2) // All except first 2
273
+ */
274
+ rest(n?: number): T[];
275
+ /**
276
+ * Exclude models with the given IDs
277
+ * @example projects.without(1, 2, 3)
278
+ */
279
+ without(...ids: (number | string)[]): T[];
280
+ /**
281
+ * Check if collection is empty
282
+ * @example projects.isEmpty()
283
+ */
284
+ isEmpty(): boolean;
285
+ /**
286
+ * Get the size of the collection (alias for length)
287
+ * @example projects.size()
288
+ */
289
+ size(): number;
290
+ /**
291
+ * Test if all models pass the predicate
292
+ * @example projects.every(p => !p.is_invalidated)
293
+ */
294
+ every(predicate: (model: T, index: number) => boolean): boolean;
295
+ /**
296
+ * Test if any model passes the predicate
297
+ * @example projects.some(p => p.timezone === 'UTC')
298
+ */
299
+ some(predicate: (model: T, index: number) => boolean): boolean;
300
+ /**
301
+ * Opposite of filter - returns models that don't match
302
+ * @example projects.reject(p => p.is_invalidated)
303
+ */
304
+ reject(predicate: (model: T, index: number) => boolean): T[];
305
+ /**
306
+ * Find the maximum value by a property or function
307
+ * @example projects.max('created_at')
308
+ * @example projects.max(p => p.name.length)
309
+ */
310
+ max(iteratee: keyof T | ((model: T) => number)): T | undefined;
311
+ /**
312
+ * Find the minimum value by a property or function
313
+ * @example projects.min('created_at')
314
+ * @example projects.min(p => p.name.length)
315
+ */
316
+ min(iteratee: keyof T | ((model: T) => number)): T | undefined;
317
+ /**
318
+ * Reduce the collection to a single value
319
+ * @example projects.reduce((sum, p) => sum + 1, 0)
320
+ */
321
+ reduce<U>(callback: (accumulator: U, model: T, index: number) => U, initialValue: U): U;
322
+ /**
323
+ * Get unique models (removes duplicates by ID)
324
+ * @example projects.uniq()
325
+ */
326
+ uniq(): T[];
327
+ /**
328
+ * Check if the collection contains a model matching the predicate
329
+ * @example projects.contains(p => p.name === 'Test')
330
+ */
331
+ contains(predicate: (model: T) => boolean): boolean;
332
+ /**
333
+ * Invoke a method on each model (if models have methods)
334
+ * @example projects.invoke('toString')
335
+ */
336
+ invoke(methodName: keyof T, ...args: unknown[]): unknown[];
337
+ /**
338
+ * Execute all dependent calls after the main collection is loaded
339
+ */
340
+ protected executeDependentCalls(config?: RequestConfig): Promise<void>;
341
+ /**
342
+ * Fetch the first page of models
343
+ */
344
+ fetch(params?: unknown, config?: RequestConfig): Promise<void>;
345
+ /**
346
+ * Fetch the next page and append to the collection
347
+ */
348
+ fetchNext(config?: RequestConfig): Promise<void>;
349
+ /**
350
+ * Fetch all pages and populate the collection
351
+ */
352
+ fetchAll(params?: unknown, config?: RequestConfig): Promise<void>;
353
+ /**
354
+ * Convert collection models to GeoJSON FeatureCollection
355
+ *
356
+ * @param toFeature - Optional function to convert a model to a GeoJSON Feature.
357
+ * If not provided, subclasses should override this method.
358
+ * @returns GeoJSON FeatureCollection or null if conversion is not supported
359
+ *
360
+ * @example
361
+ * // With callback
362
+ * const geojson = collection.toGeoJSON((location) => ({
363
+ * type: 'Feature',
364
+ * geometry: location.point,
365
+ * properties: {
366
+ * name: location.name,
367
+ * code: location.code
368
+ * },
369
+ * id: location.id
370
+ * }));
371
+ *
372
+ * @example
373
+ * // Override in subclass
374
+ * class MyCollection extends Collection<MyModel> {
375
+ * toGeoJSON(): GeoJSONFeatureCollection {
376
+ * return {
377
+ * type: 'FeatureCollection',
378
+ * features: this.models.map(model => ({
379
+ * type: 'Feature',
380
+ * geometry: model.geometry,
381
+ * properties: { name: model.name },
382
+ * id: model.id
383
+ * }))
384
+ * };
385
+ * }
386
+ * }
387
+ */
388
+ toGeoJSON(toFeature?: ToGeoJSONFeature<T>): GeoJSONFeatureCollection | null;
389
+ }
390
+ export {};
391
+ //# sourceMappingURL=collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../sgerplib/sgerp/collection.ts"],"names":[],"mappings":"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"}