@livepreso/api 6.40.0 → 6.43.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 (446) hide show
  1. package/.eslintrc.js +5 -0
  2. package/.rush/temp/build-cache-tar.log +7 -0
  3. package/.rush/temp/package-deps_build.json +170 -0
  4. package/.rush/temp/shrinkwrap-deps.json +846 -0
  5. package/CHANGELOG.json +41 -0
  6. package/CHANGELOG.md +25 -0
  7. package/api.build.log +15 -0
  8. package/babel.config.js +9 -18
  9. package/cjs/api.js +1 -1
  10. package/cjs/api.js.map +1 -1
  11. package/cjs/api.spec.js +2 -2
  12. package/cjs/api.spec.js.map +1 -1
  13. package/cjs/auth.js +6 -5
  14. package/cjs/auth.js.map +1 -1
  15. package/cjs/auth.spec.js +25 -23
  16. package/cjs/auth.spec.js.map +1 -1
  17. package/cjs/caching.js +3 -3
  18. package/cjs/collections/activity.js +22 -27
  19. package/cjs/collections/activity.js.map +1 -1
  20. package/cjs/collections/adjunct-sections.js +2 -2
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js +2 -2
  23. package/cjs/collections/adjunct-slides.js.map +1 -1
  24. package/cjs/collections/adjunct-sub-slides.js +2 -2
  25. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  26. package/cjs/collections/appointment-adjunct-tags.js +28 -0
  27. package/cjs/collections/appointment-adjunct-tags.js.map +1 -0
  28. package/cjs/collections/appointment-deckversion-tags.js +28 -0
  29. package/cjs/collections/appointment-deckversion-tags.js.map +1 -0
  30. package/cjs/collections/appointment-duplicates.js +2 -2
  31. package/cjs/collections/appointment-duplicates.js.map +1 -1
  32. package/cjs/collections/appointment-editors.js +2 -2
  33. package/cjs/collections/appointment-editors.js.map +1 -1
  34. package/cjs/collections/appointment-section-tags.js +28 -0
  35. package/cjs/collections/appointment-section-tags.js.map +1 -0
  36. package/cjs/collections/appointment-slide-tags.js +28 -0
  37. package/cjs/collections/appointment-slide-tags.js.map +1 -0
  38. package/cjs/collections/appointment-tags.js +208 -0
  39. package/cjs/collections/appointment-tags.js.map +1 -0
  40. package/cjs/collections/appointments.js +10 -6
  41. package/cjs/collections/appointments.js.map +1 -1
  42. package/cjs/collections/assets.js +2 -2
  43. package/cjs/collections/assets.js.map +1 -1
  44. package/cjs/collections/auto-adjuncts.js +7 -3
  45. package/cjs/collections/auto-adjuncts.js.map +1 -1
  46. package/cjs/collections/base.js +30 -25
  47. package/cjs/collections/base.js.map +1 -1
  48. package/cjs/collections/base.spec.js +71 -123
  49. package/cjs/collections/base.spec.js.map +1 -1
  50. package/cjs/collections/cms-vals.js +2 -2
  51. package/cjs/collections/cms-vals.js.map +1 -1
  52. package/cjs/collections/contacts.js +2 -2
  53. package/cjs/collections/contacts.js.map +1 -1
  54. package/cjs/collections/created-assets.js +2 -2
  55. package/cjs/collections/created-assets.js.map +1 -1
  56. package/cjs/collections/customers.js +2 -2
  57. package/cjs/collections/customers.js.map +1 -1
  58. package/cjs/collections/deck-notes.js +2 -2
  59. package/cjs/collections/deck-notes.js.map +1 -1
  60. package/cjs/collections/deck-versions.js +20 -8
  61. package/cjs/collections/deck-versions.js.map +1 -1
  62. package/cjs/collections/decks.js +2 -2
  63. package/cjs/collections/decks.js.map +1 -1
  64. package/cjs/collections/deleted-assets.js +2 -2
  65. package/cjs/collections/deleted-assets.js.map +1 -1
  66. package/cjs/collections/dispatches.js +4 -4
  67. package/cjs/collections/dispatches.js.map +1 -1
  68. package/cjs/collections/event-objects.js +2 -2
  69. package/cjs/collections/event-objects.js.map +1 -1
  70. package/cjs/collections/events.js +2 -2
  71. package/cjs/collections/events.js.map +1 -1
  72. package/cjs/collections/groups.js +2 -2
  73. package/cjs/collections/groups.js.map +1 -1
  74. package/cjs/collections/images.js +2 -2
  75. package/cjs/collections/images.js.map +1 -1
  76. package/cjs/collections/locations.js +2 -2
  77. package/cjs/collections/locations.js.map +1 -1
  78. package/cjs/collections/opportunities.js +2 -2
  79. package/cjs/collections/opportunities.js.map +1 -1
  80. package/cjs/collections/pack-diffs.js +2 -2
  81. package/cjs/collections/pack-diffs.js.map +1 -1
  82. package/cjs/collections/packs.js +2 -2
  83. package/cjs/collections/packs.js.map +1 -1
  84. package/cjs/collections/presets.js +2 -2
  85. package/cjs/collections/presets.js.map +1 -1
  86. package/cjs/collections/section-selections.js +2 -2
  87. package/cjs/collections/section-selections.js.map +1 -1
  88. package/cjs/collections/sections.js +2 -2
  89. package/cjs/collections/sections.js.map +1 -1
  90. package/cjs/collections/slide-selections.js +2 -2
  91. package/cjs/collections/slide-selections.js.map +1 -1
  92. package/cjs/collections/slides.js +2 -2
  93. package/cjs/collections/slides.js.map +1 -1
  94. package/cjs/collections/snapshots.js +2 -2
  95. package/cjs/collections/snapshots.js.map +1 -1
  96. package/cjs/collections/sub-slides.js +2 -2
  97. package/cjs/collections/sub-slides.js.map +1 -1
  98. package/cjs/collections/tags.js +28 -0
  99. package/cjs/collections/tags.js.map +1 -0
  100. package/cjs/collections/teams.js +2 -2
  101. package/cjs/collections/teams.js.map +1 -1
  102. package/cjs/collections/templates.js +2 -2
  103. package/cjs/collections/templates.js.map +1 -1
  104. package/cjs/collections/uploads.js +2 -2
  105. package/cjs/collections/uploads.js.map +1 -1
  106. package/cjs/collections/users.js +2 -2
  107. package/cjs/collections/users.js.map +1 -1
  108. package/cjs/collections.js +115 -0
  109. package/cjs/collections.js.map +1 -1
  110. package/cjs/index.js +3 -0
  111. package/cjs/index.js.map +1 -1
  112. package/cjs/middleware.js.map +1 -1
  113. package/cjs/middlewares/auth.js +10 -6
  114. package/cjs/middlewares/auth.js.map +1 -1
  115. package/cjs/middlewares/base.js +1 -3
  116. package/cjs/middlewares/base.js.map +1 -1
  117. package/cjs/middlewares/json.js +10 -6
  118. package/cjs/middlewares/json.js.map +1 -1
  119. package/cjs/middlewares/redirect.js +10 -6
  120. package/cjs/middlewares/redirect.js.map +1 -1
  121. package/cjs/models/activity-item.js +6 -2
  122. package/cjs/models/activity-item.js.map +1 -1
  123. package/cjs/models/adjunct-section.js +2 -2
  124. package/cjs/models/adjunct-section.js.map +1 -1
  125. package/cjs/models/adjunct-slide.js +2 -2
  126. package/cjs/models/adjunct-slide.js.map +1 -1
  127. package/cjs/models/adjunct-sub-slide.js +2 -2
  128. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  129. package/cjs/models/adjunct.js +2 -2
  130. package/cjs/models/adjunct.js.map +1 -1
  131. package/cjs/models/api.js.map +1 -1
  132. package/cjs/models/appointment-adjunct-tags.js +52 -0
  133. package/cjs/models/appointment-adjunct-tags.js.map +1 -0
  134. package/cjs/models/appointment-deckversion-tags.js +52 -0
  135. package/cjs/models/appointment-deckversion-tags.js.map +1 -0
  136. package/cjs/models/appointment-duplicate.js +8 -3
  137. package/cjs/models/appointment-duplicate.js.map +1 -1
  138. package/cjs/models/appointment-editor.js +2 -2
  139. package/cjs/models/appointment-editor.js.map +1 -1
  140. package/cjs/models/appointment-section-tags.js +52 -0
  141. package/cjs/models/appointment-section-tags.js.map +1 -0
  142. package/cjs/models/appointment-slide-tags.js +52 -0
  143. package/cjs/models/appointment-slide-tags.js.map +1 -0
  144. package/cjs/models/appointment-stats.js +2 -2
  145. package/cjs/models/appointment-stats.js.map +1 -1
  146. package/cjs/models/appointment-tags.js +48 -0
  147. package/cjs/models/appointment-tags.js.map +1 -0
  148. package/cjs/models/appointment-viewing.js +2 -2
  149. package/cjs/models/appointment-viewing.js.map +1 -1
  150. package/cjs/models/appointment.js +16 -7
  151. package/cjs/models/appointment.js.map +1 -1
  152. package/cjs/models/asset.js +2 -2
  153. package/cjs/models/asset.js.map +1 -1
  154. package/cjs/models/auto-adjunct-key-check.js +2 -2
  155. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  156. package/cjs/models/auto-adjunct.js +2 -2
  157. package/cjs/models/auto-adjunct.js.map +1 -1
  158. package/cjs/models/base.js +25 -36
  159. package/cjs/models/base.js.map +1 -1
  160. package/cjs/models/base.spec.js +45 -45
  161. package/cjs/models/base.spec.js.map +1 -1
  162. package/cjs/models/choicelist.js.map +1 -1
  163. package/cjs/models/cms-val.js.map +1 -1
  164. package/cjs/models/contact.js +2 -2
  165. package/cjs/models/contact.js.map +1 -1
  166. package/cjs/models/customer.js +2 -2
  167. package/cjs/models/customer.js.map +1 -1
  168. package/cjs/models/deck-note.js +2 -2
  169. package/cjs/models/deck-note.js.map +1 -1
  170. package/cjs/models/deck-tags.js +61 -0
  171. package/cjs/models/deck-tags.js.map +1 -0
  172. package/cjs/models/deck-version.js +5 -3
  173. package/cjs/models/deck-version.js.map +1 -1
  174. package/cjs/models/deck.js +6 -3
  175. package/cjs/models/deck.js.map +1 -1
  176. package/cjs/models/dispatch-preview.js +3 -3
  177. package/cjs/models/dispatch-preview.js.map +1 -1
  178. package/cjs/models/dispatch.js +2 -2
  179. package/cjs/models/dispatch.js.map +1 -1
  180. package/cjs/models/envs.js.map +1 -1
  181. package/cjs/models/event-object.js +2 -2
  182. package/cjs/models/event-object.js.map +1 -1
  183. package/cjs/models/event.js +2 -2
  184. package/cjs/models/event.js.map +1 -1
  185. package/cjs/models/feed-data.js +2 -2
  186. package/cjs/models/feed-data.js.map +1 -1
  187. package/cjs/models/file.js +2 -2
  188. package/cjs/models/file.js.map +1 -1
  189. package/cjs/models/group.js +2 -2
  190. package/cjs/models/group.js.map +1 -1
  191. package/cjs/models/handover.js +2 -2
  192. package/cjs/models/handover.js.map +1 -1
  193. package/cjs/models/hosted-preso.js +2 -2
  194. package/cjs/models/hosted-preso.js.map +1 -1
  195. package/cjs/models/image.js +2 -2
  196. package/cjs/models/image.js.map +1 -1
  197. package/cjs/models/location.js +2 -2
  198. package/cjs/models/location.js.map +1 -1
  199. package/cjs/models/manifest-json.js +74 -57
  200. package/cjs/models/manifest-json.js.map +1 -1
  201. package/cjs/models/onshare.js +2 -2
  202. package/cjs/models/onshare.js.map +1 -1
  203. package/cjs/models/opportunity.js +2 -2
  204. package/cjs/models/opportunity.js.map +1 -1
  205. package/cjs/models/pack-diff.js +2 -2
  206. package/cjs/models/pack-diff.js.map +1 -1
  207. package/cjs/models/pack.js +2 -2
  208. package/cjs/models/pack.js.map +1 -1
  209. package/cjs/models/preset.js +22 -2
  210. package/cjs/models/preset.js.map +1 -1
  211. package/cjs/models/refresh-request.js +2 -2
  212. package/cjs/models/refresh-request.js.map +1 -1
  213. package/cjs/models/room.js +2 -2
  214. package/cjs/models/room.js.map +1 -1
  215. package/cjs/models/salesforce-lookup.js +2 -2
  216. package/cjs/models/salesforce-lookup.js.map +1 -1
  217. package/cjs/models/section-selection.js +2 -2
  218. package/cjs/models/section-selection.js.map +1 -1
  219. package/cjs/models/section.js +2 -2
  220. package/cjs/models/section.js.map +1 -1
  221. package/cjs/models/slide-selection.js +2 -2
  222. package/cjs/models/slide-selection.js.map +1 -1
  223. package/cjs/models/slide.js +2 -2
  224. package/cjs/models/slide.js.map +1 -1
  225. package/cjs/models/snapshot.js +2 -2
  226. package/cjs/models/snapshot.js.map +1 -1
  227. package/cjs/models/sub-slide.js +2 -2
  228. package/cjs/models/sub-slide.js.map +1 -1
  229. package/cjs/models/support-ticket.js +2 -2
  230. package/cjs/models/support-ticket.js.map +1 -1
  231. package/cjs/models/tag.js +54 -0
  232. package/cjs/models/tag.js.map +1 -0
  233. package/cjs/models/team.js +2 -2
  234. package/cjs/models/team.js.map +1 -1
  235. package/cjs/models/template.js +2 -2
  236. package/cjs/models/template.js.map +1 -1
  237. package/cjs/models/tenancy.js +2 -2
  238. package/cjs/models/tenancy.js.map +1 -1
  239. package/cjs/models/timing-log.js +20 -41
  240. package/cjs/models/timing-log.js.map +1 -1
  241. package/cjs/models/timing-log.spec.js +18 -86
  242. package/cjs/models/timing-log.spec.js.map +1 -1
  243. package/cjs/models/transcribe-socket.js +2 -2
  244. package/cjs/models/transcribe-socket.js.map +1 -1
  245. package/cjs/models/upload.js +2 -2
  246. package/cjs/models/upload.js.map +1 -1
  247. package/cjs/models/user.js +6 -4
  248. package/cjs/models/user.js.map +1 -1
  249. package/cjs/models/user.spec.js +10 -8
  250. package/cjs/models/user.spec.js.map +1 -1
  251. package/cjs/models.js +148 -0
  252. package/cjs/models.js.map +1 -1
  253. package/cjs/presentation/appointment-presentation.js +13 -5
  254. package/cjs/presentation/appointment-presentation.js.map +1 -1
  255. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  256. package/cjs/presentation/base-presentation-model.js +65 -0
  257. package/cjs/presentation/base-presentation-model.js.map +1 -1
  258. package/cjs/presentation/base-presentation-model.spec.js +87 -0
  259. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  260. package/cjs/presentation/presentation-deck.js +31 -20
  261. package/cjs/presentation/presentation-deck.js.map +1 -1
  262. package/cjs/presentation/presentation-deck.spec.js +15 -13
  263. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  264. package/cjs/presentation/presentation-decks.js +2 -2
  265. package/cjs/presentation/presentation-decks.js.map +1 -1
  266. package/cjs/presentation/presentation-section.js +36 -17
  267. package/cjs/presentation/presentation-section.js.map +1 -1
  268. package/cjs/presentation/presentation-section.spec.js +418 -0
  269. package/cjs/presentation/presentation-section.spec.js.map +1 -0
  270. package/cjs/presentation/presentation-sections.js +2 -2
  271. package/cjs/presentation/presentation-sections.js.map +1 -1
  272. package/cjs/presentation/presentation-slide.js +35 -18
  273. package/cjs/presentation/presentation-slide.js.map +1 -1
  274. package/cjs/presentation/presentation-slide.spec.js +294 -0
  275. package/cjs/presentation/presentation-slide.spec.js.map +1 -0
  276. package/cjs/presentation/presentation-slides.js +2 -2
  277. package/cjs/presentation/presentation-slides.js.map +1 -1
  278. package/cjs/presentation/presentation-subslide.js +11 -7
  279. package/cjs/presentation/presentation-subslide.js.map +1 -1
  280. package/cjs/presentation/presentation-subslide.spec.js +68 -20
  281. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  282. package/cjs/presentation/presentation-subslides.js +2 -2
  283. package/cjs/presentation/presentation-subslides.js.map +1 -1
  284. package/cjs/presentation/presentation.js +19 -9
  285. package/cjs/presentation/presentation.js.map +1 -1
  286. package/cjs/presentation.js +10 -0
  287. package/cjs/presentation.js.map +1 -1
  288. package/cjs/state-register.js +11 -1
  289. package/cjs/state-register.js.map +1 -1
  290. package/cjs/sync.js +7 -7
  291. package/cjs/sync.js.map +1 -1
  292. package/cjs/utils.js +7 -7
  293. package/cjs/utils.js.map +1 -1
  294. package/cjs/utils.spec.js.map +1 -1
  295. package/config/rush-project.json +53 -0
  296. package/index.js +0 -1
  297. package/jest.config.js +4 -4
  298. package/package.json +17 -59
  299. package/setup-tests.js +2 -1
  300. package/src/api.js +3 -3
  301. package/src/api.spec.js +3 -4
  302. package/src/auth.js +6 -7
  303. package/src/auth.spec.js +3 -4
  304. package/src/collections/activity.js +5 -6
  305. package/src/collections/adjunct-sections.js +4 -4
  306. package/src/collections/adjunct-slides.js +4 -4
  307. package/src/collections/adjunct-sub-slides.js +2 -2
  308. package/src/collections/appointment-adjunct-tags.js +18 -0
  309. package/src/collections/appointment-deckversion-tags.js +21 -0
  310. package/src/collections/appointment-duplicates.js +2 -2
  311. package/src/collections/appointment-editors.js +2 -2
  312. package/src/collections/appointment-section-tags.js +18 -0
  313. package/src/collections/appointment-slide-tags.js +18 -0
  314. package/src/collections/appointment-tags.js +136 -0
  315. package/src/collections/appointments.js +18 -23
  316. package/src/collections/assets.js +2 -2
  317. package/src/collections/auto-adjuncts.js +5 -5
  318. package/src/collections/base.js +17 -18
  319. package/src/collections/base.spec.js +7 -8
  320. package/src/collections/cms-vals.js +3 -3
  321. package/src/collections/contacts.js +2 -2
  322. package/src/collections/created-assets.js +2 -2
  323. package/src/collections/customers.js +2 -2
  324. package/src/collections/deck-notes.js +2 -2
  325. package/src/collections/deck-versions.js +18 -15
  326. package/src/collections/decks.js +2 -2
  327. package/src/collections/deleted-assets.js +2 -2
  328. package/src/collections/dispatches.js +8 -13
  329. package/src/collections/event-objects.js +2 -2
  330. package/src/collections/events.js +2 -2
  331. package/src/collections/groups.js +2 -2
  332. package/src/collections/images.js +2 -2
  333. package/src/collections/locations.js +2 -2
  334. package/src/collections/opportunities.js +2 -2
  335. package/src/collections/pack-diffs.js +2 -2
  336. package/src/collections/packs.js +2 -2
  337. package/src/collections/presets.js +2 -2
  338. package/src/collections/section-selections.js +4 -4
  339. package/src/collections/sections.js +2 -2
  340. package/src/collections/slide-selections.js +4 -4
  341. package/src/collections/slides.js +2 -2
  342. package/src/collections/snapshots.js +2 -2
  343. package/src/collections/sub-slides.js +2 -2
  344. package/src/collections/tags.js +18 -0
  345. package/src/collections/teams.js +2 -2
  346. package/src/collections/templates.js +2 -2
  347. package/src/collections/uploads.js +2 -2
  348. package/src/collections/users.js +2 -2
  349. package/src/collections.js +6 -0
  350. package/src/index.js +1 -4
  351. package/src/middleware.js +1 -1
  352. package/src/middlewares/json.js +2 -2
  353. package/src/middlewares/redirect.js +1 -2
  354. package/src/models/activity-item.js +6 -6
  355. package/src/models/adjunct-section.js +5 -5
  356. package/src/models/adjunct-slide.js +5 -5
  357. package/src/models/adjunct-sub-slide.js +5 -5
  358. package/src/models/adjunct.js +4 -4
  359. package/src/models/api.js +1 -1
  360. package/src/models/appointment-adjunct-tags.js +41 -0
  361. package/src/models/appointment-deckversion-tags.js +41 -0
  362. package/src/models/appointment-duplicate.js +7 -7
  363. package/src/models/appointment-editor.js +6 -6
  364. package/src/models/appointment-section-tags.js +41 -0
  365. package/src/models/appointment-slide-tags.js +41 -0
  366. package/src/models/appointment-stats.js +5 -5
  367. package/src/models/appointment-tags.js +39 -0
  368. package/src/models/appointment-viewing.js +3 -3
  369. package/src/models/appointment.js +35 -29
  370. package/src/models/asset.js +5 -5
  371. package/src/models/auto-adjunct-key-check.js +5 -5
  372. package/src/models/auto-adjunct.js +4 -4
  373. package/src/models/base.js +36 -37
  374. package/src/models/base.spec.js +61 -62
  375. package/src/models/choicelist.js +2 -2
  376. package/src/models/cms-val.js +3 -3
  377. package/src/models/contact.js +9 -9
  378. package/src/models/customer.js +13 -13
  379. package/src/models/deck-note.js +4 -4
  380. package/src/models/deck-tags.js +52 -0
  381. package/src/models/deck-version.js +9 -8
  382. package/src/models/deck.js +8 -6
  383. package/src/models/dispatch-preview.js +6 -7
  384. package/src/models/dispatch.js +6 -7
  385. package/src/models/envs.js +1 -1
  386. package/src/models/event-object.js +6 -6
  387. package/src/models/event.js +7 -7
  388. package/src/models/feed-data.js +5 -5
  389. package/src/models/file.js +4 -4
  390. package/src/models/group.js +3 -3
  391. package/src/models/handover.js +5 -5
  392. package/src/models/hosted-preso.js +5 -5
  393. package/src/models/image.js +4 -4
  394. package/src/models/location.js +5 -5
  395. package/src/models/manifest-json.js +68 -30
  396. package/src/models/onshare.js +5 -5
  397. package/src/models/opportunity.js +5 -5
  398. package/src/models/pack-diff.js +5 -5
  399. package/src/models/pack.js +4 -4
  400. package/src/models/preset.js +24 -5
  401. package/src/models/refresh-request.js +6 -6
  402. package/src/models/room.js +3 -3
  403. package/src/models/salesforce-lookup.js +3 -3
  404. package/src/models/section-selection.js +6 -6
  405. package/src/models/section.js +7 -7
  406. package/src/models/slide-selection.js +6 -6
  407. package/src/models/slide.js +7 -7
  408. package/src/models/snapshot.js +5 -5
  409. package/src/models/sub-slide.js +5 -5
  410. package/src/models/support-ticket.js +4 -4
  411. package/src/models/tag.js +42 -0
  412. package/src/models/team.js +4 -4
  413. package/src/models/template.js +4 -4
  414. package/src/models/tenancy.js +5 -5
  415. package/src/models/timing-log.js +18 -18
  416. package/src/models/timing-log.spec.js +28 -29
  417. package/src/models/transcribe-socket.js +3 -3
  418. package/src/models/upload.js +3 -3
  419. package/src/models/user.js +24 -20
  420. package/src/models/user.spec.js +2 -2
  421. package/src/models.js +7 -0
  422. package/src/presentation/appointment-presentation.js +14 -10
  423. package/src/presentation/base-presentation-model.js +67 -5
  424. package/src/presentation/base-presentation-model.spec.js +114 -22
  425. package/src/presentation/presentation-deck.js +54 -52
  426. package/src/presentation/presentation-deck.spec.js +26 -27
  427. package/src/presentation/presentation-decks.js +2 -2
  428. package/src/presentation/presentation-section.js +62 -48
  429. package/src/presentation/presentation-section.spec.js +363 -0
  430. package/src/presentation/presentation-sections.js +2 -2
  431. package/src/presentation/presentation-slide.js +51 -36
  432. package/src/presentation/presentation-slide.spec.js +250 -0
  433. package/src/presentation/presentation-slides.js +2 -2
  434. package/src/presentation/presentation-subslide.js +24 -17
  435. package/src/presentation/presentation-subslide.spec.js +40 -12
  436. package/src/presentation/presentation-subslides.js +2 -2
  437. package/src/presentation/presentation.js +27 -15
  438. package/src/state-register.js +7 -0
  439. package/src/sync.js +21 -23
  440. package/src/utils.js +8 -7
  441. package/src/utils.spec.js +15 -15
  442. package/.editorconfig +0 -9
  443. package/.eslintrc +0 -25
  444. package/.prettierrc.js +0 -3
  445. package/jsdoc.json +0 -12
  446. package/yarn.lock +0 -8099
