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/README.md CHANGED
@@ -2,31 +2,38 @@
2
2
 
3
3
  ## Getting started
4
4
 
5
- To use this SDK you'll need to `npm install rotacloud`. This will ensure you're ready to start working with the SDK in your project.
5
+ To use this SDK you'll need to `npm install rotacloud`. This will ensure you're ready
6
+ to start working with the SDK in your project.
6
7
 
7
8
  ## Contributing
8
9
 
9
- Please ensure you perform the `npm run version:bump` command before commiting and pushing your changes to the remote branch.
10
+ Please ensure you perform the `npm run version:bump` command before commiting and
11
+ pushing your changes to the remote branch.
10
12
 
11
13
  ## Configuration
12
14
 
13
- Configuration is simple, just import the core RotaCloud SDK and supply your API key as necessary.
15
+ Configuration is simple, import the `createRotaCloudClient` function from the SDK
16
+ and supply your API key:
14
17
 
15
18
  ```typescript
16
- import { RotaCloud } from 'rotacloud';
19
+ import { createRotaCloudClient } from 'rotacloud';
17
20
 
18
- const rc = new RotaCloud({
21
+ const client = createRotaCloudClient({
19
22
  apiKey: 'YOUR_API_KEY',
20
23
  });
21
24
  ```
22
25
 
23
26
  ## Auto paging
24
27
 
25
- Our SDK support auto pagination as a way for developers to quickly consume list based endpoints. You will find a `list()` method on most services within the SDK which can be consumed using `for await of`. **Please ensure you are catching errors in your implementation.**
28
+ Our SDK supports auto pagination as a way for developers to quickly consume list based endpoints.
29
+ You will find a `list()` method on most services within the SDK which can be consumed using
30
+ `for await of`. **Please ensure you are catching errors in your implementation.**
26
31
 
27
32
  ```typescript
33
+ const client = createRotaCloudClient({...})
34
+
28
35
  try {
29
- for await (const user of rc.users.list()) {
36
+ for await (const user of client.user.list()) {
30
37
  console.log(user);
31
38
  }
32
39
  } catch (e) {
@@ -36,25 +43,28 @@ try {
36
43
 
37
44
  ## Retry Policies
38
45
 
39
- Our SDK supports both basic and customisable retry polices. Both can be easily configured in the SDKConfig object at time of instantiation. Both exponential and static value based back offs are supported.
46
+ Our SDK supports both basic and customisable retry polices.
47
+ Both can be easily configured in the SDKConfig object at time of instantiation.
48
+ Both exponential and static value based back offs are supported.
40
49
 
41
50
  Only idempotent requests will be retried.
42
51
 
43
52
  ```typescript
44
- import { RotaCloud } from 'rotacloud';
53
+ import { createRotaCloudClient } from 'rotacloud';
45
54
 
