@livepreso/api 6.44.0 → 6.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  3. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  4. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  5. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  6. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  7. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  8. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  9. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  10. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  11. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  12. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  13. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  14. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  15. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  16. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  17. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  18. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  19. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  20. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  21. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  22. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  23. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  24. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  25. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  26. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  27. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  28. package/.rush/temp/operation/test/all.log +19 -0
  29. package/.rush/temp/operation/test/state.json +3 -0
  30. package/.rush/temp/{package-deps_test.json → package-deps_build.json} +11 -11
  31. package/.rush/temp/shrinkwrap-deps.json +605 -597
  32. package/CHANGELOG.json +29 -0
  33. package/CHANGELOG.md +15 -1
  34. package/README.md +4 -4
  35. package/api.build.log +1 -1
  36. package/api.test.cache.log +1 -0
  37. package/api.test.log +19 -0
  38. package/bin/test.sh +0 -1
  39. package/cjs/api.js +18 -17
  40. package/cjs/api.js.map +1 -1
  41. package/cjs/api.spec.js +0 -4
  42. package/cjs/api.spec.js.map +1 -1
  43. package/cjs/auth.js +35 -36
  44. package/cjs/auth.js.map +1 -1
  45. package/cjs/auth.spec.js +52 -71
  46. package/cjs/auth.spec.js.map +1 -1
  47. package/cjs/caching.js +2 -7
  48. package/cjs/caching.js.map +1 -1
  49. package/cjs/collections/activity.js +16 -56
  50. package/cjs/collections/activity.js.map +1 -1
  51. package/cjs/collections/adjunct-sections.js +1 -10
  52. package/cjs/collections/adjunct-sections.js.map +1 -1
  53. package/cjs/collections/adjunct-slides.js +1 -10
  54. package/cjs/collections/adjunct-slides.js.map +1 -1
  55. package/cjs/collections/adjunct-sub-slides.js +1 -9
  56. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  57. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  58. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  59. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  60. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  61. package/cjs/collections/appointment-duplicates.js +1 -9
  62. package/cjs/collections/appointment-duplicates.js.map +1 -1
  63. package/cjs/collections/appointment-editors.js +1 -10
  64. package/cjs/collections/appointment-editors.js.map +1 -1
  65. package/cjs/collections/appointment-section-tags.js +1 -9
  66. package/cjs/collections/appointment-section-tags.js.map +1 -1
  67. package/cjs/collections/appointment-slide-tags.js +1 -9
  68. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  69. package/cjs/collections/appointment-tags.js +66 -103
  70. package/cjs/collections/appointment-tags.js.map +1 -1
  71. package/cjs/collections/appointment-templates.js +27 -0
  72. package/cjs/collections/appointment-templates.js.map +1 -0
  73. package/cjs/collections/appointments.js +9 -29
  74. package/cjs/collections/appointments.js.map +1 -1
  75. package/cjs/collections/assets.js +1 -9
  76. package/cjs/collections/assets.js.map +1 -1
  77. package/cjs/collections/auto-adjuncts.js +6 -21
  78. package/cjs/collections/auto-adjuncts.js.map +1 -1
  79. package/cjs/collections/base.js +46 -112
  80. package/cjs/collections/base.js.map +1 -1
  81. package/cjs/collections/base.spec.js +204 -233
  82. package/cjs/collections/base.spec.js.map +1 -1
  83. package/cjs/collections/cms-vals.js +9 -16
  84. package/cjs/collections/cms-vals.js.map +1 -1
  85. package/cjs/collections/contact-phones.js +20 -0
  86. package/cjs/collections/contact-phones.js.map +1 -0
  87. package/cjs/collections/contacts.js +1 -9
  88. package/cjs/collections/contacts.js.map +1 -1
  89. package/cjs/collections/created-assets.js +1 -10
  90. package/cjs/collections/created-assets.js.map +1 -1
  91. package/cjs/collections/customers.js +1 -9
  92. package/cjs/collections/customers.js.map +1 -1
  93. package/cjs/collections/deck-notes.js +1 -10
  94. package/cjs/collections/deck-notes.js.map +1 -1
  95. package/cjs/collections/deck-version-screenshots.js +49 -0
  96. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  97. package/cjs/collections/deck-versions.js +5 -20
  98. package/cjs/collections/deck-versions.js.map +1 -1
  99. package/cjs/collections/decks.js +1 -9
  100. package/cjs/collections/decks.js.map +1 -1
  101. package/cjs/collections/deleted-assets.js +1 -10
  102. package/cjs/collections/deleted-assets.js.map +1 -1
  103. package/cjs/collections/dispatches.js +1 -13
  104. package/cjs/collections/dispatches.js.map +1 -1
  105. package/cjs/collections/event-objects.js +1 -9
  106. package/cjs/collections/event-objects.js.map +1 -1
  107. package/cjs/collections/events.js +1 -9
  108. package/cjs/collections/events.js.map +1 -1
  109. package/cjs/collections/groups.js +1 -9
  110. package/cjs/collections/groups.js.map +1 -1
  111. package/cjs/collections/images.js +1 -9
  112. package/cjs/collections/images.js.map +1 -1
  113. package/cjs/collections/locations.js +1 -9
  114. package/cjs/collections/locations.js.map +1 -1
  115. package/cjs/collections/opportunities.js +1 -9
  116. package/cjs/collections/opportunities.js.map +1 -1
  117. package/cjs/collections/pack-diffs.js +1 -9
  118. package/cjs/collections/pack-diffs.js.map +1 -1
  119. package/cjs/collections/packs.js +1 -9
  120. package/cjs/collections/packs.js.map +1 -1
  121. package/cjs/collections/presets.js +1 -9
  122. package/cjs/collections/presets.js.map +1 -1
  123. package/cjs/collections/section-selections.js +1 -9
  124. package/cjs/collections/section-selections.js.map +1 -1
  125. package/cjs/collections/sections.js +1 -9
  126. package/cjs/collections/sections.js.map +1 -1
  127. package/cjs/collections/slide-selections.js +1 -9
  128. package/cjs/collections/slide-selections.js.map +1 -1
  129. package/cjs/collections/slides.js +1 -9
  130. package/cjs/collections/slides.js.map +1 -1
  131. package/cjs/collections/snapshots.js +1 -9
  132. package/cjs/collections/snapshots.js.map +1 -1
  133. package/cjs/collections/sub-slides.js +1 -9
  134. package/cjs/collections/sub-slides.js.map +1 -1
  135. package/cjs/collections/tags.js +1 -9
  136. package/cjs/collections/tags.js.map +1 -1
  137. package/cjs/collections/teams.js +1 -9
  138. package/cjs/collections/teams.js.map +1 -1
  139. package/cjs/collections/templates.js +1 -9
  140. package/cjs/collections/templates.js.map +1 -1
  141. package/cjs/collections/uploads.js +1 -9
  142. package/cjs/collections/uploads.js.map +1 -1
  143. package/cjs/collections/users.js +1 -9
  144. package/cjs/collections/users.js.map +1 -1
  145. package/cjs/collections.js +33 -86
  146. package/cjs/collections.js.map +1 -1
  147. package/cjs/fixtures.js +187 -0
  148. package/cjs/fixtures.js.map +1 -0
  149. package/cjs/index.js +0 -10
  150. package/cjs/index.js.map +1 -1
  151. package/cjs/log.js +0 -1
  152. package/cjs/log.js.map +1 -1
  153. package/cjs/middleware.js +2 -7
  154. package/cjs/middleware.js.map +1 -1
  155. package/cjs/middlewares/auth.js +1 -17
  156. package/cjs/middlewares/auth.js.map +1 -1
  157. package/cjs/middlewares/base.js +3 -9
  158. package/cjs/middlewares/base.js.map +1 -1
  159. package/cjs/middlewares/json.js +1 -19
  160. package/cjs/middlewares/json.js.map +1 -1
  161. package/cjs/middlewares/redirect.js +5 -21
  162. package/cjs/middlewares/redirect.js.map +1 -1
  163. package/cjs/models/activity-item.js +6 -20
  164. package/cjs/models/activity-item.js.map +1 -1
  165. package/cjs/models/adjunct-section.js +8 -21
  166. package/cjs/models/adjunct-section.js.map +1 -1
  167. package/cjs/models/adjunct-slide.js +8 -21
  168. package/cjs/models/adjunct-slide.js.map +1 -1
  169. package/cjs/models/adjunct-sub-slide.js +1 -16
  170. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  171. package/cjs/models/adjunct.js +34 -10
  172. package/cjs/models/adjunct.js.map +1 -1
  173. package/cjs/models/api.js +1 -6
  174. package/cjs/models/api.js.map +1 -1
  175. package/cjs/models/appointment-adjunct-tags.js +1 -13
  176. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  177. package/cjs/models/appointment-deckversion-tags.js +1 -13
  178. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  179. package/cjs/models/appointment-duplicate.js +3 -25
  180. package/cjs/models/appointment-duplicate.js.map +1 -1
  181. package/cjs/models/appointment-editor.js +1 -14
  182. package/cjs/models/appointment-editor.js.map +1 -1
  183. package/cjs/models/appointment-section-tags.js +1 -13
  184. package/cjs/models/appointment-section-tags.js.map +1 -1
  185. package/cjs/models/appointment-slide-tags.js +1 -13
  186. package/cjs/models/appointment-slide-tags.js.map +1 -1
  187. package/cjs/models/appointment-stats.js +1 -11
  188. package/cjs/models/appointment-stats.js.map +1 -1
  189. package/cjs/models/appointment-tags.js +1 -10
  190. package/cjs/models/appointment-tags.js.map +1 -1
  191. package/cjs/models/appointment-template.js +23 -0
  192. package/cjs/models/appointment-template.js.map +1 -0
  193. package/cjs/models/appointment-viewing.js +1 -8
  194. package/cjs/models/appointment-viewing.js.map +1 -1
  195. package/cjs/models/appointment.js +94 -69
  196. package/cjs/models/appointment.js.map +1 -1
  197. package/cjs/models/asset.js +12 -11
  198. package/cjs/models/asset.js.map +1 -1
  199. package/cjs/models/auto-adjunct-key-check.js +1 -15
  200. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  201. package/cjs/models/auto-adjunct.js +5 -14
  202. package/cjs/models/auto-adjunct.js.map +1 -1
  203. package/cjs/models/base.js +89 -173
  204. package/cjs/models/base.js.map +1 -1
  205. package/cjs/models/base.spec.js +8 -30
  206. package/cjs/models/base.spec.js.map +1 -1
  207. package/cjs/models/choicelist.js +1 -8
  208. package/cjs/models/choicelist.js.map +1 -1
  209. package/cjs/models/cms-val.js +28 -15
  210. package/cjs/models/cms-val.js.map +1 -1
  211. package/cjs/models/cms-val.spec.js +25 -0
  212. package/cjs/models/cms-val.spec.js.map +1 -0
  213. package/cjs/models/contact-phone.js +54 -0
  214. package/cjs/models/contact-phone.js.map +1 -0
  215. package/cjs/models/contact.js +1 -18
  216. package/cjs/models/contact.js.map +1 -1
  217. package/cjs/models/customer.js +5 -30
  218. package/cjs/models/customer.js.map +1 -1
  219. package/cjs/models/deck-note.js +1 -9
  220. package/cjs/models/deck-note.js.map +1 -1
  221. package/cjs/models/deck-tags.js +1 -12
  222. package/cjs/models/deck-tags.js.map +1 -1
  223. package/cjs/models/deck-version-screenshot.js +47 -0
  224. package/cjs/models/deck-version-screenshot.js.map +1 -0
  225. package/cjs/models/deck-version.js +54 -47
  226. package/cjs/models/deck-version.js.map +1 -1
  227. package/cjs/models/deck.js +1 -14
  228. package/cjs/models/deck.js.map +1 -1
  229. package/cjs/models/dispatch-preview.js +1 -13
  230. package/cjs/models/dispatch-preview.js.map +1 -1
  231. package/cjs/models/dispatch.js +1 -23
  232. package/cjs/models/dispatch.js.map +1 -1
  233. package/cjs/models/envs.js +1 -6
  234. package/cjs/models/envs.js.map +1 -1
  235. package/cjs/models/event-object.js +1 -11
  236. package/cjs/models/event-object.js.map +1 -1
  237. package/cjs/models/event.js +1 -13
  238. package/cjs/models/event.js.map +1 -1
  239. package/cjs/models/feed-data.js +6 -13
  240. package/cjs/models/feed-data.js.map +1 -1
  241. package/cjs/models/file.js +1 -11
  242. package/cjs/models/file.js.map +1 -1
  243. package/cjs/models/group.js +1 -11
  244. package/cjs/models/group.js.map +1 -1
  245. package/cjs/models/handover.js +1 -13
  246. package/cjs/models/handover.js.map +1 -1
  247. package/cjs/models/hosted-preso.js +1 -15
  248. package/cjs/models/hosted-preso.js.map +1 -1
  249. package/cjs/models/image.js +30 -11
  250. package/cjs/models/image.js.map +1 -1
  251. package/cjs/models/location.js +1 -13
  252. package/cjs/models/location.js.map +1 -1
  253. package/cjs/models/manifest-json.js +75 -74
  254. package/cjs/models/manifest-json.js.map +1 -1
  255. package/cjs/models/onshare.js +1 -14
  256. package/cjs/models/onshare.js.map +1 -1
  257. package/cjs/models/opportunity.js +1 -14
  258. package/cjs/models/opportunity.js.map +1 -1
  259. package/cjs/models/pack-diff.js +1 -14
  260. package/cjs/models/pack-diff.js.map +1 -1
  261. package/cjs/models/pack.js +1 -12
  262. package/cjs/models/pack.js.map +1 -1
  263. package/cjs/models/preset.js +4 -20
  264. package/cjs/models/preset.js.map +1 -1
  265. package/cjs/models/refresh-request.js +17 -11
  266. package/cjs/models/refresh-request.js.map +1 -1
  267. package/cjs/models/room.js +1 -9
  268. package/cjs/models/room.js.map +1 -1
  269. package/cjs/models/salesforce-lookup.js +1 -12
  270. package/cjs/models/salesforce-lookup.js.map +1 -1
  271. package/cjs/models/section-selection.js +1 -14
  272. package/cjs/models/section-selection.js.map +1 -1
  273. package/cjs/models/section.js +4 -15
  274. package/cjs/models/section.js.map +1 -1
  275. package/cjs/models/slide-selection.js +1 -14
  276. package/cjs/models/slide-selection.js.map +1 -1
  277. package/cjs/models/slide.js +4 -15
  278. package/cjs/models/slide.js.map +1 -1
  279. package/cjs/models/snapshot.js +13 -15
  280. package/cjs/models/snapshot.js.map +1 -1
  281. package/cjs/models/snapshot.spec.js +44 -0
  282. package/cjs/models/snapshot.spec.js.map +1 -0
  283. package/cjs/models/sub-slide.js +1 -12
  284. package/cjs/models/sub-slide.js.map +1 -1
  285. package/cjs/models/support-ticket.js +1 -11
  286. package/cjs/models/support-ticket.js.map +1 -1
  287. package/cjs/models/tag.js +1 -13
  288. package/cjs/models/tag.js.map +1 -1
  289. package/cjs/models/team.js +14 -13
  290. package/cjs/models/team.js.map +1 -1
  291. package/cjs/models/template.js +89 -15
  292. package/cjs/models/template.js.map +1 -1
  293. package/cjs/models/tenancy.js +4 -11
  294. package/cjs/models/tenancy.js.map +1 -1
  295. package/cjs/models/timing-log.js +21 -78
  296. package/cjs/models/timing-log.js.map +1 -1
  297. package/cjs/models/timing-log.spec.js +24 -37
  298. package/cjs/models/timing-log.spec.js.map +1 -1
  299. package/cjs/models/token.js +46 -0
  300. package/cjs/models/token.js.map +1 -0
  301. package/cjs/models/transcribe-socket.js +1 -8
  302. package/cjs/models/transcribe-socket.js.map +1 -1
  303. package/cjs/models/upload.js +1 -7
  304. package/cjs/models/upload.js.map +1 -1
  305. package/cjs/models/user.js +11 -28
  306. package/cjs/models/user.js.map +1 -1
  307. package/cjs/models/user.spec.js +20 -30
  308. package/cjs/models/user.spec.js.map +1 -1
  309. package/cjs/models.js +44 -128
  310. package/cjs/models.js.map +1 -1
  311. package/cjs/presentation/appointment-presentation.js +14 -36
  312. package/cjs/presentation/appointment-presentation.js.map +1 -1
  313. package/cjs/presentation/base-presentation-collection.js +1 -7
  314. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  315. package/cjs/presentation/base-presentation-model.js +108 -33
  316. package/cjs/presentation/base-presentation-model.js.map +1 -1
  317. package/cjs/presentation/base-presentation-model.spec.js +58 -23
  318. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  319. package/cjs/presentation/presentation-deck.js +73 -83
  320. package/cjs/presentation/presentation-deck.js.map +1 -1
  321. package/cjs/presentation/presentation-deck.spec.js +118 -88
  322. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  323. package/cjs/presentation/presentation-decks.js +1 -9
  324. package/cjs/presentation/presentation-decks.js.map +1 -1
  325. package/cjs/presentation/presentation-section.js +70 -84
  326. package/cjs/presentation/presentation-section.js.map +1 -1
  327. package/cjs/presentation/presentation-section.spec.js +296 -238
  328. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  329. package/cjs/presentation/presentation-sections.js +1 -9
  330. package/cjs/presentation/presentation-sections.js.map +1 -1
  331. package/cjs/presentation/presentation-slide.js +74 -84
  332. package/cjs/presentation/presentation-slide.js.map +1 -1
  333. package/cjs/presentation/presentation-slide.spec.js +211 -166
  334. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  335. package/cjs/presentation/presentation-slides.js +1 -9
  336. package/cjs/presentation/presentation-slides.js.map +1 -1
  337. package/cjs/presentation/presentation-subslide.js +3 -23
  338. package/cjs/presentation/presentation-subslide.js.map +1 -1
  339. package/cjs/presentation/presentation-subslide.spec.js +101 -125
  340. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  341. package/cjs/presentation/presentation-subslides.js +1 -9
  342. package/cjs/presentation/presentation-subslides.js.map +1 -1
  343. package/cjs/presentation/presentation.js +87 -32
  344. package/cjs/presentation/presentation.js.map +1 -1
  345. package/cjs/presentation.js +0 -20
  346. package/cjs/presentation.js.map +1 -1
  347. package/cjs/selections.js +81 -0
  348. package/cjs/selections.js.map +1 -0
  349. package/cjs/state-register.js +3 -11
  350. package/cjs/state-register.js.map +1 -1
  351. package/cjs/sync.js +32 -76
  352. package/cjs/sync.js.map +1 -1
  353. package/cjs/utils.js +51 -42
  354. package/cjs/utils.js.map +1 -1
  355. package/cjs/utils.spec.js +0 -4
  356. package/cjs/utils.spec.js.map +1 -1
  357. package/jest.config.js +5 -3
  358. package/package.json +11 -8
  359. package/src/api.js +17 -2
  360. package/src/auth.js +45 -9
  361. package/src/auth.spec.js +2 -0
  362. package/src/collections/activity.js +4 -4
  363. package/src/collections/adjunct-sections.js +1 -1
  364. package/src/collections/adjunct-slides.js +1 -1
  365. package/src/collections/adjunct-sub-slides.js +1 -1
  366. package/src/collections/appointment-adjunct-tags.js +1 -1
  367. package/src/collections/appointment-deckversion-tags.js +2 -2
  368. package/src/collections/appointment-duplicates.js +1 -1
  369. package/src/collections/appointment-editors.js +1 -1
  370. package/src/collections/appointment-section-tags.js +1 -1
  371. package/src/collections/appointment-slide-tags.js +1 -1
  372. package/src/collections/appointment-tags.js +20 -18
  373. package/src/collections/appointment-templates.js +26 -0
  374. package/src/collections/appointments.js +9 -9
  375. package/src/collections/assets.js +1 -1
  376. package/src/collections/auto-adjuncts.js +1 -1
  377. package/src/collections/base.js +20 -10
  378. package/src/collections/base.spec.js +19 -5
  379. package/src/collections/cms-vals.js +5 -1
  380. package/src/collections/contact-phones.js +18 -0
  381. package/src/collections/contacts.js +1 -1
  382. package/src/collections/created-assets.js +1 -1
  383. package/src/collections/customers.js +1 -1
  384. package/src/collections/deck-notes.js +1 -1
  385. package/src/collections/deck-version-screenshots.js +48 -0
  386. package/src/collections/deck-versions.js +1 -1
  387. package/src/collections/decks.js +1 -1
  388. package/src/collections/deleted-assets.js +1 -1
  389. package/src/collections/dispatches.js +2 -2
  390. package/src/collections/event-objects.js +1 -1
  391. package/src/collections/events.js +1 -1
  392. package/src/collections/groups.js +1 -1
  393. package/src/collections/images.js +1 -1
  394. package/src/collections/locations.js +1 -1
  395. package/src/collections/opportunities.js +1 -1
  396. package/src/collections/pack-diffs.js +1 -1
  397. package/src/collections/packs.js +1 -1
  398. package/src/collections/presets.js +1 -1
  399. package/src/collections/section-selections.js +1 -1
  400. package/src/collections/sections.js +1 -1
  401. package/src/collections/slide-selections.js +1 -1
  402. package/src/collections/slides.js +1 -1
  403. package/src/collections/snapshots.js +1 -1
  404. package/src/collections/sub-slides.js +1 -1
  405. package/src/collections/tags.js +1 -1
  406. package/src/collections/teams.js +1 -1
  407. package/src/collections/templates.js +1 -1
  408. package/src/collections/uploads.js +1 -1
  409. package/src/collections/users.js +1 -1
  410. package/src/collections.js +3 -0
  411. package/src/fixtures.js +193 -0
  412. package/src/models/activity-item.js +3 -1
  413. package/src/models/adjunct-section.js +7 -2
  414. package/src/models/adjunct-slide.js +7 -2
  415. package/src/models/adjunct-sub-slide.js +1 -1
  416. package/src/models/adjunct.js +39 -1
  417. package/src/models/appointment-adjunct-tags.js +1 -1
  418. package/src/models/appointment-deckversion-tags.js +1 -1
  419. package/src/models/appointment-duplicate.js +1 -1
  420. package/src/models/appointment-editor.js +1 -1
  421. package/src/models/appointment-section-tags.js +1 -1
  422. package/src/models/appointment-slide-tags.js +1 -1
  423. package/src/models/appointment-stats.js +1 -1
  424. package/src/models/appointment-tags.js +1 -1
  425. package/src/models/appointment-template.js +19 -0
  426. package/src/models/appointment-viewing.js +1 -1
  427. package/src/models/appointment.js +112 -37
  428. package/src/models/asset.js +15 -1
  429. package/src/models/auto-adjunct-key-check.js +1 -1
  430. package/src/models/auto-adjunct.js +4 -1
  431. package/src/models/base.js +55 -22
  432. package/src/models/base.spec.js +34 -27
  433. package/src/models/choicelist.js +1 -1
  434. package/src/models/cms-val.js +24 -1
  435. package/src/models/cms-val.spec.js +14 -0
  436. package/src/models/contact-phone.js +57 -0
  437. package/src/models/contact.js +1 -1
  438. package/src/models/customer.js +3 -3
  439. package/src/models/deck-note.js +1 -1
  440. package/src/models/deck-tags.js +1 -1
  441. package/src/models/deck-version-screenshot.js +48 -0
  442. package/src/models/deck-version.js +60 -9
  443. package/src/models/deck.js +1 -1
  444. package/src/models/dispatch-preview.js +1 -1
  445. package/src/models/dispatch.js +1 -1
  446. package/src/models/event-object.js +1 -1
  447. package/src/models/event.js +1 -1
  448. package/src/models/feed-data.js +3 -1
  449. package/src/models/file.js +1 -1
  450. package/src/models/group.js +1 -1
  451. package/src/models/handover.js +1 -1
  452. package/src/models/hosted-preso.js +1 -1
  453. package/src/models/image.js +33 -1
  454. package/src/models/location.js +1 -1
  455. package/src/models/manifest-json.js +57 -6
  456. package/src/models/onshare.js +1 -1
  457. package/src/models/opportunity.js +1 -1
  458. package/src/models/pack-diff.js +1 -1
  459. package/src/models/pack.js +1 -1
  460. package/src/models/preset.js +3 -1
  461. package/src/models/refresh-request.js +15 -1
  462. package/src/models/room.js +1 -1
  463. package/src/models/salesforce-lookup.js +1 -1
  464. package/src/models/section-selection.js +1 -1
  465. package/src/models/section.js +3 -1
  466. package/src/models/slide-selection.js +1 -1
  467. package/src/models/slide.js +3 -1
  468. package/src/models/snapshot.js +11 -2
  469. package/src/models/snapshot.spec.js +31 -0
  470. package/src/models/sub-slide.js +1 -1
  471. package/src/models/support-ticket.js +1 -1
  472. package/src/models/tag.js +1 -1
  473. package/src/models/team.js +14 -3
  474. package/src/models/template.js +74 -2
  475. package/src/models/tenancy.js +4 -1
  476. package/src/models/timing-log.js +2 -2
  477. package/src/models/timing-log.spec.js +1 -1
  478. package/src/models/token.js +47 -0
  479. package/src/models/transcribe-socket.js +1 -1
  480. package/src/models/user.js +15 -2
  481. package/src/models.js +4 -0
  482. package/src/presentation/appointment-presentation.js +13 -5
  483. package/src/presentation/base-presentation-collection.js +1 -1
  484. package/src/presentation/base-presentation-model.js +88 -3
  485. package/src/presentation/base-presentation-model.spec.js +80 -3
  486. package/src/presentation/presentation-deck.js +65 -22
  487. package/src/presentation/presentation-deck.spec.js +55 -2
  488. package/src/presentation/presentation-decks.js +1 -1
  489. package/src/presentation/presentation-section.js +91 -31
  490. package/src/presentation/presentation-section.spec.js +142 -10
  491. package/src/presentation/presentation-sections.js +1 -1
  492. package/src/presentation/presentation-slide.js +69 -23
  493. package/src/presentation/presentation-slide.spec.js +105 -9
  494. package/src/presentation/presentation-slides.js +1 -1
  495. package/src/presentation/presentation-subslide.js +5 -5
  496. package/src/presentation/presentation-subslide.spec.js +3 -3
  497. package/src/presentation/presentation-subslides.js +1 -1
  498. package/src/presentation/presentation.js +27 -8
  499. package/src/selections.js +71 -0
  500. package/src/sync.js +1 -1
  501. package/src/utils.js +31 -8
  502. package/src/utils.spec.js +4 -4