@@ -2,8 +2,8 @@ import "../collections/slides.js";
2
2
  import "./deck-version.js";
3
3
  import "./asset.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -56,12 +56,12 @@ export const SectionModel = BaseModel.extend(
56
56
  uploaded: "boolean",
57
57
  visible: {
58
58
  type: "boolean",
59
- default: true
59
+ default: true,
60
60
  },
61
61
  tags: {
62
62
  type: "array",
63
- default: () => []
64
- }
63
+ default: () => [],
64
+ },
65
65
  },
66
66
 
67
67
  /**
@@ -70,15 +70,15 @@ export const SectionModel = BaseModel.extend(
70
70
  */
71
71
  children: {
72
72
  deckversion: "DeckVersionModel",
73
- index_asset: "AssetModel"
73
+ index_asset: "AssetModel",
74
74
  },
75
75
 
76
76
  /**
77
77
  * @property {collections.SlideCollection} slide_set
78
78
  */
79
79
  collections: {
80
- slide_set: "SlideCollection"
81
- }
80
+ slide_set: "SlideCollection",
81
+ },
82
82
  }
83
83
  );
84
84
 
@@ -1,8 +1,8 @@
1
1
  import "./slide.js";
2
2
  import "./appointment.js";
3
3
 
4
- import { register } from "../state-register.js";
5
4
  import { BaseModel } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -14,7 +14,7 @@ export const SlideSelectionModel = BaseModel.extend(
14
14
  modelName: "appointment-slides",
15
15
 
16
16
  urlMatchKeys: {
17
- "appointment.id": "number"
17
+ "appointment.id": "number",
18
18
  },
19
19
 
20
20
  /**
@@ -23,7 +23,7 @@ export const SlideSelectionModel = BaseModel.extend(
23
23
  */
24
24
  props: {
25
25
  sequence: "number",
26
- visible: "boolean"
26
+ visible: "boolean",
27
27
  },
28
28
 
29
29
  /**
@@ -32,7 +32,7 @@ export const SlideSelectionModel = BaseModel.extend(
32
32
  */
33
33
  children: {
34
34
  appointment: "AppointmentModel",
35
- slide: "SlideModel"
35
+ slide: "SlideModel",
36
36
  },
37
37
 
38
38
  toServer() {
@@ -40,7 +40,7 @@ export const SlideSelectionModel = BaseModel.extend(
40
40
  appointment: this._retrieveURL(this.appointment),
41
41
  slide: this._retrieveURL(this.slide),
42
42
  sequence: this.sequence,
43
- visible: this.visible
43
+ visible: this.visible,
44
44
  };
45
45
 
46
46
  if (this.id) {
@@ -49,7 +49,7 @@ export const SlideSelectionModel = BaseModel.extend(
49
49
  }
50
50
 
51
51
  return data;
52
- }
52
+ },
53
53
  }
