rotacloud 1.5.2 → 2.0.0

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 (488) hide show
  1. package/README.md +23 -13
  2. package/dist/client-builder.d.ts +34 -0
  3. package/dist/client-builder.js +70 -0
  4. package/dist/client-builder.test.js +163 -0
  5. package/dist/endpoint.d.ts +51 -0
  6. package/dist/interfaces/launch-terminal.interface.d.ts +6 -0
  7. package/dist/{mjs/interfaces → interfaces}/leave-request.interface.d.ts +1 -1
  8. package/dist/{cjs/interfaces → interfaces}/leave.interface.d.ts +1 -1
  9. package/dist/{mjs/interfaces → interfaces}/query-params/toil-allowance-query-params.interface.d.ts +1 -0
  10. package/dist/{cjs/interfaces → interfaces}/sdk-config.interface.d.ts +8 -11
  11. package/dist/{mjs/interfaces → interfaces}/shift.interface.d.ts +11 -0
  12. package/dist/interfaces/user-clock-in.interface.d.ts +18 -0
  13. package/dist/interfaces/user-clock-in.interface.js +1 -0
  14. package/dist/{cjs/interfaces → interfaces}/user.interface.d.ts +1 -1
  15. package/dist/interfaces/user.interface.js +1 -0
  16. package/dist/interfaces/users-clocked-in.interface.js +1 -0
  17. package/dist/interfaces/users-clocked-out.interface.js +1 -0
  18. package/dist/main.d.ts +203 -0
  19. package/dist/main.js +6 -0
  20. package/dist/models/SDKError.model.d.ts +15 -0
  21. package/dist/{mjs/models → models}/SDKError.model.js +10 -3
  22. package/dist/ops.d.ts +195 -0
  23. package/dist/ops.js +304 -0
  24. package/dist/ops.test.d.ts +1 -0
  25. package/dist/ops.test.js +101 -0
  26. package/dist/service.d.ts +233 -0
  27. package/dist/service.js +317 -0
  28. package/dist/utils.d.ts +41 -0
  29. package/dist/utils.js +149 -0
  30. package/package.json +19 -20
  31. package/src/client-builder.test.ts +188 -0
  32. package/src/client-builder.ts +118 -0
  33. package/src/endpoint.ts +99 -0
  34. package/src/interfaces/launch-terminal.interface.ts +7 -0
  35. package/src/interfaces/leave-request.interface.ts +1 -1
  36. package/src/interfaces/leave.interface.ts +1 -1
  37. package/src/interfaces/query-params/toil-allowance-query-params.interface.ts +1 -0
  38. package/src/interfaces/sdk-config.interface.ts +11 -14
  39. package/src/interfaces/shift.interface.ts +12 -0
  40. package/src/interfaces/time-zone.interface.ts +6 -6
  41. package/src/interfaces/user-clock-in.interface.ts +20 -0
  42. package/src/interfaces/user.interface.ts +1 -1
  43. package/src/main.ts +7 -0
  44. package/src/models/SDKError.model.ts +8 -8
  45. package/src/ops.test.ts +121 -0
  46. package/src/ops.ts +533 -0
  47. package/src/service.ts +395 -0
  48. package/src/utils.ts +193 -0
  49. package/.eslintignore +0 -5
  50. package/.eslintrc.json +0 -27
  51. package/.gitattributes +0 -1
  52. package/.github/workflows/check.yml +0 -36
  53. package/.github/workflows/publish.yml +0 -44
  54. package/.prettierrc.json +0 -7
  55. package/.vscode/settings.json +0 -4
  56. package/dist/cjs/interfaces/account-service.interface.js +0 -2
  57. package/dist/cjs/interfaces/account-services.interface.js +0 -2
  58. package/dist/cjs/interfaces/account.interface.js +0 -2
  59. package/dist/cjs/interfaces/attendance.interface.js +0 -2
  60. package/dist/cjs/interfaces/auth.interface.js +0 -2
  61. package/dist/cjs/interfaces/availability-pattern.interface.js +0 -2
  62. package/dist/cjs/interfaces/availability.interface.js +0 -2
  63. package/dist/cjs/interfaces/daily-budgets.interface.js +0 -2
  64. package/dist/cjs/interfaces/daily-revenue.interface.js +0 -2
  65. package/dist/cjs/interfaces/day-note.interface.js +0 -2
  66. package/dist/cjs/interfaces/days-off-pattern.interface.js +0 -2
  67. package/dist/cjs/interfaces/days-off.interface.js +0 -2
  68. package/dist/cjs/interfaces/document.interface.js +0 -2
  69. package/dist/cjs/interfaces/drop-request.interface.js +0 -2
  70. package/dist/cjs/interfaces/group.interface.js +0 -2
  71. package/dist/cjs/interfaces/holiday_allowance.interface.js +0 -2
  72. package/dist/cjs/interfaces/index.js +0 -55
  73. package/dist/cjs/interfaces/leave-date.interface.js +0 -2
  74. package/dist/cjs/interfaces/leave-embargo.interface.js +0 -2
  75. package/dist/cjs/interfaces/leave-rate.interface.js +0 -2
  76. package/dist/cjs/interfaces/leave-request.interface.d.ts +0 -23
  77. package/dist/cjs/interfaces/leave-request.interface.js +0 -2
  78. package/dist/cjs/interfaces/leave-type.interface.js +0 -2
  79. package/dist/cjs/interfaces/leave.interface.js +0 -2
  80. package/dist/cjs/interfaces/location-coordinate.interface.js +0 -2
  81. package/dist/cjs/interfaces/location.interface.js +0 -2
  82. package/dist/cjs/interfaces/logbook-category.interface.js +0 -2
  83. package/dist/cjs/interfaces/logbook-event.interface.js +0 -2
  84. package/dist/cjs/interfaces/pay-period.interface.js +0 -2
  85. package/dist/cjs/interfaces/pin.interface.js +0 -2
  86. package/dist/cjs/interfaces/query-params/attendance-query-params.interface.js +0 -2
  87. package/dist/cjs/interfaces/query-params/availability-patterns-query-params.interface.js +0 -2
  88. package/dist/cjs/interfaces/query-params/availability-query-params.interface.js +0 -2
  89. package/dist/cjs/interfaces/query-params/common-shift-times-query-params.interface.js +0 -2
  90. package/dist/cjs/interfaces/query-params/daily-budgets-query-params.interface.js +0 -2
  91. package/dist/cjs/interfaces/query-params/daily-revenue-query-params.interface.js +0 -2
  92. package/dist/cjs/interfaces/query-params/day-notes-query-params.interface.js +0 -2
  93. package/dist/cjs/interfaces/query-params/days-off-patterns-query-params.interface.js +0 -2
  94. package/dist/cjs/interfaces/query-params/days-off-query-params.interface.js +0 -2
  95. package/dist/cjs/interfaces/query-params/documents-query-params.interface.js +0 -2
  96. package/dist/cjs/interfaces/query-params/groups-query-params.interface.js +0 -2
  97. package/dist/cjs/interfaces/query-params/index.js +0 -42
  98. package/dist/cjs/interfaces/query-params/leave-embargoes-query-params.interface.js +0 -2
  99. package/dist/cjs/interfaces/query-params/leave-query-params.interface.js +0 -2
  100. package/dist/cjs/interfaces/query-params/leave-requests-query-params.interface.js +0 -2
  101. package/dist/cjs/interfaces/query-params/locations-query-params.interface.js +0 -2
  102. package/dist/cjs/interfaces/query-params/logbook-events-query-params.interface.js +0 -2
  103. package/dist/cjs/interfaces/query-params/pay-periods-query-params.interface.js +0 -2
  104. package/dist/cjs/interfaces/query-params/roles-query-params.interface.js +0 -2
  105. package/dist/cjs/interfaces/query-params/settings-query-params.interface.js +0 -2
  106. package/dist/cjs/interfaces/query-params/shifts-query-params.interface.js +0 -2
  107. package/dist/cjs/interfaces/query-params/swap-requests-query-params.interface.js +0 -2
  108. package/dist/cjs/interfaces/query-params/terminals-query-params.interface.js +0 -2
  109. package/dist/cjs/interfaces/query-params/toil-accruals-query-params.interface.js +0 -2
  110. package/dist/cjs/interfaces/query-params/toil-allowance-query-params.interface.d.ts +0 -3
  111. package/dist/cjs/interfaces/query-params/toil-allowance-query-params.interface.js +0 -2
  112. package/dist/cjs/interfaces/query-params/unavailability-requests-query-params.interface.js +0 -2
  113. package/dist/cjs/interfaces/query-params/users-query-params.interface.js +0 -2
  114. package/dist/cjs/interfaces/role-rate.interface.js +0 -2
  115. package/dist/cjs/interfaces/role.interface.js +0 -2
  116. package/dist/cjs/interfaces/sdk-config.interface.js +0 -8
  117. package/dist/cjs/interfaces/settings.interface.js +0 -2
  118. package/dist/cjs/interfaces/shift.interface.d.ts +0 -25
  119. package/dist/cjs/interfaces/shift.interface.js +0 -2
  120. package/dist/cjs/interfaces/swap-request.interface.js +0 -2
  121. package/dist/cjs/interfaces/terminal.interface.js +0 -2
  122. package/dist/cjs/interfaces/time-zone.interface.js +0 -2
  123. package/dist/cjs/interfaces/toil-accrual.interface.js +0 -2
  124. package/dist/cjs/interfaces/toil-allowance.interface.js +0 -2
  125. package/dist/cjs/interfaces/user.interface.js +0 -2
  126. package/dist/cjs/interfaces/users-clocked-in.interface.js +0 -2
  127. package/dist/cjs/interfaces/users-clocked-out.interface.js +0 -2
  128. package/dist/cjs/models/SDKError.model.d.ts +0 -11
  129. package/dist/cjs/models/SDKError.model.js +0 -15
  130. package/dist/cjs/models/index.js +0 -17
  131. package/dist/cjs/package.json +0 -3
  132. package/dist/cjs/rotacloud.d.ts +0 -47
  133. package/dist/cjs/rotacloud.js +0 -166
  134. package/dist/cjs/services/accounts.service.d.ts +0 -33
  135. package/dist/cjs/services/accounts.service.js +0 -83
  136. package/dist/cjs/services/attendance.service.d.ts +0 -51
  137. package/dist/cjs/services/attendance.service.js +0 -102
  138. package/dist/cjs/services/auth.service.d.ts +0 -10
  139. package/dist/cjs/services/auth.service.js +0 -14
  140. package/dist/cjs/services/availability.service.d.ts +0 -25
  141. package/dist/cjs/services/availability.service.js +0 -69
  142. package/dist/cjs/services/daily-budgets.service.d.ts +0 -27
  143. package/dist/cjs/services/daily-budgets.service.js +0 -87
  144. package/dist/cjs/services/daily-revenue.service.d.ts +0 -27
  145. package/dist/cjs/services/daily-revenue.service.js +0 -87
  146. package/dist/cjs/services/day-notes.service.d.ts +0 -49
  147. package/dist/cjs/services/day-notes.service.js +0 -102
  148. package/dist/cjs/services/days-off.service.d.ts +0 -32
  149. package/dist/cjs/services/days-off.service.js +0 -102
  150. package/dist/cjs/services/documents.service.d.ts +0 -73
  151. package/dist/cjs/services/documents.service.js +0 -125
  152. package/dist/cjs/services/groups.service.d.ts +0 -51
  153. package/dist/cjs/services/groups.service.js +0 -102
  154. package/dist/cjs/services/index.d.ts +0 -25
  155. package/dist/cjs/services/index.js +0 -41
  156. package/dist/cjs/services/leave-embargoes.service.d.ts +0 -51
  157. package/dist/cjs/services/leave-embargoes.service.js +0 -102
  158. package/dist/cjs/services/leave-request.service.d.ts +0 -51
  159. package/dist/cjs/services/leave-request.service.js +0 -106
  160. package/dist/cjs/services/leave-types.service.d.ts +0 -11
  161. package/dist/cjs/services/leave-types.service.js +0 -16
  162. package/dist/cjs/services/leave.service.d.ts +0 -51
  163. package/dist/cjs/services/leave.service.js +0 -102
  164. package/dist/cjs/services/locations.service.d.ts +0 -51
  165. package/dist/cjs/services/locations.service.js +0 -102
  166. package/dist/cjs/services/pins.service.d.ts +0 -18
  167. package/dist/cjs/services/pins.service.js +0 -16
  168. package/dist/cjs/services/roles.service.d.ts +0 -51
  169. package/dist/cjs/services/roles.service.js +0 -102
  170. package/dist/cjs/services/service.d.ts +0 -47
  171. package/dist/cjs/services/service.js +0 -149
  172. package/dist/cjs/services/settings.service.d.ts +0 -12
  173. package/dist/cjs/services/settings.service.js +0 -16
  174. package/dist/cjs/services/shifts.service.d.ts +0 -120
  175. package/dist/cjs/services/shifts.service.js +0 -154
  176. package/dist/cjs/services/terminals-active.service.d.ts +0 -46
  177. package/dist/cjs/services/terminals-active.service.js +0 -97
  178. package/dist/cjs/services/terminals.service.d.ts +0 -50
  179. package/dist/cjs/services/terminals.service.js +0 -102
  180. package/dist/cjs/services/time-zone.service.d.ts +0 -14
  181. package/dist/cjs/services/time-zone.service.js +0 -83
  182. package/dist/cjs/services/toil-accruals.service.d.ts +0 -27
  183. package/dist/cjs/services/toil-accruals.service.js +0 -93
  184. package/dist/cjs/services/toil-allowance.service.d.ts +0 -9
  185. package/dist/cjs/services/toil-allowance.service.js +0 -78
  186. package/dist/cjs/services/users-clock-in.service.d.ts +0 -66
  187. package/dist/cjs/services/users-clock-in.service.js +0 -113
  188. package/dist/cjs/services/users.service.d.ts +0 -51
  189. package/dist/cjs/services/users.service.js +0 -102
  190. package/dist/cjs/version.d.ts +0 -3
  191. package/dist/cjs/version.js +0 -4
  192. package/dist/mjs/interfaces/account-service.interface.d.ts +0 -6
  193. package/dist/mjs/interfaces/account-services.interface.d.ts +0 -6
  194. package/dist/mjs/interfaces/account.interface.d.ts +0 -40
  195. package/dist/mjs/interfaces/attendance.interface.d.ts +0 -31
  196. package/dist/mjs/interfaces/auth.interface.d.ts +0 -8
  197. package/dist/mjs/interfaces/availability-pattern.interface.d.ts +0 -20
  198. package/dist/mjs/interfaces/availability.interface.d.ts +0 -13
  199. package/dist/mjs/interfaces/daily-budgets.interface.d.ts +0 -6
  200. package/dist/mjs/interfaces/daily-revenue.interface.d.ts +0 -7
  201. package/dist/mjs/interfaces/day-note.interface.d.ts +0 -9
  202. package/dist/mjs/interfaces/days-off-pattern.interface.d.ts +0 -13
  203. package/dist/mjs/interfaces/days-off.interface.d.ts +0 -8
  204. package/dist/mjs/interfaces/document.interface.d.ts +0 -36
  205. package/dist/mjs/interfaces/drop-request.interface.d.ts +0 -13
  206. package/dist/mjs/interfaces/group.interface.d.ts +0 -7
  207. package/dist/mjs/interfaces/holiday_allowance.interface.d.ts +0 -11
  208. package/dist/mjs/interfaces/index.d.ts +0 -39
  209. package/dist/mjs/interfaces/leave-date.interface.d.ts +0 -8
  210. package/dist/mjs/interfaces/leave-embargo.interface.d.ts +0 -10
  211. package/dist/mjs/interfaces/leave-rate.interface.d.ts +0 -3
  212. package/dist/mjs/interfaces/leave-type.interface.d.ts +0 -8
  213. package/dist/mjs/interfaces/leave.interface.d.ts +0 -8
  214. package/dist/mjs/interfaces/location-coordinate.interface.d.ts +0 -5
  215. package/dist/mjs/interfaces/location.interface.d.ts +0 -13
  216. package/dist/mjs/interfaces/logbook-category.interface.d.ts +0 -5
  217. package/dist/mjs/interfaces/logbook-event.interface.d.ts +0 -16
  218. package/dist/mjs/interfaces/pay-period.interface.d.ts +0 -16
  219. package/dist/mjs/interfaces/pin.interface.d.ts +0 -3
  220. package/dist/mjs/interfaces/query-params/attendance-query-params.interface.d.ts +0 -9
  221. package/dist/mjs/interfaces/query-params/availability-patterns-query-params.interface.d.ts +0 -5
  222. package/dist/mjs/interfaces/query-params/availability-query-params.interface.d.ts +0 -12
  223. package/dist/mjs/interfaces/query-params/common-shift-times-query-params.interface.d.ts +0 -3
  224. package/dist/mjs/interfaces/query-params/daily-budgets-query-params.interface.d.ts +0 -5
  225. package/dist/mjs/interfaces/query-params/daily-revenue-query-params.interface.d.ts +0 -5
  226. package/dist/mjs/interfaces/query-params/day-notes-query-params.interface.d.ts +0 -5
  227. package/dist/mjs/interfaces/query-params/days-off-patterns-query-params.interface.d.ts +0 -5
  228. package/dist/mjs/interfaces/query-params/days-off-query-params.interface.d.ts +0 -5
  229. package/dist/mjs/interfaces/query-params/documents-query-params.interface.d.ts +0 -4
  230. package/dist/mjs/interfaces/query-params/groups-query-params.interface.d.ts +0 -3
  231. package/dist/mjs/interfaces/query-params/index.d.ts +0 -26
  232. package/dist/mjs/interfaces/query-params/leave-embargoes-query-params.interface.d.ts +0 -5
  233. package/dist/mjs/interfaces/query-params/leave-query-params.interface.d.ts +0 -13
  234. package/dist/mjs/interfaces/query-params/leave-requests-query-params.interface.d.ts +0 -4
  235. package/dist/mjs/interfaces/query-params/locations-query-params.interface.d.ts +0 -7
  236. package/dist/mjs/interfaces/query-params/logbook-events-query-params.interface.d.ts +0 -3
  237. package/dist/mjs/interfaces/query-params/pay-periods-query-params.interface.d.ts +0 -4
  238. package/dist/mjs/interfaces/query-params/roles-query-params.interface.d.ts +0 -5
  239. package/dist/mjs/interfaces/query-params/settings-query-params.interface.d.ts +0 -3
  240. package/dist/mjs/interfaces/query-params/shifts-query-params.interface.d.ts +0 -14
  241. package/dist/mjs/interfaces/query-params/swap-requests-query-params.interface.d.ts +0 -8
  242. package/dist/mjs/interfaces/query-params/terminals-query-params.interface.d.ts +0 -3
  243. package/dist/mjs/interfaces/query-params/toil-accruals-query-params.interface.d.ts +0 -4
  244. package/dist/mjs/interfaces/query-params/unavailability-requests-query-params.interface.d.ts +0 -8
  245. package/dist/mjs/interfaces/query-params/users-query-params.interface.d.ts +0 -24
  246. package/dist/mjs/interfaces/role-rate.interface.d.ts +0 -6
  247. package/dist/mjs/interfaces/role.interface.d.ts +0 -9
  248. package/dist/mjs/interfaces/sdk-config.interface.d.ts +0 -47
  249. package/dist/mjs/interfaces/settings.interface.d.ts +0 -64
  250. package/dist/mjs/interfaces/swap-request.interface.d.ts +0 -16
  251. package/dist/mjs/interfaces/terminal.interface.d.ts +0 -23
  252. package/dist/mjs/interfaces/time-zone.interface.d.ts +0 -7
  253. package/dist/mjs/interfaces/toil-accrual.interface.d.ts +0 -14
  254. package/dist/mjs/interfaces/toil-allowance.interface.d.ts +0 -7
  255. package/dist/mjs/interfaces/user.interface.d.ts +0 -48
  256. package/dist/mjs/interfaces/users-clocked-in.interface.d.ts +0 -14
  257. package/dist/mjs/interfaces/users-clocked-out.interface.d.ts +0 -26
  258. package/dist/mjs/models/SDKError.model.d.ts +0 -11
  259. package/dist/mjs/models/index.d.ts +0 -1
  260. package/dist/mjs/package.json +0 -3
  261. package/dist/mjs/rotacloud.d.ts +0 -47
  262. package/dist/mjs/rotacloud.js +0 -133
  263. package/dist/mjs/services/accounts.service.d.ts +0 -33
  264. package/dist/mjs/services/accounts.service.js +0 -25
  265. package/dist/mjs/services/attendance.service.d.ts +0 -51
  266. package/dist/mjs/services/attendance.service.js +0 -44
  267. package/dist/mjs/services/auth.service.d.ts +0 -10
  268. package/dist/mjs/services/auth.service.js +0 -10
  269. package/dist/mjs/services/availability.service.d.ts +0 -25
  270. package/dist/mjs/services/availability.service.js +0 -35
  271. package/dist/mjs/services/daily-budgets.service.d.ts +0 -27
  272. package/dist/mjs/services/daily-budgets.service.js +0 -29
  273. package/dist/mjs/services/daily-revenue.service.d.ts +0 -27
  274. package/dist/mjs/services/daily-revenue.service.js +0 -29
  275. package/dist/mjs/services/day-notes.service.d.ts +0 -49
  276. package/dist/mjs/services/day-notes.service.js +0 -44
  277. package/dist/mjs/services/days-off.service.d.ts +0 -32
  278. package/dist/mjs/services/days-off.service.js +0 -44
  279. package/dist/mjs/services/documents.service.d.ts +0 -73
  280. package/dist/mjs/services/documents.service.js +0 -67
  281. package/dist/mjs/services/groups.service.d.ts +0 -51
  282. package/dist/mjs/services/groups.service.js +0 -44
  283. package/dist/mjs/services/index.d.ts +0 -25
  284. package/dist/mjs/services/index.js +0 -25
  285. package/dist/mjs/services/leave-embargoes.service.d.ts +0 -51
  286. package/dist/mjs/services/leave-embargoes.service.js +0 -44
  287. package/dist/mjs/services/leave-request.service.d.ts +0 -51
  288. package/dist/mjs/services/leave-request.service.js +0 -48
  289. package/dist/mjs/services/leave-types.service.d.ts +0 -11
  290. package/dist/mjs/services/leave-types.service.js +0 -12
  291. package/dist/mjs/services/leave.service.d.ts +0 -51
  292. package/dist/mjs/services/leave.service.js +0 -44
  293. package/dist/mjs/services/locations.service.d.ts +0 -51
  294. package/dist/mjs/services/locations.service.js +0 -44
  295. package/dist/mjs/services/pins.service.d.ts +0 -18
  296. package/dist/mjs/services/pins.service.js +0 -12
  297. package/dist/mjs/services/roles.service.d.ts +0 -51
  298. package/dist/mjs/services/roles.service.js +0 -44
  299. package/dist/mjs/services/service.d.ts +0 -47
  300. package/dist/mjs/services/service.js +0 -101
  301. package/dist/mjs/services/settings.service.d.ts +0 -12
  302. package/dist/mjs/services/settings.service.js +0 -12
  303. package/dist/mjs/services/shifts.service.d.ts +0 -120
  304. package/dist/mjs/services/shifts.service.js +0 -96
  305. package/dist/mjs/services/terminals-active.service.d.ts +0 -46
  306. package/dist/mjs/services/terminals-active.service.js +0 -39
  307. package/dist/mjs/services/terminals.service.d.ts +0 -50
  308. package/dist/mjs/services/terminals.service.js +0 -44
  309. package/dist/mjs/services/time-zone.service.d.ts +0 -14
  310. package/dist/mjs/services/time-zone.service.js +0 -25
  311. package/dist/mjs/services/toil-accruals.service.d.ts +0 -27
  312. package/dist/mjs/services/toil-accruals.service.js +0 -35
  313. package/dist/mjs/services/toil-allowance.service.d.ts +0 -9
  314. package/dist/mjs/services/toil-allowance.service.js +0 -20
  315. package/dist/mjs/services/users-clock-in.service.d.ts +0 -66
  316. package/dist/mjs/services/users-clock-in.service.js +0 -47
  317. package/dist/mjs/services/users.service.d.ts +0 -51
  318. package/dist/mjs/services/users.service.js +0 -44
  319. package/dist/mjs/version.d.ts +0 -3
  320. package/dist/mjs/version.js +0 -1
  321. package/fixup +0 -12
  322. package/src/rotacloud.ts +0 -207
  323. package/src/services/accounts.service.ts +0 -52
  324. package/src/services/attendance.service.ts +0 -106
  325. package/src/services/auth.service.ts +0 -13
  326. package/src/services/availability.service.ts +0 -58
  327. package/src/services/daily-budgets.service.ts +0 -65
  328. package/src/services/daily-revenue.service.ts +0 -62
  329. package/src/services/day-notes.service.ts +0 -98
  330. package/src/services/days-off.service.ts +0 -85
  331. package/src/services/documents.service.ts +0 -142
  332. package/src/services/groups.service.ts +0 -97
  333. package/src/services/index.ts +0 -25
  334. package/src/services/leave-embargoes.service.ts +0 -106
  335. package/src/services/leave-request.service.ts +0 -113
  336. package/src/services/leave-types.service.ts +0 -16
  337. package/src/services/leave.service.ts +0 -100
  338. package/src/services/locations.service.ts +0 -106
  339. package/src/services/pins.service.ts +0 -21
  340. package/src/services/roles.service.ts +0 -96
  341. package/src/services/service.ts +0 -168
  342. package/src/services/settings.service.ts +0 -19
  343. package/src/services/shifts.service.ts +0 -200
  344. package/src/services/terminals-active.service.ts +0 -85
  345. package/src/services/terminals.service.ts +0 -93
  346. package/src/services/time-zone.service.ts +0 -34
  347. package/src/services/toil-accruals.service.ts +0 -56
  348. package/src/services/toil-allowance.service.ts +0 -23
  349. package/src/services/users-clock-in.service.ts +0 -130
  350. package/src/services/users.service.ts +0 -96
  351. package/src/version.ts +0 -1
  352. package/tsconfig-base.json +0 -98
  353. package/tsconfig-cjs.json +0 -8
  354. package/tsconfig.json +0 -8
  355. /package/dist/{mjs/interfaces/account-service.interface.js → client-builder.test.d.ts} +0 -0
  356. /package/dist/{mjs/interfaces/account-services.interface.js → endpoint.js} +0 -0
  357. /package/dist/{cjs/interfaces → interfaces}/account-service.interface.d.ts +0 -0
  358. /package/dist/{mjs/interfaces/account.interface.js → interfaces/account-service.interface.js} +0 -0
  359. /package/dist/{cjs/interfaces → interfaces}/account-services.interface.d.ts +0 -0
  360. /package/dist/{mjs/interfaces/attendance.interface.js → interfaces/account-services.interface.js} +0 -0
  361. /package/dist/{cjs/interfaces → interfaces}/account.interface.d.ts +0 -0
  362. /package/dist/{mjs/interfaces/auth.interface.js → interfaces/account.interface.js} +0 -0
  363. /package/dist/{cjs/interfaces → interfaces}/attendance.interface.d.ts +0 -0
  364. /package/dist/{mjs/interfaces/availability-pattern.interface.js → interfaces/attendance.interface.js} +0 -0
  365. /package/dist/{cjs/interfaces → interfaces}/auth.interface.d.ts +0 -0
  366. /package/dist/{mjs/interfaces/availability.interface.js → interfaces/auth.interface.js} +0 -0
  367. /package/dist/{cjs/interfaces → interfaces}/availability-pattern.interface.d.ts +0 -0
  368. /package/dist/{mjs/interfaces/daily-budgets.interface.js → interfaces/availability-pattern.interface.js} +0 -0
  369. /package/dist/{cjs/interfaces → interfaces}/availability.interface.d.ts +0 -0
  370. /package/dist/{mjs/interfaces/daily-revenue.interface.js → interfaces/availability.interface.js} +0 -0
  371. /package/dist/{cjs/interfaces → interfaces}/daily-budgets.interface.d.ts +0 -0
  372. /package/dist/{mjs/interfaces/day-note.interface.js → interfaces/daily-budgets.interface.js} +0 -0
  373. /package/dist/{cjs/interfaces → interfaces}/daily-revenue.interface.d.ts +0 -0
  374. /package/dist/{mjs/interfaces/days-off-pattern.interface.js → interfaces/daily-revenue.interface.js} +0 -0
  375. /package/dist/{cjs/interfaces → interfaces}/day-note.interface.d.ts +0 -0
  376. /package/dist/{mjs/interfaces/days-off.interface.js → interfaces/day-note.interface.js} +0 -0
  377. /package/dist/{cjs/interfaces → interfaces}/days-off-pattern.interface.d.ts +0 -0
  378. /package/dist/{mjs/interfaces/document.interface.js → interfaces/days-off-pattern.interface.js} +0 -0
  379. /package/dist/{cjs/interfaces → interfaces}/days-off.interface.d.ts +0 -0
  380. /package/dist/{mjs/interfaces/drop-request.interface.js → interfaces/days-off.interface.js} +0 -0
  381. /package/dist/{cjs/interfaces → interfaces}/document.interface.d.ts +0 -0
  382. /package/dist/{mjs/interfaces/group.interface.js → interfaces/document.interface.js} +0 -0
  383. /package/dist/{cjs/interfaces → interfaces}/drop-request.interface.d.ts +0 -0
  384. /package/dist/{mjs/interfaces/holiday_allowance.interface.js → interfaces/drop-request.interface.js} +0 -0
  385. /package/dist/{cjs/interfaces → interfaces}/group.interface.d.ts +0 -0
  386. /package/dist/{mjs/interfaces/leave-date.interface.js → interfaces/group.interface.js} +0 -0
  387. /package/dist/{cjs/interfaces → interfaces}/holiday_allowance.interface.d.ts +0 -0
  388. /package/dist/{mjs/interfaces/leave-embargo.interface.js → interfaces/holiday_allowance.interface.js} +0 -0
  389. /package/dist/{cjs/interfaces → interfaces}/index.d.ts +0 -0
  390. /package/dist/{mjs/interfaces → interfaces}/index.js +0 -0
  391. /package/dist/{mjs/interfaces/leave-rate.interface.js → interfaces/launch-terminal.interface.js} +0 -0
  392. /package/dist/{cjs/interfaces → interfaces}/leave-date.interface.d.ts +0 -0
  393. /package/dist/{mjs/interfaces/leave-request.interface.js → interfaces/leave-date.interface.js} +0 -0
  394. /package/dist/{cjs/interfaces → interfaces}/leave-embargo.interface.d.ts +0 -0
  395. /package/dist/{mjs/interfaces/leave-type.interface.js → interfaces/leave-embargo.interface.js} +0 -0
  396. /package/dist/{cjs/interfaces → interfaces}/leave-rate.interface.d.ts +0 -0
  397. /package/dist/{mjs/interfaces/leave.interface.js → interfaces/leave-rate.interface.js} +0 -0
  398. /package/dist/{mjs/interfaces/location-coordinate.interface.js → interfaces/leave-request.interface.js} +0 -0
  399. /package/dist/{cjs/interfaces → interfaces}/leave-type.interface.d.ts +0 -0
  400. /package/dist/{mjs/interfaces/location.interface.js → interfaces/leave-type.interface.js} +0 -0
  401. /package/dist/{mjs/interfaces/logbook-category.interface.js → interfaces/leave.interface.js} +0 -0
  402. /package/dist/{cjs/interfaces → interfaces}/location-coordinate.interface.d.ts +0 -0
  403. /package/dist/{mjs/interfaces/logbook-event.interface.js → interfaces/location-coordinate.interface.js} +0 -0
  404. /package/dist/{cjs/interfaces → interfaces}/location.interface.d.ts +0 -0
  405. /package/dist/{mjs/interfaces/pay-period.interface.js → interfaces/location.interface.js} +0 -0
  406. /package/dist/{cjs/interfaces → interfaces}/logbook-category.interface.d.ts +0 -0
  407. /package/dist/{mjs/interfaces/pin.interface.js → interfaces/logbook-category.interface.js} +0 -0
  408. /package/dist/{cjs/interfaces → interfaces}/logbook-event.interface.d.ts +0 -0
  409. /package/dist/{mjs/interfaces/query-params/attendance-query-params.interface.js → interfaces/logbook-event.interface.js} +0 -0
  410. /package/dist/{cjs/interfaces → interfaces}/pay-period.interface.d.ts +0 -0
  411. /package/dist/{mjs/interfaces/query-params/availability-patterns-query-params.interface.js → interfaces/pay-period.interface.js} +0 -0
  412. /package/dist/{cjs/interfaces → interfaces}/pin.interface.d.ts +0 -0
  413. /package/dist/{mjs/interfaces/query-params/availability-query-params.interface.js → interfaces/pin.interface.js} +0 -0
  414. /package/dist/{cjs/interfaces → interfaces}/query-params/attendance-query-params.interface.d.ts +0 -0
  415. /package/dist/{mjs/interfaces/query-params/common-shift-times-query-params.interface.js → interfaces/query-params/attendance-query-params.interface.js} +0 -0
  416. /package/dist/{cjs/interfaces → interfaces}/query-params/availability-patterns-query-params.interface.d.ts +0 -0
  417. /package/dist/{mjs/interfaces/query-params/daily-budgets-query-params.interface.js → interfaces/query-params/availability-patterns-query-params.interface.js} +0 -0
  418. /package/dist/{cjs/interfaces → interfaces}/query-params/availability-query-params.interface.d.ts +0 -0
  419. /package/dist/{mjs/interfaces/query-params/daily-revenue-query-params.interface.js → interfaces/query-params/availability-query-params.interface.js} +0 -0
  420. /package/dist/{cjs/interfaces → interfaces}/query-params/common-shift-times-query-params.interface.d.ts +0 -0
  421. /package/dist/{mjs/interfaces/query-params/day-notes-query-params.interface.js → interfaces/query-params/common-shift-times-query-params.interface.js} +0 -0
  422. /package/dist/{cjs/interfaces → interfaces}/query-params/daily-budgets-query-params.interface.d.ts +0 -0
  423. /package/dist/{mjs/interfaces/query-params/days-off-patterns-query-params.interface.js → interfaces/query-params/daily-budgets-query-params.interface.js} +0 -0
  424. /package/dist/{cjs/interfaces → interfaces}/query-params/daily-revenue-query-params.interface.d.ts +0 -0
  425. /package/dist/{mjs/interfaces/query-params/days-off-query-params.interface.js → interfaces/query-params/daily-revenue-query-params.interface.js} +0 -0
  426. /package/dist/{cjs/interfaces → interfaces}/query-params/day-notes-query-params.interface.d.ts +0 -0
  427. /package/dist/{mjs/interfaces/query-params/documents-query-params.interface.js → interfaces/query-params/day-notes-query-params.interface.js} +0 -0
  428. /package/dist/{cjs/interfaces → interfaces}/query-params/days-off-patterns-query-params.interface.d.ts +0 -0
  429. /package/dist/{mjs/interfaces/query-params/groups-query-params.interface.js → interfaces/query-params/days-off-patterns-query-params.interface.js} +0 -0
  430. /package/dist/{cjs/interfaces → interfaces}/query-params/days-off-query-params.interface.d.ts +0 -0
  431. /package/dist/{mjs/interfaces/query-params/leave-embargoes-query-params.interface.js → interfaces/query-params/days-off-query-params.interface.js} +0 -0
  432. /package/dist/{cjs/interfaces → interfaces}/query-params/documents-query-params.interface.d.ts +0 -0
  433. /package/dist/{mjs/interfaces/query-params/leave-query-params.interface.js → interfaces/query-params/documents-query-params.interface.js} +0 -0
  434. /package/dist/{cjs/interfaces → interfaces}/query-params/groups-query-params.interface.d.ts +0 -0
  435. /package/dist/{mjs/interfaces/query-params/leave-requests-query-params.interface.js → interfaces/query-params/groups-query-params.interface.js} +0 -0
  436. /package/dist/{cjs/interfaces → interfaces}/query-params/index.d.ts +0 -0
  437. /package/dist/{mjs/interfaces → interfaces}/query-params/index.js +0 -0
  438. /package/dist/{cjs/interfaces → interfaces}/query-params/leave-embargoes-query-params.interface.d.ts +0 -0
  439. /package/dist/{mjs/interfaces/query-params/locations-query-params.interface.js → interfaces/query-params/leave-embargoes-query-params.interface.js} +0 -0
  440. /package/dist/{cjs/interfaces → interfaces}/query-params/leave-query-params.interface.d.ts +0 -0
  441. /package/dist/{mjs/interfaces/query-params/logbook-events-query-params.interface.js → interfaces/query-params/leave-query-params.interface.js} +0 -0
  442. /package/dist/{cjs/interfaces → interfaces}/query-params/leave-requests-query-params.interface.d.ts +0 -0
  443. /package/dist/{mjs/interfaces/query-params/pay-periods-query-params.interface.js → interfaces/query-params/leave-requests-query-params.interface.js} +0 -0
  444. /package/dist/{cjs/interfaces → interfaces}/query-params/locations-query-params.interface.d.ts +0 -0
  445. /package/dist/{mjs/interfaces/query-params/roles-query-params.interface.js → interfaces/query-params/locations-query-params.interface.js} +0 -0
  446. /package/dist/{cjs/interfaces → interfaces}/query-params/logbook-events-query-params.interface.d.ts +0 -0
  447. /package/dist/{mjs/interfaces/query-params/settings-query-params.interface.js → interfaces/query-params/logbook-events-query-params.interface.js} +0 -0
  448. /package/dist/{cjs/interfaces → interfaces}/query-params/pay-periods-query-params.interface.d.ts +0 -0
  449. /package/dist/{mjs/interfaces/query-params/shifts-query-params.interface.js → interfaces/query-params/pay-periods-query-params.interface.js} +0 -0
  450. /package/dist/{cjs/interfaces → interfaces}/query-params/roles-query-params.interface.d.ts +0 -0
  451. /package/dist/{mjs/interfaces/query-params/swap-requests-query-params.interface.js → interfaces/query-params/roles-query-params.interface.js} +0 -0
  452. /package/dist/{cjs/interfaces → interfaces}/query-params/settings-query-params.interface.d.ts +0 -0
  453. /package/dist/{mjs/interfaces/query-params/terminals-query-params.interface.js → interfaces/query-params/settings-query-params.interface.js} +0 -0
  454. /package/dist/{cjs/interfaces → interfaces}/query-params/shifts-query-params.interface.d.ts +0 -0
  455. /package/dist/{mjs/interfaces/query-params/toil-accruals-query-params.interface.js → interfaces/query-params/shifts-query-params.interface.js} +0 -0
  456. /package/dist/{cjs/interfaces → interfaces}/query-params/swap-requests-query-params.interface.d.ts +0 -0
  457. /package/dist/{mjs/interfaces/query-params/toil-allowance-query-params.interface.js → interfaces/query-params/swap-requests-query-params.interface.js} +0 -0
  458. /package/dist/{cjs/interfaces → interfaces}/query-params/terminals-query-params.interface.d.ts +0 -0
  459. /package/dist/{mjs/interfaces/query-params/unavailability-requests-query-params.interface.js → interfaces/query-params/terminals-query-params.interface.js} +0 -0
  460. /package/dist/{cjs/interfaces → interfaces}/query-params/toil-accruals-query-params.interface.d.ts +0 -0
  461. /package/dist/{mjs/interfaces/query-params/users-query-params.interface.js → interfaces/query-params/toil-accruals-query-params.interface.js} +0 -0
  462. /package/dist/{mjs/interfaces/role-rate.interface.js → interfaces/query-params/toil-allowance-query-params.interface.js} +0 -0
  463. /package/dist/{cjs/interfaces → interfaces}/query-params/unavailability-requests-query-params.interface.d.ts +0 -0
  464. /package/dist/{mjs/interfaces/role.interface.js → interfaces/query-params/unavailability-requests-query-params.interface.js} +0 -0
  465. /package/dist/{cjs/interfaces → interfaces}/query-params/users-query-params.interface.d.ts +0 -0
  466. /package/dist/{mjs/interfaces/settings.interface.js → interfaces/query-params/users-query-params.interface.js} +0 -0
  467. /package/dist/{cjs/interfaces → interfaces}/role-rate.interface.d.ts +0 -0
  468. /package/dist/{mjs/interfaces/shift.interface.js → interfaces/role-rate.interface.js} +0 -0
  469. /package/dist/{cjs/interfaces → interfaces}/role.interface.d.ts +0 -0
  470. /package/dist/{mjs/interfaces/swap-request.interface.js → interfaces/role.interface.js} +0 -0
  471. /package/dist/{mjs/interfaces → interfaces}/sdk-config.interface.js +0 -0
  472. /package/dist/{cjs/interfaces → interfaces}/settings.interface.d.ts +0 -0
  473. /package/dist/{mjs/interfaces/terminal.interface.js → interfaces/settings.interface.js} +0 -0
  474. /package/dist/{mjs/interfaces/time-zone.interface.js → interfaces/shift.interface.js} +0 -0
  475. /package/dist/{cjs/interfaces → interfaces}/swap-request.interface.d.ts +0 -0
  476. /package/dist/{mjs/interfaces/toil-accrual.interface.js → interfaces/swap-request.interface.js} +0 -0
  477. /package/dist/{cjs/interfaces → interfaces}/terminal.interface.d.ts +0 -0
  478. /package/dist/{mjs/interfaces/toil-allowance.interface.js → interfaces/terminal.interface.js} +0 -0
  479. /package/dist/{cjs/interfaces → interfaces}/time-zone.interface.d.ts +0 -0
  480. /package/dist/{mjs/interfaces/user.interface.js → interfaces/time-zone.interface.js} +0 -0
  481. /package/dist/{cjs/interfaces → interfaces}/toil-accrual.interface.d.ts +0 -0
  482. /package/dist/{mjs/interfaces/users-clocked-in.interface.js → interfaces/toil-accrual.interface.js} +0 -0
  483. /package/dist/{cjs/interfaces → interfaces}/toil-allowance.interface.d.ts +0 -0
  484. /package/dist/{mjs/interfaces/users-clocked-out.interface.js → interfaces/toil-allowance.interface.js} +0 -0
  485. /package/dist/{cjs/interfaces → interfaces}/users-clocked-in.interface.d.ts +0 -0
  486. /package/dist/{cjs/interfaces → interfaces}/users-clocked-out.interface.d.ts +0 -0
  487. /package/dist/{cjs/models → models}/index.d.ts +0 -0
  488. /package/dist/{mjs/models → models}/index.js +0 -0
