@livepreso/api 6.44.0 → 6.46.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 (502) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  3. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  4. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  5. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  6. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  7. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  8. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  9. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  10. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  11. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  12. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  13. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  14. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  15. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  16. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  17. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  18. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  19. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  20. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  21. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  22. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  23. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  24. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  25. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  26. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  27. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  28. package/.rush/temp/operation/test/all.log +19 -0
  29. package/.rush/temp/operation/test/state.json +3 -0
  30. package/.rush/temp/{package-deps_test.json → package-deps_build.json} +11 -11
  31. package/.rush/temp/shrinkwrap-deps.json +605 -597
  32. package/CHANGELOG.json +29 -0
  33. package/CHANGELOG.md +15 -1
  34. package/README.md +4 -4
  35. package/api.build.log +1 -1
  36. package/api.test.cache.log +1 -0
  37. package/api.test.log +19 -0
  38. package/bin/test.sh +0 -1
  39. package/cjs/api.js +18 -17
  40. package/cjs/api.js.map +1 -1
  41. package/cjs/api.spec.js +0 -4
  42. package/cjs/api.spec.js.map +1 -1
  43. package/cjs/auth.js +35 -36
  44. package/cjs/auth.js.map +1 -1
  45. package/cjs/auth.spec.js +52 -71
  46. package/cjs/auth.spec.js.map +1 -1
  47. package/cjs/caching.js +2 -7
  48. package/cjs/caching.js.map +1 -1
  49. package/cjs/collections/activity.js +16 -56
  50. package/cjs/collections/activity.js.map +1 -1
  51. package/cjs/collections/adjunct-sections.js +1 -10
  52. package/cjs/collections/adjunct-sections.js.map +1 -1
  53. package/cjs/collections/adjunct-slides.js +1 -10
  54. package/cjs/collections/adjunct-slides.js.map +1 -1
  55. package/cjs/collections/adjunct-sub-slides.js +1 -9
  56. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  57. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  58. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  59. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  60. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  61. package/cjs/collections/appointment-duplicates.js +1 -9
  62. package/cjs/collections/appointment-duplicates.js.map +1 -1
  63. package/cjs/collections/appointment-editors.js +1 -10
  64. package/cjs/collections/appointment-editors.js.map +1 -1
  65. package/cjs/collections/appointment-section-tags.js +1 -9
  66. package/cjs/collections/appointment-section-tags.js.map +1 -1
  67. package/cjs/collections/appointment-slide-tags.js +1 -9
  68. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  69. package/cjs/collections/appointment-tags.js +66 -103
  70. package/cjs/collections/appointment-tags.js.map +1 -1
  71. package/cjs/collections/appointment-templates.js +27 -0
  72. package/cjs/collections/appointment-templates.js.map +1 -0
  73. package/cjs/collections/appointments.js +9 -29
  74. package/cjs/collections/appointments.js.map +1 -1
  75. package/cjs/collections/assets.js +1 -9
  76. package/cjs/collections/assets.js.map +1 -1
  77. package/cjs/collections/auto-adjuncts.js +6 -21
  78. package/cjs/collections/auto-adjuncts.js.map +1 -1
  79. package/cjs/collections/base.js +46 -112
  80. package/cjs/collections/base.js.map +1 -1
  81. package/cjs/collections/base.spec.js +204 -233
  82. package/cjs/collections/base.spec.js.map +1 -1
  83. package/cjs/collections/cms-vals.js +9 -16
  84. package/cjs/collections/cms-vals.js.map +1 -1
  85. package/cjs/collections/contact-phones.js +20 -0
  86. package/cjs/collections/contact-phones.js.map +1 -0
  87. package/cjs/collections/contacts.js +1 -9
  88. package/cjs/collections/contacts.js.map +1 -1
  89. package/cjs/collections/created-assets.js +1 -10
  90. package/cjs/collections/created-assets.js.map +1 -1
  91. package/cjs/collections/customers.js +1 -9
  92. package/cjs/collections/customers.js.map +1 -1
  93. package/cjs/collections/deck-notes.js +1 -10
  94. package/cjs/collections/deck-notes.js.map +1 -1
  95. package/cjs/collections/deck-version-screenshots.js +49 -0
  96. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  97. package/cjs/collections/deck-versions.js +5 -20
  98. package/cjs/collections/deck-versions.js.map +1 -1
  99. package/cjs/collections/decks.js +1 -9
  100. package/cjs/collections/decks.js.map +1 -1
  101. package/cjs/collections/deleted-assets.js +1 -10
  102. package/cjs/collections/deleted-assets.js.map +1 -1
  103. package/cjs/collections/dispatches.js +1 -13
  104. package/cjs/collections/dispatches.js.map +1 -1
  105. package/cjs/collections/event-objects.js +1 -9
  106. package/cjs/collections/event-objects.js.map +1 -1
  107. package/cjs/collections/events.js +1 -9
  108. package/cjs/collections/events.js.map +1 -1
  109. package/cjs/collections/groups.js +1 -9
  110. package/cjs/collections/groups.js.map +1 -1
  111. package/cjs/collections/images.js +1 -9
  112. package/cjs/collections/images.js.map +1 -1
  113. package/cjs/collections/locations.js +1 -9
  114. package/cjs/collections/locations.js.map +1 -1
  115. package/cjs/collections/opportunities.js +1 -9
  116. package/cjs/collections/opportunities.js.map +1 -1
  117. package/cjs/collections/pack-diffs.js +1 -9
  118. package/cjs/collections/pack-diffs.js.map +1 -1
  119. package/cjs/collections/packs.js +1 -9
  120. package/cjs/collections/packs.js.map +1 -1
  121. package/cjs/collections/presets.js +1 -9
  122. package/cjs/collections/presets.js.map +1 -1
  123. package/cjs/collections/section-selections.js +1 -9
  124. package/cjs/collections/section-selections.js.map +1 -1
  125. package/cjs/collections/sections.js +1 -9
  126. package/cjs/collections/sections.js.map +1 -1
  127. package/cjs/collections/slide-selections.js +1 -9
  128. package/cjs/collections/slide-selections.js.map +1 -1
  129. package/cjs/collections/slides.js +1 -9
  130. package/cjs/collections/slides.js.map +1 -1
  131. package/cjs/collections/snapshots.js +1 -9
  132. package/cjs/collections/snapshots.js.map +1 -1
  133. package/cjs/collections/sub-slides.js +1 -9
  134. package/cjs/collections/sub-slides.js.map +1 -1
  135. package/cjs/collections/tags.js +1 -9
  136. package/cjs/collections/tags.js.map +1 -1
  137. package/cjs/collections/teams.js +1 -9
  138. package/cjs/collections/teams.js.map +1 -1
  139. package/cjs/collections/templates.js +1 -9
  140. package/cjs/collections/templates.js.map +1 -1
  141. package/cjs/collections/uploads.js +1 -9
  142. package/cjs/collections/uploads.js.map +1 -1
  143. package/cjs/collections/users.js +1 -9
  144. package/cjs/collections/users.js.map +1 -1
  145. package/cjs/collections.js +33 -86
  146. package/cjs/collections.js.map +1 -1
  147. package/cjs/fixtures.js +187 -0
  148. package/cjs/fixtures.js.map +1 -0
  149. package/cjs/index.js +0 -10
  150. package/cjs/index.js.map +1 -1
  151. package/cjs/log.js +0 -1
  152. package/cjs/log.js.map +1 -1
  153. package/cjs/middleware.js +2 -7
  154. package/cjs/middleware.js.map +1 -1
  155. package/cjs/middlewares/auth.js +1 -17
  156. package/cjs/middlewares/auth.js.map +1 -1
  157. package/cjs/middlewares/base.js +3 -9
  158. package/cjs/middlewares/base.js.map +1 -1
  159. package/cjs/middlewares/json.js +1 -19
  160. package/cjs/middlewares/json.js.map +1 -1
  161. package/cjs/middlewares/redirect.js +5 -21
  162. package/cjs/middlewares/redirect.js.map +1 -1
  163. package/cjs/models/activity-item.js +6 -20
  164. package/cjs/models/activity-item.js.map +1 -1
  165. package/cjs/models/adjunct-section.js +8 -21
  166. package/cjs/models/adjunct-section.js.map +1 -1
  167. package/cjs/models/adjunct-slide.js +8 -21
  168. package/cjs/models/adjunct-slide.js.map +1 -1
  169. package/cjs/models/adjunct-sub-slide.js +1 -16
  170. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  171. package/cjs/models/adjunct.js +34 -10
  172. package/cjs/models/adjunct.js.map +1 -1
  173. package/cjs/models/api.js +1 -6
  174. package/cjs/models/api.js.map +1 -1
  175. package/cjs/models/appointment-adjunct-tags.js +1 -13
  176. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  177. package/cjs/models/appointment-deckversion-tags.js +1 -13
  178. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  179. package/cjs/models/appointment-duplicate.js +3 -25
  180. package/cjs/models/appointment-duplicate.js.map +1 -1
  181. package/cjs/models/appointment-editor.js +1 -14
  182. package/cjs/models/appointment-editor.js.map +1 -1
  183. package/cjs/models/appointment-section-tags.js +1 -13
  184. package/cjs/models/appointment-section-tags.js.map +1 -1
  185. package/cjs/models/appointment-slide-tags.js +1 -13
  186. package/cjs/models/appointment-slide-tags.js.map +1 -1
  187. package/cjs/models/appointment-stats.js +1 -11
  188. package/cjs/models/appointment-stats.js.map +1 -1
  189. package/cjs/models/appointment-tags.js +1 -10
  190. package/cjs/models/appointment-tags.js.map +1 -1
  191. package/cjs/models/appointment-template.js +23 -0
  192. package/cjs/models/appointment-template.js.map +1 -0
  193. package/cjs/models/appointment-viewing.js +1 -8
  194. package/cjs/models/appointment-viewing.js.map +1 -1
  195. package/cjs/models/appointment.js +94 -69
  196. package/cjs/models/appointment.js.map +1 -1
  197. package/cjs/models/asset.js +12 -11
  198. package/cjs/models/asset.js.map +1 -1
  199. package/cjs/models/auto-adjunct-key-check.js +1 -15
  200. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  201. package/cjs/models/auto-adjunct.js +5 -14
  202. package/cjs/models/auto-adjunct.js.map +1 -1
  203. package/cjs/models/base.js +89 -173
  204. package/cjs/models/base.js.map +1 -1
  205. package/cjs/models/base.spec.js +8 -30
  206. package/cjs/models/base.spec.js.map +1 -1
  207. package/cjs/models/choicelist.js +1 -8
  208. package/cjs/models/choicelist.js.map +1 -1
  209. package/cjs/models/cms-val.js +28 -15
  210. package/cjs/models/cms-val.js.map +1 -1
  211. package/cjs/models/cms-val.spec.js +25 -0
  212. package/cjs/models/cms-val.spec.js.map +1 -0
  213. package/cjs/models/contact-phone.js +54 -0
  214. package/cjs/models/contact-phone.js.map +1 -0
  215. package/cjs/models/contact.js +1 -18
  216. package/cjs/models/contact.js.map +1 -1
  217. package/cjs/models/customer.js +5 -30
  218. package/cjs/models/customer.js.map +1 -1
  219. package/cjs/models/deck-note.js +1 -9
  220. package/cjs/models/deck-note.js.map +1 -1
  221. package/cjs/models/deck-tags.js +1 -12
  222. package/cjs/models/deck-tags.js.map +1 -1
  223. package/cjs/models/deck-version-screenshot.js +47 -0
  224. package/cjs/models/deck-version-screenshot.js.map +1 -0
  225. package/cjs/models/deck-version.js +54 -47
  226. package/cjs/models/deck-version.js.map +1 -1
  227. package/cjs/models/deck.js +1 -14
  228. package/cjs/models/deck.js.map +1 -1
  229. package/cjs/models/dispatch-preview.js +1 -13
  230. package/cjs/models/dispatch-preview.js.map +1 -1
  231. package/cjs/models/dispatch.js +1 -23
  232. package/cjs/models/dispatch.js.map +1 -1
  233. package/cjs/models/envs.js +1 -6
  234. package/cjs/models/envs.js.map +1 -1
  235. package/cjs/models/event-object.js +1 -11
  236. package/cjs/models/event-object.js.map +1 -1
  237. package/cjs/models/event.js +1 -13
  238. package/cjs/models/event.js.map +1 -1
  239. package/cjs/models/feed-data.js +6 -13
  240. package/cjs/models/feed-data.js.map +1 -1
  241. package/cjs/models/file.js +1 -11
  242. package/cjs/models/file.js.map +1 -1
  243. package/cjs/models/group.js +1 -11
  244. package/cjs/models/group.js.map +1 -1
  245. package/cjs/models/handover.js +1 -13
  246. package/cjs/models/handover.js.map +1 -1
  247. package/cjs/models/hosted-preso.js +1 -15
  248. package/cjs/models/hosted-preso.js.map +1 -1
  249. package/cjs/models/image.js +30 -11
  250. package/cjs/models/image.js.map +1 -1
  251. package/cjs/models/location.js +1 -13
  252. package/cjs/models/location.js.map +1 -1
  253. package/cjs/models/manifest-json.js +75 -74
  254. package/cjs/models/manifest-json.js.map +1 -1
  255. package/cjs/models/onshare.js +1 -14
  256. package/cjs/models/onshare.js.map +1 -1
  257. package/cjs/models/opportunity.js +1 -14
  258. package/cjs/models/opportunity.js.map +1 -1
  259. package/cjs/models/pack-diff.js +1 -14
  260. package/cjs/models/pack-diff.js.map +1 -1
  261. package/cjs/models/pack.js +1 -12
  262. package/cjs/models/pack.js.map +1 -1
  263. package/cjs/models/preset.js +4 -20
  264. package/cjs/models/preset.js.map +1 -1
  265. package/cjs/models/refresh-request.js +17 -11
  266. package/cjs/models/refresh-request.js.map +1 -1
  267. package/cjs/models/room.js +1 -9
  268. package/cjs/models/room.js.map +1 -1
  269. package/cjs/models/salesforce-lookup.js +1 -12
  270. package/cjs/models/salesforce-lookup.js.map +1 -1
  271. package/cjs/models/section-selection.js +1 -14
  272. package/cjs/models/section-selection.js.map +1 -1
  273. package/cjs/models/section.js +4 -15
  274. package/cjs/models/section.js.map +1 -1
  275. package/cjs/models/slide-selection.js +1 -14
  276. package/cjs/models/slide-selection.js.map +1 -1
  277. package/cjs/models/slide.js +4 -15
  278. package/cjs/models/slide.js.map +1 -1
  279. package/cjs/models/snapshot.js +13 -15
  280. package/cjs/models/snapshot.js.map +1 -1
  281. package/cjs/models/snapshot.spec.js +44 -0
  282. package/cjs/models/snapshot.spec.js.map +1 -0
  283. package/cjs/models/sub-slide.js +1 -12
  284. package/cjs/models/sub-slide.js.map +1 -1
  285. package/cjs/models/support-ticket.js +1 -11
  286. package/cjs/models/support-ticket.js.map +1 -1
  287. package/cjs/models/tag.js +1 -13
  288. package/cjs/models/tag.js.map +1 -1
  289. package/cjs/models/team.js +14 -13
  290. package/cjs/models/team.js.map +1 -1
  291. package/cjs/models/template.js +89 -15
  292. package/cjs/models/template.js.map +1 -1
  293. package/cjs/models/tenancy.js +4 -11
  294. package/cjs/models/tenancy.js.map +1 -1
  295. package/cjs/models/timing-log.js +21 -78
  296. package/cjs/models/timing-log.js.map +1 -1
  297. package/cjs/models/timing-log.spec.js +24 -37
  298. package/cjs/models/timing-log.spec.js.map +1 -1
  299. package/cjs/models/token.js +46 -0
  300. package/cjs/models/token.js.map +1 -0
  301. package/cjs/models/transcribe-socket.js +1 -8
  302. package/cjs/models/transcribe-socket.js.map +1 -1
  303. package/cjs/models/upload.js +1 -7
  304. package/cjs/models/upload.js.map +1 -1
  305. package/cjs/models/user.js +11 -28
  306. package/cjs/models/user.js.map +1 -1
  307. package/cjs/models/user.spec.js +20 -30
  308. package/cjs/models/user.spec.js.map +1 -1
  309. package/cjs/models.js +44 -128
  310. package/cjs/models.js.map +1 -1
  311. package/cjs/presentation/appointment-presentation.js +14 -36
  312. package/cjs/presentation/appointment-presentation.js.map +1 -1
  313. package/cjs/presentation/base-presentation-collection.js +1 -7
  314. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  315. package/cjs/presentation/base-presentation-model.js +108 -33
  316. package/cjs/presentation/base-presentation-model.js.map +1 -1
  317. package/cjs/presentation/base-presentation-model.spec.js +58 -23
  318. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  319. package/cjs/presentation/presentation-deck.js +73 -83
  320. package/cjs/presentation/presentation-deck.js.map +1 -1
  321. package/cjs/presentation/presentation-deck.spec.js +118 -88
  322. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  323. package/cjs/presentation/presentation-decks.js +1 -9
  324. package/cjs/presentation/presentation-decks.js.map +1 -1
  325. package/cjs/presentation/presentation-section.js +70 -84
  326. package/cjs/presentation/presentation-section.js.map +1 -1
  327. package/cjs/presentation/presentation-section.spec.js +296 -238
  328. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  329. package/cjs/presentation/presentation-sections.js +1 -9
  330. package/cjs/presentation/presentation-sections.js.map +1 -1
  331. package/cjs/presentation/presentation-slide.js +74 -84
  332. package/cjs/presentation/presentation-slide.js.map +1 -1
  333. package/cjs/presentation/presentation-slide.spec.js +211 -166
  334. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  335. package/cjs/presentation/presentation-slides.js +1 -9
  336. package/cjs/presentation/presentation-slides.js.map +1 -1
  337. package/cjs/presentation/presentation-subslide.js +3 -23
  338. package/cjs/presentation/presentation-subslide.js.map +1 -1
  339. package/cjs/presentation/presentation-subslide.spec.js +101 -125
  340. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  341. package/cjs/presentation/presentation-subslides.js +1 -9
  342. package/cjs/presentation/presentation-subslides.js.map +1 -1
  343. package/cjs/presentation/presentation.js +87 -32
  344. package/cjs/presentation/presentation.js.map +1 -1
  345. package/cjs/presentation.js +0 -20
  346. package/cjs/presentation.js.map +1 -1
  347. package/cjs/selections.js +81 -0
  348. package/cjs/selections.js.map +1 -0
  349. package/cjs/state-register.js +3 -11
  350. package/cjs/state-register.js.map +1 -1
  351. package/cjs/sync.js +32 -76
  352. package/cjs/sync.js.map +1 -1
  353. package/cjs/utils.js +51 -42
  354. package/cjs/utils.js.map +1 -1
  355. package/cjs/utils.spec.js +0 -4
  356. package/cjs/utils.spec.js.map +1 -1
  357. package/jest.config.js +5 -3
  358. package/package.json +11 -8
  359. package/src/api.js +17 -2
  360. package/src/auth.js +45 -9
  361. package/src/auth.spec.js +2 -0
  362. package/src/collections/activity.js +4 -4
  363. package/src/collections/adjunct-sections.js +1 -1
  364. package/src/collections/adjunct-slides.js +1 -1
  365. package/src/collections/adjunct-sub-slides.js +1 -1
  366. package/src/collections/appointment-adjunct-tags.js +1 -1
  367. package/src/collections/appointment-deckversion-tags.js +2 -2
  368. package/src/collections/appointment-duplicates.js +1 -1
  369. package/src/collections/appointment-editors.js +1 -1
  370. package/src/collections/appointment-section-tags.js +1 -1
  371. package/src/collections/appointment-slide-tags.js +1 -1
  372. package/src/collections/appointment-tags.js +20 -18
  373. package/src/collections/appointment-templates.js +26 -0
  374. package/src/collections/appointments.js +9 -9
  375. package/src/collections/assets.js +1 -1
  376. package/src/collections/auto-adjuncts.js +1 -1
  377. package/src/collections/base.js +20 -10
  378. package/src/collections/base.spec.js +19 -5
  379. package/src/collections/cms-vals.js +5 -1
  380. package/src/collections/contact-phones.js +18 -0
  381. package/src/collections/contacts.js +1 -1
  382. package/src/collections/created-assets.js +1 -1
  383. package/src/collections/customers.js +1 -1
  384. package/src/collections/deck-notes.js +1 -1
  385. package/src/collections/deck-version-screenshots.js +48 -0
  386. package/src/collections/deck-versions.js +1 -1
  387. package/src/collections/decks.js +1 -1
  388. package/src/collections/deleted-assets.js +1 -1
  389. package/src/collections/dispatches.js +2 -2
  390. package/src/collections/event-objects.js +1 -1
  391. package/src/collections/events.js +1 -1
  392. package/src/collections/groups.js +1 -1
  393. package/src/collections/images.js +1 -1
  394. package/src/collections/locations.js +1 -1
  395. package/src/collections/opportunities.js +1 -1
  396. package/src/collections/pack-diffs.js +1 -1
  397. package/src/collections/packs.js +1 -1
  398. package/src/collections/presets.js +1 -1
  399. package/src/collections/section-selections.js +1 -1
  400. package/src/collections/sections.js +1 -1
  401. package/src/collections/slide-selections.js +1 -1
  402. package/src/collections/slides.js +1 -1
  403. package/src/collections/snapshots.js +1 -1
  404. package/src/collections/sub-slides.js +1 -1
  405. package/src/collections/tags.js +1 -1
  406. package/src/collections/teams.js +1 -1
  407. package/src/collections/templates.js +1 -1
  408. package/src/collections/uploads.js +1 -1
  409. package/src/collections/users.js +1 -1
  410. package/src/collections.js +3 -0
  411. package/src/fixtures.js +193 -0
  412. package/src/models/activity-item.js +3 -1
  413. package/src/models/adjunct-section.js +7 -2
  414. package/src/models/adjunct-slide.js +7 -2
  415. package/src/models/adjunct-sub-slide.js +1 -1
  416. package/src/models/adjunct.js +39 -1
  417. package/src/models/appointment-adjunct-tags.js +1 -1
  418. package/src/models/appointment-deckversion-tags.js +1 -1
  419. package/src/models/appointment-duplicate.js +1 -1
  420. package/src/models/appointment-editor.js +1 -1
  421. package/src/models/appointment-section-tags.js +1 -1
  422. package/src/models/appointment-slide-tags.js +1 -1
  423. package/src/models/appointment-stats.js +1 -1
  424. package/src/models/appointment-tags.js +1 -1
  425. package/src/models/appointment-template.js +19 -0
  426. package/src/models/appointment-viewing.js +1 -1
  427. package/src/models/appointment.js +112 -37
  428. package/src/models/asset.js +15 -1
  429. package/src/models/auto-adjunct-key-check.js +1 -1
  430. package/src/models/auto-adjunct.js +4 -1
  431. package/src/models/base.js +55 -22
  432. package/src/models/base.spec.js +34 -27
  433. package/src/models/choicelist.js +1 -1
  434. package/src/models/cms-val.js +24 -1
  435. package/src/models/cms-val.spec.js +14 -0
  436. package/src/models/contact-phone.js +57 -0
  437. package/src/models/contact.js +1 -1
  438. package/src/models/customer.js +3 -3
  439. package/src/models/deck-note.js +1 -1
  440. package/src/models/deck-tags.js +1 -1
  441. package/src/models/deck-version-screenshot.js +48 -0
  442. package/src/models/deck-version.js +60 -9
  443. package/src/models/deck.js +1 -1
  444. package/src/models/dispatch-preview.js +1 -1
  445. package/src/models/dispatch.js +1 -1
  446. package/src/models/event-object.js +1 -1
  447. package/src/models/event.js +1 -1
  448. package/src/models/feed-data.js +3 -1
  449. package/src/models/file.js +1 -1
  450. package/src/models/group.js +1 -1
  451. package/src/models/handover.js +1 -1
  452. package/src/models/hosted-preso.js +1 -1
  453. package/src/models/image.js +33 -1
  454. package/src/models/location.js +1 -1
  455. package/src/models/manifest-json.js +57 -6
  456. package/src/models/onshare.js +1 -1
  457. package/src/models/opportunity.js +1 -1
  458. package/src/models/pack-diff.js +1 -1
  459. package/src/models/pack.js +1 -1
  460. package/src/models/preset.js +3 -1
  461. package/src/models/refresh-request.js +15 -1
  462. package/src/models/room.js +1 -1
  463. package/src/models/salesforce-lookup.js +1 -1
  464. package/src/models/section-selection.js +1 -1
  465. package/src/models/section.js +3 -1
  466. package/src/models/slide-selection.js +1 -1
  467. package/src/models/slide.js +3 -1
  468. package/src/models/snapshot.js +11 -2
  469. package/src/models/snapshot.spec.js +31 -0
  470. package/src/models/sub-slide.js +1 -1
  471. package/src/models/support-ticket.js +1 -1
  472. package/src/models/tag.js +1 -1
  473. package/src/models/team.js +14 -3
  474. package/src/models/template.js +74 -2
  475. package/src/models/tenancy.js +4 -1
  476. package/src/models/timing-log.js +2 -2
  477. package/src/models/timing-log.spec.js +1 -1
  478. package/src/models/token.js +47 -0
  479. package/src/models/transcribe-socket.js +1 -1
  480. package/src/models/user.js +15 -2
  481. package/src/models.js +4 -0
  482. package/src/presentation/appointment-presentation.js +13 -5
  483. package/src/presentation/base-presentation-collection.js +1 -1
  484. package/src/presentation/base-presentation-model.js +88 -3
  485. package/src/presentation/base-presentation-model.spec.js +80 -3
  486. package/src/presentation/presentation-deck.js +65 -22
  487. package/src/presentation/presentation-deck.spec.js +55 -2
  488. package/src/presentation/presentation-decks.js +1 -1
  489. package/src/presentation/presentation-section.js +91 -31
  490. package/src/presentation/presentation-section.spec.js +142 -10
  491. package/src/presentation/presentation-sections.js +1 -1
  492. package/src/presentation/presentation-slide.js +69 -23
  493. package/src/presentation/presentation-slide.spec.js +105 -9
  494. package/src/presentation/presentation-slides.js +1 -1
  495. package/src/presentation/presentation-subslide.js +5 -5
  496. package/src/presentation/presentation-subslide.spec.js +3 -3
  497. package/src/presentation/presentation-subslides.js +1 -1
  498. package/src/presentation/presentation.js +27 -8
  499. package/src/selections.js +71 -0
  500. package/src/sync.js +1 -1
  501. package/src/utils.js +31 -8
  502. package/src/utils.spec.js +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils.spec.js"],"names":["describe","test","url","expect","toEqual","testString","testString2","testString3","it","actual","toThrow","data","expected","beforeURL","afterURL","first","anArray","nestedObject","second"],"mappings":"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","sourcesContent":["import {\n\tgetHostname,\n\tgetShortURL,\n\tremoveMultiByteChars,\n\treplaceHostname,\n} from \"./utils.js\";\n\ndescribe(\"getShortURL()\", () => {\n\ttest(\"shorten a full url to a short one\", function () {\n\t\tconst url = \"http://client.salespreso.com/api/users/1/\";\n\t\texpect(getShortURL(url)).toEqual(\"/api/users/1/\");\n\t});\n\n\ttest(\"not break an already short url\", function () {\n\t\tconst url = \"/api/users/1/\";\n\t\texpect(getShortURL(url)).toEqual(\"/api/users/1/\");\n\t});\n});\n\ndescribe(\"removeMultiByteChars()\", () => {\n\ttest(\"correctly strip offending multibyte characters from string\", function () {\n\t\tconst testString = \"SUZI LUCK’S CANTEEN & COCKTAIL BAR\";\n\t\texpect(removeMultiByteChars(testString)).toEqual(\n\t\t\t\"SUZI LUCKS CANTEEN & COCKTAIL BAR\"\n\t\t);\n\t});\n\n\ttest(\"sanatize urls correctly\", function () {\n\t\tconst testString = \"http://client.salespreso.com/api/users/1/’\";\n\t\tconst testString2 = \"/api/users/1/’\";\n\t\tconst testString3 = \"/api/users/1/?param=1&test=3&_r=4\";\n\t\texpect(removeMultiByteChars(testString)).toEqual(\n\t\t\t\"http://client.salespreso.com/api/users/1/\"\n\t\t);\n\t\texpect(removeMultiByteChars(testString2)).toEqual(\"/api/users/1/\");\n\t\texpect(removeMultiByteChars(testString3)).toEqual(\n\t\t\t\"/api/users/1/?param=1&test=3&_r=4\"\n\t\t);\n\t});\n});\n\ndescribe(\"getHostname()\", () => {\n\tit(\"throws an error if hostname isn't a string\", () => {\n\t\tconst actual = () => getHostname(null);\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"returns a hostname from a full URL\", () => {\n\t\tconst actual = getHostname(\"https://www.horse.com/api/horses/1/\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n\n\tit(\"returns a hostname from just the domain\", () => {\n\t\tconst actual = getHostname(\"https://www.horse.com/\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n\n\tit(\"just returns the hostname\", () => {\n\t\tconst actual = getHostname(\"www.horse.com\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n});\n\ndescribe(\"replaceHostname()\", () => {\n\tit(\"throws an error if not from hostname\", () => {\n\t\tconst actual = () => replaceHostname(\"foo\", null, \"brand.new.com\");\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"throws an error if not to hostname\", () => {\n\t\tconst actual = () => replaceHostname(\"foo\", \"old.url.com\", null);\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"replaces hostname of a string\", () => {\n\t\tconst data = \"https://old.url.com/api/appointments/1/\";\n\t\tconst expected = \"https://brand.new.com/api/appointments/1/\";\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"takes into account the protocol\", () => {\n\t\tconst data = \"http://old.url.com/api/appointments/1/\";\n\t\tconst expected = \"http://brand.new.com/api/appointments/1/\";\n\t\tconst actual = replaceHostname(\n\t\t\tdata,\n\t\t\t\"https://old.url.com/\",\n\t\t\t\"https://brand.new.com/\"\n\t\t);\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"replaces hostnames in an array\", () => {\n\t\tconst data = [\n\t\t\t\"https://old.url.com/api/appointments/1/\",\n\t\t\t\"https://old.url.com/api/foo/1/bars/1/\",\n\t\t];\n\t\tconst expected = [\n\t\t\t\"https://brand.new.com/api/appointments/1/\",\n\t\t\t\"https://brand.new.com/api/foo/1/bars/1/\",\n\t\t];\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"replaces hostnames in an object\", () => {\n\t\tconst data = {\n\t\t\turl: \"https://old.url.com/api/appointments/1/\",\n\t\t};\n\t\tconst expected = {\n\t\t\turl: \"https://brand.new.com/api/appointments/1/\",\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"hostnames not related aren't affected\", () => {\n\t\tconst data = {\n\t\t\turl: \"https://some.otherurl.com/helloworld/\",\n\t\t};\n\t\tconst expected = {\n\t\t\turl: \"https://some.otherurl.com/helloworld/\",\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"updates data that is nested\", () => {\n\t\tconst beforeURL = \"https://old.url.com/api/appointments/1/\";\n\t\tconst afterURL = \"https://some.otherurl.com/api/appointments/1/\";\n\n\t\tconst data = {\n\t\t\tfirst: beforeURL,\n\t\t\tanArray: [beforeURL, beforeURL],\n\t\t\tnestedObject: {\n\t\t\t\tfirst: beforeURL,\n\t\t\t\tsecond: beforeURL,\n\t\t\t},\n\t\t};\n\n\t\tconst expected = {\n\t\t\tfirst: afterURL,\n\t\t\tanArray: [afterURL, afterURL],\n\t\t\tnestedObject: {\n\t\t\t\tfirst: afterURL,\n\t\t\t\tsecond: afterURL,\n\t\t\t},\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"some.otherurl.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"does not affect hostname within a string\", () => {\n\t\tconst data = \"room:old.url.com:123\";\n\t\tconst expected = \"room:old.url.com:123\";\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"some.otherurl.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n});\n"],"file":"utils.spec.js"}