54
54
  );
55
55
 
@@ -2,8 +2,8 @@ import "../collections/sub-slides.js";
2
2
  import "./section.js";
3
3
  import "./asset.js";
4
4
 
5
- import { register } from "../state-register.js";
6
5
  import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
7
 
8
8
  /**
9
9
  * @constructor
@@ -57,12 +57,12 @@ export const SlideModel = BaseModel.extend(
57
57
  uploaded: "boolean",
58
58
  visible: {
59
59
  type: "boolean",
60
- default: true
60
+ default: true,
61
61
  },
62
62
  tags: {
63
63
  type: "array",
64
- default: () => []
65
- }
64
+ default: () => [],
65
+ },
66
66
  },
67
67
 
68
68
  /**
@@ -71,15 +71,15 @@ export const SlideModel = BaseModel.extend(
71
71
  */
72
72
  children: {
73
73
  section: "SectionModel",
74
- index_asset: "AssetModel"
74
+ index_asset: "AssetModel",
75
75
  },
76
76
 
77
77
  /**
78
78
  * @property {collections.SubSlideCollection} subslide_set
79
79
  */
80
80
  collections: {
81
- subslide_set: "SubSlideCollection"
82
- }
81
+ subslide_set: "SubSlideCollection",
82
+ },
83
83
  }