@@ -1,62 +1,43 @@
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.BaseModel = void 0;
9
-
10
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
10
  var _utils = require("../utils.js");
15
-
16
11
  var _api = require("../api.js");
17
-
18
12
  var _ampersandRestCollection = _interopRequireDefault(require("ampersand-rest-collection"));
19
-
20
13
  var _ampersandModel = _interopRequireDefault(require("ampersand-model"));
21
-
22
14
  var _superagentBluebirdPromise = _interopRequireDefault(require("superagent-bluebird-promise"));
23
-
24
15
  var _lodash = _interopRequireDefault(require("lodash"));
25
-
26
16
  var _dedentJs = _interopRequireDefault(require("dedent-js"));
27
-
28
17
  var _log = _interopRequireDefault(require("../log.js"));
29
-
30
18
  var _moment = _interopRequireDefault(require("moment"));
31
-
32
19
  var _qs = _interopRequireDefault(require("qs"));
33
-
34
20
  var _stateRegister = require("../state-register.js");
35
-
36
21
  var _sync2 = require("../sync.js");
37
-
38
22
  var _url = _interopRequireDefault(require("url"));
39
-
40
23
  var _templateObject;
41
-
42
24
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
43
-
44
25
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
45
-
46
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
47
-
26
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
48
27
  /**
49
28
  * @constructor
50
29
  * @alias models.BaseModel
51
30
  */