1
+ {"version":3,"file":"utils.spec.js","names":["_utils","require","describe","test","url","expect","getShortURL","toEqual","testString","removeMultiByteChars","testString2","testString3","it","actual","getHostname","toThrow","replaceHostname","data","expected","beforeURL","afterURL","first","anArray","nestedObject","second"],"sources":["../src/utils.spec.js"],"sourcesContent":["import {\n\tgetHostname,\n\tgetShortURL,\n\tremoveMultiByteChars,\n\treplaceHostname,\n} from \"./utils.js\";\n\ndescribe(\"getShortURL()\", () => {\n\ttest(\"shorten a full url to a short one\", function () {\n\t\tconst url = \"http://client.salespreso.com/api/users/1/\";\n\t\texpect(getShortURL(url)).toEqual(\"/api/users/1/\");\n\t});\n\n\ttest(\"not break an already short url\", function () {\n\t\tconst url = \"/api/users/1/\";\n\t\texpect(getShortURL(url)).toEqual(\"/api/users/1/\");\n\t});\n});\n\ndescribe(\"removeMultiByteChars()\", () => {\n\ttest(\"correctly strip offending multibyte characters from string\", function () {\n\t\tconst testString = \"SUZI LUCK’S CANTEEN & COCKTAIL BAR\";\n\t\texpect(removeMultiByteChars(testString)).toEqual(\n\t\t\t\"SUZI LUCKS CANTEEN & COCKTAIL BAR\",\n\t\t);\n\t});\n\n\ttest(\"sanatize urls correctly\", function () {\n\t\tconst testString = \"http://client.salespreso.com/api/users/1/’\";\n\t\tconst testString2 = \"/api/users/1/’\";\n\t\tconst testString3 = \"/api/users/1/?param=1&test=3&_r=4\";\n\t\texpect(removeMultiByteChars(testString)).toEqual(\n\t\t\t\"http://client.salespreso.com/api/users/1/\",\n\t\t);\n\t\texpect(removeMultiByteChars(testString2)).toEqual(\"/api/users/1/\");\n\t\texpect(removeMultiByteChars(testString3)).toEqual(\n\t\t\t\"/api/users/1/?param=1&test=3&_r=4\",\n\t\t);\n\t});\n});\n\ndescribe(\"getHostname()\", () => {\n\tit(\"throws an error if hostname isn't a string\", () => {\n\t\tconst actual = () => getHostname(null);\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"returns a hostname from a full URL\", () => {\n\t\tconst actual = getHostname(\"https://www.horse.com/api/horses/1/\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n\n\tit(\"returns a hostname from just the domain\", () => {\n\t\tconst actual = getHostname(\"https://www.horse.com/\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n\n\tit(\"just returns the hostname\", () => {\n\t\tconst actual = getHostname(\"www.horse.com\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n});\n\ndescribe(\"replaceHostname()\", () => {\n\tit(\"throws an error if not from hostname\", () => {\n\t\tconst actual = () => replaceHostname(\"foo\", null, \"brand.new.com\");\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"throws an error if not to hostname\", () => {\n\t\tconst actual = () => replaceHostname(\"foo\", \"old.url.com\", null);\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"replaces hostname of a string\", () => {\n\t\tconst data = \"https://old.url.com/api/appointments/1/\";\n\t\tconst expected = \"https://brand.new.com/api/appointments/1/\";\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"takes into account the protocol\", () => {\n\t\tconst data = \"http://old.url.com/api/appointments/1/\";\n\t\tconst expected = \"http://brand.new.com/api/appointments/1/\";\n\t\tconst actual = replaceHostname(\n\t\t\tdata,\n\t\t\t\"https://old.url.com/\",\n\t\t\t\"https://brand.new.com/\",\n\t\t);\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"replaces hostnames in an array\", () => {\n\t\tconst data = [\n\t\t\t\"https://old.url.com/api/appointments/1/\",\n\t\t\t\"https://old.url.com/api/foo/1/bars/1/\",\n\t\t];\n\t\tconst expected = [\n\t\t\t\"https://brand.new.com/api/appointments/1/\",\n\t\t\t\"https://brand.new.com/api/foo/1/bars/1/\",\n\t\t];\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"replaces hostnames in an object\", () => {\n\t\tconst data = {\n\t\t\turl: \"https://old.url.com/api/appointments/1/\",\n\t\t};\n\t\tconst expected = {\n\t\t\turl: \"https://brand.new.com/api/appointments/1/\",\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"hostnames not related aren't affected\", () => {\n\t\tconst data = {\n\t\t\turl: \"https://some.otherurl.com/helloworld/\",\n\t\t};\n\t\tconst expected = {\n\t\t\turl: \"https://some.otherurl.com/helloworld/\",\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"updates data that is nested\", () => {\n\t\tconst beforeURL = \"https://old.url.com/api/appointments/1/\";\n\t\tconst afterURL = \"https://some.otherurl.com/api/appointments/1/\";\n\n\t\tconst data = {\n\t\t\tfirst: beforeURL,\n\t\t\tanArray: [beforeURL, beforeURL],\n\t\t\tnestedObject: {\n\t\t\t\tfirst: beforeURL,\n\t\t\t\tsecond: beforeURL,\n\t\t\t},\n\t\t};\n\n\t\tconst expected = {\n\t\t\tfirst: afterURL,\n\t\t\tanArray: [afterURL, afterURL],\n\t\t\tnestedObject: {\n\t\t\t\tfirst: afterURL,\n\t\t\t\tsecond: afterURL,\n\t\t\t},\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"some.otherurl.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"does not affect hostname within a string\", () => {\n\t\tconst data = \"room:old.url.com:123\";\n\t\tconst expected = \"room:old.url.com:123\";\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"some.otherurl.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n});\n"],"mappings":"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"}
package/jest.config.js CHANGED
@@ -14,11 +14,13 @@ module.exports = {
14
14
  coverageReporters: ["text-summary"],
15
15
  moduleNameMapper: {
16
16
  ...resolutions,
17
- // Use this project for all sp-api stuff, obviously. Prevents sp-test
18
- // from having multiple registers
19
- "^sp-api(.*)$": "<rootDir>/src/$1",
17
+ "^@livepreso/api(.*)$": "<rootDir>/src/$1",
20
18
  },
21
19
  setupFilesAfterEnv: ["<rootDir>/setup-tests.js"],
22
20
  collectCoverageFrom: ["<rootDir>/src/**/*.js"],
23
21
  testPathIgnorePatterns: ["<rootDir>/cjs"],
22
+ reporters: [
23
+ "jest-fixed-default-reporter/DefaultReporter",
24
+ "jest-fixed-default-reporter/SummaryReporter",
25
+ ],
24
26
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@livepreso/api",
3
3
  "license": "UNLICENSED",
4
- "version": "6.44.0",
4
+ "version": "6.46.0",
5
5
  "description": "Everything to do with talking to the SalePreso API",
6
6
  "main": "index.js",
7
7
  "module": "esm/index.js",
@@ -12,14 +12,14 @@
12
12
  ],
13
13
  "keywords": [],
14
14
  "dependencies": {
15
- "@livepreso/log": "^1.3.9",
15
+ "@livepreso/log": "^1.3.10",
16
16
  "ampersand-collection": "^2.0.0",
17
17
  "ampersand-model": "^8.0.0",
18
18
  "ampersand-rest-collection": "^6.0.0",
19
19
  "process": "^0.11.10",
20
20
  "bluebird": "^3.5.0",
21
21
  "consola": "^2.11.0",
22
- "dedent-js": "^1.0.1",
22
+ "dedent-js": "~1.0.1",
23
23
  "lodash": "^4.17.4",
24
24
  "moment": "^2.18.1",
25
25
  "qs": "^6.4.0",
@@ -44,24 +44,27 @@
44
44
  "esdoc": "^1.1.0",
45
45
  "esdoc-standard-plugin": "^1.0.0",
46
46
  "git-hooks": "^1.0.2",
47
- "jest": "~27.4.7",
47
+ "jest": "~29.7.0",
48
48
  "jsdom-global": "^2.1.1",
49
49
  "npm-run-all": "^4.1.5",
50
50
  "sinon": "^2.1.0",
51
51
  "source-map-support": "^0.4.14",
52
52
  "sp-get-port-by-name": "^0.0.1",
53
- "sp-test": "^0.0.1",
53
+ "sp-test": "0.2.0",
54
54
  "testdouble": "^2.1.1",
55
55
  "@livepreso/eslint-config": "~1.0.0",
56
56
  "@rushstack/eslint-config": "~2.4.0",
57
- "@babel/preset-react": "~7.14.5"
57
+ "@babel/preset-react": "~7.14.5",
58
+ "jest-fixed-default-reporter": "~2.0.1",
59
+ "rosie": "~2.1.0",
60
+ "@faker-js/faker": "~7.5.0"
58
61
  },
59
62
  "scripts": {
60
63
  "test:debug": "node --inspect node_modules/.bin/jest --watch --runInBand",
61
- "test": "jest --silent 2>&1",
64
+ "test": "jest --coverage --coverageReporters=json",
62
65
  "build:cjs": "BABEL_ENV=cjs babel --delete-dir-on-start src/ --out-dir=cjs/ -s",
63
66
  "build": "run-p build:*",
64
67
  "prepublish": "npm run build"
65
68
  },
66
- "readme": "# API\n\nThe single point of entry for interacting with the SalesPreso API. Contains functionality for contacting and authorizing\nwi the API endpoint, as well as middleware, models and collections for sending and retrieving data.\n\n## Install\n\n```bash\nnpm install sp-api\n```\n\nor\n\n```bash\nyarn add sp-api\n```\n\n## Examples\n\n```javascript\nimport {Auth, Api} from \"sp-api\";\nimport {registerMiddleware} from \"sp-api/middleware\";\nimport AuthMiddleware from \"sp-api/middlewares/auth\";\nimport RedirectMiddleware from \"sp-api/middlewares/redirect\";\n\nconst middlewares = [\n new AuthMiddleware(),\n new RedirectMiddleware(),\n new JSONMiddleware()\n];\n\nmiddlewares.map(registerMiddleware);\n\nApi.initialize(\"http://localhost:8000/api/\")\n .then(() => {\n return Auth.login(\"yourlogin\", \"yourpassword\");\n });\n```\n\n## Documentation\n\nhttp://developers.salespreso.com/modules/sp-api/\n"
69
+ "readme": "# API\n\nThe single point of entry for interacting with the SalesPreso API. Contains functionality for contacting and authorizing\nwi the API endpoint, as well as middleware, models and collections for sending and retrieving data.\n\n## Install\n\n```bash\nnpm install sp-api\n```\n\nor\n\n```bash\nyarn add sp-api\n```\n\n## Examples\n\n```javascript\nimport {Auth, Api} from \"@livepreso/api\";\nimport {registerMiddleware} from \"@livepreso/api/middleware\";\nimport AuthMiddleware from \"@livepreso/api/middlewares/auth\";\nimport RedirectMiddleware from \"@livepreso/api/middlewares/redirect\";\n\nconst middlewares = [\n new AuthMiddleware(),\n new RedirectMiddleware(),\n new JSONMiddleware()\n];\n\nmiddlewares.map(registerMiddleware);\n\nApi.initialize(\"http://localhost:8000/api/\")\n .then(() => {\n return Auth.login(\"yourlogin\", \"yourpassword\");\n });\n```\n\n## Documentation\n\nhttp://developers.salespreso.com/modules/sp-api/\n"
67
70
  }
package/src/api.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import Promise from "bluebird";
2
+ import url2 from "url";
3
+
2
4
  /**
3
5
  * @namespace api
4
6
  */
@@ -7,7 +9,7 @@ import Promise from "bluebird";
7
9
  * @constructor
8
10
  * @alias api.Api
9
11
  * @example
10
- * import {Api} from "sp-api";
12
+ * import {Api} from "@livepreso/api";
11
13
  */
12
14
  export const Api = {
13
15
  resources: {},
@@ -18,7 +20,7 @@ export const Api = {
18
20
  * @memberof api.Api
19
21
  * @prop {number} version
20
22
  */
21
- version: 29,
23
+ version: 31,
22
24
 
23
25
  /**
24
26
  * Initialize the api. Connects to the network and returns the
@@ -63,6 +65,19 @@ export const Api = {
63
65
  return Api._apiURL;
64
66
  },
65
67
 
68
+ /**
69
+ * Returns the root URL (origin) of the api server. Ie,
70
+ * server.com/api/ -> server.com/
71
+ * @memberof api.Api
72
+ * @returns {string}
73
+ */
74
+ getRootURL() {
75
+ const urlObj = url2.parse(Api._apiURL);
76
+ urlObj.pathname = "";
77
+ urlObj.search = "";
78
+ return url2.format(urlObj);
79
+ },
80
+
66
81
  /**
67
82
  * Returns the full path to a resource endpoint, based on the resource
68
83
  * name.
package/src/auth.js CHANGED
@@ -4,7 +4,7 @@
4
4
  import { Api } from "./api.js";
5
5
  import { BaseModel } from "./models/base.js";
6
6
  import SuperAgentRequest from "superagent-bluebird-promise";
7
- import { UserModel } from "./models/user.js";
7
+ import { TokenModel } from "./models/token.js";
8
8
  import log from "./log.js";
9
9
 
10
10
  /**
@@ -12,7 +12,7 @@ import log from "./log.js";
12
12
  * @constructor
13
13
  * @alias auth.Auth
14
14
  * @example
15
- * import {Auth} from "sp-api";
15
+ * import {Auth} from "@livepreso/api";
16
16
  */
17
17
  export const Auth = {
18
18
  _token: null,
@@ -37,15 +37,33 @@ export const Auth = {
37
37
  * @static
38
38
  * @param {string} username
39
39
  * @param {string} password
40
+ * @param {object} options
40
41
  * @return {Promise}
41
42
  */
42
- login(username, password) {
43
+ login(username, password, options) {
43
44
  const tokensURL = Api.getResourceURL("tokens");
45
+
46
+ const agent = options?.agent;
47
+ const agentVersion = options?.agentVersion;
48
+
49
+ const data = {
50
+ username,
51
+ password,
52
+ };
53
+
54
+ if (agent) {
55
+ data.agent = agent;
56
+ }
57
+
58
+ if (agentVersion) {
59
+ data.agent_version = agentVersion;
60
+ }
61
+
44
62
  return SuperAgentRequest("POST", tokensURL)
45
63
  .set({
46
64
  Accept: Auth.headers.Accept,
47
65
  })
48
- .send({ username, password })
66
+ .send(data)
49
67
  .then((res) => {
50
68
  let body = {};
51
69
  let token = "";
@@ -74,11 +92,29 @@ export const Auth = {
74
92
  Auth._token = token;
75
93
 
76
94
  log.info(`Logging in with token: ${token}`);
77
- const user = new UserModel({ self: true });
78
- return user.fetch().then(() => {
79
- Auth._user = user;
80
- Auth._loggedIn = true;
81
- });
95
+
96
+ const tokenModel = new TokenModel({ key: token });
97
+
98
+ return tokenModel
99
+ .fetch()
100
+ .tap(() => {
101
+ return tokenModel.user.fetch();
102
+ })
103
+ .tap(() => {
104
+ Auth._user = tokenModel.user;
105
+ Auth._loggedIn = true;
106
+ });
107
+ },
108
+
109
+ /**
110
+ * @memberof auth.Auth
111
+ * @static
112
+ * @return {void}
113
+ */
114
+ clear() {
115
+ Auth._token = null;
116
+ Auth._user = null;
117
+ Auth._loggedIn = false;
82
118
  },
83
119
 
84
120
  /**
package/src/auth.spec.js CHANGED
@@ -9,6 +9,7 @@ beforeEach(() => {
9
9
  });
10
10
 
11
11
  test("set the token", async () => {
12
+ G("TokenModel").respondWith({ user: G("UserModel") });
12
13
  G("UserModel").respondWith();
13
14
  await Auth.loginWithToken("token");
14
15
  expect(Auth.token).toEqual("token");
@@ -16,6 +17,7 @@ test("set the token", async () => {
16
17
  });
17
18
 
18
19
  test("set the user on success", async () => {
20
+ G("TokenModel").respondWith({ user: G("UserModel") });
19
21
  G("UserModel").respondWith({ first_name: "John", last_name: "Doe" });
20
22
  await Auth.loginWithToken("token");
21
23
  expect(Auth.user.first_name).toEqual("John");
@@ -32,7 +32,7 @@ export const ActivityCollection = BaseCollection.extend(
32
32
  options = {},
33
33
  fromActivityDate = null,
34
34
  page = 1,
35
- activities = []
35
+ activities = [],
36
36
  ) {
37
37
  const data = { page };
38
38
  if (fromActivityDate) {
@@ -70,7 +70,7 @@ export const ActivityCollection = BaseCollection.extend(
70
70
  }
71
71
  return resp;
72
72
  },
73
- true
73
+ true,
74
74
  );
75
75
 
76
76
  if (!hasAllActivities) {
@@ -87,7 +87,7 @@ export const ActivityCollection = BaseCollection.extend(
87
87
  options,
88
88
  fromActivityDate,
89
89
  page + 1,
90
- [...activities, ...this.models]
90
+ [...activities, ...this.models],
91
91
  );
92
92
  });
93
93
  },
@@ -111,7 +111,7 @@ export const ActivityCollection = BaseCollection.extend(
111
111
 
112
112
  return BaseCollection.prototype.fetch.apply(this, arguments);
113
113
  },
114
- }
114
+ },
115
115
  );
116
116
 
117
117
  register("ActivityCollection", ActivityCollection);
@@ -26,7 +26,7 @@ export const AdjunctSectionCollection = BaseCollection.extend(
26
26
  },
27
27
  });
28
28
  },
29
- }
29
+ },
30
30
  );
31
31
 
32
32
  register("AdjunctSectionCollection", AdjunctSectionCollection);
@@ -26,7 +26,7 @@ export const AdjunctSlideCollection = BaseCollection.extend(
26
26
  },
27
27
  });
28
28
  },
29
- }
29
+ },
30
30
  );
31
31
 
32
32
  register("AdjunctSlideCollection", AdjunctSlideCollection);
@@ -13,7 +13,7 @@ export const AdjunctSubSlideCollection = BaseCollection.extend(
13
13
  /** @lends collections.AdjunctSubSlideCollection# */ {
14
14
  comparator: "sequence",
15
15
  model: "AdjunctSubSlideModel",
16
- }
16
+ },
17
17
  );
18
18
 
19
19
  register("AdjunctSubSlideCollection", AdjunctSubSlideCollection);
@@ -12,7 +12,7 @@ import { register } from "../state-register.js";
12
12
  export const AppointmentAdjunctTagsCollection = BaseCollection.extend(
13
13
  /** @lends collections.AppointmentAdjunctTagsCollection# */ {
14
14
  model: "AppointmentAdjunctTagsModel",
15
- }
15
+ },
16
16
  );
17
17
 
18
18
  register("AppointmentAdjunctTagsCollection", AppointmentAdjunctTagsCollection);
@@ -12,10 +12,10 @@ import { register } from "../state-register.js";
12
12
  export const AppointmentDeckVersionTagsCollection = BaseCollection.extend(
13
13
  /** @lends collections.AppointmentDeckVersionTagsCollection# */ {
14
14
  model: "AppointmentDeckVersionTagsModel",
15
- }
15
+ },
16
16
  );
17
17
 
18
18
  register(
19
19
  "AppointmentDeckVersionTagsCollection",
20
- AppointmentDeckVersionTagsCollection
20
+ AppointmentDeckVersionTagsCollection,
21
21
  );
@@ -13,7 +13,7 @@ export const AppointmentDuplicateCollection = BaseCollection.extend(
13
13
  /** @lends collections.AppointmentDuplicateCollection# */ {
14
14
  comparator: "sequence",
15
15
  model: "AppointmentDuplicateModel",
16
- }
16
+ },
17
17
  );
18
18
 
19
19
  register("AppointmentDuplicateCollection", AppointmentDuplicateCollection);
@@ -20,7 +20,7 @@ export const AppointmentEditorCollection = BaseCollection.extend(
20
20
 
21
21
  return BaseCollection.prototype.url.call(this);
22
22
  },
23
- }
23
+ },
24
24
  );
25
25
 
26
26
  register("AppointmentEditorCollection", AppointmentEditorCollection);
@@ -12,7 +12,7 @@ import { register } from "../state-register.js";
12
12
  export const AppointmentSectionTagsCollection = BaseCollection.extend(
13
13
  /** @lends collections.AppointmentSectionTagsCollection# */ {
14
14
  model: "AppointmentSectionTagsModel",
15
- }
15
+ },
16
16
  );