84
84
  );
85
85
 
@@ -1,7 +1,7 @@
1
1
  import "./appointment.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -18,20 +18,20 @@ export const SnapshotModel = BaseModel.extend(
18
18
  */
19
19
  props: {
20
20
  context: "object",
21
- creation_status: "string"
21
+ creation_status: "string",
22
22
  },
23
23
 
24
24
  /**
25
25
  * @property {models.AppointmentModel} appointment
26
26
  */
27
27
  children: {
28
- appointment: "AppointmentModel"
28
+ appointment: "AppointmentModel",
29
29
  },
30
30
 
31
31
  toServer() {
32
32
  const data = {
33
33
  context: JSON.stringify(this.context),
34
- appointment: this._retrieveURL(this.appointment)
34
+ appointment: this._retrieveURL(this.appointment),
35
35
  };
36
36
 
37
37
  if (this.id) {
@@ -39,7 +39,7 @@ export const SnapshotModel = BaseModel.extend(
39
39
  }
40
40
 
41
41
  return data;
42
- }
42
+ },
43
43
  }
44
44
  );
45
45
 
@@ -1,8 +1,8 @@
1
1
  import "./slide.js";
2
2
  import "./asset.js";
3
3
 
4
- import { register } from "../state-register.js";
5
4
  import { BaseModel } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -44,8 +44,8 @@ export const SubSlideModel = BaseModel.extend(
44
44
  title: "string",
45
45
  tags: {
46
46
  type: "array",
47
- default: () => []
48
- }
47
+ default: () => [],
48
+ },
49
49
  },