package/src/ops.ts ADDED
@@ -0,0 +1,533 @@
1
+ import { Axios, AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import { ServiceSpecification } from './service.js';
3
+ import { RequestOptions, QueryParameterValue, RequirementsOf, assert } from './utils.js';
4
+ import { Endpoint, EndpointVersion } from './endpoint.js';
5
+ import { SDKConfig } from './main.js';
6
+
7
+ /** Supported common operations */
8
+ export type Operation =
9
+ | 'get'
10
+ | 'list'
11
+ | 'listAll'
12
+ | 'listByPage'
13
+ | 'delete'
14
+ | 'deleteBatch'
15
+ | 'create'
16
+ | 'update'
17
+ | 'updateBatch';
18
+ /** Context provided to all operations */
19
+ export type OperationContext = {
20
+ client: Readonly<Axios>;
21
+ request: Readonly<AxiosRequestConfig>;
22
+ service: Readonly<ServiceSpecification>;
23
+ sdkConfig: Readonly<SDKConfig>;
24
+ };
25
+
26
+ /** Defines the mapping between the data sent for a given request (e.g with
27
+ * "POST" method) and the return type expected back
28
+ *
29
+ * NOTE: This is not type safe on purpose. There is no way to guarantee that a
30
+ * given HTTP call will return a specific type in TS alone
31
+ */
32
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
33
+ export type RequestConfig<RequestData, ResponseData> = AxiosRequestConfig<RequestData>;
34
+
35
+ /** Function to define an {@see OpFunction}
36
+ *
37
+ * This is intended as a convenient way of defining {@see OpFunction}s that can then be
38
+ * "built" ready for the end user to call ({@see buildOp})
39
+ * */
40
+ export type OpDef<T, Param = any, Opts extends Partial<RequestOptions<any>> = RequestOptions<unknown>, Return = T> =
41
+ | ((ctx: OperationContext, param: Param, opts?: Opts) => RequestConfig<T, Return>)
42
+ | ((ctx: OperationContext, param: Param, opts?: Opts) => AsyncIterable<T>)
43
+ | ((ctx: OperationContext, param: Param, opts?: Opts) => Promise<T>);
44
+
45
+ /** Operation function type to be called by the end user of the SDK.
46
+ *
47
+ * All methods on services follow this typing
48
+ * */
49
+ export type OpFunction<R = any, Param = undefined, Opts = RequestOptions<unknown>> = R extends
50
+ | AsyncIterable<infer U>
51
+ | Promise<Iterable<infer U>>
52
+ ? // List based op parameter names
53
+ Param extends undefined
54
+ ? {
55
+ (query?: Param): R;
56
+ <F extends keyof U>(
57
+ query: Param,
58
+ options: { fields: F[] } & RequestOptions<U>,
59
+ ): R extends AsyncIterable<U>
60
+ ? Promise<AsyncIterable<Pick<U, F>>>
61
+ : R extends Promise<Array<U>>
62
+ ? Promise<Array<Pick<U, F>>>
63
+ : Promise<Iterable<Pick<U, F>>>;
64
+ (query: Param, options?: Opts): R;
65
+ }
66
+ : Partial<Param> extends Param
67
+ ? {
68
+ (query?: Param): R;
69
+ <F extends keyof U>(
70
+ query: Param,
71
+ options: { fields: F[] } & RequestOptions<U>,
72
+ ): R extends AsyncIterable<U>
73
+ ? Promise<AsyncIterable<Pick<U, F>>>
74
+ : R extends Promise<Array<U>>
75
+ ? Promise<Array<Pick<U, F>>>
76
+ : Promise<Iterable<Pick<U, F>>>;
77
+ (query?: Param, options?: Opts): R;
78
+ }
79
+ : {
80
+ (query: Param): R;
81
+ <F extends keyof U>(
82
+ query: Param,
83
+ options: { fields: F[] } & RequestOptions<U>,
84
+ ): R extends AsyncIterable<U>
85
+ ? Promise<AsyncIterable<Pick<U, F>>>
86
+ : R extends Promise<Array<U>>
87
+ ? Promise<Array<Pick<U, F>>>
88
+ : Promise<Iterable<Pick<U, F>>>;
89
+ (query: Param, Options?: Opts): R;
90
+ }
91
+ : Param extends number
92
+ ? {
93
+ (id: Param): R;
94
+ <F extends keyof Awaited<R>>(
95
+ id: Param,
96
+ options: { fields: F[]; rawResponse: true } & RequestOptions<Awaited<R>>,
97
+ ): Promise<AxiosResponse<Pick<Awaited<R>, F>>>;
98
+ <F extends keyof Awaited<R>>(
99
+ id: Param,
100
+ options: { fields: F[] } & RequestOptions<Awaited<R>>,
101
+ ): Promise<Pick<Awaited<R>, F>>;
102
+ (
103
+ id: Param,
104
+ options?: {
105
+ rawResponse: true;
106
+ } & RequestOptions<Awaited<R>>,
107
+ ): Promise<AxiosResponse<Awaited<R>>>;
108
+ (id: Param, options?: RequestOptions<Awaited<R>>): R;
109
+ }
110
+ : Param extends undefined
111
+ ? {
112
+ (entity?: Param): R;
113
+ <F extends keyof Awaited<R>>(
114
+ entity: Param,
115
+ options: { fields: F[]; rawResponse: true } & RequestOptions<Awaited<R>>,
116
+ ): Promise<AxiosResponse<Pick<Awaited<R>, F>>>;
117
+ <F extends keyof Awaited<R>>(
118
+ entity: Param,
119
+ options: { fields: F[] } & RequestOptions<Awaited<R>>,
120
+ ): Promise<Pick<Awaited<R>, F>>;
121
+ (
122
+ entity?: Param,
123
+ options?: {
124
+ rawResponse: true;
125
+ } & RequestOptions<Awaited<R>>,
126
+ ): Promise<AxiosResponse<Awaited<R>>>;
127
+ (entity?: Param, options?: RequestOptions<Awaited<R>>): R;
128
+ }
129
+ : // Entity based op parameter names
130
+ {
131
+ (entity: Param): R;
132
+ <F extends keyof Awaited<R>>(
133
+ entity: Param,
134
+ options: { fields: F[]; rawResponse: true } & RequestOptions<Awaited<R>>,
135
+ ): Promise<AxiosResponse<Pick<Awaited<R>, F>>>;
136
+ <F extends keyof Awaited<R>>(
137
+ entity: Param,
138
+ options: { fields: F[] } & RequestOptions<Awaited<R>>,
139
+ ): Promise<Pick<Awaited<R>, F>>;
140
+ (
141
+ entity: Param,
142
+ options?: {
143
+ rawResponse: true;
144
+ } & RequestOptions<Awaited<R>>,
145
+ ): Promise<AxiosResponse<Awaited<R>>>;
146
+ (entity: Param, options?: RequestOptions<Awaited<R>>): R;
147
+ };
148
+
149
+ /** Wrapper type for expressing the response returned by a v2 list op supported endpoint */
150
+ interface PagedResponse<T> {
151
+ /** List of entities in a page */
152
+ data: T[];
153
+ /** Metadata about the current page */
154
+ pagination: {
155
+ /**
156
+ * The "cursor" for the next page where `null` means there is no next page
157
+ *
158
+ * Used as a value to the query parameter `cursor` in a supported endpoint
159
+ */
160
+ next: string | null;
161
+ /** Total count of entities matching the list query */
162
+ count: number;
163
+ };
164
+ }
165
+
166
+ /** Utility for creating a query params map needed by most API requests */
167
+ export function paramsFromOptions<T>(opts: RequestOptions<T>): Record<string, QueryParameterValue> {
168
+ return {
169
+ fields: opts?.fields,
170
+ limit: opts?.maxResults,
171
+ dry_run: opts?.dryRun,
172
+ };
173
+ }
174
+
175
+ /** Converts a given `{@see AxiosRequestConfig}` into an iterable of paginated requests
176
+ *
177
+ * Utility for simplifying {@see listOp}
178
+ */
179
+ function* requestPaginated<T>(
180
+ response: AxiosResponse<T>,
181
+ requestConfig: AxiosRequestConfig<T>,
182
+ ): Generator<AxiosRequestConfig<T>> {
183
+ const fallbackLimit = 20;
184
+ const limit = Number(response.headers?.['x-limit']) || fallbackLimit;
185
+ const entityCount = Number(response.headers?.['x-total-count']) || 0;
186
+ const requestOffset = Number(response.headers?.['x-offset']) || 0;
187
+
188
+ for (let offset = requestOffset + limit; offset < entityCount; offset += limit) {
189
+ yield {
190
+ ...requestConfig,
191
+ params: {
192
+ ...requestConfig.params,
193
+ limit,
194
+ offset,
195
+ exclude_link_header: true,
196
+ },
197
+ };
198
+ }
199
+ }
200
+
201
+ /** Operation for getting an entity */
202
+ function getOp<T = undefined>(ctx: OperationContext, id: number): RequestConfig<unknown, T> {
203
+ return {
204
+ ...ctx.request,
205
+ method: 'GET',
206
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}/${id}`,
207
+ };
208
+ }
209
+
210
+ /** Operation for creating an entity */
211
+ function createOp<T = unknown, NewEntity = unknown>(
212
+ ctx: OperationContext,
213
+ newEntity: NewEntity,
214
+ ): RequestConfig<NewEntity, T> {
215
+ return {
216
+ ...ctx.request,
217
+ method: 'POST',
218
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
219
+ data: newEntity,
220
+ };
221
+ }
222
+
223
+ /** Operation for updating an entity */
224
+ function updateOp<Return, Entity extends { id: number } & Partial<Return>>(
225
+ ctx: OperationContext,
226
+ entity: Entity,
227
+ ): RequestConfig<Entity, Return> {
228
+ return {
229
+ ...ctx.request,
230
+ method: 'POST',
231
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}/${entity.id}`,
232
+ data: entity,
233
+ };
234
+ }
235
+
236
+ /** Operation for deleting a list of entities */
237
+ async function updateBatchOp<Return, Entity extends { id: number } & Partial<Return>>(
238
+ ctx: OperationContext,
239
+ entities: Entity[],
240
+ ): Promise<{ success: Return[]; failed: { id: number; error: string }[] }> {
241
+ const res = await ctx.client.request<{ code: number; data?: Return; error?: string }[]>({
242
+ ...ctx.request,
243
+ method: 'POST',
244
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
245
+ data: entities,
246
+ });
247
+
248
+ return res.data.reduce(
249
+ (acc, entityRes, shiftIdx) => {
250
+ if (entityRes.error) {
251
+ acc.failed.push({ id: entities[shiftIdx].id, error: entityRes.error });
252
+ } else if (entityRes.data) {
253
+ acc.success.push(entityRes.data);
254
+ }
255
+ return acc;
256
+ },
257
+ { success: [] as Return[], failed: [] as { id: number; error: string }[] },
258
+ );
259
+ }
260
+
261
+ /** Operation for deleting an entity */
262
+ function deleteOp(ctx: OperationContext, id: number): RequestConfig<unknown, void> {
263
+ return {
264
+ ...ctx.request,
265
+ method: 'DELETE',
266
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}/${id}`,
267
+ };
268
+ }
269
+
270
+ /** Operation for deleting a list of entities */
271
+ function deleteBatchOp(ctx: OperationContext, ids: number[]): RequestConfig<unknown, void> {
272
+ return {
273
+ ...ctx.request,
274
+ method: 'DELETE',
275
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
276
+ data: ids,
277
+ };
278
+ }
279
+
280
+ /** Operation for listing all entities on a v1 endpoint for a given query by
281
+ * automatically handling pagination as and when needed
282
+ */
283
+ export async function* listOp<T, Query>(
284
+ ctx: OperationContext,
285
+ query: Query,
286
+ // NOTE: offset is only supported in v1
287
+ opts?: RequestOptions<T[]> & { offset?: number },
288
+ ): AsyncGenerator<T> {
289
+ const queriedRequest = {
290
+ ...ctx.request,
291
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
292
+ params: {
293
+ ...ctx.request.params,
294
+ ...query,
295
+ offset: opts?.offset,
296
+ },
297
+ };
298
+ const res = await ctx.client.request<T[]>(queriedRequest);
299
+ const maxEntities = opts?.maxResults ?? Infinity;
300
+ let entityCount = res.data.length;
301
+
302
+ assert(Array.isArray(res.data), 'list can only be performed on endpoints returning an array');
303
+ yield* res.data.slice(0, maxEntities);
304
+ if (entityCount >= maxEntities) return;
305
+
306
+ for (const pagedRequest of requestPaginated(res, ctx.request)) {
307
+ const pagedRes = await ctx.client.request<T[]>(pagedRequest);
308
+ for (const entity of pagedRes.data) {
309
+ yield entity;
310
+ entityCount += 1;
311
+ if (entityCount >= maxEntities) return;
312
+ }
313
+ }
314
+ }
315
+
316
+ /** Operation for listing all entities on a v2 endpoint for a given query by
317
+ * automatically handling pagination as and when needed
318
+ */
319
+ export async function* listV2Op<T, Query>(
320
+ ctx: OperationContext,
321
+ query: Query,
322
+ opts?: RequestOptions<T[]>,
323
+ ): AsyncGenerator<T> {
324
+ const queriedRequest = {
325
+ ...ctx.request,
326
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
327
+ params: {
328
+ ...ctx.request.params,
329
+ ...query,
330
+ limit: opts?.maxResults,
331
+ },
332
+ };
333
+ const res = await ctx.client.request<PagedResponse<T>>(queriedRequest);
334
+ const { data: entities, pagination } = res.data;
335
+ const maxEntities = opts?.maxResults ?? Infinity;
336
+ let pagedEntityCount = entities.length;
337
+
338
+ assert(Array.isArray(entities), 'list can only be performed on endpoints returning an array');
339
+ yield* entities.slice(0, maxEntities);
340
+ if (pagedEntityCount >= maxEntities) return;
341
+
342
+ let nextPage: string | undefined = pagination.next ?? undefined;
343
+ while (nextPage !== undefined) {
344
+ const pagedRes = await ctx.client.request<PagedResponse<T>>({
345
+ ...queriedRequest,
346
+ params: {
347
+ ...queriedRequest.params,
348
+ limit: pagedEntityCount,
349
+ cursor: nextPage,
350
+ },
351
+ });
352
+ nextPage = pagedRes.data.pagination.next ?? undefined;
353
+ for (const entity of pagedRes.data.data) {
354
+ yield entity;
355
+ pagedEntityCount += 1;
356
+ if (pagedEntityCount >= maxEntities) return;
357
+ }
358
+ }
359
+ }
360
+
361
+ /** Operation for listing all entities on a v1 endpoint for a given query as an array */
362
+ export async function listAllOp<T, Query>(
363
+ ctx: OperationContext,
364
+ query: Query,
365
+ // NOTE: offset is only supported in v1
366
+ opts?: RequestOptions<T[]> & { offset?: number },
367
+ ) {
368
+ const results: T[] = [];
369
+ for await (const entity of listOp<T, Query>(ctx, query, opts)) {
370
+ results.push(entity);
371
+ }
372
+ return results;
373
+ }
374
+
375
+ /** Operation for listing all entities on a v2 endpoint for a given query as an array */
376
+ export async function listAllV2Op<T, Query>(ctx: OperationContext, query: Query, opts?: RequestOptions<T[]>) {
377
+ const results: T[] = [];
378
+ for await (const entity of listV2Op<T, Query>(ctx, query, opts)) {
379
+ results.push(entity);
380
+ }
381
+ return results;
382
+ }
383
+
384
+ /** Operation for listing all entity pages on a v1 endpoint for a given query by
385
+ * automatically handling pagination as and when needed
386
+ */
387
+ async function* listByPageOp<T, Query>(
388
+ ctx: OperationContext,
389
+ query: Query,
390
+ // NOTE: offset is only supported in v1
391
+ opts?: RequestOptions<T[]> & { offset?: number },
392
+ ): AsyncGenerator<AxiosResponse<T[]>> {
393
+ const queriedRequest = {
394
+ ...ctx.request,
395
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
396
+ params: {
397
+ ...ctx.request.params,
398
+ ...query,
399
+ offset: opts?.offset,
400
+ },
401
+ };
402
+ const res = await ctx.client.request<T[]>(queriedRequest);
403
+ const maxEntities = opts?.maxResults ?? Infinity;
404
+ let entityCount = res.data.length;
405
+
406
+ assert(Array.isArray(res.data), 'listByPage can only be performed on endpoints returning an array');
407
+ yield res;
408
+ if (entityCount >= maxEntities) return;
409
+
410
+ for (const pagedRequest of requestPaginated(res, ctx.request)) {
411
+ const pagedRes = await ctx.client.request<T[]>(pagedRequest);
412
+ yield pagedRes;
413
+ entityCount += pagedRes.data.length;
414
+ if (entityCount >= maxEntities) return;
415
+ }
416
+ }
417
+
418
+ /** Operation for listing all entity pages on a v2 endpoint for a given query by
419
+ * automatically handling pagination as and when needed
420
+ */
421
+ async function* listByPageV2Op<T, Query>(
422
+ ctx: OperationContext,
423
+ query: Query,
424
+ opts?: RequestOptions<T[]>,
425
+ ): AsyncGenerator<AxiosResponse<PagedResponse<T>>> {
426
+ const queriedRequest = {
427
+ ...ctx.request,
428
+ url: `${ctx.service.endpointVersion}/${ctx.service.endpoint}`,
429
+ params: {
430
+ ...ctx.request.params,
431
+ ...query,
432
+ },
433
+ };
434
+ const res = await ctx.client.request<PagedResponse<T>>(queriedRequest);
435
+ const maxEntities = opts?.maxResults ?? Infinity;
436
+ let entityCount = res.data.data.length;
437
+
438
+ assert(Array.isArray(res.data.data), 'listByPage can only be performed on endpoints returning an array');
439
+ yield res;
440
+ if (entityCount >= maxEntities) return;
441
+
442
+ let nextPage = res.data.pagination.next;
443
+ while (nextPage !== undefined) {
444
+ const pagedRes = await ctx.client.request<PagedResponse<T>>({
445
+ ...queriedRequest,
446
+ params: {
447
+ ...queriedRequest.params,
448
+ cursor: nextPage,
449
+ },
450
+ });
451
+ nextPage = pagedRes.data.pagination.next;
452
+ yield pagedRes;
453
+ entityCount += pagedRes.data.data.length;
454
+ if (entityCount >= maxEntities) return;
455
+ }
456
+ }
457
+
458
+ /** Builds an {@see Op} definition into an {@see OpFunction} ready to be called
459
+ * by the end user
460
+ *
461
+ * This will map typings and parameters defined on an {@see Op} into a more
462
+ * convenient and type safe format for use by the end user
463
+ */
464
+ export function buildOp<
465
+ F extends OpDef<any>,
466
+ Param = Parameters<F>[1],
467
+ Opts = Parameters<F>[2],
468
+ Return = ReturnType<F> extends RequestConfig<infer _, infer T> ? Promise<T> : ReturnType<F>,
469
+ >(ctx: OperationContext, opFunc: F): OpFunction<Return, Param, Opts>;
470
+ export function buildOp<
471
+ F extends OpDef<any>,
472
+ Param = Parameters<F>[1],
473
+ Return = ReturnType<F> extends RequestConfig<infer _, infer T> ? Promise<T> : ReturnType<F>,
474
+ >(ctx: OperationContext, opFunc: F) {
475
+ return (param: Param, opts?: Parameters<F>[2]) => {
476
+ const configuredContext: OperationContext = {
477
+ ...ctx,
478
+ request: {
479
+ ...ctx.request,
480
+ params: {
481
+ ...ctx.request.params,
482
+ ...paramsFromOptions(opts ?? {}),
483
+ },
484
+ },
485
+ };
486
+ const req = opFunc(configuredContext, param, opts);
487
+ if (Symbol.asyncIterator in req) {
488
+ return req;
489
+ }
490
+
491
+ if (req instanceof Promise || ('then' in req && typeof req.then === 'function')) {
492
+ return req;
493
+ }
494
+
495
+ return ctx.client.request<Return>(req).then((res) => {
496
+ if (opts?.rawResponse) return res;
497
+ return res.data;
498
+ });
499
+ };
500
+ }
501
+
502
+ /** Function to return type safe mapping between a given endpoint; endpoint
503
+ * version and a common "op"
504
+ *
505
+ * NOTE: This is a function rather than a constant so that type generics work as
506
+ * intended. It's currently not possible to define a constant with generics
507
+ */
508
+ export function getOpMap<E extends Endpoint<any, any>, T extends E['type'] = E['type']>() {
509
+ return {
510
+ v1: {
511
+ get: getOp<T>,
512
+ delete: deleteOp,
513
+ deleteBatch: deleteBatchOp,
514
+ list: listOp<T, E['queryParameters']>,
515
+ listAll: listAllOp<T, E['queryParameters']>,
516
+ listByPage: listByPageOp<T, E['queryParameters']>,
517
+ create: createOp<T, E['createType']>,
518
+ update: updateOp<T, T extends { id: number } ? RequirementsOf<T, 'id'> : never>,
519
+ updateBatch: updateBatchOp<T, T extends { id: number } ? RequirementsOf<T, 'id'> : never>,
520
+ },
521
+ v2: {
522
+ get: getOp<T>,
523
+ delete: deleteOp,
524
+ deleteBatch: deleteBatchOp,
525
+ list: listV2Op<T, E['queryParameters']>,
526
+ listAll: listAllV2Op<T, E['queryParameters']>,
527
+ listByPage: listByPageV2Op<T, E['queryParameters']>,
528
+ create: createOp<T, E['createType']>,
529
+ update: updateOp<T, T extends { id: number } ? RequirementsOf<T, 'id'> : never>,
530
+ updateBatch: updateBatchOp<T, T extends { id: number } ? RequirementsOf<T, 'id'> : never>,
531
+ },
532
+ } satisfies Record<EndpointVersion, Record<Operation, OpDef<any, any>>>;
533
+ }