@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/models/tenancy.js"],"names":["TenancyModel","BaseModel","extend","modelName","props","name","brand_color","brand_colour","logo_original","logo_cropped","logo_128","logo_256","logo_512","colour_palette_key","tint_type","logo_background_colour","billing_frequency","is_default","status_set","type","default","children","administrator"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,YAAY,GAAGC,gBAAUC,MAAV;AAC3B;AAAmC;AAClCC,EAAAA,SAAS,EAAE,WADuB;;AAGlC;AACF;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,IAAI,EAAE,QADA;AAEN;AACAC,IAAAA,WAAW,EAAE,QAHP;AAINC,IAAAA,YAAY,EAAE,QAJR;AAKNC,IAAAA,aAAa,EAAE,QALT;AAMNC,IAAAA,YAAY,EAAE,QANR;AAONC,IAAAA,QAAQ,EAAE,QAPJ;AAQNC,IAAAA,QAAQ,EAAE,QARJ;AASNC,IAAAA,QAAQ,EAAE,QATJ;AAUNC,IAAAA,kBAAkB,EAAE,QAVd;AAWNC,IAAAA,SAAS,EAAE,QAXL;AAYNC,IAAAA,sBAAsB,EAAE,QAZlB;AAaNC,IAAAA,iBAAiB,EAAE,QAbb;AAcNC,IAAAA,UAAU,EAAE,SAdN;AAeNC,IAAAA,UAAU,EAAE;AACXC,MAAAA,IAAI,EAAE,OADK;AAEXC,MAAAA,OAAO,EAAE;AAAA,eAAM,EAAN;AAAA;AAFE;AAfN,GAP2B;;AA4BlC;AACF;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,aAAa,EAAE;AADN;AA/BwB,CADR,CAArB;;;AAsCP,6BAAS,cAAT,EAAyBtB,YAAzB","sourcesContent":["import \"./user.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TenancyModel\n * @extends models.BaseModel\n */\nexport const TenancyModel = BaseModel.extend(\n\t/** @lends models.TenancyModel# */ {\n\t\tmodelName: \"tenancies\",\n\n\t\t/**\n\t\t * @property {string[]} eventtag_set\n\t\t * @property {date} timestamp\n\t\t */\n\t\tprops: {\n\t\t\tname: \"string\",\n\t\t\t// FIXME: This will eventually be removed!\n\t\t\tbrand_color: \"string\",\n\t\t\tbrand_colour: \"string\",\n\t\t\tlogo_original: \"string\",\n\t\t\tlogo_cropped: \"string\",\n\t\t\tlogo_128: \"string\",\n\t\t\tlogo_256: \"string\",\n\t\t\tlogo_512: \"string\",\n\t\t\tcolour_palette_key: \"string\",\n\t\t\ttint_type: \"string\",\n\t\t\tlogo_background_colour: \"string\",\n\t\t\tbilling_frequency: \"string\",\n\t\t\tis_default: \"boolean\",\n\t\t\tstatus_set: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tdefault: () => [],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tadministrator: \"UserModel\",\n\t\t},\n\t}\n);\n\nregister(\"TenancyModel\", TenancyModel);\n"],"file":"tenancy.js"}
1
+ {"version":3,"file":"tenancy.js","names":["require","_base","_stateRegister","TenancyModel","exports","BaseModel","extend","modelName","detailType","props","name","brand_color","brand_colour","logo_original","logo_cropped","logo_128","logo_256","logo_512","colour_palette_key","tint_type","logo_background_colour","billing_frequency","is_default","eula_key","eula_url","status_set","type","default","_default","children","administrator","register"],"sources":["../../src/models/tenancy.js"],"sourcesContent":["import \"./user.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TenancyModel\n * @extends models.BaseModel\n */\nexport const TenancyModel = BaseModel.extend(\n\t/** @lends models.TenancyModel# */ {\n\t\tmodelName: \"tenancies\",\n\t\tdetailType: \"uuid\",\n\n\t\t/**\n\t\t * @property {string[]} eventtag_set\n\t\t * @property {date} timestamp\n\t\t */\n\t\tprops: {\n\t\t\tname: \"string\",\n\t\t\t// FIXME: This will eventually be removed!\n\t\t\tbrand_color: \"string\",\n\t\t\tbrand_colour: \"string\",\n\t\t\tlogo_original: \"string\",\n\t\t\tlogo_cropped: \"string\",\n\t\t\tlogo_128: \"string\",\n\t\t\tlogo_256: \"string\",\n\t\t\tlogo_512: \"string\",\n\t\t\tcolour_palette_key: \"string\",\n\t\t\ttint_type: \"string\",\n\t\t\tlogo_background_colour: \"string\",\n\t\t\tbilling_frequency: \"string\",\n\t\t\tis_default: \"boolean\",\n\t\t\teula_key: \"string\",\n\t\t\teula_url: \"string\",\n\t\t\tstatus_set: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tdefault: () => [],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tadministrator: \"UserModel\",\n\t\t},\n\t},\n);\n\nregister(\"TenancyModel\", TenancyModel);\n"],"mappings":";;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMG,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,eAAS,CAACC,MAAM,EAC3C,kCAAmC;EAClCC,SAAS,EAAE,WAAW;EACtBC,UAAU,EAAE,MAAM;EAElB;AACF;AACA;AACA;EACEC,KAAK,EAAE;IACNC,IAAI,EAAE,QAAQ;IACd;IACAC,WAAW,EAAE,QAAQ;IACrBC,YAAY,EAAE,QAAQ;IACtBC,aAAa,EAAE,QAAQ;IACvBC,YAAY,EAAE,QAAQ;IACtBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,QAAQ;IAClBC,kBAAkB,EAAE,QAAQ;IAC5BC,SAAS,EAAE,QAAQ;IACnBC,sBAAsB,EAAE,QAAQ;IAChCC,iBAAiB,EAAE,QAAQ;IAC3BC,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,QAAQ;IAClBC,UAAU,EAAE;MACXC,IAAI,EAAE,OAAO;MACbC,OAAO,EAAE,SAAAC,SAAA;QAAA,OAAM,EAAE;MAAA;IAClB;EACD,CAAC;EAED;AACF;AACA;EACEC,QAAQ,EAAE;IACTC,aAAa,EAAE;EAChB;AACD,CACD,CAAC;AAED,IAAAC,uBAAQ,EAAC,cAAc,EAAE5B,YAAY,CAAC"}
@@ -1,48 +1,28 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.TimingLogModel = void 0;
9
-
10
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
-
12
9
  require("./appointment.js");
13
-
14
10
  require("./hosted-preso.js");
15
-
16
11
  require("./user.js");
17
-
18
12
  require("../collections/users.js");
19
-
20
13
  var _utils = require("../utils.js");
21
-
22
14
  var _auth = require("../auth.js");
23
-
24
15
  var _base = require("./base.js");
25
-
26
16
  var _lodash = _interopRequireDefault(require("lodash"));
27
-
28
17
  var _dedentJs = _interopRequireDefault(require("dedent-js"));