50
50
 
51
51
  /**
@@ -54,8 +54,8 @@ export const SubSlideModel = BaseModel.extend(
54
54
  */
55
55
  children: {
56
56
  index_asset: "AssetModel",
57
- slide: "SlideModel"
58
- }
57
+ slide: "SlideModel",
58
+ },
59
59
  }
60
60
  );
61
61
 
@@ -1,7 +1,7 @@
1
1
  import "./user.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -22,7 +22,7 @@ export const SupportTicketModel = BaseModel.extend(
22
22
  message: "string",
23
23
  extra: "object",
24
24
  report_url: "string",
25
- resolved_date: "date"
25
+ resolved_date: "date",
26
26
  },
27
27
 
28
28
  /**
@@ -31,8 +31,8 @@ export const SupportTicketModel = BaseModel.extend(
31
31
  */
32
32
  children: {
33
33
  user: "UserModel",
34
- resolved_by: "UserModel"
35
- }
34
+ resolved_by: "UserModel",
35
+ },
36
36
  }
37
37
  );
38
38
 
@@ -0,0 +1,42 @@
1
+ import "./user.js";
2
+ import "./team.js";
3
+ import "./deck.js";
4
+
5
+ import { BaseModel } from "./base.js";
6
+ import { register } from "../state-register.js";
7
+
8
+ /**
9
+ * @constructor
10
+ * @alias models.TagModel
11
+ * @extends models.BaseModel
12
+ */
13
+ export const TagModel = BaseModel.extend(
14
+ /** @lends models.TagModel# */ {
15
+ modelName: "tags",
16
+
17
+ /**
18
+ * @property {string} scope
19
+ * @property {string} key
20
+ * @property {string} description
21
+ */
22
+ props: {
23
+ scope: "string",
24
+ key: "string",
25
+ description: "string",
26
+ visible: "boolean",
27
+ },
28
+
29
+ /**
30
+ * @property {models.UserModel} user
31
+ * @property {models.TeamModel} team
32
+ * @property {models.DeckModel} deck
33
+ */
34
+ children: {
35
+ user: "UserModel",
36
+ team: "TeamModel",
37
+ deck: "DeckModel",
38
+ },
39
+ }
40
+ );
41
+
42
+ register("TagModel", TagModel);
@@ -1,7 +1,7 @@
1
1
  import "./user.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -35,7 +35,7 @@ export const TeamModel = BaseModel.extend(