17
17
 
18
18
  register("AppointmentSectionTagsCollection", AppointmentSectionTagsCollection);
@@ -12,7 +12,7 @@ import { register } from "../state-register.js";
12
12
  export const AppointmentSlideTagsCollection = BaseCollection.extend(
13
13
  /** @lends collections.AppointmentSlideTagsCollection# */ {
14
14
  model: "AppointmentSlideTagsModel",
15
- }
15
+ },
16
16
  );
17
17
 
18
18
  register("AppointmentSlideTagsCollection", AppointmentSlideTagsCollection);
@@ -80,23 +80,23 @@ export const AppointmentTagsCollection = BaseCollection.extend(
80
80
 
81
81
  if (!hasAppointment) {
82
82
  throw new Error(
83
- "Requires an appointment model in collection options to fetch."
83
+ "Requires an appointment model in collection options to fetch.",
84
84
  );
85
85
  }
86
86
 
87
87
  const tagModels = Object.values(this.tagNameCollectionMapping);
88
88
  // Fetch all the separate tag models and combine them into a single collection
89
- const results = (
90
- await Promise.all(
91
- tagModels.map((tagModel) => {
92
- const Collection = getState(tagModel);
93
- const tags = new Collection({}, this._options);
94
- return tags.fetch(options);
95
- })
96
- )
97
- )
98
- .flatMap((collection) => collection.results)
99
- .map(this._mapResultsToModel.bind(this));
89
+ const results = _.compact(
90
+ (
91
+ await Promise.all(
92
+ tagModels.map((tagModel) => {
93
+ const Collection = getState(tagModel);
94
+ const tags = new Collection({}, this._options);
95
+ return tags.fetch(options);
96
+ }),
97
+ )
98
+ ).flatMap((collection) => collection.results),
99
+ ).map(this._mapResultsToModel.bind(this));
100
100
 
101
101
  this.add(results);
102
102
 
@@ -119,16 +119,18 @@ export const AppointmentTagsCollection = BaseCollection.extend(
119
119
  ];
120
120
 
121
121
  // flatMap currently doesn't work in TelePresenter
122
- const results = _.flatten(
123
- tagCollectionNames.map((collectionName) => {
124
- const collection = appointment[collectionName];
125
- return collection?._data || [];
126
- })
122
+ const results = _.compact(
123
+ _.flatten(
124
+ tagCollectionNames.map((collectionName) => {
125
+ const collection = appointment[collectionName];
126
+ return collection?._data || [];
127
+ }),
128
+ ),
127
129
  ).map(this._mapResultsToModel.bind(this));
128
130
 
129
131
  this.add(results);
130
132
  },
131
- }
133
+ },
132
134
  );
