@livepreso/api 6.48.0 → 6.49.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 (368) hide show
  1. package/.lintstagedrc.js +6 -0
  2. package/.rush/temp/chunked-rush-logs/api.build.chunks.jsonl +6 -0
  3. package/.rush/temp/chunked-rush-logs/api.test.chunks.jsonl +1 -0
  4. package/.rush/temp/operation/build/all.log +6 -0
  5. package/.rush/temp/operation/build/log-chunks.jsonl +6 -0
  6. package/.rush/temp/operation/build/state.json +3 -0
  7. package/.rush/temp/package-deps_build.json +24 -24
  8. package/.rush/temp/shrinkwrap-deps.json +1131 -1013
  9. package/CHANGELOG.json +32 -0
  10. package/CHANGELOG.md +16 -1
  11. package/api.build.log +2 -2
  12. package/bin/test.sh +0 -0
  13. package/cjs/api.js +3 -18
  14. package/cjs/api.js.map +1 -1
  15. package/cjs/api.spec.js +0 -4
  16. package/cjs/api.spec.js.map +1 -1
  17. package/cjs/auth.js +2 -29
  18. package/cjs/auth.js.map +1 -1
  19. package/cjs/auth.spec.js +55 -80
  20. package/cjs/auth.spec.js.map +1 -1
  21. package/cjs/caching.js +2 -7
  22. package/cjs/caching.js.map +1 -1
  23. package/cjs/collections/activity.js +18 -58
  24. package/cjs/collections/activity.js.map +1 -1
  25. package/cjs/collections/adjunct-sections.js +2 -11
  26. package/cjs/collections/adjunct-sections.js.map +1 -1
  27. package/cjs/collections/adjunct-slides.js +2 -11
  28. package/cjs/collections/adjunct-slides.js.map +1 -1
  29. package/cjs/collections/adjunct-sub-slides.js +2 -10
  30. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  31. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  32. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  33. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  34. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  35. package/cjs/collections/appointment-editors.js +1 -10
  36. package/cjs/collections/appointment-editors.js.map +1 -1
  37. package/cjs/collections/appointment-section-tags.js +1 -9
  38. package/cjs/collections/appointment-section-tags.js.map +1 -1
  39. package/cjs/collections/appointment-slide-tags.js +1 -9
  40. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  41. package/cjs/collections/appointment-tags.js +69 -108
  42. package/cjs/collections/appointment-tags.js.map +1 -1
  43. package/cjs/collections/appointment-templates.js +1 -10
  44. package/cjs/collections/appointment-templates.js.map +1 -1
  45. package/cjs/collections/appointments.js +9 -29
  46. package/cjs/collections/appointments.js.map +1 -1
  47. package/cjs/collections/assets.js +1 -9
  48. package/cjs/collections/assets.js.map +1 -1
  49. package/cjs/collections/auto-adjuncts.js +6 -21
  50. package/cjs/collections/auto-adjuncts.js.map +1 -1
  51. package/cjs/collections/base.js +54 -118
  52. package/cjs/collections/base.js.map +1 -1
  53. package/cjs/collections/base.spec.js +195 -242
  54. package/cjs/collections/base.spec.js.map +1 -1
  55. package/cjs/collections/cms-vals.js +4 -16
  56. package/cjs/collections/cms-vals.js.map +1 -1
  57. package/cjs/collections/contact-phones.js +1 -9
  58. package/cjs/collections/contact-phones.js.map +1 -1
  59. package/cjs/collections/contacts.js +1 -9
  60. package/cjs/collections/contacts.js.map +1 -1
  61. package/cjs/collections/created-assets.js +1 -10
  62. package/cjs/collections/created-assets.js.map +1 -1
  63. package/cjs/collections/customers.js +1 -9
  64. package/cjs/collections/customers.js.map +1 -1
  65. package/cjs/collections/deck-notes.js +1 -10
  66. package/cjs/collections/deck-notes.js.map +1 -1
  67. package/cjs/collections/deck-version-screenshots.js +4 -17
  68. package/cjs/collections/deck-version-screenshots.js.map +1 -1
  69. package/cjs/collections/deck-versions.js +5 -20
  70. package/cjs/collections/deck-versions.js.map +1 -1
  71. package/cjs/collections/decks.js +1 -9
  72. package/cjs/collections/decks.js.map +1 -1
  73. package/cjs/collections/deleted-assets.js +1 -10
  74. package/cjs/collections/deleted-assets.js.map +1 -1
  75. package/cjs/collections/dispatches.js +1 -13
  76. package/cjs/collections/dispatches.js.map +1 -1
  77. package/cjs/collections/event-objects.js +1 -9
  78. package/cjs/collections/event-objects.js.map +1 -1
  79. package/cjs/collections/events.js +1 -9
  80. package/cjs/collections/events.js.map +1 -1
  81. package/cjs/collections/groups.js +1 -9
  82. package/cjs/collections/groups.js.map +1 -1
  83. package/cjs/collections/images.js +1 -9
  84. package/cjs/collections/images.js.map +1 -1
  85. package/cjs/collections/locations.js +1 -9
  86. package/cjs/collections/locations.js.map +1 -1
  87. package/cjs/collections/opportunities.js +1 -9
  88. package/cjs/collections/opportunities.js.map +1 -1
  89. package/cjs/collections/pack-diffs.js +1 -9
  90. package/cjs/collections/pack-diffs.js.map +1 -1
  91. package/cjs/collections/packs.js +1 -9
  92. package/cjs/collections/packs.js.map +1 -1
  93. package/cjs/collections/presets.js +1 -9
  94. package/cjs/collections/presets.js.map +1 -1
  95. package/cjs/collections/section-selections.js +2 -10
  96. package/cjs/collections/section-selections.js.map +1 -1
  97. package/cjs/collections/sections.js +1 -9
  98. package/cjs/collections/sections.js.map +1 -1
  99. package/cjs/collections/signers.js +1 -9
  100. package/cjs/collections/signers.js.map +1 -1
  101. package/cjs/collections/signing-backends.js +1 -9
  102. package/cjs/collections/signing-backends.js.map +1 -1
  103. package/cjs/collections/signing-requests.js +1 -9
  104. package/cjs/collections/signing-requests.js.map +1 -1
  105. package/cjs/collections/slide-selections.js +2 -10
  106. package/cjs/collections/slide-selections.js.map +1 -1
  107. package/cjs/collections/slides.js +1 -9
  108. package/cjs/collections/slides.js.map +1 -1
  109. package/cjs/collections/snapshots.js +1 -9
  110. package/cjs/collections/snapshots.js.map +1 -1
  111. package/cjs/collections/sub-slides.js +1 -9
  112. package/cjs/collections/sub-slides.js.map +1 -1
  113. package/cjs/collections/tags.js +1 -9
  114. package/cjs/collections/tags.js.map +1 -1
  115. package/cjs/collections/teams.js +1 -9
  116. package/cjs/collections/teams.js.map +1 -1
  117. package/cjs/collections/templates.js +1 -9
  118. package/cjs/collections/templates.js.map +1 -1
  119. package/cjs/collections/uploads.js +1 -9
  120. package/cjs/collections/uploads.js.map +1 -1
  121. package/cjs/collections/users.js +1 -9
  122. package/cjs/collections/users.js.map +1 -1
  123. package/cjs/collections.js +0 -96
  124. package/cjs/collections.js.map +1 -1
  125. package/cjs/fixtures.js +19 -57
  126. package/cjs/fixtures.js.map +1 -1
  127. package/cjs/index.js +0 -12
  128. package/cjs/index.js.map +1 -1
  129. package/cjs/log.js +0 -1
  130. package/cjs/log.js.map +1 -1
  131. package/cjs/middleware.js +2 -7
  132. package/cjs/middleware.js.map +1 -1
  133. package/cjs/middlewares/auth.js +7 -25
  134. package/cjs/middlewares/auth.js.map +1 -1
  135. package/cjs/middlewares/base.js +4 -11
  136. package/cjs/middlewares/base.js.map +1 -1
  137. package/cjs/middlewares/json.js +7 -27
  138. package/cjs/middlewares/json.js.map +1 -1
  139. package/cjs/middlewares/redirect.js +11 -29
  140. package/cjs/middlewares/redirect.js.map +1 -1
  141. package/cjs/models/activity-item.js +3 -19
  142. package/cjs/models/activity-item.js.map +1 -1
  143. package/cjs/models/adjunct-section.js +6 -19
  144. package/cjs/models/adjunct-section.js.map +1 -1
  145. package/cjs/models/adjunct-slide.js +6 -19
  146. package/cjs/models/adjunct-slide.js.map +1 -1
  147. package/cjs/models/adjunct-sub-slide.js +5 -16
  148. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  149. package/cjs/models/adjunct.js +7 -23
  150. package/cjs/models/adjunct.js.map +1 -1
  151. package/cjs/models/api.js +1 -6
  152. package/cjs/models/api.js.map +1 -1
  153. package/cjs/models/appointment-adjunct-tags.js +1 -13
  154. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  155. package/cjs/models/appointment-deckversion-tags.js +1 -13
  156. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  157. package/cjs/models/appointment-editor.js +1 -14
  158. package/cjs/models/appointment-editor.js.map +1 -1
  159. package/cjs/models/appointment-section-tags.js +1 -13
  160. package/cjs/models/appointment-section-tags.js.map +1 -1
  161. package/cjs/models/appointment-slide-tags.js +1 -13
  162. package/cjs/models/appointment-slide-tags.js.map +1 -1
  163. package/cjs/models/appointment-stats.js +1 -11
  164. package/cjs/models/appointment-stats.js.map +1 -1
  165. package/cjs/models/appointment-tags.js +1 -10
  166. package/cjs/models/appointment-tags.js.map +1 -1
  167. package/cjs/models/appointment-template.js +1 -6
  168. package/cjs/models/appointment-template.js.map +1 -1
  169. package/cjs/models/appointment-viewing.js +1 -8
  170. package/cjs/models/appointment-viewing.js.map +1 -1
  171. package/cjs/models/appointment.js +24 -97
  172. package/cjs/models/appointment.js.map +1 -1
  173. package/cjs/models/asset.js +1 -12
  174. package/cjs/models/asset.js.map +1 -1
  175. package/cjs/models/auto-adjunct-key-check.js +1 -15
  176. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  177. package/cjs/models/auto-adjunct.js +1 -13
  178. package/cjs/models/auto-adjunct.js.map +1 -1
  179. package/cjs/models/base.js +86 -216
  180. package/cjs/models/base.js.map +1 -1
  181. package/cjs/models/base.spec.js +0 -31
  182. package/cjs/models/base.spec.js.map +1 -1
  183. package/cjs/models/choicelist.js +1 -8
  184. package/cjs/models/choicelist.js.map +1 -1
  185. package/cjs/models/cms-val.js +5 -26
  186. package/cjs/models/cms-val.js.map +1 -1
  187. package/cjs/models/cms-val.spec.js +13 -20
  188. package/cjs/models/cms-val.spec.js.map +1 -1
  189. package/cjs/models/contact-phone.js +1 -13
  190. package/cjs/models/contact-phone.js.map +1 -1
  191. package/cjs/models/contact.js +1 -18
  192. package/cjs/models/contact.js.map +1 -1
  193. package/cjs/models/customer.js +3 -30
  194. package/cjs/models/customer.js.map +1 -1
  195. package/cjs/models/deck-note.js +1 -9
  196. package/cjs/models/deck-note.js.map +1 -1
  197. package/cjs/models/deck-tags.js +1 -12
  198. package/cjs/models/deck-tags.js.map +1 -1
  199. package/cjs/models/deck-version-screenshot.js +1 -13
  200. package/cjs/models/deck-version-screenshot.js.map +1 -1
  201. package/cjs/models/deck-version.js +13 -38
  202. package/cjs/models/deck-version.js.map +1 -1
  203. package/cjs/models/deck.js +1 -14
  204. package/cjs/models/deck.js.map +1 -1
  205. package/cjs/models/dispatch-preview.js +1 -13
  206. package/cjs/models/dispatch-preview.js.map +1 -1
  207. package/cjs/models/dispatch.js +1 -25
  208. package/cjs/models/dispatch.js.map +1 -1
  209. package/cjs/models/envs.js +1 -6
  210. package/cjs/models/envs.js.map +1 -1
  211. package/cjs/models/event-object.js +1 -11
  212. package/cjs/models/event-object.js.map +1 -1
  213. package/cjs/models/event.js +1 -13
  214. package/cjs/models/event.js.map +1 -1
  215. package/cjs/models/feed-data.js +1 -13
  216. package/cjs/models/feed-data.js.map +1 -1
  217. package/cjs/models/file.js +1 -11
  218. package/cjs/models/file.js.map +1 -1
  219. package/cjs/models/group.js +1 -11
  220. package/cjs/models/group.js.map +1 -1
  221. package/cjs/models/handover.js +1 -13
  222. package/cjs/models/handover.js.map +1 -1
  223. package/cjs/models/hosted-preso.js +1 -15
  224. package/cjs/models/hosted-preso.js.map +1 -1
  225. package/cjs/models/image.js +1 -16
  226. package/cjs/models/image.js.map +1 -1
  227. package/cjs/models/location.js +1 -13
  228. package/cjs/models/location.js.map +1 -1
  229. package/cjs/models/manifest-json.js +34 -83
  230. package/cjs/models/manifest-json.js.map +1 -1
  231. package/cjs/models/onshare.js +1 -14
  232. package/cjs/models/onshare.js.map +1 -1
  233. package/cjs/models/opportunity.js +1 -14
  234. package/cjs/models/opportunity.js.map +1 -1
  235. package/cjs/models/pack-diff.js +1 -14
  236. package/cjs/models/pack-diff.js.map +1 -1
  237. package/cjs/models/pack.js +1 -12
  238. package/cjs/models/pack.js.map +1 -1
  239. package/cjs/models/preset.js +1 -19
  240. package/cjs/models/preset.js.map +1 -1
  241. package/cjs/models/refresh-request.js +1 -11
  242. package/cjs/models/refresh-request.js.map +1 -1
  243. package/cjs/models/room.js +1 -9
  244. package/cjs/models/room.js.map +1 -1
  245. package/cjs/models/salesforce-lookup.js +1 -12
  246. package/cjs/models/salesforce-lookup.js.map +1 -1
  247. package/cjs/models/section-selection.js +7 -15
  248. package/cjs/models/section-selection.js.map +1 -1
  249. package/cjs/models/section.js +1 -14
  250. package/cjs/models/section.js.map +1 -1
  251. package/cjs/models/signer.js +1 -10
  252. package/cjs/models/signer.js.map +1 -1
  253. package/cjs/models/signing-backend.js +1 -9
  254. package/cjs/models/signing-backend.js.map +1 -1
  255. package/cjs/models/signing-request.js +1 -13
  256. package/cjs/models/signing-request.js.map +1 -1
  257. package/cjs/models/slide-selection.js +7 -15
  258. package/cjs/models/slide-selection.js.map +1 -1
  259. package/cjs/models/slide.js +1 -14
  260. package/cjs/models/slide.js.map +1 -1
  261. package/cjs/models/snapshot.js +3 -16
  262. package/cjs/models/snapshot.js.map +1 -1
  263. package/cjs/models/snapshot.spec.js +26 -33
  264. package/cjs/models/snapshot.spec.js.map +1 -1
  265. package/cjs/models/sub-slide.js +1 -12
  266. package/cjs/models/sub-slide.js.map +1 -1
  267. package/cjs/models/support-ticket.js +1 -11
  268. package/cjs/models/support-ticket.js.map +1 -1
  269. package/cjs/models/tag.js +1 -13
  270. package/cjs/models/tag.js.map +1 -1
  271. package/cjs/models/team.js +1 -13
  272. package/cjs/models/team.js.map +1 -1
  273. package/cjs/models/template.js +49 -79
  274. package/cjs/models/template.js.map +1 -1
  275. package/cjs/models/tenancy.js +1 -11
  276. package/cjs/models/tenancy.js.map +1 -1
  277. package/cjs/models/timing-log.js +23 -80
  278. package/cjs/models/timing-log.js.map +1 -1
  279. package/cjs/models/timing-log.spec.js +25 -38
  280. package/cjs/models/timing-log.spec.js.map +1 -1
  281. package/cjs/models/token.js +1 -11
  282. package/cjs/models/token.js.map +1 -1
  283. package/cjs/models/transcribe-socket.js +1 -8
  284. package/cjs/models/transcribe-socket.js.map +1 -1
  285. package/cjs/models/upload.js +1 -7
  286. package/cjs/models/upload.js.map +1 -1
  287. package/cjs/models/user.js +6 -30
  288. package/cjs/models/user.js.map +1 -1
  289. package/cjs/models/user.spec.js +22 -32
  290. package/cjs/models/user.spec.js.map +1 -1
  291. package/cjs/models.js +0 -140
  292. package/cjs/models.js.map +1 -1
  293. package/cjs/presentation/appointment-presentation.js +9 -35
  294. package/cjs/presentation/appointment-presentation.js.map +1 -1
  295. package/cjs/presentation/base-presentation-collection.js +1 -7
  296. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  297. package/cjs/presentation/base-presentation-model.js +24 -67
  298. package/cjs/presentation/base-presentation-model.js.map +1 -1
  299. package/cjs/presentation/base-presentation-model.spec.js +5 -27
  300. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  301. package/cjs/presentation/presentation-deck.js +41 -82
  302. package/cjs/presentation/presentation-deck.js.map +1 -1
  303. package/cjs/presentation/presentation-deck.spec.js +75 -98
  304. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  305. package/cjs/presentation/presentation-decks.js +1 -9
  306. package/cjs/presentation/presentation-decks.js.map +1 -1
  307. package/cjs/presentation/presentation-section.js +12 -74
  308. package/cjs/presentation/presentation-section.js.map +1 -1
  309. package/cjs/presentation/presentation-section.spec.js +211 -264
  310. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  311. package/cjs/presentation/presentation-sections.js +1 -9
  312. package/cjs/presentation/presentation-sections.js.map +1 -1
  313. package/cjs/presentation/presentation-slide.js +23 -77
  314. package/cjs/presentation/presentation-slide.js.map +1 -1
  315. package/cjs/presentation/presentation-slide.spec.js +144 -182
  316. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  317. package/cjs/presentation/presentation-slides.js +1 -9
  318. package/cjs/presentation/presentation-slides.js.map +1 -1
  319. package/cjs/presentation/presentation-subslide.js +3 -23
  320. package/cjs/presentation/presentation-subslide.js.map +1 -1
  321. package/cjs/presentation/presentation-subslide.spec.js +106 -130
  322. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  323. package/cjs/presentation/presentation-subslides.js +1 -9
  324. package/cjs/presentation/presentation-subslides.js.map +1 -1
  325. package/cjs/presentation/presentation.js +64 -118
  326. package/cjs/presentation/presentation.js.map +1 -1
  327. package/cjs/presentation.js +0 -20
  328. package/cjs/presentation.js.map +1 -1
  329. package/cjs/selections.js +10 -36
  330. package/cjs/selections.js.map +1 -1
  331. package/cjs/state-register.js +3 -11
  332. package/cjs/state-register.js.map +1 -1
  333. package/cjs/sync.js +32 -76
  334. package/cjs/sync.js.map +1 -1
  335. package/cjs/utils.js +21 -49
  336. package/cjs/utils.js.map +1 -1
  337. package/cjs/utils.spec.js +0 -4
  338. package/cjs/utils.spec.js.map +1 -1
  339. package/eslint.config.mjs +10 -0
  340. package/package.json +8 -9
  341. package/rush-logs/api.build.cache.log +1 -0
  342. package/rush-logs/api.build.log +6 -0
  343. package/rush-logs/api.test.cache.log +1 -0
  344. package/rush-logs/api.test.log +1 -0
  345. package/src/collections/adjunct-sections.js +3 -3
  346. package/src/collections/adjunct-slides.js +3 -3
  347. package/src/collections/adjunct-sub-slides.js +3 -3
  348. package/src/collections/base.js +14 -0
  349. package/src/collections/section-selections.js +3 -3
  350. package/src/collections/slide-selections.js +3 -3
  351. package/src/fixtures.js +8 -1
  352. package/src/models/adjunct-section.js +6 -0
  353. package/src/models/adjunct-slide.js +6 -0
  354. package/src/models/adjunct-sub-slide.js +5 -0
  355. package/src/models/adjunct.js +1 -1
  356. package/src/models/appointment.js +2 -0
  357. package/src/models/base.js +6 -2
  358. package/src/models/deck-version.js +7 -3
  359. package/src/models/manifest-json.js +12 -1
  360. package/src/models/section-selection.js +6 -0
  361. package/src/models/slide-selection.js +6 -0
  362. package/src/models/user.js +5 -0
  363. package/src/presentation/presentation-section.js +4 -0
  364. package/src/presentation/presentation-slide.js +8 -0
  365. package/src/presentation/presentation-slide.spec.js +2 -0
  366. package/.eslintrc.js +0 -8
  367. package/.gitlab-ci.yml +0 -4
  368. package/.husky/pre-commit +0 -4