35
35
  logo_256: "string",
36
36
  logo_512: "string",
37
37
  logo_1024: "string",
38
- logo_transformations: "string"
38
+ logo_transformations: "string",
39
39
  },
40
40
 
41
41
  /**
@@ -44,8 +44,8 @@ export const TeamModel = BaseModel.extend(
44
44
  */
45
45
  collections: {
46
46
  user_set: "UserCollection",
47
- deck_set: "PresentationDeckCollection"
48
- }
47
+ deck_set: "PresentationDeckCollection",
48
+ },
49
49
  }
50
50
  );
51
51
 
@@ -1,8 +1,8 @@
1
1
  import "./deck-version.js";
2
2
  import "./asset.js";
3
3
 
4
- import { register } from "../state-register.js";
5
4
  import { BaseModel } from "./base.js";
5
+ import { register } from "../state-register.js";
6
6
 
7
7
  /**
8
8
  * @constructor
@@ -32,7 +32,7 @@ export const TemplateModel = BaseModel.extend(
32
32
  sequence: "number",
33
33
  image_128: "string",
34
34
  image_256: "string",
35
- image_512: "string"
35
+ image_512: "string",
36
36
  },
37
37
 
38
38
  /**
@@ -41,8 +41,8 @@ export const TemplateModel = BaseModel.extend(
41
41
  */
42
42
  children: {
43
43
  index_asset: "AssetModel",
44
- deckversion: "DeckVersionModel"
45
- }
44
+ deckversion: "DeckVersionModel",
45
+ },
46
46
  }
47
47
  );
48
48
 
@@ -1,7 +1,7 @@
1
1
  import "./user.js";
2
2
 
3
- import { register } from "../state-register.js";
4
3
  import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
5
 
6
6
  /**
7
7
  * @constructor
@@ -33,16 +33,16 @@ export const TenancyModel = BaseModel.extend(
33
33
  is_default: "boolean",
34
34
  status_set: {
35
35
  type: "array",
36
- default: () => []
37
- }
36
+ default: () => [],
37
+ },
38
38
  },
39
39
 
40
40
  /**
41
41
  * @property {models.UserModel} user
42
42
  */
43
43
  children: {
44
- administrator: "UserModel"
45
- }
44
+ administrator: "UserModel",
45
+ },
46
46
  }
47
47
  );
48
48
 
@@ -3,17 +3,17 @@ import "./hosted-preso.js";
3
3
  import "./user.js";
4
4
  import "../collections/users.js";
5
5
 
6
- import dedent from "dedent-js";
7
- import _ from "lodash";
8
- import moment from "moment";
9
- import superagent from "superagent";
6
+ import { DATE_FORMAT, DATE_FORMAT_T } from "../utils.js";
10
7
 
11
8
  import { Auth } from "../auth.js";
9
+ import { BaseModel } from "./base.js";
10
+ import _ from "lodash";
11
+ import dedent from "dedent-js";
12
+ import { getShortURL } from "../utils.js";
12
13
  import log from "../log.js";