46
- const rc = new RotaCloud({
55
+ const client = createRotaCloudClient({
47
56
  apiKey: 'YOUR_API_KEY',
48
57
  retry: 'expo' | 'static',
49
58
  });
50
59
  ```
51
60
 
52
- If more granular control is required of the internal retry policy values, an object can be passed through the `retry` field.
61
+ If more granular control is required of the internal retry policy values, an object
62
+ of retry configuration can be passed through to the `retry` field instead.
53
63
 
54
64
  ```typescript
55
- import { RotaCloud } from 'rotacloud';
65
+ import { createRotaCloudClient } from 'rotacloud';
56
66
 
57
- const rc = new RotaCloud({
67
+ const client = createRotaCloudClient({
58
68
  apiKey: 'YOUR_API_KEY',
59
69
  retry: { delay: 2000, exponential: false, maxRetries: 10 },
60
70
  });
@@ -0,0 +1,34 @@
1
+ import { Axios } from 'axios';
2
+ import { RetryStrategy, SDKConfig } from './interfaces/index.js';
3
+ import { buildOp, getOpMap, OpDef } from './ops.js';
4
+ import { ServiceSpecification } from './service.js';
5
+ import { Endpoint, EndpointEntityMap } from './endpoint.js';
6
+ /** Utility type to make working with the Endpoint map easier */
7
+ type ExtractEndpoint<Spec extends ServiceSpecification> = Spec['endpoint'] extends keyof EndpointEntityMap[Spec['endpointVersion']] ? EndpointEntityMap[Spec['endpointVersion']][Spec['endpoint']] extends Endpoint<any, any> ? EndpointEntityMap[Spec['endpointVersion']][Spec['endpoint']] : never : never;
8
+ /** Mapped index type of all specified service operations with their corresponding op function */
9
+ type ServiceOps<Spec extends ServiceSpecification> = {
10
+ [Key in Spec['operations'][number]]: Spec['endpoint'] extends keyof EndpointEntityMap[Spec['endpointVersion']] ? ReturnType<typeof buildOp<ReturnType<typeof getOpMap<ExtractEndpoint<Spec>>>[Spec['endpointVersion']][Key]>> : never;
11
+ };
12
+ /** Mapped index type of all specified custom/overload service operations with their corresponding op function */
13
+ type ServiceCustomOps<Spec extends ServiceSpecification> = {
14
+ [Key in keyof Spec['customOperations']]: Spec['customOperations'][Key] extends OpDef<any, any> ? ReturnType<typeof buildOp<Spec['customOperations'][Key]>> : never;
15
+ };
16
+ type Service<Spec extends ServiceSpecification> = Omit<ServiceOps<Spec>, keyof ServiceCustomOps<Spec>> & ServiceCustomOps<Spec>;
17
+ export type SdkClient<T extends Record<string, ServiceSpecification>> = {
18
+ [ServiceName in keyof T]: Service<T[ServiceName]>;
19
+ } & {
20
+ fetch: Axios['request'];
21
+ /**
22
+ * The underlying settings for the SDK
23
+ */
24
+ config: Readonly<SDKConfig>;
25
+ };
26
+ export declare const DEFAULT_CONFIG: {
27
+ baseUri: string;
28
+ retry: RetryStrategy.Exponential;
29
+ };
30
+ /** Builds the entire SDK client ready to be exported by the library and used by an end
31
+ * user of the SDK
32
+ */
33
+ export declare function createSdkClient<T extends Record<string, ServiceSpecification>>(serviceMap: T): (config: SDKConfig) => SdkClient<T>;
34
+ export {};
@@ -0,0 +1,70 @@
1
+ import { createCustomAxiosClient, defaultObject, getBaseRequestConfig } from './utils.js';
2
+ import { RetryStrategy } from './interfaces/index.js';
3
+ import { buildOp, getOpMap } from './ops.js';
4
+ export const DEFAULT_CONFIG = {
5
+ baseUri: 'https://api.rotacloud.com',
6
+ retry: RetryStrategy.Exponential,
7
+ };
8
+ /** Converts a provided {@see OperationContext} into a {@see Service} with all
9
+ * associated types configured ready to be used by an end user of the SDK.
10
+ *
11
+ * The context object provided will be used as is for all operations on a service
12
+ */
13
+ function serviceForContext(opContext) {
14
+ const service = {};
15
+ const opMap = getOpMap();
16
+ for (const op of opContext.service.operations) {
17
+ service[op] = buildOp(opContext, opMap[opContext.service.endpointVersion][op]);
18
+ }
19
+ for (const [customOpName, customOpFunc] of Object.entries(opContext.service.customOperations ?? {})) {
20
+ service[customOpName] = buildOp(opContext, customOpFunc);
21
+ }
22
+ return service;
23
+ }
24
+ /** Builds the entire SDK client ready to be exported by the library and used by an end
25
+ * user of the SDK
26
+ */
27
+ export function createSdkClient(serviceMap) {
28
+ return (sdkConfig) => {
29
+ let clientConfig = Object.freeze(defaultObject(sdkConfig, DEFAULT_CONFIG));
30
+ let axiosClient = createCustomAxiosClient(clientConfig);
31
+ let requestConfig = getBaseRequestConfig(clientConfig);
32
+ const sdkClient = {
33
+ fetch: (req) => axiosClient.request({
34
+ ...req,
35
+ headers: {
36
+ ...req.headers,
37
+ ...requestConfig.headers,
38
+ },
39
+ }),
40
+ get config() {
41
+ return clientConfig;
42
+ },
43
+ set config(val) {
44
+ clientConfig = Object.freeze(defaultObject(val, DEFAULT_CONFIG));
45
+ axiosClient = createCustomAxiosClient(clientConfig);
46
+ requestConfig = getBaseRequestConfig(clientConfig);
47
+ },
48
+ };
49
+ for (const [serviceName, serviceSpec] of Object.entries(serviceMap)) {
50
+ sdkClient[serviceName] = serviceForContext({
51
+ service: serviceSpec,
52
+ // NOTE: using getters here to allow for changes after client creation
53
+ // eslint-disable-next-line @typescript-eslint/no-loop-func
54
+ get client() {
55
+ return axiosClient;
56
+ },
57
+ // eslint-disable-next-line @typescript-eslint/no-loop-func
58
+ get request() {
59
+ return requestConfig;
60
+ },
61
+ // eslint-disable-next-line @typescript-eslint/no-loop-func
62
+ get sdkConfig() {
63
+ return clientConfig;
64
+ },
65
+ });
66
+ }
67
+ // NOTE: guarantied to be safe due to the service iteration above
68
+ return sdkClient;
69
+ };
70
+ }
@@ -0,0 +1,163 @@
1
+ import { test, expect, describe, vi } from 'vitest';
2
+ import { createSdkClient, DEFAULT_CONFIG } from './client-builder.js';
3
+ import pkg from '../package.json' with { type: 'json' };
4
+ let mockAxiosClient;
5
+ vi.mock(import('axios'), async (importOriginal) => {
6
+ const mod = await importOriginal();
7
+ return {
8
+ ...mod,
9
+ default: {
10
+ ...mod.default,
11
+ create: (...args) => {
12
+ mockAxiosClient = mod.default.create(...args);
13
+ mockAxiosClient.request = vi.fn().mockImplementation(() => Promise.resolve({}));
14
+ return mockAxiosClient;
15
+ },
16
+ },
17
+ // NOTE: vitest does not correctly infer the type for default hence the cast
18
+ };
19
+ });
20
+ const sdkConfig = {
21
+ basicAuth: '',
22
+ };
23
+ describe('SDK client builder', () => {
24
+ test('basic services are created', () => {
25
+ const clientBuilder = createSdkClient({
26
+ basicService1: {
27
+ endpoint: 'accounts',
28
+ endpointVersion: 'v1',
29
+ operations: [],
30
+ },
31
+ basicService2: {
32
+ endpoint: 'attendance',
33
+ endpointVersion: 'v1',
34
+ operations: [],
35
+ },
36
+ });
37
+ const client = clientBuilder(sdkConfig);
38
+ expect(client).toMatchObject({ basicService1: {}, basicService2: {} });
39
+ });
40
+ test('operations are created for services', () => {
41
+ const clientBuilder = createSdkClient({
42
+ service: {
43
+ endpoint: 'accounts',
44
+ endpointVersion: 'v1',
45
+ operations: ['get', 'listAll', 'create'],
46
+ },
47
+ });
48
+ const client = clientBuilder(sdkConfig);
49
+ expect(client.service).toStrictEqual({
50
+ get: expect.any(Function),
51
+ listAll: expect.any(Function),
52
+ create: expect.any(Function),
53
+ });
54
+ });
55
+ test('custom operations are created for services', () => {
56
+ const clientBuilder = createSdkClient({
57
+ service: {
58
+ endpoint: 'accounts',
59
+ endpointVersion: 'v1',
60
+ operations: ['get'],
61
+ customOperations: {
62
+ customOp: async () => { },
63
+ },
64
+ },
65
+ });
66
+ const client = clientBuilder(sdkConfig);
67
+ expect(client.service).toStrictEqual({
68
+ get: expect.any(Function),
69
+ customOp: expect.any(Function),
70
+ });
71
+ });
72
+ test("service URL's have their versions specified in the URL", async () => {
73
+ const clientBuilder = createSdkClient({
74
+ service: {
75
+ endpoint: 'accounts',
76
+ endpointVersion: 'v1',
77
+ operations: ['get'],
78
+ },
79
+ });
80
+ const client = clientBuilder(sdkConfig);
81
+ await client.service.get(1);
82
+ expect(mockAxiosClient.request).toHaveBeenCalledWith(expect.objectContaining({
83
+ url: 'v1/accounts/1',
84
+ }));
85
+ });
86
+ test('SDK version is included as a header', async () => {
87
+ const clientBuilder = createSdkClient({
88
+ service: {
89
+ endpoint: 'settings',
90
+ endpointVersion: 'v1',
91
+ operations: ['get'],
92
+ },
93
+ });
94
+ const client = clientBuilder(sdkConfig);
95
+ await client.service.get(1);
96
+ expect(mockAxiosClient.request).toHaveBeenCalledWith(expect.objectContaining({
97
+ headers: expect.objectContaining({
98
+ 'SDK-Version': pkg.version,
99
+ }),
100
+ }));
101
+ });
102
+ });
103
+ describe('SDK client configuration', () => {
104
+ test('default config settings are applied to missing config properties', () => {
105
+ const clientBuilder = createSdkClient({});
106
+ const client = clientBuilder({ basicAuth: '' });
107
+ expect(client.config).toStrictEqual({
108
+ ...DEFAULT_CONFIG,
109
+ basicAuth: '',
110
+ });
111
+ });
112
+ test('default config settings can be overridden', () => {
113
+ const clientBuilder = createSdkClient({});
114
+ const client = clientBuilder({ basicAuth: '', baseUri: 'http://example.com' });
115
+ expect(client.config).toStrictEqual({
116
+ ...DEFAULT_CONFIG,
117
+ basicAuth: '',
118
+ baseUri: 'http://example.com',
119
+ });
120
+ });
121
+ test('changing config properties with defaults to undefined will restore default values', () => {
122
+ const clientBuilder = createSdkClient({});
123
+ const client = clientBuilder({ basicAuth: '', baseUri: 'http://example.com' });
124
+ client.config = {
125
+ ...client.config,
126
+ baseUri: undefined,
127
+ };
128
+ expect(client.config).toStrictEqual({
129
+ ...DEFAULT_CONFIG,
130
+ basicAuth: '',
131
+ });
132
+ });
133
+ test('config is passed through to services', async () => {
134
+ const clientBuilder = createSdkClient({
135
+ service: {
136
+ endpoint: 'settings',
137
+ endpointVersion: 'v1',
138
+ operations: ['get'],
139
+ },
140
+ });
141
+ const baseUri = 'http://example.com';
142
+ const client = clientBuilder({ basicAuth: '', baseUri, retry: false });
143
+ await client.service.get(1);
144
+ expect(mockAxiosClient.getUri()).toBe(`${baseUri}/`);
145
+ });
146
+ test('config changes are reflected in services', async () => {
147
+ const clientBuilder = createSdkClient({
148
+ service: {
149
+ endpoint: 'settings',
150
+ endpointVersion: 'v1',
151
+ operations: ['get'],
152
+ },
153
+ });
154
+ const baseUri = 'http://example.com';
155
+ const client = clientBuilder({ basicAuth: '', baseUri, retry: false });
156
+ client.config = {
157
+ ...client.config,
158
+ baseUri: undefined,
159
+ };
160
+ await client.service.get(1);
161
+ expect(mockAxiosClient.getUri()).toBe(new URL(DEFAULT_CONFIG.baseUri).toString());
162
+ });
163
+ });
@@ -0,0 +1,51 @@
1
+ import { Account, Attendance, Auth, Availability, DailyBudgets, DailyRevenue, DayNote, DaysOff, Group, Leave, Role, Shift, TimeZone, Document, LeaveEmbargo, LeaveRequest, LeaveType, Location, Pin, Terminal, ToilAccrual, ToilAllowance, UserClockedIn, User, Settings } from './interfaces/index.js';
2
+ import { AttendanceQueryParams, AvailabilityQueryParams, DailyBudgetsQueryParams, DailyRevenueQueryParams, DayNotesQueryParams, DaysOffQueryParams, DocumentsQueryParams, GroupsQueryParams, LeaveEmbargoesQueryParams, LeaveQueryParams, LeaveRequestsQueryParams, LocationsQueryParams, RolesQueryParams, SettingsQueryParams, ShiftsQueryParams, TerminalsQueryParams, ToilAccrualsQueryParams, ToilAllowanceQueryParams, UsersQueryParams } from './interfaces/query-params/index.js';
3
+ import { RequirementsOf } from './utils.js';
4
+ /** Endpoint versions supported by the API */
5
+ export type EndpointVersion = 'v1' | 'v2';
6
+ /** Associated types for a given API endpoint */
7
+ export type Endpoint<Entity, QueryParameters = undefined, RequiredFields extends keyof Entity = any> = {
8
+ /** The type returned by an endpoint */
9
+ type: Entity;
10
+ /** The query parameters for endpoints that support listing */
11
+ queryParameters: QueryParameters;
12
+ /** The entity type required for endpoints that support creation */
13
+ createType: RequirementsOf<Entity, RequiredFields>;
14
+ };
15
+ /** Mapping between a endpoint URL and it's associated entity type
16
+ *
17
+ * Keys of each version map should be the URL of a given endpoint
18
+ */
19
+ export interface EndpointEntityMap extends Record<EndpointVersion, Record<string, Endpoint<unknown, any>>> {
20
+ /** Type mappings for v1 endpoints */
21
+ v1: {
22
+ accounts: Endpoint<Account>;
23
+ attendance: Endpoint<Attendance, AttendanceQueryParams, 'user' | 'in_time'>;
24
+ auth: Endpoint<Auth>;
25
+ availability: Endpoint<Availability, AvailabilityQueryParams>;
26
+ daily_budgets: Endpoint<DailyBudgets, DailyBudgetsQueryParams>;
27
+ daily_revenue: Endpoint<DailyRevenue, DailyRevenueQueryParams>;
28
+ day_notes: Endpoint<DayNote, DayNotesQueryParams>;
29
+ days_off: Endpoint<DaysOff, DaysOffQueryParams>;
30
+ documents: Endpoint<Document, DocumentsQueryParams, 'name' | 'bucket' | 'key'>;
31
+ groups: Endpoint<Group, GroupsQueryParams, 'name'>;
32
+ leave_embargoes: Endpoint<LeaveEmbargo, LeaveEmbargoesQueryParams, 'start_date' | 'end_date' | 'users'>;
33
+ leave_requests: Endpoint<LeaveRequest, LeaveRequestsQueryParams, 'start_date' | 'end_date' | 'type' | 'user'>;
34
+ leave_types: Endpoint<LeaveType>;
35
+ leave: Endpoint<Leave, LeaveQueryParams, 'users' | 'type' | 'start_date' | 'end_date'>;
36
+ locations: Endpoint<Location, LocationsQueryParams, 'name'>;
37
+ pins: Endpoint<Pin>;
38
+ roles: Endpoint<Role, RolesQueryParams, 'name'>;
39
+ settings: Endpoint<Settings, SettingsQueryParams>;
40
+ shifts: Endpoint<Shift, ShiftsQueryParams, 'start_time' | 'end_time' | 'location'>;
41
+ terminals: Endpoint<Terminal, TerminalsQueryParams, 'name' | 'timezone'>;
42
+ terminals_active: Endpoint<Terminal>;
43
+ timezones: Endpoint<TimeZone>;
44
+ toil_accruals: Endpoint<ToilAccrual, ToilAccrualsQueryParams, 'duration_hours' | 'leave_year' | 'user_id'>;
45
+ toil_allowance: Endpoint<ToilAllowance, ToilAllowanceQueryParams>;
46
+ users_clocked_in: Endpoint<UserClockedIn, undefined, 'in_method'>;
47
+ users: Endpoint<User, UsersQueryParams, 'first_name' | 'last_name'>;
48
+ };
49
+ /** Type mappings for v2 endpoints */
50
+ v2: {};
51
+ }
@@ -0,0 +1,6 @@
1
+ import { TerminalLocation } from './terminal.interface.js';
2
+ export interface LaunchTerminal {
3
+ terminal: number;
4
+ device: string;
5
+ location?: TerminalLocation;
6
+ }
@@ -1,4 +1,4 @@
1
- import { LeaveDate } from './leave-date.interface';
1
+ import { LeaveDate } from './leave-date.interface.js';
2
2
  export interface LeaveRequest {
3
3
  id: number;
4
4
  deleted: boolean;
@@ -1,4 +1,4 @@
1
- import { LeaveRequest } from './leave-request.interface';
1
+ import { LeaveRequest } from './leave-request.interface.js';
2
2
  export interface Leave extends LeaveRequest {
3
3
  admin: number;
4
4
  admin_message: string | null;
@@ -1,3 +1,4 @@
1
1
  export interface ToilAllowanceQueryParams {
2
+ year: number;
2
3
  users?: number[];
3
4
  }
@@ -18,7 +18,13 @@ export type RetryOptions = {
18
18
  };
19
19
  type RequestInterceptor = Parameters<AxiosInterceptorManager<InternalAxiosRequestConfig>['use']>;
20
20
  type ResponseInterceptor = Parameters<AxiosInterceptorManager<AxiosResponse>['use']>;
21
- export interface SDKBase {
21
+ export type SDKConfig = ({
22
+ apiKey: string;
23
+ basicAuth?: never;
24
+ } | {
25
+ apiKey?: never;
26
+ basicAuth: string;
27
+ }) & {
22
28
  baseUri?: string;
23
29
  accountId?: number;
24
30
  userId?: number;
@@ -34,14 +40,5 @@ export interface SDKBase {
34
40
  })[];
35
41
  };
36
42
  [key: string]: unknown;
37
- }
38
- export interface SDKBearerAuth extends SDKBase {
39
- apiKey: string;
40
- basicAuth?: never;
41
- }
42
- export interface SDKBasicAuth extends SDKBase {
43
- apiKey?: never;
44
- basicAuth: string;
45
- }
46
- export type SDKConfig = SDKBasicAuth | SDKBearerAuth;
43
+ };
47
44
  export {};
@@ -23,3 +23,14 @@ export interface Shift {
23
23
  swap_requests: number[];
24
24
  unavailability_requests: number[];
25
25
  }
26
+ export interface ShiftHistoryRecord {
27
+ changes?: {
28
+ key: string;
29
+ value: string;
30
+ }[];
31
+ colour: string | null;
32
+ icon: string | null;
33
+ text: string;
34
+ time: number;
35
+ user: number;
36
+ }
@@ -0,0 +1,18 @@
1
+ import { TerminalLocation } from './terminal.interface.js';
2
+ export interface UserClockIn {
3
+ method: string;
4
+ shift: number;
5
+ terminal?: number;
6
+ user: number;
7
+ photo?: string;
8
+ location?: TerminalLocation;
9
+ }
10
+ export interface UserClockOut extends Omit<UserClockIn, 'user' | 'shift'> {
11
+ }
12
+ export interface UserBreakRequest {
13
+ method: string;
14
+ action: string;
15
+ terminal: number;
16
+ photo?: string;
17
+ location: TerminalLocation;
18
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -36,7 +36,7 @@ export interface User {
36
36
  leave_rates_unit: string;
37
37
  leave_rates_type: string;
38
38
  notes: string | null;
39
- pin: string | null;
39
+ pin?: string | null;
40
40
  salaried_cost_location: number | null;
41
41
  permissions: ManagerPermission[];
42
42
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};