133
135
 
134
136
  AppointmentTagsCollection.canBeEmpty = true;
@@ -0,0 +1,26 @@
1
+ import "../models/appointment-template.js";
2
+
3
+ import { BaseCollection } from "./base.js";
4
+ import { register } from "../state-register.js";
5
+
6
+ /**
7
+ * @constructor
8
+ * @alias collections.AppointmentTemplateCollection
9
+ * @extends collections.BaseCollection
10
+ * @see models.AppointmentTemplateModel
11
+ */
12
+ export const AppointmentTemplateCollection = BaseCollection.extend(
13
+ /** @lends collections.AppointmentTemplateCollection# */ {
14
+ comparator: "sequence",
15
+ model: "AppointmentTemplateModel",
16
+ url() {
17
+ if (!this._url && this.parent) {
18
+ this._options.appointment = this.parent;
19
+ }
20
+
21
+ return BaseCollection.prototype.url.call(this);
22
+ },
23
+ },
24
+ );
25
+
26
+ register("AppointmentTemplateCollection", AppointmentTemplateCollection);
@@ -29,7 +29,7 @@ export const AppointmentCollection = BaseCollection.extend(
29
29
  `);
30
30
  return AppointmentCollection.monthParametersForUser.apply(
31
31
  null,
32
- arguments
32
+ arguments,
33
33
  );
34
34
  },
35
35
 
@@ -42,14 +42,14 @@ export const AppointmentCollection = BaseCollection.extend(
42
42
  fetchMonthForUser(
43
43
  date = moment.now(),
44
44
  options = {},
45
- userID = Auth.user.id
45
+ userID = Auth.user.id,
46
46
  ) {
47
47
  return this.fetch({
48
48
  ...options,
49
49
  data: AppointmentCollection.monthParametersForUser(
50
50
  date,
51
51
  userID,
52
- "sort"
52
+ "sort",
53
53
  ),
54
54
  });
55
55
  },
@@ -57,14 +57,14 @@ export const AppointmentCollection = BaseCollection.extend(
57
57
  fetchFortnightForUser(
58
58
  date = moment.now(),
59
59
  options = {},
60
- userID = Auth.user.id
60
+ userID = Auth.user.id,
61
61
  ) {
62
62
  return this.fetch({
63
63
  ...options,
64
64
  data: AppointmentCollection.fortnightParametersForUser(
65
65
  date,
66
66
  userID,
67
- "sort"
67
+ "sort",
68
68
  ),
69
69
  });
70
70
  },
@@ -80,11 +80,11 @@ export const AppointmentCollection = BaseCollection.extend(
80
80
  data: AppointmentCollection.monthParametersForUser(
81
81
  date,
82
82
  userID,
83
- "created"
83
+ "created",
84
84
  ),
85
85
  });
86
86
  },
87
- }
87
+ },
88
88
  );
89
89
 
90
90
  /**
@@ -99,7 +99,7 @@ export const AppointmentCollection = BaseCollection.extend(
99
99
  AppointmentCollection.fortnightParametersForUser = function (
100
100
  date,
101
101
  userID = Auth.user.id,
102
- parameter = "sort"
102
+ parameter = "sort",
103
103
  ) {
104
104
  const dateFrom = moment(date).subtract(1, "week").format();
105
105
  const dateTo = moment(date).add(1, "week").format();
@@ -128,7 +128,7 @@ AppointmentCollection.fortnightParametersForUser = function (
128
128
  AppointmentCollection.monthParametersForUser = function (
129
129
  date,
130
130
  userID = Auth.user.id,
131
- parameter = "sort"
131
+ parameter = "sort",
132
132
  ) {
133
133
  const dateFrom = moment(date).startOf("month").format();
134
134
  const dateTo = moment(date).endOf("month").format();
@@ -12,7 +12,7 @@ import { register } from "../state-register.js";
12
12
  export const AssetCollection = BaseCollection.extend(
13
13
  /** @lends collections.AssetCollection# */ {
14
14
  model: "AssetModel",
15
- }
15
+ },
16
16
  );
17
17
 
18
18
  register("AssetCollection", AssetCollection);
@@ -44,7 +44,7 @@ export const AutoAdjunctCollection = BaseCollection.extend(
44
44
 
45
45
  return BaseCollection.prototype.fetch.call(this, opts);
46
46
  },
47
- }
47
+ },
48
48
  );
49
49
 
50
50
  register("AutoAdjunctCollection", AutoAdjunctCollection);