14
+ import moment from "moment";
13
15
  import { register } from "../state-register.js";
14
- import { getShortURL } from "../utils.js";
15
- import { DATE_FORMAT, DATE_FORMAT_T } from "../utils.js";
16
- import { BaseModel } from "./base.js";
16
+ import superagent from "superagent";
17
17
 
18
18
  /**
19
19
  * @typedef Event
@@ -80,9 +80,9 @@ export const TimingLogModel = BaseModel.extend(
80
80
  // A prep user or salesperson as prepared a preso
81
81
  "prep",
82
82
  // A salesperson has reviewed an old preso
83
- "review"
84
- ]
85
- }
83
+ "review",
84
+ ],
85
+ },
86
86
  },
87
87
 
88
88
  /**
@@ -92,7 +92,7 @@ export const TimingLogModel = BaseModel.extend(
92
92
  children: {
93
93
  appointment: "AppointmentModel",
94
94
  hostedPreso: "HostedPresoModel",
95
- user: "UserModel"
95
+ user: "UserModel",
96
96
  },
97
97
 
98
98
  /**
@@ -101,7 +101,7 @@ export const TimingLogModel = BaseModel.extend(
101
101
  */
102
102
  collections: {
103
103
  attendee_set: "UserCollection",
104
- remote_attendee_set: "UserCollection"
104
+ remote_attendee_set: "UserCollection",
105
105
  },
106
106
 