52
- var BaseModel = _ampersandModel.default.extend(
53
- /** @lends models.BaseModel# */
54
- {
31
+ var BaseModel = exports.BaseModel = _ampersandModel.default.extend( /** @lends models.BaseModel# */{
55
32
  modelName: null,
56
33
  queryData: {},
34
+ detailType: "number",
57
35
  // This is unfortunately necessary to avoid the default ampersand model/state
58
36
  // behaviour from automatically hydrating all children and collections on a fetch.
59
37
  isFetching: false,
38
+ // Useful to figure out whether the model is just a URL (unfetched), or has been
39
+ // fetched from the server (an object).
40
+ _isFetched: true,
60
41
  // Object of regexes that should be used to match a url in `matchesURL`
61
42
  // For example the URL: /api/foo/{pk}/bar/ might have the following:
62
43
  //
@@ -69,72 +50,80 @@ var BaseModel = _ampersandModel.default.extend(
69
50
  // ```
70
51
  urlMatchKeys: {},
71
52
  constructor: function constructor() {
72
- var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
53
+ var _data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
73
54
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
74
-
75
55
  var options = _lodash.default.defaults(opts, {
76
56
  data: {}
77
57
  });
78
-
58
+ var data = _data;
79
59
  this._unsetChildren = {};
80
60
  this._unsetCollections = {};
81
61
  this._expandedValues = {};
82
-
83
62
  if (data === null) {
84
63
  data = {};
85
- } // Allow passing in models
86
-
64
+ }
87
65
 
66
+ // Allow passing in models
88
67
  if (data instanceof _ampersandModel.default) {
89
68
  data = data.toJSON();
90
69
  }
70
+ this.queryData = options.data;
91
71
 
92
- this.queryData = options.data; // Convert any strings into a url format we can understand
93
-
72
+ // Convert any strings into a url format we can understand
94
73
  if (_lodash.default.isString(data)) {
95
74
  data = {
96
75
  url: data
97
76
  };
77
+ this._isFetched = false;
98
78
  }
99
79
 
80
+ // Convert model ids into a format we can understand
81
+ if (_lodash.default.isNumber(data)) {
82
+ data = {
83
+ id: data
84
+ };
85
+ this._isFetched = false;
86
+ }
100
87
  var dataCopy = _lodash.default.extend({}, data);
101
-
102
88
  this._data = dataCopy;
103
- this._options = options; // Stop making edits to these affect other models
89
+ this._options = options;
104
90
 
91
+ // Stop making edits to these affect other models
105
92
  this._children = _lodash.default.clone(this._children);
106
93
  this._collections = _lodash.default.clone(this._collections);
107
- this._definition = _lodash.default.clone(this._definition); // Check for specialized url returns from the server. This is for when the
108
- // server responds with an array of urls rather than object data.
94
+ this._definition = _lodash.default.clone(this._definition);
109
95
 
96
+ // Check for specialized url returns from the server. This is for when the
97
+ // server responds with an array of urls rather than object data.
110
98
  if (dataCopy && typeof dataCopy.url === "string") {
111
99
  this._url = dataCopy.url;
112
100
  }
113
-
114
101
  for (var key in dataCopy) {
115
- var def = dataCopy[key]; // Any models/collections passed into the constructor should be
102
+ var def = dataCopy[key];
103
+ // Any models/collections passed into the constructor should be
116
104
  // converted to JSON so that it can be parsed
117
-
118
105
  if (def && (def.isState || def instanceof _ampersandRestCollection.default)) {
119
106
  dataCopy[key] = def.toJSON();
120
107
  }
108
+ if (def && Array.isArray(def)) {
109
+ dataCopy[key] = def.map(function (obj) {
110
+ if (obj instanceof _ampersandModel.default) {
111
+ return obj.toJSON();
112
+ }
113
+ return obj;
114
+ });
115
+ }
121
116
  }
122
-
123
117
  this.registerStates();
124
-
125
118
  this._convertToValues();
126
-
127
119
  var id = this._getIDFromURL(this._url);
128
-
129
120
  if (!dataCopy.id && id) {
130
121
  dataCopy.id = id;
131
122
  }
132
-
133
123
  _ampersandModel.default.prototype.constructor.call(this, dataCopy, options);
124
+ this._setDerived();
134
125
 
135
- this._setDerived(); // Re-set the values that were previously children or collections
136
-
137
-
126
+ // Re-set the values that were previously children or collections
138
127
  this._initUnsetValues();
139
128
  },
140
129
  // If there is a model returned from a derived property, and the model
@@ -142,19 +131,17 @@ var BaseModel = _ampersandModel.default.extend(
142
131
  _setDerived: function _setDerived() {
143
132
  for (var _i = 0, _Object$keys = Object.keys(this._derived); _i < _Object$keys.length; _i++) {
144
133
  var derivedKey = _Object$keys[_i];
145
-
146
134
  if (!this._data[derivedKey]) {
147
135
  continue;
148
136
  }
149
-
150
137
  if (this[derivedKey] instanceof _ampersandModel.default) {
151
138
  for (var _i2 = 0, _Object$keys2 = Object.keys(this._data[derivedKey]); _i2 < _Object$keys2.length; _i2++) {
152
139
  var derivedProp = _Object$keys2[_i2];
153
140
  this[derivedKey].set(derivedProp, this._data[derivedKey][derivedProp]);
154
141
  }
155
- } // If it's a collection, we can just pass the data straight in
156
-
142
+ }
157
143
 
144
+ // If it's a collection, we can just pass the data straight in
158
145
  if (this[derivedKey] instanceof _ampersandRestCollection.default) {
159
146
  this[derivedKey].set(this._data[derivedKey]);
160
147
  }
@@ -163,70 +150,63 @@ var BaseModel = _ampersandModel.default.extend(
163
150
  // Internal function. Used by collection as well.
164
151
  _matchesURL: function _matchesURL(url) {
165
152
  var matchesDetail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
166
-
167
153
  if (!this.modelName || this.urlRoot() === _api.Api.getURL()) {
168
154
  return false;
169
155
  }
170
-
171
156
  var replacements = _lodash.default.extend({}, {
172
- detailKey: "number"
157
+ detailKey: this.detailType
173
158
  }, this.urlMatchKeys);
174
-
175
159
  var regexes = Object.keys(replacements).reduce(function (result, key) {
176
160
  var type = replacements[key];
177
161
  var name = key.replace(/\./g, "_");
178
-
179
162
  if (type === "number") {
180
163
  result[name] = "\\d+";
164
+ } else if (type === "uuid") {
165
+ result[name] = "([a-z]|[0-9]|-)+";
181
166
  } else if (type === "string") {
182
167
  result[name] = "\\w+";
183
168
  } else {
184
169
  throw new Error("Unknown regex type '".concat(type, "'."));
185
170
  }
186
-
187
171
  return result;
188
- }, {}); // Create a starting regex string with variables. Strips the root url so that it could
189
- // be read from any server.
172
+ }, {});
190
173
 
174
+ // Create a starting regex string with variables. Strips the root url so that it could
175
+ // be read from any server.
191
176
  var urlWithoutRoot = this.urlRoot().replace(_api.Api.getURL(), "");
192
177
  var urlStructure = urlWithoutRoot.slice();
193
-
194
178
  if (matchesDetail) {
195
179
  urlStructure += "{detailKey}/";
196
- } // Let's test if the url has even a remote chance of matching
180
+ }
181
+
182
+ // Let's test if the url has even a remote chance of matching
197
183
  // the url (like a partial match, any part without variables).
198
184
  // If that doesn't match, we can sometimes prevent a nasty log
199
185
  // error from being thrown.
200
-
201
-
202
186
  var split = urlStructure.split("/");
203
187
  var argIndex = split.findIndex(function (val) {
204
188
  return val.indexOf("{") === 0;
205
189
  });
206
-
207
190
  if (argIndex >= 0) {
208
191
  var attemptedURLWithoutRoot = url.replace(_api.Api.getURL(), "");
209
192
  var partial = split.slice(0, argIndex).join("/");
210
-
211
193
  if (attemptedURLWithoutRoot.indexOf(partial) !== 0) {
212
194
  return false;
213
195
  }
214
- } // Replace keys with regexes
215
-
196
+ }
216
197
 
198
+ // Replace keys with regexes
217
199
  var interpolatedString;
218
-
219
200
  try {
220
201
  interpolatedString = _lodash.default.template(urlStructure.replace(/\./g, "_"), {
221
202
  interpolate: /{([\s\S\.]+?)}/g
222
203
  })(regexes);
223
204
  } catch (e) {
224
205
  _log.default.error((0, _dedentJs.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\tFailed to match URL '", "' for model '", "'.\n\t\t\t\tThis is usually because the regex type for a key hasn't been set.\n\t\t\t\tError: "])), url, this.modelName), e);
225
-
226
206
  return false;
227
- } // Convert into a regex and test if url matches
228
-
207
+ }
229
208
 
209
+ // Convert into a regex and test if url matches
230
210
  var baseString = ".*".concat(interpolatedString.replace(/\//m, "/"), "$");
231
211
  var re = new RegExp(baseString);
232
212
  return re.test(url);
@@ -239,30 +219,26 @@ var BaseModel = _ampersandModel.default.extend(
239
219
  // and strip out the '/api' from both the resource url and the variable url
240
220
  // so that we can use the remaining part to isolate the id
241
221
  _getIDFromURL: function _getIDFromURL(url) {
242
- var resourceURL = this.getResourceURL();
243
-
222
+ var resource = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
223
+ var resourceURL = resource || this.getResourceURL();
244
224
  if (!url || !resourceURL) {
245
225
  return null;
246
226
  }
247
-
248
227
  var urlPath = _url.default.parse(url).path;
228
+ var resourceURLPath = _url.default.parse(resourceURL).path;
249
229
 
250
- var resourceURLPath = _url.default.parse(resourceURL).path; // Remove the '/api' if present
251
-
252
-
230
+ // Remove the '/api' if present
253
231
  var resourceEnd = resourceURLPath.split("/api").join("");
254
- var urlEnd = urlPath.split("/api").join(""); // If they are the same, there is no id at the end
232
+ var urlEnd = urlPath.split("/api").join("");
255
233
 
234
+ // If they are the same, there is no id at the end
256
235
  if (!urlEnd || urlEnd === resourceEnd) {
257
236
  return null;
258
237
  }
259
-
260
238
  var idStr = urlEnd.split(resourceEnd).join("");
261
-
262
239
  if ((idStr.match(/\//g) || []).length === 1) {
263
240
  return parseInt(idStr.slice(0, -1), 10);
264
241
  }
265
-
266
242
  return null;
267
243
  },
268
244
  // Public version for details only
@@ -281,11 +257,9 @@ var BaseModel = _ampersandModel.default.extend(
281
257
  if (typeof currentVal === "undefined") {
282
258
  return false;
283
259
  }
284
-
285
260
  if (currentVal || newVal) {
286
261
  return (0, _moment.default)(currentVal).isSame((0, _moment.default)(newVal));
287
262
  }
288
-
289
263
  return currentVal !== newVal;
290
264
  }
291
265
  },
@@ -309,7 +283,6 @@ var BaseModel = _ampersandModel.default.extend(
309
283
  }
310
284
  }
311
285
  },
312
-
313
286
  /**
314
287
  * @property {number} [id]
315
288
  */
@@ -319,7 +292,6 @@ var BaseModel = _ampersandModel.default.extend(
319
292
  required: false
320
293
  }
321
294
  },
322
-
323
295
  /*
324
296
  * Overridable serialization for sending data to
325
297
  * the server
@@ -329,29 +301,23 @@ var BaseModel = _ampersandModel.default.extend(
329
301
  },
330
302
  _registerChildModel: function _registerChildModel(states, prop, model) {
331
303
  var Model = _stateRegister.registeredStates[model];
332
-
333
304
  if (!Model) {
334
305
  throw new Error("'".concat(model, "' not found! Did you forget to import it on the '").concat(this.modelName, "' model?"));
335
306
  }
336
-
337
307
  this._children[prop] = Model;
338
308
  },
339
309
  _registerCollection: function _registerCollection(state, prop, collection) {
340
310
  var Collection = state[collection];
341
-
342
311
  if (!Collection) {
343
312
  throw new Error("'".concat(collection, "' not found! Did you forget to import it on the '").concat(this.modelName, "' model?"));
344
313
  }
345
-
346
314
  this._collections[prop] = Collection;
347
315
  },
348
-
349
316
  /*
350
317
  * Replace strings respresenting a registered model/collection the function
351
318
  */
352
319
  registerStates: function registerStates() {
353
320
  var _this = this;
354
-
355
321
  // Loop through children and replace any parent objects directly to stop
356
322
  // maximum stack overflows
357
323
  _lodash.default.each(this._children, function (model, prop) {
@@ -359,9 +325,10 @@ var BaseModel = _ampersandModel.default.extend(
359
325
  if (_this._options.parent && model === _this._options.parent._registerName) {
360
326
  // This part is important, if the link stays when there's a circular dependency,
361
327
  // this will continue forever.
362
- delete _this._children[prop]; // Can be a string or an object so we use "any". We add the definition
363
- // so that we can retrieve this value later.
328
+ delete _this._children[prop];
364
329
 
330
+ // Can be a string or an object so we use "any". We add the definition
331
+ // so that we can retrieve this value later.
365
332
  _this._definition[prop] = {
366
333
  type: "any"
367
334
  };
@@ -370,9 +337,9 @@ var BaseModel = _ampersandModel.default.extend(
370
337
  _this._registerChildModel(_stateRegister.registeredStates, prop, model);
371
338
  }
372
339
  }
373
- }, this); // Loop throught the collections and replace with the registered collection
374
-
340
+ }, this);
375
341
 
342
+ // Loop throught the collections and replace with the registered collection
376
343
  _lodash.default.each(this._collections, function (collection, prop) {
377
344
  if (typeof collection === "string") {
378
345
  _this._registerCollection(_stateRegister.registeredStates, prop, collection);
@@ -381,14 +348,13 @@ var BaseModel = _ampersandModel.default.extend(
381
348
  },
382
349
  _updateResponse: function _updateResponse(response) {
383
350
  var _this2 = this;
384
-
385
351
  this._data = response || {};
386
-
387
352
  if (!response) {
388
353
  return;
389
- } // Set previously-initialised children & collections with new
390
- // data retrieved during the fetch
354
+ }
391
355
 
356
+ // Set previously-initialised children & collections with new
357
+ // data retrieved during the fetch
392
358
 
393
359
  Object.keys(this._children).forEach(function (key) {
394
360
  if (response[key]) {
@@ -403,54 +369,46 @@ var BaseModel = _ampersandModel.default.extend(
403
369
  },
404
370
  save: function save() {
405
371
  var _this3 = this;
406
-
407
372
  return _ampersandModel.default.prototype.save.apply(this, arguments).tap(function (response) {
408
373
  _this3._updateResponse(response);
409
374
  });
410
375
  },
411
376
  fetch: function fetch() {
412
377
  var _this4 = this;
413
-
414
378
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
415
-
416
379
  if (options.url) {
417
380
  this._url = options.url;
418
381
  }
419
-
420
382
  this._options = _lodash.default.extend({}, this._options, options);
421
383
  this.isFetching = true;
422
384
  return _ampersandModel.default.prototype.fetch.apply(this, arguments).tap(function (response) {
385
+ _this4._isFetched = true;
423
386
  _this4.isFetching = false;
424
-
425
387
  _this4._updateResponse(response);
426
388
  });
427
389
  },
428
390
  options: function options() {
429
391
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
430
-
431
392
  if (options.url) {
432
393
  this._url = options.url;
433
394
  }
434
-
435
395
  return (0, _superagentBluebirdPromise.default)("OPTIONS", this.url()).set(BaseModel.Auth.headers).then(function (res) {
436
396
  if (res.body && res.body.actions) {
437
397
  return res.body.actions;
438
398
  }
439
-
440
399
  return null;
441
400
  });
442
401
  },
402
+ isFetched: function isFetched() {
403
+ return this._isFetched;
404
+ },
443
405
  getSafeAttrs: function getSafeAttrs(key) {
444
406
  var _this5 = this;
445
-
446
407
  if (!_lodash.default.isUndefined(key)) {
447
408
  return !_lodash.default.isUndefined(this._expandedValues[key]) ? this._expandedValues[key] : this._values[key];
448
409
  }
449
-
450
410
  var attrs = {};
451
-
452
411
  var keys = _lodash.default.uniq(_lodash.default.concat(_lodash.default.concat(Object.keys(this._unsetChildren), Object.keys(this._unsetCollections)), Object.keys(this._values)));
453
-
454
412
  keys.forEach(function (key) {
455
413
  if (!_lodash.default.isUndefined(_this5._values[key])) {
456
414
  attrs[key] = _this5._values[key];
@@ -465,7 +423,6 @@ var BaseModel = _ampersandModel.default.extend(
465
423
  // definitions for them (necessary for Ampersand State to treat them as values)
466
424
  _convertToValues: function _convertToValues() {
467
425
  var _this6 = this;
468
-
469
426
  Object.keys(this._children).forEach(function (key) {
470
427
  _this6._definition[key] = {
471
428
  type: "any"
@@ -485,14 +442,11 @@ var BaseModel = _ampersandModel.default.extend(
485
442
  // The default version always creates an empty model
486
443
  _initChildren: function _initChildren() {
487
444
  var child;
488
-
489
445
  if (!this._children) {
490
446
  return;
491
447
  }
492
-
493
448
  for (child in this._children) {
494
449
  var val = this._data[child];
495
-
496
450
  if (val) {
497
451
  // Assume here that if it's a string, it's a url.
498
452
  if (typeof val === "string") {
@@ -500,15 +454,14 @@ var BaseModel = _ampersandModel.default.extend(
500
454
  url: val
501
455
  };
502
456
  }
503
- } // If hydrate is set to false, this will be the name of the child and
504
- // not the constructor. We want to add the non-hydrated url if so.
505
-
457
+ }
506
458
 
459
+ // If hydrate is set to false, this will be the name of the child and
460
+ // not the constructor. We want to add the non-hydrated url if so.
507
461
  if (typeof this._children[child] === "function") {
508
462
  this._safeSet(child, new this._children[child](val, {
509
463
  parent: this
510
464
  }));
511
-
512
465
  this.listenTo(this[child], "all", this._getCachedEventBubblingHandler(child));
513
466
  } else {
514
467
  this._safeSet(child, val);
@@ -518,24 +471,21 @@ var BaseModel = _ampersandModel.default.extend(
518
471
  // Override the initialization of collections to pass in data to the constructor.
519
472
  _initCollections: function _initCollections() {
520
473
  var coll;
521
-
522
474
  if (!this._collections) {
523
475
  return;
524
476
  }
525
-
526
477
  for (coll in this._collections) {
527
478
  var val = this._data[coll];
528
-
529
479
  if (val) {
530
480
  if (typeof val === "string") {
531
481
  val = {
532
482
  url: val
533
483
  };
534
484
  }
535
- } // If hydrate is set to false, this will be the name of the collection and
536
- // not the constructor. We want to add the non-hydrated array if so.
537
-
485
+ }
538
486
 
487
+ // If hydrate is set to false, this will be the name of the collection and
488
+ // not the constructor. We want to add the non-hydrated array if so.
539
489
  if (typeof this._collections[coll] === "function") {
540
490
  this._safeSet(coll, new this._collections[coll](val, {
541
491
  parent: this
@@ -547,13 +497,11 @@ var BaseModel = _ampersandModel.default.extend(
547
497
  },
548
498
  _initUnsetValues: function _initUnsetValues() {
549
499
  var _this7 = this;
550
-
551
500
  _lodash.default.each(this._unsetChildren, function (child, key) {
552
501
  var tmpValue = _this7._values[key];
553
502
  replacePropertyDefinition(_this7, key);
554
503
  _this7[key] = tmpValue;
555
504
  });
556
-
557
505
  _lodash.default.each(this._unsetCollections, function (child, key) {
558
506
  var tmpValue = _this7._values[key];
559
507
  replacePropertyDefinition(_this7, key);
@@ -572,22 +520,17 @@ var BaseModel = _ampersandModel.default.extend(
572
520
  if (path === null) {
573
521
  return null;
574
522
  }
575
-
576
523
  var url = path;
577
-
578
524
  if (url.slice(-1) !== "/" && url.indexOf("?") === -1) {
579
525
  url += "/";
580
526
  }
581
-
582
527
  if (Object.keys(this.queryData).length) {
583
528
  url += "?".concat(_qs.default.stringify(this.queryData, {
584
529
  arrayFormat: "repeat"
585
530
  }));
586
531
  }
587
-
588
532
  return url;
589
533
  },
590
-
591
534
  /*
592
535
  * Get url
593
536
  * @return {String}
@@ -596,7 +539,6 @@ var BaseModel = _ampersandModel.default.extend(
596
539
  if (this._url && this.isNew()) {
597
540
  return this.getFullURLPath(this._url);
598
541
  }
599
-
600
542
  return this.getFullURLPath(this.getPlainURL());
601
543
  },
602
544
  // Returns url without query data
@@ -604,30 +546,27 @@ var BaseModel = _ampersandModel.default.extend(
604
546
  if (!this.modelName) {
605
547
  return null;
606
548
  }
607
-
608
549
  var resp = _ampersandModel.default.prototype.url.call(this);
609
-
610
550
  if (resp.slice(-1) !== "/" && resp.indexOf("?") === -1) {
611
551
  resp += "/";
612
- } // Replace any values in a url with one from the model.
552
+ }
553
+ if (!resp.includes("{") || !resp.includes("}")) {
554
+ return resp;
555
+ }
556
+
557
+ // Replace any values in a url with one from the model.
613
558
  // So if you have /path/to/{model.id}/
614
559
  // It will check the model from "this.model.id" and replace
615
560
  // it in the url
616
-
617
-
618
561
  var re = /(\{(?:\w+\.?)+\})/g;
619
562
  var matches = resp.match(re) || [];
620
-
621
563
  var _iterator = _createForOfIteratorHelper(matches),
622
- _step;
623
-
564
+ _step;
624
565
  try {
625
566
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
626
567
  var match = _step.value;
627
568
  var path = match.slice(1, -1);
628
-
629
569
  var replacement = _lodash.default.get(this, path);
630
-
631
570
  if (replacement) {
632
571
  resp = resp.replace(match, replacement);
633
572
  } else if (!this.isNew()) {
@@ -639,22 +578,18 @@ var BaseModel = _ampersandModel.default.extend(
639
578
  } finally {
640
579
  _iterator.f();
641
580
  }
642
-
643
581
  return resp;
644
582
  },
645
583
  getResourceURL: function getResourceURL() {
646
584
  if (this.modelName === null && !Object.keys(_api.Api.resources).length) {
647
585
  return null;
648
586
  }
649
-
650
587
  if (!Object.keys(_api.Api.resources).length) {
651
588
  return "/".concat(this.modelName, "/");
652
589
  }
653
-
654
590
  if (this.modelName === null) {
655
591
  return _api.Api.getURL();
656
592
  }
657
-
658
593
  return _api.Api.getResourceURL(this.modelName);
659
594
  },
660
595
  sync: function sync() {
@@ -662,26 +597,22 @@ var BaseModel = _ampersandModel.default.extend(
662
597
  },
663
598
  serialize: function serialize() {
664
599
  var _this8 = this;
665
-
600
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
601
+ derived: true
602
+ };
666
603
  // Return nothing if data passed is falsy. More than likely this is
667
604
  // a null value
668
605
  if (!this._data) {
669
606
  return {};
670
607
  }
671
-
672
608
  var data = _ampersandModel.default.prototype.serialize.apply(this, arguments);
673
-
674
609
  data.url = this.url();
675
- var derived = this.getAttributes({
676
- derived: true
677
- });
610
+ var derived = this.getAttributes(opts);
678
611
  derived = Object.keys(derived).reduce(function (object, key) {
679
612
  var value = derived[key];
680
-
681
613
  if (value instanceof _ampersandRestCollection.default || value instanceof _ampersandModel.default) {
682
614
  value = value.toJSON();
683
615
  }
684
-
685
616
  object[key] = value;
686
617
  return object;
687
618
  }, {});
@@ -701,7 +632,6 @@ var BaseModel = _ampersandModel.default.extend(
701
632
  // be hydrated
702
633
  _retrieveURL: function _retrieveURL(item) {
703
634
  var _this9 = this;
704
-
705
635
  if (_lodash.default.isUndefined(item) || item === null) {
706
636
  return item;
707
637
  } else if (typeof item === "string") {
@@ -719,13 +649,9 @@ var BaseModel = _ampersandModel.default.extend(
719
649
  } else if ((0, _typeof2.default)(item) === "object" && item !== null) {
720
650
  return typeof item.url === "function" ? item.url() : item.url;
721
651
  }
722
-
723
652
  return null;
724
653
  }
725
654
  });
726
-
727
- exports.BaseModel = BaseModel;
728
-
729
655
  function replacePropertyDefinition(object, name) {
730
656
  function addCollection(value) {
731
657
  var data = typeof value === "string" ? {
@@ -737,7 +663,6 @@ function replacePropertyDefinition(object, name) {
737
663
  object._expandedValues[name] = collection;
738
664
  return object._expandedValues[name];
739
665
  }
740
-
741
666
  function addChild(value) {
742
667
  var data = typeof value === "string" ? {
743
668
  url: value
@@ -748,19 +673,16 @@ function replacePropertyDefinition(object, name) {
748
673
  object._expandedValues[name] = child;
749
674
  return object._expandedValues[name];
750
675
  }
751
-
752
676
  function expandCollection(value) {
753
677
  object._collections[name] = object._unsetCollections[name];
754
678
  delete object._unsetCollections[name];
755
679
  return addCollection(value);
756
680
  }
757
-
758
681
  function expandChild(value) {
759
682
  object._children[name] = object._unsetChildren[name];
760
683
  delete object._unsetChildren[name];
761
684
  return addChild(value);
762
685
  }
763
-
764
686
  Object.defineProperty(object, name, {
765
687
  set: function set(val) {
766
688
  if (_lodash.default.includes(Object.keys(object._children), name)) {
@@ -787,34 +709,28 @@ function replacePropertyDefinition(object, name) {
787
709
  if (!this._values) {
788
710
  throw new Error("Trying to retrieve value ".concat(name, " of model ").concat(object.modelName, " during constructor"));
789
711
  }
790
-
791
712
  if ((_lodash.default.includes(Object.keys(object._collections), name) || _lodash.default.includes(Object.keys(object._children), name)) && _lodash.default.includes(Object.keys(object._expandedValues), name)) {
792
713
  return object._expandedValues[name];
793
714
  }
794
-
795
715
  var value = object._values[name];
796
-
797
716
  if (this.isFetching) {
798
717
  return value;
799
718
  }
800
-
801
719
  if ((_lodash.default.isUndefined(value) || value === null) && !(object._unsetChildren[name] && object._unsetChildren[name].canBeEmpty) && !(object._unsetCollections[name] && object._unsetCollections[name].canBeEmpty)) {
802
720
  return value;
803
721
  }
804
-
805
722
  if (_lodash.default.includes(Object.keys(object._unsetCollections), name)) {
806
723
  return expandCollection(value);
807
724
  } else if (_lodash.default.includes(Object.keys(object._unsetChildren), name)) {
808
725
  return expandChild(value);
809
726
  }
810
-
811
727
  return value;
812
728
  },
813
729
  configurable: true
814
730
  });
815
- } // Make matchesURL available as a static method
816
-
731
+ }
817
732
 
733
+ // Make matchesURL available as a static method
818
734
  BaseModel.matchesURL = function (url) {
819
735
  return this.prototype.matchesURL(url);
820
736
  };