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/service.ts ADDED
@@ -0,0 +1,395 @@
1
+ import { EndpointEntityMap } from './endpoint.js';
2
+ import {
3
+ Auth,
4
+ Availability,
5
+ DailyBudgets,
6
+ DailyRevenue,
7
+ Leave,
8
+ LeaveType,
9
+ ShiftHistoryRecord,
10
+ Terminal,
11
+ ToilAllowance,
12
+ UserBreak,
13
+ UserClockedIn,
14
+ UserClockedOut,
15
+ } from './interfaces/index.js';
16
+ import { LaunchTerminal } from './interfaces/launch-terminal.interface.js';
17
+ import { OpDef, Operation, OperationContext, RequestConfig, listAllOp, listOp, paramsFromOptions } from './ops.js';
18
+ import { UserBreakRequest, UserClockIn, UserClockOut } from './interfaces/user-clock-in.interface.js';
19
+ import { RequirementsOf, RequestOptions } from './utils.js';
20
+ import { ShiftSwapRequest } from './interfaces/swap-request.interface.js';
21
+ import { ShiftDropRequest } from './interfaces/drop-request.interface.js';
22
+ import { ToilAllowanceQueryParams } from './interfaces/query-params/index.js';
23
+
24
+ export type ServiceSpecification<CustomOp extends OpDef<unknown> = OpDef<any>> = {
25
+ /** Operations allowed and usable for the endpoint */
26
+ operations: Operation[];
27
+ /**
28
+ * Operations unique to the service
29
+ * Can be used to override operations listed in {@see ServiceSpecification['operations']}
30
+ */
31
+ customOperations?: Record<string, CustomOp>;
32
+ } & (
33
+ | {
34
+ /** URL of the endpoint */
35
+ endpoint: keyof EndpointEntityMap['v1'];
36
+ /** API version of the endpoint */
37
+ endpointVersion: 'v1';
38
+ }
39
+ | {
40
+ /** URL of the endpoint */
41
+ endpoint: keyof EndpointEntityMap['v2'];
42
+ /** API version of the endpoint */
43
+ endpointVersion: 'v2';
44
+ }
45
+ );
46
+
47
+ /**
48
+ * Map of all officially supported service specifications used to generate the
49
+ * SDK client where each key is the service name and each value is the service
50
+ * definition conforming to the {@see ServiceSpecification} type
51
+ */
52
+ export const SERVICES = {
53
+ account: {
54
+ endpoint: 'accounts',
55
+ endpointVersion: 'v1',
56
+ operations: ['get', 'list', 'listAll'],
57
+ },
58
+ attendance: {
59
+ endpoint: 'attendance',
60
+ endpointVersion: 'v1',
61
+ operations: ['get', 'list', 'listAll', 'delete', 'create', 'update'],
62
+ },
63
+ auth: {
64
+ endpoint: 'auth',
65
+ endpointVersion: 'v1',
66
+ operations: [],
67
+ customOperations: {
68
+ get: ({ request, service }): RequestConfig<void, Auth> => ({
69
+ ...request,
70
+ url: `${service.endpointVersion}/${service.endpoint}`,
71
+ method: 'GET',
72
+ }),
73
+ },
74
+ },
75
+ availability: {
76
+ endpoint: 'availability',
77
+ endpointVersion: 'v1',
78
+ operations: ['update', 'create', 'delete', 'list', 'listAll'],
79
+ customOperations: {
80
+ update: ({ request, service }, entity: Availability): RequestConfig<typeof entity, Availability> => ({
81
+ ...request,
82
+ method: 'POST',
83
+ url: `${service.endpointVersion}/${service.endpoint}`,
84
+ data: entity,
85
+ }),
86
+ delete: (
87
+ { request, service },
88
+ entity: { user: number; dates: string[] },
89
+ ): RequestConfig<Availability, Availability> => ({
90
+ ...request,
91
+ method: 'POST',
92
+ url: `${service.endpointVersion}/${service.endpoint}`,
93
+ data: {
94
+ ...entity,
95
+ dates: entity.dates.map((date) => ({
96
+ date,
97
+ available: [],
98
+ unavailable: [],
99
+ })),
100
+ },
101
+ }),
102
+ },
103
+ },
104
+ dailyBudget: {
105
+ endpoint: 'daily_budgets',
106
+ endpointVersion: 'v1',
107
+ operations: ['list', 'listAll', 'updateBatch'],
108
+ customOperations: {
109
+ updateBatch: ({ request, service }, entities: DailyBudgets[]): RequestConfig<typeof entities, void> => ({
110
+ ...request,
111
+ method: 'POST',
112
+ url: `${service.endpointVersion}/${service.endpoint}`,
113
+ data: entities,
114
+ }),
115
+ },
116
+ },
117
+ dailyRevenue: {
118
+ endpoint: 'daily_revenue',
119
+ endpointVersion: 'v1',
120
+ operations: ['list', 'listAll', 'updateBatch'],
121
+ customOperations: {
122
+ updateBatch: ({ request, service }, entities: DailyRevenue[]): RequestConfig<typeof entities, void> => ({
123
+ ...request,
124
+ method: 'POST',
125
+ url: `${service.endpointVersion}/${service.endpoint}`,
126
+ data: entities,
127
+ }),
128
+ },
129
+ },
130
+ dayNote: {
131
+ endpoint: 'day_notes',
132
+ endpointVersion: 'v1',
133
+ operations: ['get', 'create', 'list', 'listAll', 'update', 'delete'],
134
+ },
135
+ dayOff: {
136
+ endpoint: 'days_off',
137
+ endpointVersion: 'v1',
138
+ operations: ['create', 'list', 'listAll', 'delete'],
139
+ },
140
+ document: {
141
+ endpoint: 'documents',
142
+ endpointVersion: 'v1',
143
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'delete'],
144
+ },
145
+ group: {
146
+ endpoint: 'groups',
147
+ endpointVersion: 'v1',
148
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'delete'],
149
+ },
150
+ leaveEmbargo: {
151
+ endpoint: 'leave_embargoes',
152
+ endpointVersion: 'v1',
153
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'delete'],
154
+ },
155
+ leaveRequest: {
156
+ endpoint: 'leave_requests',
157
+ endpointVersion: 'v1',
158
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'delete'],
159
+ },
160
+ leave: {
161
+ endpoint: 'leave',
162
+ endpointVersion: 'v1',
163
+ operations: ['get', 'list', 'listAll', 'delete', 'create', 'update'],
164
+ customOperations: {
165
+ create: (
166
+ { request, service, sdkConfig }: OperationContext,
167
+ entity: EndpointEntityMap['v1']['leave']['createType'],
168
+ opts?: RequestOptions<Leave>,
169
+ ): RequestConfig<typeof entity, Leave[]> => ({
170
+ ...request,
171
+ method: 'POST',
172
+ url: `${service.endpointVersion}/${service.endpoint}`,
173
+ data: entity,
174
+ headers: {
175
+ ...request.headers,
176
+ Account: sdkConfig.accountId,
177
+ User: entity.user,
178
+ },
179
+ params: {
180
+ ...request.params,
181
+ ...paramsFromOptions(opts ?? {}),
182
+ },
183
+ }),
184
+ types: ({ request }): RequestConfig<void, LeaveType[]> => ({
185
+ ...request,
186
+ method: 'GET',
187
+ url: 'v1/leave_types',
188
+ }),
189
+ },
190
+ },
191
+ location: {
192
+ endpoint: 'locations',
193
+ endpointVersion: 'v1',
194
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'delete'],
195
+ },
196
+ pin: {
197
+ endpoint: 'pins',
198
+ endpointVersion: 'v1',
199
+ operations: ['get'],
200
+ },
201
+ role: {
202
+ endpoint: 'roles',
203
+ endpointVersion: 'v1',
204
+ operations: ['get', 'list', 'listAll', 'delete'],
205
+ },
206
+ settings: {
207
+ endpoint: 'settings',
208
+ endpointVersion: 'v1',
209
+ operations: ['list', 'listAll'],
210
+ },
211
+ shift: {
212
+ endpoint: 'shifts',
213
+ endpointVersion: 'v1',
214
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'updateBatch', 'delete', 'deleteBatch'],
215
+ customOperations: {
216
+ acknowledge: ({ request }, shiftIds: number[]): RequestConfig<{ shifts: number[] }, void> => ({
217
+ ...request,
218
+ method: 'POST',
219
+ url: 'v1/shifts_acknowledged',
220
+ data: { shifts: shiftIds },
221
+ }),
222
+ history: ({ request, service }, id: number): RequestConfig<void, ShiftHistoryRecord[]> => ({
223
+ ...request,
224
+ method: 'GET',
225
+ url: `v1/${service.endpoint}/${id}/history`,
226
+ }),
227
+ publish: ({ request }, shiftIds: number[]): RequestConfig<{ shifts: number[] }, void> => ({
228
+ ...request,
229
+ method: 'POST',
230
+ url: 'v1/shifts_published',
231
+ data: { shifts: shiftIds },
232
+ }),
233
+ unpublish: ({ request }, shiftIds: number[]): RequestConfig<{ shifts: number[] }, void> => ({
234
+ ...request,
235
+ method: 'DELETE',
236
+ url: 'v1/shifts_published',
237
+ data: { shifts: shiftIds },
238
+ }),
239
+ updateSwap: (
240
+ { request },
241
+ swapRequest: RequirementsOf<ShiftSwapRequest, 'id'>,
242
+ ): RequestConfig<{ admin_approved: boolean } | { user_approved: boolean }, ShiftSwapRequest> => {
243
+ let payload: { admin_approved: boolean } | { user_approved: boolean } | undefined;
244
+ if (swapRequest.admin_approved !== null && swapRequest.admin_approved !== undefined) {
245
+ payload = { admin_approved: swapRequest.admin_approved };
246
+ } else if (swapRequest.user_approved !== null && swapRequest.user_approved !== undefined) {
247
+ payload = { user_approved: swapRequest.user_approved };
248
+ }
249
+
250
+ return {
251
+ ...request,
252
+ method: 'POST',
253
+ url: `v1/swap_requests/${swapRequest.id}`,
254
+ data: payload,
255
+ };
256
+ },
257
+ updateDrop: (
258
+ { request },
259
+ dropRequest: { request: RequirementsOf<ShiftDropRequest, 'id' | 'user_message'>; approved: boolean },
260
+ ): RequestConfig<{ message: string }, ShiftDropRequest> => ({
261
+ ...request,
262
+ method: 'POST',
263
+ url: `v1/unavailability_requests/${dropRequest.request.id}/${dropRequest.approved ? 'approve' : 'deny'}`,
264
+ data: { message: dropRequest.request.user_message },
265
+ }),
266
+ },
267
+ },
268
+ terminal: {
269
+ endpoint: 'terminals',
270
+ endpointVersion: 'v1',
271
+ operations: ['create', 'get', 'update', 'list', 'listAll'],
272
+ customOperations: {
273
+ close: ({ request, service }, id: number): RequestConfig<void, void> => ({
274
+ ...request,
275
+ method: 'DELETE',
276
+ url: `${service.endpointVersion}/${service.endpoint}/${id}`,
277
+ }),
278
+ },
279
+ },
280
+ terminalActive: {
281
+ endpoint: 'terminals',
282
+ endpointVersion: 'v1',
283
+ operations: ['list', 'listAll'],
284
+ customOperations: {
285
+ launch: ({ request, service }, id: LaunchTerminal): RequestConfig<void, Terminal> => ({
286
+ ...request,
287
+ method: 'DELETE',
288
+ url: `${service.endpointVersion}/${service.endpoint}/${id}`,
289
+ }),
290
+ ping: ({ request, service }, id: { id: number; action: string; device: string }): RequestConfig<void, void> => ({
291
+ ...request,
292
+ method: 'DELETE',
293
+ url: `${service.endpointVersion}/${service.endpoint}/${id}`,
294
+ }),
295
+ close: ({ request, service }, id: number): RequestConfig<void, void> => ({
296
+ ...request,
297
+ method: 'DELETE',
298
+ url: `${service.endpointVersion}/${service.endpoint}/${id}`,
299
+ }),
300
+ },
301
+ },
302
+ timeZone: {
303
+ endpoint: 'timezones',
304
+ endpointVersion: 'v1',
305
+ operations: ['get', 'list', 'listAll'],
306
+ },
307
+ toilAccrual: {
308
+ endpoint: 'toil_accruals',
309
+ endpointVersion: 'v1',
310
+ operations: ['create', 'get', 'list', 'listAll', 'listByPage', 'delete'],
311
+ },
312
+ toilAllowance: {
313
+ endpoint: 'toil_allowance',
314
+ endpointVersion: 'v1',
315
+ operations: ['list', 'listAll'],
316
+ customOperations: {
317
+ list: (ctx, query: ToilAllowanceQueryParams, opts) =>
318
+ // Maps the "year" query parameter into the endpoint URL
319
+ listOp<ToilAllowance, Omit<typeof query, 'year'>>(
320
+ {
321
+ ...ctx,
322
+ service: {
323
+ ...ctx.service,
324
+ endpoint: `${ctx.service.endpoint}/${query.year}` as typeof ctx.service.endpoint,
325
+ endpointVersion: 'v1',
326
+ },
327
+ },
328
+ { users: query.users },
329
+ opts,
330
+ ),
331
+ listAll: (ctx, query: ToilAllowanceQueryParams, opts) =>
332
+ // Maps the "year" query parameter into the endpoint URL
333
+ listAllOp<ToilAllowance, Omit<typeof query, 'year'>>(
334
+ {
335
+ ...ctx,
336
+ service: {
337
+ ...ctx.service,
338
+ endpoint: `${ctx.service.endpoint}/${query.year}` as typeof ctx.service.endpoint,
339
+ endpointVersion: 'v1',
340
+ },
341
+ },
342
+ { users: query.users },
343
+ opts,
344
+ ),
345
+ },
346
+ },
347
+ userClockIn: {
348
+ endpoint: 'users_clocked_in',
349
+ endpointVersion: 'v1',
350
+ operations: ['get', 'list', 'listAll'],
351
+ customOperations: {
352
+ clockIn: (
353
+ { request, service },
354
+ entity: { id: number } & RequirementsOf<UserClockIn, 'method'>,
355
+ ): RequestConfig<typeof entity, UserClockedIn> => ({
356
+ ...request,
357
+ url: `${service.endpointVersion}/${service.endpoint}/${entity.id}`,
358
+ method: 'POST',
359
+ data: entity,
360
+ }),
361
+ clockOut: (
362
+ { request, service },
363
+ entity: { id: number } & RequirementsOf<UserClockOut, 'method'>,
364
+ ): RequestConfig<typeof entity, UserClockedOut> => ({
365
+ ...request,
366
+ url: `${service.endpointVersion}/${service.endpoint}/${entity.id}`,
367
+ method: 'POST',
368
+ data: entity,
369
+ }),
370
+ startBreak: (
371
+ { request, service },
372
+ entity: { id: number } & RequirementsOf<UserBreakRequest, 'method' | 'action'>,
373
+ ): RequestConfig<typeof entity, UserBreak> => ({
374
+ ...request,
375
+ url: `${service.endpointVersion}/${service.endpoint}/${entity.id}`,
376
+ method: 'POST',
377
+ data: entity,
378
+ }),
379
+ endBreak: (
380
+ { request, service },
381
+ entity: { id: number } & RequirementsOf<UserBreakRequest, 'method' | 'action'>,
382
+ ): RequestConfig<typeof entity, UserBreak> => ({
383
+ ...request,
384
+ url: `${service.endpointVersion}/${service.endpoint}/${entity.id}`,
385
+ method: 'POST',
386
+ data: entity,
387
+ }),
388
+ },
389
+ },
390
+ user: {
391
+ endpoint: 'users',
392
+ endpointVersion: 'v1',
393
+ operations: ['create', 'get', 'list', 'listAll', 'update', 'delete'],
394
+ },
395
+ } satisfies Record<string, ServiceSpecification>;
package/src/utils.ts ADDED
@@ -0,0 +1,193 @@
1
+ import axios, { Axios, AxiosError, AxiosRequestConfig, isAxiosError } from 'axios';
2
+ import axiosRetry, { isNetworkOrIdempotentRequestError } from 'axios-retry';
3
+ import { RetryOptions, RetryStrategy, SDKConfig } from './interfaces/index.js';
4
+ import { SDKError } from './models/index.js';
5
+ import pkg from '../package.json' with { type: 'json' };
6
+
7
+ /** Creates a `Partial<T>` where all properties specified by `K` are required
8
+ *
9
+ * e.g.
10
+ * `RequirementsOf<{id: number, user: number, location: number}, "id" | "user">` is
11
+ * equivalent to `{id: number, user: number, location?: number}`
12
+ * */
13
+ export type RequirementsOf<T, K extends keyof T> = Required<Pick<T, K>> & Partial<T>;
14
+
15
+ /** Supported primitive/atomic types for query parameters */
16
+ type QueryParameterPrimitive = string | boolean | number | null | symbol;
17
+ /** Supported types for query parameters */
18
+ export type QueryParameterValue = QueryParameterPrimitive | QueryParameterPrimitive[] | undefined;
19
+
20
+ /** SDK specific options for configuring a request */
21
+ export interface RequestOptions<T> {
22
+ /** Client side option to determine whether to return the entire response
23
+ * including metadata such as status code and headers */
24
+ rawResponse?: boolean;
25
+ /** The maximum number of entities to return
26
+ *
27
+ * Once the limit is reached, paginated requests will stop automatically */
28
+ maxResults?: number;
29
+ /* Prevent the API from committing to a desired action */
30
+ dryRun?: boolean;
31
+ /* Specify which fields should be returned for an entity */
32
+ fields?: T extends Object ? (keyof T)[] : never;
33
+ }
34
+
35
+ const DEFAULT_RETRIES = 3;
36
+ const DEFAULT_RETRY_DELAY = 2000;
37
+ const DEFAULT_RETRY_STRATEGY_OPTIONS: Record<RetryStrategy, RetryOptions> = {
38
+ [RetryStrategy.Exponential]: {
39
+ exponential: true,
40
+ maxRetries: DEFAULT_RETRIES,
41
+ },
42
+ [RetryStrategy.Static]: {
43
+ exponential: false,
44
+ maxRetries: DEFAULT_RETRIES,
45
+ delay: DEFAULT_RETRY_DELAY,
46
+ },
47
+ };
48
+
49
+ class AssertionError extends Error {
50
+ override name = AssertionError.prototype.name;
51
+ }
52
+
53
+ export function assert(value: unknown, message?: string | Error): asserts value {
54
+ if (value) return;
55
+ if (!message || typeof message === 'string')
56
+ throw new AssertionError(message ?? `Assertion failed - value = ${value}`);
57
+ throw message;
58
+ }
59
+
60
+ /** Converts a map of query parameter key/values into API compatible {@see URLSearchParams} */
61
+ function toSearchParams(parameters?: Record<string, QueryParameterValue>): URLSearchParams {
62
+ const queryParams: Record<string, QueryParameterValue> = { ...parameters };
63
+ const reducedParams = Object.entries(queryParams ?? {}).reduce((params, [key, val]) => {
64
+ if (val !== undefined && val !== '') {
65
+ if (Array.isArray(val)) params.push(...val.map((item) => [`${key}[]`, String(item)]));
66
+ else params.push([key, String(val)]);
67
+ }
68
+ return params;
69
+ }, [] as string[][]);
70
+
71
+ return new URLSearchParams(reducedParams);
72
+ }
73
+
74
+ function parseClientError(error: AxiosError): SDKError {
75
+ const axiosErrorLocation = error.response || error.request;
76
+ const apiErrorMessage = axiosErrorLocation.data?.error;
77
+ let url: URL | undefined;
78
+ try {
79
+ url = new URL(error.config?.url ?? '', error.config?.baseURL);
80
+ for (const [key, value] of toSearchParams(error.config?.params)) {
81
+ url.searchParams.set(key, value);
82
+ }
83
+ } catch (err) {
84
+ url = undefined;
85
+ }
86
+ return new SDKError({
87
+ url: url?.toString(),
88
+ code: axiosErrorLocation.status,
89
+ message: apiErrorMessage || error.message,
90
+ data: axiosErrorLocation.data,
91
+ });
92
+ }
93
+
94
+ /** Creates and configures an Axios client for use in all calls to API endpoints
95
+ * according to the provided {@see SDKConfig}
96
+ */
97
+ export function createCustomAxiosClient(config: Readonly<SDKConfig>): Axios {
98
+ let baseURL: string | undefined;
99
+ try {
100
+ baseURL = new URL(config?.baseUri ?? '').toString();
101
+ } catch {
102
+ baseURL = undefined;
103
+ }
104
+ assert(baseURL !== undefined, `Must have a valid base URL. Got: ${config.baseUri}`);
105
+ const axiosClient = axios.create({
106
+ baseURL,
107
+ paramsSerializer: (params) => toSearchParams({ ...params, exclude_link_header: true }).toString(),
108
+ });
109
+
110
+ // NOTE: Retry interceptor - must be setup first
111
+ if (config?.retry) {
112
+ const retryConfig = typeof config.retry === 'string' ? DEFAULT_RETRY_STRATEGY_OPTIONS[config.retry] : config.retry;
113
+
114
+ axiosRetry(axiosClient, {
115
+ retries: retryConfig.maxRetries,
116
+ shouldResetTimeout: true,
117
+ retryCondition: (err) => isNetworkOrIdempotentRequestError(err) || err.response?.status === 429,
118
+ retryDelay: (retryCount) => {
119
+ if (retryConfig.exponential) {
120
+ return axiosRetry.exponentialDelay(retryCount);
121
+ }
122
+ return retryConfig.delay;
123
+ },
124
+ });
125
+ }
126
+ // NOTE: Error interceptor - must be setup after retry but before custom
127
+ axiosClient.interceptors.response.use(
128
+ (response) => response,
129
+ (error: unknown) => {
130
+ let parsedError = error;
131
+ if (isAxiosError(error)) {
132
+ parsedError = parseClientError(error);
133
+ }
134
+ return Promise.reject(parsedError);
135
+ },
136
+ );
137
+
138
+ // NOTE: Custom interceptors - must be setup last
139
+ for (const requestInterceptor of config?.interceptors?.request ?? []) {
140
+ const callbacks =
141
+ typeof requestInterceptor === 'function'
142
+ ? ([requestInterceptor] as const)
143
+ : ([requestInterceptor?.success, requestInterceptor?.error] as const);
144
+ axiosClient.interceptors.request.use(...callbacks);
145
+ }
146
+ for (const responseInterceptor of config?.interceptors?.response ?? []) {
147
+ const callbacks =
148
+ typeof responseInterceptor === 'function'
149
+ ? ([responseInterceptor] as const)
150
+ : ([responseInterceptor?.success, responseInterceptor?.error] as const);
151
+ axiosClient.interceptors.response.use(...callbacks);
152
+ }
153
+
154
+ return axiosClient;
155
+ }
156
+
157
+ /** Utility for getting a basic {@see AxiosRequestConfig} for a given request ready
158
+ * for an {@see OpFunction} to adapt/use
159
+ */
160
+ export function getBaseRequestConfig(opts: SDKConfig): AxiosRequestConfig<unknown> {
161
+ const headers: Record<string, string> = {};
162
+
163
+ const extraHeaders = opts.headers;
164
+ if (extraHeaders && typeof extraHeaders === 'object') {
165
+ for (const [key, val] of Object.entries(extraHeaders)) {
166
+ headers[key] = String(val);
167
+ }
168
+ }
169
+ if (opts.accountId) {
170
+ headers.Account = String(opts.accountId);
171
+ }
172
+
173
+ // Set last to prevent being overridden
174
+ headers.Authorization = opts.apiKey ? `Bearer ${opts.apiKey}` : `Basic ${opts.basicAuth}`;
175
+ headers['SDK-Version'] = pkg.version;
176
+
177
+ return {
178
+ headers,
179
+ };
180
+ }
181
+
182
+ /** Defaults all undefined properties in a given object with the value specified
183
+ * in the provided {@see defaultObj} parameter
184
+ *
185
+ * This returns a new object and does not modify {@see obj}
186
+ */
187
+ export function defaultObject<T extends object>(obj: Readonly<T>, defaultObj: Readonly<Partial<T>>): T {
188
+ const defaulted = { ...obj };
189
+ for (const [key, value] of Object.entries(defaultObj)) {
190
+ defaulted[key] ??= value;
191
+ }
192
+ return defaulted;
193
+ }
package/.eslintignore DELETED
@@ -1,5 +0,0 @@
1
- node_modules
2
- dist
3
- coverage
4
- .eslintrc
5
- version.ts
package/.eslintrc.json DELETED
@@ -1,27 +0,0 @@
1
- {
2
- "env": {
3
- "es2021": true,
4
- "node": true
5
- },
6
- "extends": ["airbnb-base", "airbnb-typescript/base", "prettier"],
7
- "parser": "@typescript-eslint/parser",
8
- "parserOptions": {
9
- "ecmaVersion": 13,
10
- "sourceType": "module",
11
- "project": "./tsconfig.json"
12
- },
13
- "plugins": ["@typescript-eslint"],
14
- "rules": {
15
- "@typescript-eslint/no-useless-constructor": ["off"],
16
- "@typescript-eslint/no-unused-vars": ["warn"],
17
- "@typescript-eslint/no-unused-expressions": ["off"],
18
- "@typescript-eslint/no-shadow": ["warn"],
19
- "@typescript-eslint/lines-between-class-members": ["off"],
20
- "no-restricted-syntax": ["off"],
21
- "import/prefer-default-export": ["off"],
22
- "max-classes-per-file": ["off"],
23
- "class-methods-use-this": ["off"],
24
- "no-await-in-loop": ["off"],
25
- "no-param-reassign": ["error", { "props": false }]
26
- }
27
- }
package/.gitattributes DELETED
@@ -1 +0,0 @@
1
- * text=auto
@@ -1,36 +0,0 @@
1
- name: Check
2
- on:
3
- workflow_call:
4
- inputs:
5
- NODE_VERSION:
6
- type: string
7
- description: 'The version of Node to run the checks with'
8
- default: 16.10
9
- pull_request:
10
- branches: [develop]
11
-
12
- jobs:
13
- checks:
14
- runs-on: ubuntu-latest
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v3
18
-
19
- - name: Use Node.js ${{ inputs.NODE_VERSION }}
20
- uses: actions/setup-node@v3
21
- with:
22
- node-version: ${{ inputs.NODE_VERSION }}
23
- cache: 'npm'
24
- registry-url: https://registry.npmjs.org/
25
-
26
- - name: npm install
27
- run: npm ci
28
-
29
- - name: Lint
30
- run: npm run lint
31
-
32
- - name: Build
33
- run: npm run build --if-present
34
-
35
- - name: Publishable
36
- run: npm publish --dry-run