107
107
  /**
@@ -149,14 +149,14 @@ export const TimingLogModel = BaseModel.extend(
149
149
  const attendeeSet =
150
150
  this.attendee_set && this.attendee_set.length
151
151
  ? `\n${this.attendee_set
152
- .map(attendee => getShortURL(attendee.url()))
152
+ .map((attendee) => getShortURL(attendee.url()))
153
153
  .join(" ")} attending`
154
154
  : "";
155
155
 
156
156
  const remoteAttendeeSet =
157
157
  this.remote_attendee_set && this.remote_attendee_set.length
158
158
  ? `\n${this.remote_attendee_set
159
- .map(attendee => getShortURL(attendee.url()))
159
+ .map((attendee) => getShortURL(attendee.url()))
160
160
  .join(" ")} attending remotely`
161
161
  : "";
162
162
 
@@ -164,7 +164,7 @@ export const TimingLogModel = BaseModel.extend(
164
164
  present: "viewing",
165
165
  view: "viewing",
166
166
  prep: "preparing",
167
- review: "reviewing"
167
+ review: "reviewing",
168
168
  };
169
169
 
170
170
  const modeType = modeTypeMap[this.mode];
@@ -225,7 +225,7 @@ export const TimingLogModel = BaseModel.extend(
225
225
  this.events.push({
226
226
  timestamp: time.format(DATE_FORMAT_T),
227
227
  path,
228
- is_unfocused: isUnfocused
228
+ is_unfocused: isUnfocused,
229
229
  });
230
230
  },
231
231
 
@@ -296,7 +296,7 @@ export const TimingLogModel = BaseModel.extend(
296
296
  this.set(_.omit(body, ["events"]));
297
297
  return body;
298
298
  })
299
- .catch(superagent.SuperagentPromiseError, e => {
299
+ .catch(superagent.SuperagentPromiseError, (e) => {
300
300
  if (e.status === 405 && e.res.body.detail.indexOf("end") > -1) {
301
301
  // Don't send timing log events if the tracking is ended.
302
302
  throw e;
@@ -307,7 +307,7 @@ export const TimingLogModel = BaseModel.extend(
307
307
  }
308
308
  throw e;
309
309
  });
310
- }
310
+ },
311
311
  }
312
312
  );
313
313
 
@@ -1,34 +1,33 @@
1
- import dedent from "dedent-js";
2
- import moment from "moment";
3
1
  import { G } from "sp-test/api";
4
-
5
2
  import { TimingLogModel } from "./timing-log.js";
3
+ import dedent from "dedent-js";
4
+ import moment from "moment";
6
5
 
7
6
  describe("TimingLogModel", () => {
8
7
  const events = [
9
8
  {
10
9
  path: "/api/deckversions/4/",
11
10
  timestamp: "2016-10-27T00:42:47.045186Z",
12
- is_unfocused: false
11
+ is_unfocused: false,
13
12
  },
14
13
  {
15
14
  path: "/api/sections/28/",
16
15
  timestamp: "2016-10-27T00:43:59.430102Z",
17
- is_unfocused: false
16
+ is_unfocused: false,
18
17
  },
19
18
  {
20
19
  path: "/api/slides/380/",
21
20
  timestamp: "2016-10-27T00:45:01.038661Z",
22
- is_unfocused: false
21
+ is_unfocused: false,
23
22
  },
24
23
  {
25
24
  path: "/api/slides/378/",
26
25
  timestamp: "2016-10-27T00:45:13.495713Z",
27
- is_unfocused: false
28
- }
26
+ is_unfocused: false,
27
+ },
29
28
  ];
30
29
 
31
- it("should create logs with a timestamp right now", function() {
30
+ it("should create logs with a timestamp right now", function () {
32
31
  const TimingLogModel = G("TimingLogModel");
33
32
  const timingLog = new TimingLogModel();
34
33
  const currentTime = "2016-10-27T00:42:47.044135Z";
@@ -41,13 +40,13 @@ describe("TimingLogModel", () => {
41
40
  expect(timingLog.events[0].path).toEqual("/api/sections/1/");
42
41
  });
43
42
 
44
- it("should generate a timinglog compact format string", function() {
43
+ it("should generate a timinglog compact format string", function () {
45
44
  const TimingLogModel = G("TimingLogModel");
46
45
 
47
46
  const timingLog = new TimingLogModel({
48
47
  appointment: { id: 20 },
49
48
  user: { id: 9 },
50
- begin: "2016-10-27T00:42:47.044135Z"
49
+ begin: "2016-10-27T00:42:47.044135Z",
51
50
  });
52
51
 
53
52
  timingLog.events = events;
@@ -70,7 +69,7 @@ describe("TimingLogModel", () => {
70
69
  ["present", "viewing"],
71
70
  ["view", "viewing"],
72
71
  ["prep", "preparing"],
73
- ["review", "reviewing"]
72
+ ["review", "reviewing"],
74
73
  ])(`{ mode: "%s" }`, (mode, modeType) => {
75
74
  it(`should show '${modeType}' when mode is ${mode}`, async () => {
76
75
  const TimingLogModel = G("TimingLogModel");
@@ -78,7 +77,7 @@ describe("TimingLogModel", () => {
78
77
  const timingLog = new TimingLogModel({
79
78
  appointment: { id: 20 },
80
79
  user: { id: 9 },
81
- begin: "2016-10-27T00:42:47.044135Z"
80
+ begin: "2016-10-27T00:42:47.044135Z",
82
81
  });
83
82
 
84
83
  // First test is checking the default value, so we just
@@ -97,7 +96,7 @@ describe("TimingLogModel", () => {
97
96
  });
98
97
  });
99
98
 
100
- it("should add an end date if specified", function() {
99
+ it("should add an end date if specified", function () {
101
100
  const TimingLogModel = G("TimingLogModel");
102
101
 
103
102
  const timingLog = new TimingLogModel({
@@ -105,7 +104,7 @@ describe("TimingLogModel", () => {
105
104
  user: { id: 9 },
106
105
  begin: "2016-10-27T00:42:47.044135Z",
107
106
  end: "2016-10-27T00:48:13.495713Z",
108
- provisional: false
107
+ provisional: false,
109
108
  });
110
109
 
111
110
  timingLog.events = events;
@@ -124,13 +123,13 @@ describe("TimingLogModel", () => {
124
123
  expect(code).toEqual(assumedCode);
125
124
  });
126
125
 
127
- it("should use provisional if flag is set", function() {
126
+ it("should use provisional if flag is set", function () {
128
127
  const timingLog = new TimingLogModel({
129
128
  appointment: { id: 20 },
130
129
  user: { id: 9 },
131
130
  begin: "2016-10-27T00:42:47.044135Z",
132
131
  end: "2016-10-27T00:48:13.495713Z",
133
- provisional: true
132
+ provisional: true,
134
133
  });
135
134
 
136
135
  timingLog.events = events;
@@ -149,13 +148,13 @@ describe("TimingLogModel", () => {
149
148
  expect(code).toEqual(assumedCode);
150
149
  });
151
150
 
152
- it("should show attendees if set", function() {
151
+ it("should show attendees if set", function () {
153
152
  const timingLog = new TimingLogModel({
154
153
  appointment: { id: 20 },
155
154
  user: { id: 9 },
156
155
  attendee_set: [{ id: 10 }],
157
156
  remote_attendee_set: [{ id: 11 }],
158
- begin: "2016-10-27T00:42:47.044135Z"
157
+ begin: "2016-10-27T00:42:47.044135Z",
159
158
  });
160
159
 
161
160
  timingLog.events = events;
@@ -175,13 +174,13 @@ describe("TimingLogModel", () => {
175
174
  expect(code).toEqual(assumedCode);
176
175
  });
177
176
 
178
- it("should add unfocused time", function() {
177
+ it("should add unfocused time", function () {
179
178
  const timingLog = new TimingLogModel({
180
179
  appointment: { id: 20 },
181
180
  user: { id: 9 },
182
181
  attendee_set: [{ id: 10 }],
183
182
  remote_attendee_set: [{ id: 11 }],
184
- begin: "2016-10-27T00:42:47.044135Z"
183
+ begin: "2016-10-27T00:42:47.044135Z",
185
184
  });
186
185
 
187
186
  const modifiedEvents = [...events];
@@ -211,25 +210,25 @@ describe("TimingLogModel", () => {
211
210
  user: { id: 9 },
212
211
  attendee_set: [{ id: 10 }],
213
212
  remote_attendee_set: [{ id: 11 }],
214
- begin: "2016-10-27T00:42:47.044135Z"
213
+ begin: "2016-10-27T00:42:47.044135Z",
215
214
  });
216
215
 
217
216
  timingLog.events = [
218
217
  {
219
218
  path: "/api/deckversions/4/",
220
219
  timestamp: "2016-10-27T00:42:47.045186Z",
221
- is_unfocused: true
220
+ is_unfocused: true,
222
221
  },
223
222
  {
224
223
  path: "/api/sections/28/",
225
224
  timestamp: "2016-10-27T00:43:59.430102Z",
226
- is_unfocused: true
225
+ is_unfocused: true,
227
226
  },
228
227
  {
229
228
  path: "/api/slides/380/",
230
229
  timestamp: "2016-10-27T00:45:01.038661Z",
231
- is_unfocused: false
232
- }
230
+ is_unfocused: false,
231
+ },
233
232
  ];
234
233
 
235
234
  const code = timingLog.toCompactFormat();
@@ -252,7 +251,7 @@ describe(".addEvent", () => {
252
251
  user: { id: 9 },
253
252
  attendee_set: [{ id: 10 }],
254
253
  remote_attendee_set: [{ id: 11 }],
255
- begin: "2016-10-27T00:42:47.044135Z"
254
+ begin: "2016-10-27T00:42:47.044135Z",
256
255
  });
257
256
 
258
257
  timingLog.addEvent("unfocused", moment());
@@ -266,7 +265,7 @@ describe(".addEvent", () => {
266
265
  user: { id: 9 },
267
266
  attendee_set: [{ id: 10 }],
268
267
  remote_attendee_set: [{ id: 11 }],
269
- begin: "2016-10-27T00:42:47.044135Z"
268
+ begin: "2016-10-27T00:42:47.044135Z",
270
269
  });
271
270
 
272
271
  timingLog.addEvent("/api/slides/380/", "2016-10-27T00:42:47.044135Z");
@@ -275,7 +274,7 @@ describe(".addEvent", () => {
275
274
  expect(timingLog.events[1]).toEqual({
276
275
  is_unfocused: true,
277
276
  path: "/api/slides/380/",
278
- timestamp: "2016-10-27T00:42:47.044000Z"
277
+ timestamp: "2016-10-27T00:42:47.044000Z",
279
278
  });
280
279
  });
281
280
  });