29
-
30
18
  var _log = _interopRequireDefault(require("../log.js"));
31
-
32
19
  var _moment = _interopRequireDefault(require("moment"));
33
-
34
20
  var _stateRegister = require("../state-register.js");
35
-
36
21
  var _superagent = _interopRequireDefault(require("superagent"));
37
-
38
22
  var _templateObject, _templateObject2;
39
-
40
23
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
41
-
42
24
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
43
-
44
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
45
-
25
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
46
26
  /**
47
27
  * @typedef Event
48
28
  * @type {object}
@@ -79,11 +59,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
79
59
  * @alias models.TimingLogModel
80
60
  * @extends models.BaseModel
81
61
  */
82
- var TimingLogModel = _base.BaseModel.extend(
83
- /** @lends models.TimingLogModel# */
84
- {
62
+ var TimingLogModel = exports.TimingLogModel = _base.BaseModel.extend( /** @lends models.TimingLogModel# */{
85
63
  modelName: "timinglogs",
86
-
87
64
  /**
88
65
  * @property {date} begin
89
66
  * @property {date} end
@@ -116,14 +93,17 @@ var TimingLogModel = _base.BaseModel.extend(
116
93
  default: function _default() {
117
94
  return "view";
118
95
  },
119
- values: [// A salesperson has presented a preso
120
- "present", // A customer has viewed an online preso
121
- "view", // A prep user or salesperson as prepared a preso
122
- "prep", // A salesperson has reviewed an old preso
96
+ values: [
97
+ // A salesperson has presented a preso
98
+ "present",
99
+ // A customer has viewed an online preso
100
+ "view",
101
+ // A prep user or salesperson as prepared a preso
102
+ "prep",
103
+ // A salesperson has reviewed an old preso
123
104
  "review"]
124
105
  }
125
106
  },
126
-
127
107
  /**
128
108
  * @property {models.AppointmentModel} appointment
129
109
  * @property {models.UserModel} user
@@ -133,7 +113,6 @@ var TimingLogModel = _base.BaseModel.extend(
133
113
  hostedPreso: "HostedPresoModel",
134
114
  user: "UserModel"
135
115
  },
136
-
137
116
  /**
138
117
  * @property {collections.UserCollection} attendee_set
139
118
  * @property {collections.UserCollection} remote_attendee_set
@@ -142,7 +121,6 @@ var TimingLogModel = _base.BaseModel.extend(
142
121
  attendee_set: "UserCollection",
143
122
  remote_attendee_set: "UserCollection"
144
123
  },
145
-
146
124
  /**
147
125
  * Returns the current timing log model in expected compact format.
148
126
  * @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation
@@ -150,17 +128,15 @@ var TimingLogModel = _base.BaseModel.extend(
150
128
  */
151
129
  toCompactFormat: function toCompactFormat() {
152
130
  var _this = this;
153
-
154
131
  var user = (0, _utils.getShortURL)(this.user.url());
155
- var url = (0, _utils.getShortURL)(this.hostedPreso ? this.hostedPreso.url() : this.appointment.url()); // At this point, the expected output should have a space instead of a T in this
132
+ var url = (0, _utils.getShortURL)(this.hostedPreso ? this.hostedPreso.url() : this.appointment.url());
133
+ // At this point, the expected output should have a space instead of a T in this
156
134
  // date format.
135
+ var begin = _moment.default.utc(this.begin).format(_utils.DATE_FORMAT);
157
136
 
158
- var begin = _moment.default.utc(this.begin).format(_utils.DATE_FORMAT); // Strip out all unfocused events from the start (including any that are
137
+ // Strip out all unfocused events from the start (including any that are
159
138
  // in a row), as these will throw errors server side.
160
-
161
-
162
139
  var startIndex = 0;
163
-
164
140
  for (var i = 0; i < this.events.length; i++) {
165
141
  if (this.events[i].is_unfocused) {
166
142
  startIndex = i + 1;
@@ -168,19 +144,15 @@ var TimingLogModel = _base.BaseModel.extend(
168
144
  break;
169
145
  }
170
146
  }
171
-
172
147
  var events = this.events.slice(startIndex).map(function (_ref) {
173
148
  var timestamp = _ref.timestamp,
174
- path = _ref.path,
175
- isUnfocused = _ref.is_unfocused;
149
+ path = _ref.path,
150
+ isUnfocused = _ref.is_unfocused;
176
151
  var millis = (0, _moment.default)(timestamp).diff((0, _moment.default)(_this.begin), "millis");
177
-
178
152
  if (isUnfocused) {
179
153
  var duration = _moment.default.utc(timestamp).diff(_moment.default.utc(begin), "milliseconds");
180
-
181
154
  return "".concat(duration, "ms unfocused");
182
155
  }
183
-
184
156
  return "".concat(millis, "ms ").concat((0, _utils.getShortURL)(path));
185
157
  });
186
158
  var attendeeSet = this.attendee_set && this.attendee_set.length ? "\n".concat(this.attendee_set.map(function (attendee) {
@@ -195,26 +167,21 @@ var TimingLogModel = _base.BaseModel.extend(
195
167
  prep: "preparing",
196
168
  review: "reviewing"
197
169
  };
198
- var modeType = modeTypeMap[this.mode]; // Note the newline is required at the end for the parser
199
- // to understand this
170
+ var modeType = modeTypeMap[this.mode];
200
171
 
172
+ // Note the newline is required at the end for the parser
173
+ // to understand this
201
174
  var compact = (0, _dedentJs.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t", " ", " ", "", "", "\n\t\t\t", "\n\t\t\t", "\n\n\t\t"], ["\n\t\t\t", " ", " ", "", "", "\n\t\t\t", "\n\t\t\t", "\\n\n\t\t"])), user, modeType, url, attendeeSet, remoteAttendeeSet, begin, events.join("\n"));
202
-
203
175
  if (this.end) {
204
176
  var end = _moment.default.utc(this.end).format(_utils.DATE_FORMAT);
205
-
206
177
  compact += end;
207
-
208
178
  if (this.provisional) {
209
179
  compact += " provisional";
210
180
  }
211
-
212
181
  compact += "\n";
213
182
  }
214
-
215
183
  return compact;
216
184
  },
217
-
218
185
  /**
219
186
  * Add a new event to the log
220
187
  * @param {string} path - URL path. Matches a deck related endpoint (deckversion, section, slide. etc.)
@@ -228,20 +195,15 @@ var TimingLogModel = _base.BaseModel.extend(
228
195
  if (!path) {
229
196
  throw new Error("A path is required");
230
197
  }
231
-
232
198
  if (!timestamp) {
233
199
  throw new Error("A timestamp is required");
234
200
  }
235
-
236
201
  var time = _moment.default.utc(timestamp);
237
-
238
202
  var isUnfocused = path === "unfocused";
239
-
240
203
  if (isUnfocused) {
241
204
  if (!this.events.length) {
242
205
  return;
243
206
  }
244
-
245
207
  for (var i = this.events.length - 1; i >= 0; i--) {
246
208
  if (!this.events[i].is_unfocused) {
247
209
  path = this.events[i].path;
@@ -249,7 +211,6 @@ var TimingLogModel = _base.BaseModel.extend(
249
211
  }
250
212
  }
251
213
  }
252
-
253
214
  this.events.push({
254
215
  timestamp: time.format(_utils.DATE_FORMAT_T),
255
216
  path: path,
@@ -259,19 +220,15 @@ var TimingLogModel = _base.BaseModel.extend(
259
220
  checkEventsAscending: function checkEventsAscending() {
260
221
  var lastDate = null;
261
222
  var sortEvents = false;
262
-
263
223
  var _iterator = _createForOfIteratorHelper(this.events),
264
- _step;
265
-
224
+ _step;
266
225
  try {
267
226
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
268
227
  var event = _step.value;
269
228
  var timestamp = (0, _moment.default)(event.timestamp);
270
-
271
229
  if (lastDate && lastDate.isAfter(timestamp)) {
272
230
  sortEvents = true;
273
231
  }
274
-
275
232
  lastDate = timestamp;
276
233
  }
277
234
  } catch (err) {
@@ -279,16 +236,13 @@ var TimingLogModel = _base.BaseModel.extend(
279
236
  } finally {
280
237
  _iterator.f();
281
238
  }
282
-
283
239
  if (sortEvents) {
284
240
  var events = this.events.map(function (_ref2) {
285
241
  var timestamp = _ref2.timestamp,
286
- path = _ref2.path;
242
+ path = _ref2.path;
287
243
  return "".concat(timestamp, " ").concat((0, _utils.getShortURL)(path));
288
244
  });
289
-
290
245
  _log.default.warn((0, _dedentJs.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\tEvents must be in ascending order. Instead we found:\n\n\t\t\t\t\t", " - begin\n\t\t\t\t\t", "\n\t\t\t\t\t", " - end\n\t\t\t\t"])), this.begin, events.join("\n"), this.end));
291
-
292
246
  this.sortEvents();
293
247
  }
294
248
  },
@@ -297,50 +251,39 @@ var TimingLogModel = _base.BaseModel.extend(
297
251
  sortEvents: function sortEvents() {
298
252
  this.events.sort(function (event1, event2) {
299
253
  var diff = (0, _moment.default)(event2.timestamp).diff((0, _moment.default)(event1.timestamp));
300
-
301
254
  if (diff > 0) {
302
255
  return -1;
303
256
  } else if (diff < 0) {
304
257
  return 1;
305
258
  }
306
-
307
259
  return 0;
308
260
  });
309
261
  },
310
262
  save: function save(data, options) {
311
263
  var _this2 = this;
312
-
313
264
  if (!this.events.length) {
314
265
  return Promise.resolve(this.toJSON());
315
266
  }
316
-
317
267
  if (options && options.patch) {
318
268
  return _base.BaseModel.prototype.save.call(this, data, options);
319
269
  }
320
-
321
270
  this.checkEventsAscending();
322
271
  var method = this.isNew() ? "post" : "put";
323
272
  return _superagent.default[method](this.url()).set(_auth.Auth.headers).type("application/vnd.salespreso+timinglog").send(this.toCompactFormat()).then(function (_ref3) {
324
273
  var body = _ref3.body;
325
-
326
274
  _this2.set(_lodash.default.omit(body, ["events"]));
327
-
328
275
  return body;
329
276
  }).catch(_superagent.default.SuperagentPromiseError, function (e) {
330
277
  if (e.status === 405 && e.res.body.detail.indexOf("end") > -1) {
331
278
  // Don't send timing log events if the tracking is ended.
332
279
  throw e;
333
280
  }
334
-
335
281
  if (e.status >= 400 && e.status <= 499 || e.status === 503) {
336
282
  e.message += "\nBody: ".concat(JSON.stringify(e.res.body));
337
283
  }
338
-
339
284
  throw e;
340
285
  });
341
286
  }
342
287
  });
343
-
344
- exports.TimingLogModel = TimingLogModel;
345
288
  (0, _stateRegister.register)("TimingLogModel", TimingLogModel);
346
289
  //# sourceMappingURL=timing-log.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/timing-log.js"],"names":["TimingLogModel","BaseModel","extend","modelName","props","begin","type","required","end","events","default","created_date","modified_date","provisional","mode","values","children","appointment","hostedPreso","user","collections","attendee_set","remote_attendee_set","toCompactFormat","url","moment","utc","format","DATE_FORMAT","startIndex","i","length","is_unfocused","slice","map","timestamp","path","isUnfocused","millis","diff","duration","attendeeSet","attendee","join","remoteAttendeeSet","modeTypeMap","present","view","prep","review","modeType","compact","dedent","addEvent","Error","time","push","DATE_FORMAT_T","checkEventsAscending","lastDate","sortEvents","event","isAfter","log","warn","sort","event1","event2","save","data","options","Promise","resolve","toJSON","patch","prototype","call","method","isNew","superagent","set","Auth","headers","send","then","body","_","omit","catch","SuperagentPromiseError","e","status","res","detail","indexOf","message","JSON","stringify"],"mappings":"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","sourcesContent":["import \"./appointment.js\";\nimport \"./hosted-preso.js\";\nimport \"./user.js\";\nimport \"../collections/users.js\";\n\nimport { DATE_FORMAT, DATE_FORMAT_T } from \"../utils.js\";\n\nimport { Auth } from \"../auth.js\";\nimport { BaseModel } from \"./base.js\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport { getShortURL } from \"../utils.js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\nimport superagent from \"superagent\";\n\n/**\n * @typedef Event\n * @type {object}\n * @property {string} path\n * @property {date} timestamp\n * @example\n * {\n *\t\"path\": \"https://client.salespreso.com/api/deckversions/4/\",\n *\t\"timestamp\": \"2016-10-27T00:42:47.045186Z\",\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/sections/28/\",\n * \t\"timestamp\": \"2016-10-27T00:43:59.430102Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/380/\",\n * \t\"timestamp\": \"2016-10-27T00:45:01.038661Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/378/\",\n * \t\"timestamp\": \"2016-10-27T00:45:13.495713Z\"\n *\t\"is_unfocused\": false,\n * }\n */\n\n/**\n * @constructor\n * @alias models.TimingLogModel\n * @extends models.BaseModel\n */\nexport const TimingLogModel = BaseModel.extend(\n\t/** @lends models.TimingLogModel# */ {\n\t\tmodelName: \"timinglogs\",\n\n\t\t/**\n\t\t * @property {date} begin\n\t\t * @property {date} end\n\t\t * @property {Event[]} events\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t */\n\t\tprops: {\n\t\t\tbegin: { type: \"date\", required: true },\n\t\t\tend: \"date\",\n\t\t\tevents: { type: \"array\", default: () => [] },\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tprovisional: { type: \"boolean\", default: () => true },\n\t\t\tmode: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: () => \"view\",\n\t\t\t\tvalues: [\n\t\t\t\t\t// A salesperson has presented a preso\n\t\t\t\t\t\"present\",\n\t\t\t\t\t// A customer has viewed an online preso\n\t\t\t\t\t\"view\",\n\t\t\t\t\t// A prep user or salesperson as prepared a preso\n\t\t\t\t\t\"prep\",\n\t\t\t\t\t// A salesperson has reviewed an old preso\n\t\t\t\t\t\"review\",\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AppointmentModel} appointment\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tappointment: \"AppointmentModel\",\n\t\t\thostedPreso: \"HostedPresoModel\",\n\t\t\tuser: \"UserModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.UserCollection} attendee_set\n\t\t * @property {collections.UserCollection} remote_attendee_set\n\t\t */\n\t\tcollections: {\n\t\t\tattendee_set: \"UserCollection\",\n\t\t\tremote_attendee_set: \"UserCollection\",\n\t\t},\n\n\t\t/**\n\t\t * Returns the current timing log model in expected compact format.\n\t\t * @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation\n\t\t * @returns {string}\n\t\t */\n\t\ttoCompactFormat() {\n\t\t\tconst user = getShortURL(this.user.url());\n\n\t\t\tconst url = getShortURL(\n\t\t\t\tthis.hostedPreso ? this.hostedPreso.url() : this.appointment.url()\n\t\t\t);\n\t\t\t// At this point, the expected output should have a space instead of a T in this\n\t\t\t// date format.\n\t\t\tconst begin = moment.utc(this.begin).format(DATE_FORMAT);\n\n\t\t\t// Strip out all unfocused events from the start (including any that are\n\t\t\t// in a row), as these will throw errors server side.\n\t\t\tlet startIndex = 0;\n\t\t\tfor (let i = 0; i < this.events.length; i++) {\n\t\t\t\tif (this.events[i].is_unfocused) {\n\t\t\t\t\tstartIndex = i + 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst events = this.events\n\t\t\t\t.slice(startIndex)\n\t\t\t\t.map(({ timestamp, path, is_unfocused: isUnfocused }) => {\n\t\t\t\t\tconst millis = moment(timestamp).diff(moment(this.begin), \"millis\");\n\n\t\t\t\t\tif (isUnfocused) {\n\t\t\t\t\t\tconst duration = moment\n\t\t\t\t\t\t\t.utc(timestamp)\n\t\t\t\t\t\t\t.diff(moment.utc(begin), \"milliseconds\");\n\n\t\t\t\t\t\treturn `${duration}ms unfocused`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `${millis}ms ${getShortURL(path)}`;\n\t\t\t\t});\n\n\t\t\tconst attendeeSet =\n\t\t\t\tthis.attendee_set && this.attendee_set.length\n\t\t\t\t\t? `\\n${this.attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst remoteAttendeeSet =\n\t\t\t\tthis.remote_attendee_set && this.remote_attendee_set.length\n\t\t\t\t\t? `\\n${this.remote_attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending remotely`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst modeTypeMap = {\n\t\t\t\tpresent: \"viewing\",\n\t\t\t\tview: \"viewing\",\n\t\t\t\tprep: \"preparing\",\n\t\t\t\treview: \"reviewing\",\n\t\t\t};\n\n\t\t\tconst modeType = modeTypeMap[this.mode];\n\n\t\t\t// Note the newline is required at the end for the parser\n\t\t\t// to understand this\n\t\t\tlet compact = dedent`\n\t\t\t${user} ${modeType} ${url}${attendeeSet}${remoteAttendeeSet}\n\t\t\t${begin}\n\t\t\t${events.join(\"\\n\")}\\n\n\t\t`;\n\n\t\t\tif (this.end) {\n\t\t\t\tconst end = moment.utc(this.end).format(DATE_FORMAT);\n\t\t\t\tcompact += end;\n\t\t\t\tif (this.provisional) {\n\t\t\t\t\tcompact += \" provisional\";\n\t\t\t\t}\n\t\t\t\tcompact += \"\\n\";\n\t\t\t}\n\n\t\t\treturn compact;\n\t\t},\n\n\t\t/**\n\t\t * Add a new event to the log\n\t\t * @param {string} path - URL path. Matches a deck related endpoint (deckversion, section, slide. etc.)\n\t\t * @param {any} timestamp - A timestamp for the event - note that it can be anything that can be passed to moment\n\t\t * @example\n\t\t * const timingLog = new TimingLogModel();\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/sections/28/\", moment());\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/slides/100/\", \"2016-10-27T00:42:47.045186Z\");\n\t\t */\n\t\taddEvent(path, timestamp) {\n\t\t\tif (!path) {\n\t\t\t\tthrow new Error(\"A path is required\");\n\t\t\t}\n\t\t\tif (!timestamp) {\n\t\t\t\tthrow new Error(\"A timestamp is required\");\n\t\t\t}\n\n\t\t\tconst time = moment.utc(timestamp);\n\t\t\tconst isUnfocused = path === \"unfocused\";\n\n\t\t\tif (isUnfocused) {\n\t\t\t\tif (!this.events.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = this.events.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!this.events[i].is_unfocused) {\n\t\t\t\t\t\tpath = this.events[i].path;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.events.push({\n\t\t\t\ttimestamp: time.format(DATE_FORMAT_T),\n\t\t\t\tpath,\n\t\t\t\tis_unfocused: isUnfocused,\n\t\t\t});\n\t\t},\n\n\t\tcheckEventsAscending() {\n\t\t\tlet lastDate = null;\n\t\t\tlet sortEvents = false;\n\n\t\t\tfor (const event of this.events) {\n\t\t\t\tconst timestamp = moment(event.timestamp);\n\n\t\t\t\tif (lastDate && lastDate.isAfter(timestamp)) {\n\t\t\t\t\tsortEvents = true;\n\t\t\t\t}\n\n\t\t\t\tlastDate = timestamp;\n\t\t\t}\n\n\t\t\tif (sortEvents) {\n\t\t\t\tconst events = this.events.map(({ timestamp, path }) => {\n\t\t\t\t\treturn `${timestamp} ${getShortURL(path)}`;\n\t\t\t\t});\n\t\t\t\tlog.warn(dedent`\n\t\t\t\t\tEvents must be in ascending order. Instead we found:\n\n\t\t\t\t\t${this.begin} - begin\n\t\t\t\t\t${events.join(\"\\n\")}\n\t\t\t\t\t${this.end} - end\n\t\t\t\t`);\n\n\t\t\t\tthis.sortEvents();\n\t\t\t}\n\t\t},\n\n\t\t// We can't trust the server to give us events in the\n\t\t// correct order, so we sort them when necessary\n\t\tsortEvents() {\n\t\t\tthis.events.sort((event1, event2) => {\n\t\t\t\tconst diff = moment(event2.timestamp).diff(moment(event1.timestamp));\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (diff < 0) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t},\n\n\t\tsave(data, options) {\n\t\t\tif (!this.events.length) {\n\t\t\t\treturn Promise.resolve(this.toJSON());\n\t\t\t}\n\n\t\t\tif (options && options.patch) {\n\t\t\t\treturn BaseModel.prototype.save.call(this, data, options);\n\t\t\t}\n\n\t\t\tthis.checkEventsAscending();\n\n\t\t\tconst method = this.isNew() ? \"post\" : \"put\";\n\n\t\t\treturn superagent[method](this.url())\n\t\t\t\t.set(Auth.headers)\n\t\t\t\t.type(\"application/vnd.salespreso+timinglog\")\n\t\t\t\t.send(this.toCompactFormat())\n\t\t\t\t.then(({ body }) => {\n\t\t\t\t\tthis.set(_.omit(body, [\"events\"]));\n\t\t\t\t\treturn body;\n\t\t\t\t})\n\t\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\t\tif (e.status === 405 && e.res.body.detail.indexOf(\"end\") > -1) {\n\t\t\t\t\t\t// Don't send timing log events if the tracking is ended.\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((e.status >= 400 && e.status <= 499) || e.status === 503) {\n\t\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t},\n\t}\n);\n\nregister(\"TimingLogModel\", TimingLogModel);\n"],"file":"timing-log.js"}
1
+ {"version":3,"file":"timing-log.js","names":["require","_utils","_auth","_base","_lodash","_interopRequireDefault","_dedentJs","_log","_moment","_stateRegister","_superagent","_templateObject","_templateObject2","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","TimingLogModel","exports","BaseModel","extend","modelName","props","begin","type","required","end","events","default","_default","created_date","modified_date","provisional","mode","values","children","appointment","hostedPreso","user","collections","attendee_set","remote_attendee_set","toCompactFormat","_this","getShortURL","url","moment","utc","format","DATE_FORMAT","startIndex","is_unfocused","map","_ref","timestamp","path","isUnfocused","millis","diff","duration","concat","attendeeSet","attendee","join","remoteAttendeeSet","modeTypeMap","present","view","prep","review","modeType","compact","dedent","_taggedTemplateLiteral2","addEvent","Error","time","push","DATE_FORMAT_T","checkEventsAscending","lastDate","sortEvents","_iterator","_step","event","isAfter","_ref2","log","warn","sort","event1","event2","save","data","options","_this2","Promise","resolve","toJSON","patch","method","isNew","superagent","set","Auth","headers","send","then","_ref3","body","_","omit","catch","SuperagentPromiseError","status","res","detail","indexOf","message","JSON","stringify","register"],"sources":["../../src/models/timing-log.js"],"sourcesContent":["import \"./appointment.js\";\nimport \"./hosted-preso.js\";\nimport \"./user.js\";\nimport \"../collections/users.js\";\n\nimport { DATE_FORMAT, DATE_FORMAT_T } from \"../utils.js\";\n\nimport { Auth } from \"../auth.js\";\nimport { BaseModel } from \"./base.js\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport { getShortURL } from \"../utils.js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\nimport superagent from \"superagent\";\n\n/**\n * @typedef Event\n * @type {object}\n * @property {string} path\n * @property {date} timestamp\n * @example\n * {\n *\t\"path\": \"https://client.salespreso.com/api/deckversions/4/\",\n *\t\"timestamp\": \"2016-10-27T00:42:47.045186Z\",\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/sections/28/\",\n * \t\"timestamp\": \"2016-10-27T00:43:59.430102Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/380/\",\n * \t\"timestamp\": \"2016-10-27T00:45:01.038661Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/378/\",\n * \t\"timestamp\": \"2016-10-27T00:45:13.495713Z\"\n *\t\"is_unfocused\": false,\n * }\n */\n\n/**\n * @constructor\n * @alias models.TimingLogModel\n * @extends models.BaseModel\n */\nexport const TimingLogModel = BaseModel.extend(\n\t/** @lends models.TimingLogModel# */ {\n\t\tmodelName: \"timinglogs\",\n\n\t\t/**\n\t\t * @property {date} begin\n\t\t * @property {date} end\n\t\t * @property {Event[]} events\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t */\n\t\tprops: {\n\t\t\tbegin: { type: \"date\", required: true },\n\t\t\tend: \"date\",\n\t\t\tevents: { type: \"array\", default: () => [] },\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tprovisional: { type: \"boolean\", default: () => true },\n\t\t\tmode: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: () => \"view\",\n\t\t\t\tvalues: [\n\t\t\t\t\t// A salesperson has presented a preso\n\t\t\t\t\t\"present\",\n\t\t\t\t\t// A customer has viewed an online preso\n\t\t\t\t\t\"view\",\n\t\t\t\t\t// A prep user or salesperson as prepared a preso\n\t\t\t\t\t\"prep\",\n\t\t\t\t\t// A salesperson has reviewed an old preso\n\t\t\t\t\t\"review\",\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AppointmentModel} appointment\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tappointment: \"AppointmentModel\",\n\t\t\thostedPreso: \"HostedPresoModel\",\n\t\t\tuser: \"UserModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.UserCollection} attendee_set\n\t\t * @property {collections.UserCollection} remote_attendee_set\n\t\t */\n\t\tcollections: {\n\t\t\tattendee_set: \"UserCollection\",\n\t\t\tremote_attendee_set: \"UserCollection\",\n\t\t},\n\n\t\t/**\n\t\t * Returns the current timing log model in expected compact format.\n\t\t * @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation\n\t\t * @returns {string}\n\t\t */\n\t\ttoCompactFormat() {\n\t\t\tconst user = getShortURL(this.user.url());\n\n\t\t\tconst url = getShortURL(\n\t\t\t\tthis.hostedPreso ? this.hostedPreso.url() : this.appointment.url(),\n\t\t\t);\n\t\t\t// At this point, the expected output should have a space instead of a T in this\n\t\t\t// date format.\n\t\t\tconst begin = moment.utc(this.begin).format(DATE_FORMAT);\n\n\t\t\t// Strip out all unfocused events from the start (including any that are\n\t\t\t// in a row), as these will throw errors server side.\n\t\t\tlet startIndex = 0;\n\t\t\tfor (let i = 0; i < this.events.length; i++) {\n\t\t\t\tif (this.events[i].is_unfocused) {\n\t\t\t\t\tstartIndex = i + 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst events = this.events\n\t\t\t\t.slice(startIndex)\n\t\t\t\t.map(({ timestamp, path, is_unfocused: isUnfocused }) => {\n\t\t\t\t\tconst millis = moment(timestamp).diff(moment(this.begin), \"millis\");\n\n\t\t\t\t\tif (isUnfocused) {\n\t\t\t\t\t\tconst duration = moment\n\t\t\t\t\t\t\t.utc(timestamp)\n\t\t\t\t\t\t\t.diff(moment.utc(begin), \"milliseconds\");\n\n\t\t\t\t\t\treturn `${duration}ms unfocused`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `${millis}ms ${getShortURL(path)}`;\n\t\t\t\t});\n\n\t\t\tconst attendeeSet =\n\t\t\t\tthis.attendee_set && this.attendee_set.length\n\t\t\t\t\t? `\\n${this.attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst remoteAttendeeSet =\n\t\t\t\tthis.remote_attendee_set && this.remote_attendee_set.length\n\t\t\t\t\t? `\\n${this.remote_attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending remotely`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst modeTypeMap = {\n\t\t\t\tpresent: \"viewing\",\n\t\t\t\tview: \"viewing\",\n\t\t\t\tprep: \"preparing\",\n\t\t\t\treview: \"reviewing\",\n\t\t\t};\n\n\t\t\tconst modeType = modeTypeMap[this.mode];\n\n\t\t\t// Note the newline is required at the end for the parser\n\t\t\t// to understand this\n\t\t\tlet compact = dedent`\n\t\t\t${user} ${modeType} ${url}${attendeeSet}${remoteAttendeeSet}\n\t\t\t${begin}\n\t\t\t${events.join(\"\\n\")}\\n\n\t\t`;\n\n\t\t\tif (this.end) {\n\t\t\t\tconst end = moment.utc(this.end).format(DATE_FORMAT);\n\t\t\t\tcompact += end;\n\t\t\t\tif (this.provisional) {\n\t\t\t\t\tcompact += \" provisional\";\n\t\t\t\t}\n\t\t\t\tcompact += \"\\n\";\n\t\t\t}\n\n\t\t\treturn compact;\n\t\t},\n\n\t\t/**\n\t\t * Add a new event to the log\n\t\t * @param {string} path - URL path. Matches a deck related endpoint (deckversion, section, slide. etc.)\n\t\t * @param {any} timestamp - A timestamp for the event - note that it can be anything that can be passed to moment\n\t\t * @example\n\t\t * const timingLog = new TimingLogModel();\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/sections/28/\", moment());\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/slides/100/\", \"2016-10-27T00:42:47.045186Z\");\n\t\t */\n\t\taddEvent(path, timestamp) {\n\t\t\tif (!path) {\n\t\t\t\tthrow new Error(\"A path is required\");\n\t\t\t}\n\t\t\tif (!timestamp) {\n\t\t\t\tthrow new Error(\"A timestamp is required\");\n\t\t\t}\n\n\t\t\tconst time = moment.utc(timestamp);\n\t\t\tconst isUnfocused = path === \"unfocused\";\n\n\t\t\tif (isUnfocused) {\n\t\t\t\tif (!this.events.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = this.events.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!this.events[i].is_unfocused) {\n\t\t\t\t\t\tpath = this.events[i].path;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.events.push({\n\t\t\t\ttimestamp: time.format(DATE_FORMAT_T),\n\t\t\t\tpath,\n\t\t\t\tis_unfocused: isUnfocused,\n\t\t\t});\n\t\t},\n\n\t\tcheckEventsAscending() {\n\t\t\tlet lastDate = null;\n\t\t\tlet sortEvents = false;\n\n\t\t\tfor (const event of this.events) {\n\t\t\t\tconst timestamp = moment(event.timestamp);\n\n\t\t\t\tif (lastDate && lastDate.isAfter(timestamp)) {\n\t\t\t\t\tsortEvents = true;\n\t\t\t\t}\n\n\t\t\t\tlastDate = timestamp;\n\t\t\t}\n\n\t\t\tif (sortEvents) {\n\t\t\t\tconst events = this.events.map(({ timestamp, path }) => {\n\t\t\t\t\treturn `${timestamp} ${getShortURL(path)}`;\n\t\t\t\t});\n\t\t\t\tlog.warn(dedent`\n\t\t\t\t\tEvents must be in ascending order. Instead we found:\n\n\t\t\t\t\t${this.begin} - begin\n\t\t\t\t\t${events.join(\"\\n\")}\n\t\t\t\t\t${this.end} - end\n\t\t\t\t`);\n\n\t\t\t\tthis.sortEvents();\n\t\t\t}\n\t\t},\n\n\t\t// We can't trust the server to give us events in the\n\t\t// correct order, so we sort them when necessary\n\t\tsortEvents() {\n\t\t\tthis.events.sort((event1, event2) => {\n\t\t\t\tconst diff = moment(event2.timestamp).diff(moment(event1.timestamp));\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (diff < 0) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t},\n\n\t\tsave(data, options) {\n\t\t\tif (!this.events.length) {\n\t\t\t\treturn Promise.resolve(this.toJSON());\n\t\t\t}\n\n\t\t\tif (options && options.patch) {\n\t\t\t\treturn BaseModel.prototype.save.call(this, data, options);\n\t\t\t}\n\n\t\t\tthis.checkEventsAscending();\n\n\t\t\tconst method = this.isNew() ? \"post\" : \"put\";\n\n\t\t\treturn superagent[method](this.url())\n\t\t\t\t.set(Auth.headers)\n\t\t\t\t.type(\"application/vnd.salespreso+timinglog\")\n\t\t\t\t.send(this.toCompactFormat())\n\t\t\t\t.then(({ body }) => {\n\t\t\t\t\tthis.set(_.omit(body, [\"events\"]));\n\t\t\t\t\treturn body;\n\t\t\t\t})\n\t\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\t\tif (e.status === 405 && e.res.body.detail.indexOf(\"end\") > -1) {\n\t\t\t\t\t\t// Don't send timing log events if the tracking is ended.\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((e.status >= 400 && e.status <= 499) || e.status === 503) {\n\t\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t},\n\t},\n);\n\nregister(\"TimingLogModel\", TimingLogModel);\n"],"mappings":"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"}
@@ -1,23 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
6
-
7
5
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
-
9
6
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
-
11
7
  var _api = require("sp-test/api");
12
-
13
8
  var _timingLog = require("./timing-log.js");
14
-
15
9
  var _dedentJs = _interopRequireDefault(require("dedent-js"));
16
-
17
10
  var _moment = _interopRequireDefault(require("moment"));
18
-
19
11
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
20
-
21
12
  describe("TimingLogModel", function () {
22
13
  var events = [{
23
14
  path: "/api/deckversions/4/",
@@ -40,8 +31,9 @@ describe("TimingLogModel", function () {
40
31
  var TimingLogModel = (0, _api.G)("TimingLogModel");
41
32
  var timingLog = new TimingLogModel();
42
33
  var currentTime = "2016-10-27T00:42:47.044135Z";
43
- timingLog.addEvent("/api/sections/1/", currentTime); // Some precision in milliseconds is lost here
34
+ timingLog.addEvent("/api/sections/1/", currentTime);
44
35
 
36
+ // Some precision in milliseconds is lost here
45
37
  expect(timingLog.events[0].timestamp).toEqual("2016-10-27T00:42:47.044000Z");
46
38
  expect(timingLog.events[0].path).toEqual("/api/sections/1/");
47
39
  });
@@ -65,33 +57,28 @@ describe("TimingLogModel", function () {
65
57
  it("should show '".concat(modeType, "' when mode is ").concat(mode), /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
66
58
  var TimingLogModel, timingLog, actual, expected;
67
59
  return _regenerator.default.wrap(function _callee$(_context) {
68
- while (1) {
69
- switch (_context.prev = _context.next) {
70
- case 0:
71
- TimingLogModel = (0, _api.G)("TimingLogModel");
72
- timingLog = new TimingLogModel({
73
- appointment: {
74
- id: 20
75
- },
76
- user: {
77
- id: 9
78
- },
79
- begin: "2016-10-27T00:42:47.044135Z"
80
- }); // First test is checking the default value, so we just
81
- // don't add anything in that one case.
82
-
83
- if (mode) {
84
- timingLog.mode = mode;
85
- }
86
-
87
- actual = timingLog.toCompactFormat();
88
- expected = (0, _dedentJs.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\t\t/api/users/9/ ", " /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\n\n\n\t\t\t\t"], ["\n\t\t\t\t\t\t/api/users/9/ ", " /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t"])), modeType);
89
- expect(actual).toEqual(expected);
90
-
91
- case 6:
92
- case "end":
93
- return _context.stop();
94
- }
60
+ while (1) switch (_context.prev = _context.next) {
61
+ case 0:
62
+ TimingLogModel = (0, _api.G)("TimingLogModel");
63
+ timingLog = new TimingLogModel({
64
+ appointment: {
65
+ id: 20
66
+ },
67
+ user: {
68
+ id: 9
69
+ },
70
+ begin: "2016-10-27T00:42:47.044135Z"
71
+ }); // First test is checking the default value, so we just
72
+ // don't add anything in that one case.
73
+ if (mode) {
74
+ timingLog.mode = mode;
75
+ }
76
+ actual = timingLog.toCompactFormat();
77
+ expected = (0, _dedentJs.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\t\t/api/users/9/ ", " /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\n\n\n\t\t\t\t"], ["\n\t\t\t\t\t\t/api/users/9/ ", " /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t"])), modeType);
78
+ expect(actual).toEqual(expected);
79
+ case 6:
80
+ case "end":
81
+ return _context.stop();
95
82
  }
96
83
  }, _callee);
97
84
  })));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/timing-log.spec.js"],"names":["describe","events","path","timestamp","is_unfocused","it","TimingLogModel","timingLog","currentTime","addEvent","expect","toEqual","appointment","id","user","begin","code","toCompactFormat","assumedCode","dedent","each","undefined","mode","modeType","actual","expected","end","provisional","attendee_set","remote_attendee_set","modifiedEvents"],"mappings":"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","sourcesContent":["import { G } from \"sp-test/api\";\nimport { TimingLogModel } from \"./timing-log.js\";\nimport dedent from \"dedent-js\";\nimport moment from \"moment\";\n\ndescribe(\"TimingLogModel\", () => {\n\tconst events = [\n\t\t{\n\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/sections/28/\",\n\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/378/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:13.495713Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t];\n\n\tit(\"should create logs with a timestamp right now\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\t\tconst timingLog = new TimingLogModel();\n\t\tconst currentTime = \"2016-10-27T00:42:47.044135Z\";\n\t\ttimingLog.addEvent(\"/api/sections/1/\", currentTime);\n\n\t\t// Some precision in milliseconds is lost here\n\t\texpect(timingLog.events[0].timestamp).toEqual(\n\t\t\t\"2016-10-27T00:42:47.044000Z\"\n\t\t);\n\t\texpect(timingLog.events[0].path).toEqual(\"/api/sections/1/\");\n\t});\n\n\tit(\"should generate a timinglog compact format string\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t\t1ms /api/deckversions/4/\n\t\t\t\t72386ms /api/sections/28/\n\t\t\t\t133994ms /api/slides/380/\n\t\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tdescribe.each([\n\t\t[undefined, \"viewing\"],\n\t\t[\"present\", \"viewing\"],\n\t\t[\"view\", \"viewing\"],\n\t\t[\"prep\", \"preparing\"],\n\t\t[\"review\", \"reviewing\"],\n\t])(`{ mode: \"%s\" }`, (mode, modeType) => {\n\t\tit(`should show '${modeType}' when mode is ${mode}`, async () => {\n\t\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\t\tconst timingLog = new TimingLogModel({\n\t\t\t\tappointment: { id: 20 },\n\t\t\t\tuser: { id: 9 },\n\t\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\t});\n\n\t\t\t// First test is checking the default value, so we just\n\t\t\t// don't add anything in that one case.\n\t\t\tif (mode) {\n\t\t\t\ttimingLog.mode = mode;\n\t\t\t}\n\n\t\t\tconst actual = timingLog.toCompactFormat();\n\t\t\tconst expected = dedent`\n\t\t\t\t\t\t/api/users/9/ ${modeType} /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t`;\n\n\t\t\texpect(actual).toEqual(expected);\n\t\t});\n\t});\n\n\tit(\"should add an end date if specified\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: false,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should use provisional if flag is set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: true,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z provisional\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should show attendees if set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should add unfocused time\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\tconst modifiedEvents = [...events];\n\t\tmodifiedEvents[2].path = \"/api/sections/28/\";\n\t\tmodifiedEvents[2].is_unfocused = true;\n\n\t\ttimingLog.events = modifiedEvents;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms unfocused\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should remove an unfocused events if they are first\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = [\n\t\t\t{\n\t\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/sections/28/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/slides/380/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\t\tis_unfocused: false,\n\t\t\t},\n\t\t];\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t133994ms /api/slides/380/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n});\n\ndescribe(\".addEvent\", () => {\n\tit(\"should strip unfocused event if no previous event\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"unfocused\", moment());\n\n\t\texpect(timingLog.events).toEqual([]);\n\t});\n\n\tit(\"unfocused event path should match previous real content\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"/api/slides/380/\", \"2016-10-27T00:42:47.044135Z\");\n\t\ttimingLog.addEvent(\"unfocused\", \"2016-10-27T00:42:47.044135Z\");\n\n\t\texpect(timingLog.events[1]).toEqual({\n\t\t\tis_unfocused: true,\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.044000Z\",\n\t\t});\n\t});\n});\n"],"file":"timing-log.spec.js"}
1
+ {"version":3,"file":"timing-log.spec.js","names":["_api","require","_timingLog","_dedentJs","_interopRequireDefault","_moment","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","describe","events","path","timestamp","is_unfocused","it","TimingLogModel","G","timingLog","currentTime","addEvent","expect","toEqual","appointment","id","user","begin","code","toCompactFormat","assumedCode","dedent","_taggedTemplateLiteral2","default","each","undefined","mode","modeType","concat","_asyncToGenerator2","_regenerator","mark","_callee","actual","expected","wrap","_callee$","_context","prev","next","stop","end","provisional","attendee_set","remote_attendee_set","modifiedEvents","moment"],"sources":["../../src/models/timing-log.spec.js"],"sourcesContent":["import { G } from \"sp-test/api\";\nimport { TimingLogModel } from \"./timing-log.js\";\nimport dedent from \"dedent-js\";\nimport moment from \"moment\";\n\ndescribe(\"TimingLogModel\", () => {\n\tconst events = [\n\t\t{\n\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/sections/28/\",\n\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/378/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:13.495713Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t];\n\n\tit(\"should create logs with a timestamp right now\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\t\tconst timingLog = new TimingLogModel();\n\t\tconst currentTime = \"2016-10-27T00:42:47.044135Z\";\n\t\ttimingLog.addEvent(\"/api/sections/1/\", currentTime);\n\n\t\t// Some precision in milliseconds is lost here\n\t\texpect(timingLog.events[0].timestamp).toEqual(\n\t\t\t\"2016-10-27T00:42:47.044000Z\",\n\t\t);\n\t\texpect(timingLog.events[0].path).toEqual(\"/api/sections/1/\");\n\t});\n\n\tit(\"should generate a timinglog compact format string\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t\t1ms /api/deckversions/4/\n\t\t\t\t72386ms /api/sections/28/\n\t\t\t\t133994ms /api/slides/380/\n\t\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tdescribe.each([\n\t\t[undefined, \"viewing\"],\n\t\t[\"present\", \"viewing\"],\n\t\t[\"view\", \"viewing\"],\n\t\t[\"prep\", \"preparing\"],\n\t\t[\"review\", \"reviewing\"],\n\t])(`{ mode: \"%s\" }`, (mode, modeType) => {\n\t\tit(`should show '${modeType}' when mode is ${mode}`, async () => {\n\t\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\t\tconst timingLog = new TimingLogModel({\n\t\t\t\tappointment: { id: 20 },\n\t\t\t\tuser: { id: 9 },\n\t\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\t});\n\n\t\t\t// First test is checking the default value, so we just\n\t\t\t// don't add anything in that one case.\n\t\t\tif (mode) {\n\t\t\t\ttimingLog.mode = mode;\n\t\t\t}\n\n\t\t\tconst actual = timingLog.toCompactFormat();\n\t\t\tconst expected = dedent`\n\t\t\t\t\t\t/api/users/9/ ${modeType} /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t`;\n\n\t\t\texpect(actual).toEqual(expected);\n\t\t});\n\t});\n\n\tit(\"should add an end date if specified\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: false,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should use provisional if flag is set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: true,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z provisional\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should show attendees if set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should add unfocused time\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\tconst modifiedEvents = [...events];\n\t\tmodifiedEvents[2].path = \"/api/sections/28/\";\n\t\tmodifiedEvents[2].is_unfocused = true;\n\n\t\ttimingLog.events = modifiedEvents;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms unfocused\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should remove an unfocused events if they are first\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = [\n\t\t\t{\n\t\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/sections/28/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/slides/380/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\t\tis_unfocused: false,\n\t\t\t},\n\t\t];\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t133994ms /api/slides/380/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n});\n\ndescribe(\".addEvent\", () => {\n\tit(\"should strip unfocused event if no previous event\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"unfocused\", moment());\n\n\t\texpect(timingLog.events).toEqual([]);\n\t});\n\n\tit(\"unfocused event path should match previous real content\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"/api/slides/380/\", \"2016-10-27T00:42:47.044135Z\");\n\t\ttimingLog.addEvent(\"unfocused\", \"2016-10-27T00:42:47.044135Z\");\n\n\t\texpect(timingLog.events[1]).toEqual({\n\t\t\tis_unfocused: true,\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.044000Z\",\n\t\t});\n\t});\n});\n"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TokenModel = void 0;
7
+ require("./user.js");
8
+ var _base = require("./base.js");
9
+ var _stateRegister = require("../state-register.js");
10
+ /**
11
+ * @constructor
12
+ * @alias models.TokenModel
13
+ * @extends models.BaseModel
14
+ */
15
+ var TokenModel = exports.TokenModel = _base.BaseModel.extend( /** @lends models.TokenModel# */{
16
+ modelName: "tokens",
17
+ /**
18
+ * @property {date} created_date
19
+ * @property {boolean} expired
20
+ * @property {date} expires_at
21
+ * @property {string} key
22
+ * @property {number} seconds_to_expiry
23
+ * @property {string} agent
24
+ * @property {string} agent_version
25
+ */
26
+ props: {
27
+ created_date: "date",
28
+ expired: "boolean",
29
+ expires_at: "date",
30
+ key: "string",
31
+ seconds_to_expiry: "number",
32
+ agent: "string",
33
+ agent_version: "string"
34
+ },
35
+ /**
36
+ * @property {models.UserModel} user
37
+ */
38
+ children: {
39
+ user: "UserModel"
40
+ },
41
+ url: function url() {
42
+ return "".concat(this.urlRoot()).concat(this.key, "/");
43
+ }
44
+ });
45
+ (0, _stateRegister.register)("TokenModel", TokenModel);
46
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","names":["require","_base","_stateRegister","TokenModel","exports","BaseModel","extend","modelName","props","created_date","expired","expires_at","key","seconds_to_expiry","agent","agent_version","children","user","url","concat","urlRoot","register"],"sources":["../../src/models/token.js"],"sourcesContent":["import \"./user.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TokenModel\n * @extends models.BaseModel\n */\nexport const TokenModel = BaseModel.extend(\n\t/** @lends models.TokenModel# */ {\n\t\tmodelName: \"tokens\",\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {boolean} expired\n\t\t * @property {date} expires_at\n\t\t * @property {string} key\n\t\t * @property {number} seconds_to_expiry\n\t\t * @property {string} agent\n\t\t * @property {string} agent_version\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\texpired: \"boolean\",\n\t\t\texpires_at: \"date\",\n\t\t\tkey: \"string\",\n\t\t\tseconds_to_expiry: \"number\",\n\t\t\tagent: \"string\",\n\t\t\tagent_version: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tuser: \"UserModel\",\n\t\t},\n\n\t\turl() {\n\t\t\treturn `${this.urlRoot()}${this.key}/`;\n\t\t},\n\t},\n);\n\nregister(\"TokenModel\", TokenModel);\n"],"mappings":";;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMG,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGE,eAAS,CAACC,MAAM,EACzC,gCAAiC;EAChCC,SAAS,EAAE,QAAQ;EAEnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,KAAK,EAAE;IACNC,YAAY,EAAE,MAAM;IACpBC,OAAO,EAAE,SAAS;IAClBC,UAAU,EAAE,MAAM;IAClBC,GAAG,EAAE,QAAQ;IACbC,iBAAiB,EAAE,QAAQ;IAC3BC,KAAK,EAAE,QAAQ;IACfC,aAAa,EAAE;EAChB,CAAC;EAED;AACF;AACA;EACEC,QAAQ,EAAE;IACTC,IAAI,EAAE;EACP,CAAC;EAEDC,GAAG,WAAAA,IAAA,EAAG;IACL,UAAAC,MAAA,CAAU,IAAI,CAACC,OAAO,CAAC,CAAC,EAAAD,MAAA,CAAG,IAAI,CAACP,GAAG;EACpC;AACD,CACD,CAAC;AAED,IAAAS,uBAAQ,EAAC,YAAY,EAAElB,UAAU,CAAC"}