@@ -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","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","TimingLogModel","exports","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","_this","getShortURL","url","moment","utc","format","DATE_FORMAT","startIndex","i","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","err","_ref2","log","warn","sort","event1","event2","save","data","options","_this2","Promise","resolve","toJSON","patch","prototype","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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","ignoreList":[]}
@@ -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
  });
@@ -62,36 +54,31 @@ describe("TimingLogModel", function () {
62
54
  expect(code).toEqual(assumedCode);
63
55
  });
64
56
  describe.each([[undefined, "viewing"], ["present", "viewing"], ["view", "viewing"], ["prep", "preparing"], ["review", "reviewing"]])("{ mode: \"%s\" }", function (mode, modeType) {
65
- it("should show '".concat(modeType, "' when mode is ").concat(mode), /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
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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","ignoreList":[]}
@@ -4,23 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TokenModel = void 0;
7
-
8
7
  require("./user.js");
9
-
10
8
  var _base = require("./base.js");
11
-
12
9
  var _stateRegister = require("../state-register.js");
13
-
14
10
  /**
15
11
  * @constructor
16
12
  * @alias models.TokenModel
17
13
  * @extends models.BaseModel
18
14
  */
19
- var TokenModel = _base.BaseModel.extend(
20
- /** @lends models.TokenModel# */
21
- {
15
+ var TokenModel = exports.TokenModel = _base.BaseModel.extend(/** @lends models.TokenModel# */{
22
16
  modelName: "tokens",
23
-
24
17
  /**
25
18
  * @property {date} created_date
26
19
  * @property {boolean} expired
@@ -39,7 +32,6 @@ var TokenModel = _base.BaseModel.extend(
39
32
  agent: "string",
40
33
  agent_version: "string"
41
34
  },
42
-
43
35
  /**
44
36
  * @property {models.UserModel} user
45
37
  */
@@ -50,7 +42,5 @@ var TokenModel = _base.BaseModel.extend(
50
42
  return "".concat(this.urlRoot()).concat(this.key, "/");
51
43
  }
52
44
  });
53
-
54
- exports.TokenModel = TokenModel;
55
45
  (0, _stateRegister.register)("TokenModel", TokenModel);
56
46
  //# sourceMappingURL=token.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/token.js"],"names":["TokenModel","BaseModel","extend","modelName","props","created_date","expired","expires_at","key","seconds_to_expiry","agent","agent_version","children","user","url","urlRoot"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,UAAU,GAAGC,gBAAUC,MAAV;AACzB;AAAiC;AAChCC,EAAAA,SAAS,EAAE,QADqB;;AAGhC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,YAAY,EAAE,MADR;AAENC,IAAAA,OAAO,EAAE,SAFH;AAGNC,IAAAA,UAAU,EAAE,MAHN;AAINC,IAAAA,GAAG,EAAE,QAJC;AAKNC,IAAAA,iBAAiB,EAAE,QALb;AAMNC,IAAAA,KAAK,EAAE,QAND;AAONC,IAAAA,aAAa,EAAE;AAPT,GAZyB;;AAsBhC;AACF;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE;AADG,GAzBsB;AA6BhCC,EAAAA,GA7BgC,iBA6B1B;AACL,qBAAU,KAAKC,OAAL,EAAV,SAA2B,KAAKP,GAAhC;AACA;AA/B+B,CADR,CAAnB;;;AAoCP,6BAAS,YAAT,EAAuBR,UAAvB","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"],"file":"token.js"}
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,CACzC,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,WAAHA,GAAGA,CAAA,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","ignoreList":[]}
@@ -4,25 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.TranscribeSocketModel = void 0;
7
-
8
7
  var _base = require("./base.js");
9
-
10
8
  var _stateRegister = require("../state-register.js");
11
-
12
9
  /**
13
10
  * @constructor
14
11
  * @alias models.TranscribeSocketModel
15
12
  * @extends models.BaseModel
16
13
  */
17
- var TranscribeSocketModel = _base.BaseModel.extend(
18
- /** @lends models.TranscribeSocketModel# */
19
- {
14
+ var TranscribeSocketModel = exports.TranscribeSocketModel = _base.BaseModel.extend(/** @lends models.TranscribeSocketModel# */{
20
15
  modelName: "transcribe-socket",
21
16
  props: {
22
17
  presigned_url: "string"
23
18
  }
24
19
  });
25
-
26
- exports.TranscribeSocketModel = TranscribeSocketModel;
27
20
  (0, _stateRegister.register)("TranscribeSocketModel", TranscribeSocketModel);
28
21
  //# sourceMappingURL=transcribe-socket.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/transcribe-socket.js"],"names":["TranscribeSocketModel","BaseModel","extend","modelName","props","presigned_url"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,qBAAqB,GAAGC,gBAAUC,MAAV;AACpC;AAA4C;AAC3CC,EAAAA,SAAS,EAAE,mBADgC;AAG3CC,EAAAA,KAAK,EAAE;AACNC,IAAAA,aAAa,EAAE;AADT;AAHoC,CADR,CAA9B;;;AAUP,6BAAS,uBAAT,EAAkCL,qBAAlC","sourcesContent":["import { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TranscribeSocketModel\n * @extends models.BaseModel\n */\nexport const TranscribeSocketModel = BaseModel.extend(\n\t/** @lends models.TranscribeSocketModel# */ {\n\t\tmodelName: \"transcribe-socket\",\n\n\t\tprops: {\n\t\t\tpresigned_url: \"string\",\n\t\t},\n\t},\n);\n\nregister(\"TranscribeSocketModel\", TranscribeSocketModel);\n"],"file":"transcribe-socket.js"}
1
+ {"version":3,"file":"transcribe-socket.js","names":["_base","require","_stateRegister","TranscribeSocketModel","exports","BaseModel","extend","modelName","props","presigned_url","register"],"sources":["../../src/models/transcribe-socket.js"],"sourcesContent":["import { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TranscribeSocketModel\n * @extends models.BaseModel\n */\nexport const TranscribeSocketModel = BaseModel.extend(\n\t/** @lends models.TranscribeSocketModel# */ {\n\t\tmodelName: \"transcribe-socket\",\n\n\t\tprops: {\n\t\t\tpresigned_url: \"string\",\n\t\t},\n\t},\n);\n\nregister(\"TranscribeSocketModel\", TranscribeSocketModel);\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAME,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAGE,eAAS,CAACC,MAAM,CACpD,2CAA4C;EAC3CC,SAAS,EAAE,mBAAmB;EAE9BC,KAAK,EAAE;IACNC,aAAa,EAAE;EAChB;AACD,CACD,CAAC;AAED,IAAAC,uBAAQ,EAAC,uBAAuB,EAAEP,qBAAqB,CAAC","ignoreList":[]}
@@ -4,19 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.UploadModel = void 0;
7
-
8
7
  var _base = require("./base.js");
9
-
10
8
  var _stateRegister = require("../state-register.js");
11
-
12
9
  /**
13
10
  * @constructor
14
11
  * @alias models.UploadModel
15
12
  * @extends models.BaseModel
16
13
  */
17
- var UploadModel = _base.BaseModel.extend({
14
+ var UploadModel = exports.UploadModel = _base.BaseModel.extend({
18
15
  modelName: "files",
19
-
20
16
  /**
21
17
  * @property {string} name
22
18
  * @property {string} image_original
@@ -26,7 +22,5 @@ var UploadModel = _base.BaseModel.extend({
26
22
  image_original: "string"
27
23
  }
28
24
  });
29
-
30
- exports.UploadModel = UploadModel;
31
25
  (0, _stateRegister.register)("UploadModel", UploadModel);
32
26
  //# sourceMappingURL=upload.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/upload.js"],"names":["UploadModel","BaseModel","extend","modelName","props","name","image_original"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,WAAW,GAAGC,gBAAUC,MAAV,CAAiB;AAC3CC,EAAAA,SAAS,EAAE,OADgC;;AAG3C;AACD;AACA;AACA;AACCC,EAAAA,KAAK,EAAE;AACNC,IAAAA,IAAI,EAAE,QADA;AAENC,IAAAA,cAAc,EAAE;AAFV;AAPoC,CAAjB,CAApB;;;AAaP,6BAAS,aAAT,EAAwBN,WAAxB","sourcesContent":["import { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.UploadModel\n * @extends models.BaseModel\n */\nexport const UploadModel = BaseModel.extend({\n\tmodelName: \"files\",\n\n\t/**\n\t * @property {string} name\n\t * @property {string} image_original\n\t */\n\tprops: {\n\t\tname: \"string\",\n\t\timage_original: \"string\",\n\t},\n});\n\nregister(\"UploadModel\", UploadModel);\n"],"file":"upload.js"}
1
+ {"version":3,"file":"upload.js","names":["_base","require","_stateRegister","UploadModel","exports","BaseModel","extend","modelName","props","name","image_original","register"],"sources":["../../src/models/upload.js"],"sourcesContent":["import { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.UploadModel\n * @extends models.BaseModel\n */\nexport const UploadModel = BaseModel.extend({\n\tmodelName: \"files\",\n\n\t/**\n\t * @property {string} name\n\t * @property {string} image_original\n\t */\n\tprops: {\n\t\tname: \"string\",\n\t\timage_original: \"string\",\n\t},\n});\n\nregister(\"UploadModel\", UploadModel);\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAME,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAGE,eAAS,CAACC,MAAM,CAAC;EAC3CC,SAAS,EAAE,OAAO;EAElB;AACD;AACA;AACA;EACCC,KAAK,EAAE;IACNC,IAAI,EAAE,QAAQ;IACdC,cAAc,EAAE;EACjB;AACD,CAAC,CAAC;AAEF,IAAAC,uBAAQ,EAAC,aAAa,EAAER,WAAW,CAAC","ignoreList":[]}
@@ -1,37 +1,25 @@
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.UserModel = void 0;
9
-
10
8
  require("./tenancy.js");
11
-
12
9
  require("../collections/groups.js");
13
-
14
10
  require("../collections/teams.js");
15
-
16
11
  var _api = require("../api.js");
17
-
18
12
  var _auth = require("../auth.js");
19
-
20
13
  var _base = require("./base.js");
21
-
22
14
  var _superagentBluebirdPromise = _interopRequireDefault(require("superagent-bluebird-promise"));
23
-
24
15
  var _stateRegister = require("../state-register.js");
25
-
26
16
  /**
27
17
 
28
18
  * @constructor
29
19
  * @alias models.UserModel
30
20
  * @extends models.BaseModel
31
21
  */
32
- var UserModel = _base.BaseModel.extend(
33
- /** @lends models.UserModel# */
34
- {
22
+ var UserModel = exports.UserModel = _base.BaseModel.extend(/** @lends models.UserModel# */{
35
23
  modelName: "users",
36
24
  initialize: function initialize() {
37
25
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
@@ -41,7 +29,6 @@ var UserModel = _base.BaseModel.extend(
41
29
  this.self = options && options.self ? options.self : false;
42
30
  this.anon = options && options.anon ? options.anon : false;
43
31
  },
44
-
45
32
  /**
46
33
  * @property {string[]} actions
47
34
  * @property {date} date_joined
@@ -97,14 +84,12 @@ var UserModel = _base.BaseModel.extend(
97
84
  rtms_token: "string",
98
85
  last_reset_request: "string"
99
86
  },
100
-
101
87
  /**
102
88
  * @property {models.TenancyModel} tenancy
103
89
  */
104
90
  children: {
105
91
  tenancy: "TenancyModel"
106
92
  },
107
-
108
93
  /**
109
94
  * @property {collections.GroupCollection} groups
110
95
  * @property {collections.TeamCollection} team_set
@@ -113,7 +98,6 @@ var UserModel = _base.BaseModel.extend(
113
98
  groups: "GroupCollection",
114
99
  team_set: "TeamCollection"
115
100
  },
116
-
117
101
  /**
118
102
  * @property {string} fullName - The full name of the user
119
103
  * @property {object} permissions - The one place for testing user permissions
@@ -164,34 +148,33 @@ var UserModel = _base.BaseModel.extend(
164
148
  var customers = {
165
149
  canCreateWithoutTeam: this.actions.indexOf("Allow Teamless Customers") > -1
166
150
  };
151
+ var signing = {
152
+ canUseSigning: this.actions.includes("Use Signing")
153
+ };
167
154
  return {
168
155
  presets: presets,
169
156
  appointments: appointments,
170
157
  presomanager: presomanager,
171
- customers: customers
158
+ customers: customers,
159
+ signing: signing
172
160
  };
173
161
  }
174
162
  }
175
163
  },
176
164
  fetchJwtLogin: function fetchJwtLogin() {
177
165
  var redirectURL = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
178
-
179
166
  var authURL = _api.Api.getResourceURL("hq-authorized-link");
180
-
181
167
  return (0, _superagentBluebirdPromise.default)("GET", authURL).set(_auth.Auth.headers).then(function (resp) {
182
168
  return resp.body.url + (redirectURL ? "&next=".concat(redirectURL) : "");
183
169
  });
184
170
  },
185
171
  fetch: function fetch() {
186
172
  var _this = this;
187
-
188
173
  var fetch = _base.BaseModel.prototype.fetch.apply(this, arguments);
189
-
190
174
  return fetch.tap(function () {
191
175
  if (_this.self) {
192
176
  _this.self = false;
193
177
  }
194
-
195
178
  if (_this.anon) {
196
179
  _this.anon = false;
197
180
  }
@@ -199,13 +182,11 @@ var UserModel = _base.BaseModel.extend(
199
182
  },
200
183
  url: function url() {
201
184
  var originalUrl = _base.BaseModel.prototype.url.call(this);
202
-
203
185
  if (this.self) {
204
186
  return "".concat(originalUrl, "self/");
205
187
  } else if (this.anon) {
206
188
  return "".concat(originalUrl, "anon/");
207
189
  }
208
-
209
190
  return originalUrl;
210
191
  },
211
192
  toServer: function toServer() {
@@ -213,21 +194,16 @@ var UserModel = _base.BaseModel.extend(
213
194
  id: this.id,
214
195
  preferences: this.preferences
215
196
  };
216
-
217
197
  if (this.groups) {
218
198
  data.groups = this.groups.map(function (group) {
219
199
  return group.url();
220
200
  });
221
201
  }
222
-
223
202
  if (!data.preferences.timezone) {
224
203
  delete data.preferences.timezone;
225
204
  }
226
-
227
205
  return data;
228
206
  }
229
207
  });
230
-
231
- exports.UserModel = UserModel;
232
208
  (0, _stateRegister.register)("UserModel", UserModel);
233
209
  //# sourceMappingURL=user.js.map