@livepreso/api 6.44.0 → 6.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  3. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  4. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  5. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  6. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  7. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  8. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  9. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  10. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  11. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  12. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  13. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  14. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  15. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  16. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  17. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  18. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  19. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  20. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  21. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  22. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  23. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  24. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  25. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  26. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  27. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  28. package/.rush/temp/operation/test/all.log +19 -0
  29. package/.rush/temp/operation/test/state.json +3 -0
  30. package/.rush/temp/{package-deps_test.json → package-deps_build.json} +11 -11
  31. package/.rush/temp/shrinkwrap-deps.json +605 -597
  32. package/CHANGELOG.json +29 -0
  33. package/CHANGELOG.md +15 -1
  34. package/README.md +4 -4
  35. package/api.build.log +1 -1
  36. package/api.test.cache.log +1 -0
  37. package/api.test.log +19 -0
  38. package/bin/test.sh +0 -1
  39. package/cjs/api.js +18 -17
  40. package/cjs/api.js.map +1 -1
  41. package/cjs/api.spec.js +0 -4
  42. package/cjs/api.spec.js.map +1 -1
  43. package/cjs/auth.js +35 -36
  44. package/cjs/auth.js.map +1 -1
  45. package/cjs/auth.spec.js +52 -71
  46. package/cjs/auth.spec.js.map +1 -1
  47. package/cjs/caching.js +2 -7
  48. package/cjs/caching.js.map +1 -1
  49. package/cjs/collections/activity.js +16 -56
  50. package/cjs/collections/activity.js.map +1 -1
  51. package/cjs/collections/adjunct-sections.js +1 -10
  52. package/cjs/collections/adjunct-sections.js.map +1 -1
  53. package/cjs/collections/adjunct-slides.js +1 -10
  54. package/cjs/collections/adjunct-slides.js.map +1 -1
  55. package/cjs/collections/adjunct-sub-slides.js +1 -9
  56. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  57. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  58. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  59. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  60. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  61. package/cjs/collections/appointment-duplicates.js +1 -9
  62. package/cjs/collections/appointment-duplicates.js.map +1 -1
  63. package/cjs/collections/appointment-editors.js +1 -10
  64. package/cjs/collections/appointment-editors.js.map +1 -1
  65. package/cjs/collections/appointment-section-tags.js +1 -9
  66. package/cjs/collections/appointment-section-tags.js.map +1 -1
  67. package/cjs/collections/appointment-slide-tags.js +1 -9
  68. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  69. package/cjs/collections/appointment-tags.js +66 -103
  70. package/cjs/collections/appointment-tags.js.map +1 -1
  71. package/cjs/collections/appointment-templates.js +27 -0
  72. package/cjs/collections/appointment-templates.js.map +1 -0
  73. package/cjs/collections/appointments.js +9 -29
  74. package/cjs/collections/appointments.js.map +1 -1
  75. package/cjs/collections/assets.js +1 -9
  76. package/cjs/collections/assets.js.map +1 -1
  77. package/cjs/collections/auto-adjuncts.js +6 -21
  78. package/cjs/collections/auto-adjuncts.js.map +1 -1
  79. package/cjs/collections/base.js +46 -112
  80. package/cjs/collections/base.js.map +1 -1
  81. package/cjs/collections/base.spec.js +204 -233
  82. package/cjs/collections/base.spec.js.map +1 -1
  83. package/cjs/collections/cms-vals.js +9 -16
  84. package/cjs/collections/cms-vals.js.map +1 -1
  85. package/cjs/collections/contact-phones.js +20 -0
  86. package/cjs/collections/contact-phones.js.map +1 -0
  87. package/cjs/collections/contacts.js +1 -9
  88. package/cjs/collections/contacts.js.map +1 -1
  89. package/cjs/collections/created-assets.js +1 -10
  90. package/cjs/collections/created-assets.js.map +1 -1
  91. package/cjs/collections/customers.js +1 -9
  92. package/cjs/collections/customers.js.map +1 -1
  93. package/cjs/collections/deck-notes.js +1 -10
  94. package/cjs/collections/deck-notes.js.map +1 -1
  95. package/cjs/collections/deck-version-screenshots.js +49 -0
  96. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  97. package/cjs/collections/deck-versions.js +5 -20
  98. package/cjs/collections/deck-versions.js.map +1 -1
  99. package/cjs/collections/decks.js +1 -9
  100. package/cjs/collections/decks.js.map +1 -1
  101. package/cjs/collections/deleted-assets.js +1 -10
  102. package/cjs/collections/deleted-assets.js.map +1 -1
  103. package/cjs/collections/dispatches.js +1 -13
  104. package/cjs/collections/dispatches.js.map +1 -1
  105. package/cjs/collections/event-objects.js +1 -9
  106. package/cjs/collections/event-objects.js.map +1 -1
  107. package/cjs/collections/events.js +1 -9
  108. package/cjs/collections/events.js.map +1 -1
  109. package/cjs/collections/groups.js +1 -9
  110. package/cjs/collections/groups.js.map +1 -1
  111. package/cjs/collections/images.js +1 -9
  112. package/cjs/collections/images.js.map +1 -1
  113. package/cjs/collections/locations.js +1 -9
  114. package/cjs/collections/locations.js.map +1 -1
  115. package/cjs/collections/opportunities.js +1 -9
  116. package/cjs/collections/opportunities.js.map +1 -1
  117. package/cjs/collections/pack-diffs.js +1 -9
  118. package/cjs/collections/pack-diffs.js.map +1 -1
  119. package/cjs/collections/packs.js +1 -9
  120. package/cjs/collections/packs.js.map +1 -1
  121. package/cjs/collections/presets.js +1 -9
  122. package/cjs/collections/presets.js.map +1 -1
  123. package/cjs/collections/section-selections.js +1 -9
  124. package/cjs/collections/section-selections.js.map +1 -1
  125. package/cjs/collections/sections.js +1 -9
  126. package/cjs/collections/sections.js.map +1 -1
  127. package/cjs/collections/slide-selections.js +1 -9
  128. package/cjs/collections/slide-selections.js.map +1 -1
  129. package/cjs/collections/slides.js +1 -9
  130. package/cjs/collections/slides.js.map +1 -1
  131. package/cjs/collections/snapshots.js +1 -9
  132. package/cjs/collections/snapshots.js.map +1 -1
  133. package/cjs/collections/sub-slides.js +1 -9
  134. package/cjs/collections/sub-slides.js.map +1 -1
  135. package/cjs/collections/tags.js +1 -9
  136. package/cjs/collections/tags.js.map +1 -1
  137. package/cjs/collections/teams.js +1 -9
  138. package/cjs/collections/teams.js.map +1 -1
  139. package/cjs/collections/templates.js +1 -9
  140. package/cjs/collections/templates.js.map +1 -1
  141. package/cjs/collections/uploads.js +1 -9
  142. package/cjs/collections/uploads.js.map +1 -1
  143. package/cjs/collections/users.js +1 -9
  144. package/cjs/collections/users.js.map +1 -1
  145. package/cjs/collections.js +33 -86
  146. package/cjs/collections.js.map +1 -1
  147. package/cjs/fixtures.js +187 -0
  148. package/cjs/fixtures.js.map +1 -0
  149. package/cjs/index.js +0 -10
  150. package/cjs/index.js.map +1 -1
  151. package/cjs/log.js +0 -1
  152. package/cjs/log.js.map +1 -1
  153. package/cjs/middleware.js +2 -7
  154. package/cjs/middleware.js.map +1 -1
  155. package/cjs/middlewares/auth.js +1 -17
  156. package/cjs/middlewares/auth.js.map +1 -1
  157. package/cjs/middlewares/base.js +3 -9
  158. package/cjs/middlewares/base.js.map +1 -1
  159. package/cjs/middlewares/json.js +1 -19
  160. package/cjs/middlewares/json.js.map +1 -1
  161. package/cjs/middlewares/redirect.js +5 -21
  162. package/cjs/middlewares/redirect.js.map +1 -1
  163. package/cjs/models/activity-item.js +6 -20
  164. package/cjs/models/activity-item.js.map +1 -1
  165. package/cjs/models/adjunct-section.js +8 -21
  166. package/cjs/models/adjunct-section.js.map +1 -1
  167. package/cjs/models/adjunct-slide.js +8 -21
  168. package/cjs/models/adjunct-slide.js.map +1 -1
  169. package/cjs/models/adjunct-sub-slide.js +1 -16
  170. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  171. package/cjs/models/adjunct.js +34 -10
  172. package/cjs/models/adjunct.js.map +1 -1
  173. package/cjs/models/api.js +1 -6
  174. package/cjs/models/api.js.map +1 -1
  175. package/cjs/models/appointment-adjunct-tags.js +1 -13
  176. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  177. package/cjs/models/appointment-deckversion-tags.js +1 -13
  178. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  179. package/cjs/models/appointment-duplicate.js +3 -25
  180. package/cjs/models/appointment-duplicate.js.map +1 -1
  181. package/cjs/models/appointment-editor.js +1 -14
  182. package/cjs/models/appointment-editor.js.map +1 -1
  183. package/cjs/models/appointment-section-tags.js +1 -13
  184. package/cjs/models/appointment-section-tags.js.map +1 -1
  185. package/cjs/models/appointment-slide-tags.js +1 -13
  186. package/cjs/models/appointment-slide-tags.js.map +1 -1
  187. package/cjs/models/appointment-stats.js +1 -11
  188. package/cjs/models/appointment-stats.js.map +1 -1
  189. package/cjs/models/appointment-tags.js +1 -10
  190. package/cjs/models/appointment-tags.js.map +1 -1
  191. package/cjs/models/appointment-template.js +23 -0
  192. package/cjs/models/appointment-template.js.map +1 -0
  193. package/cjs/models/appointment-viewing.js +1 -8
  194. package/cjs/models/appointment-viewing.js.map +1 -1
  195. package/cjs/models/appointment.js +94 -69
  196. package/cjs/models/appointment.js.map +1 -1
  197. package/cjs/models/asset.js +12 -11
  198. package/cjs/models/asset.js.map +1 -1
  199. package/cjs/models/auto-adjunct-key-check.js +1 -15
  200. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  201. package/cjs/models/auto-adjunct.js +5 -14
  202. package/cjs/models/auto-adjunct.js.map +1 -1
  203. package/cjs/models/base.js +89 -173
  204. package/cjs/models/base.js.map +1 -1
  205. package/cjs/models/base.spec.js +8 -30
  206. package/cjs/models/base.spec.js.map +1 -1
  207. package/cjs/models/choicelist.js +1 -8
  208. package/cjs/models/choicelist.js.map +1 -1
  209. package/cjs/models/cms-val.js +28 -15
  210. package/cjs/models/cms-val.js.map +1 -1
  211. package/cjs/models/cms-val.spec.js +25 -0
  212. package/cjs/models/cms-val.spec.js.map +1 -0
  213. package/cjs/models/contact-phone.js +54 -0
  214. package/cjs/models/contact-phone.js.map +1 -0
  215. package/cjs/models/contact.js +1 -18
  216. package/cjs/models/contact.js.map +1 -1
  217. package/cjs/models/customer.js +5 -30
  218. package/cjs/models/customer.js.map +1 -1
  219. package/cjs/models/deck-note.js +1 -9
  220. package/cjs/models/deck-note.js.map +1 -1
  221. package/cjs/models/deck-tags.js +1 -12
  222. package/cjs/models/deck-tags.js.map +1 -1
  223. package/cjs/models/deck-version-screenshot.js +47 -0
  224. package/cjs/models/deck-version-screenshot.js.map +1 -0
  225. package/cjs/models/deck-version.js +54 -47
  226. package/cjs/models/deck-version.js.map +1 -1
  227. package/cjs/models/deck.js +1 -14
  228. package/cjs/models/deck.js.map +1 -1
  229. package/cjs/models/dispatch-preview.js +1 -13
  230. package/cjs/models/dispatch-preview.js.map +1 -1
  231. package/cjs/models/dispatch.js +1 -23
  232. package/cjs/models/dispatch.js.map +1 -1
  233. package/cjs/models/envs.js +1 -6
  234. package/cjs/models/envs.js.map +1 -1
  235. package/cjs/models/event-object.js +1 -11
  236. package/cjs/models/event-object.js.map +1 -1
  237. package/cjs/models/event.js +1 -13
  238. package/cjs/models/event.js.map +1 -1
  239. package/cjs/models/feed-data.js +6 -13
  240. package/cjs/models/feed-data.js.map +1 -1
  241. package/cjs/models/file.js +1 -11
  242. package/cjs/models/file.js.map +1 -1
  243. package/cjs/models/group.js +1 -11
  244. package/cjs/models/group.js.map +1 -1
  245. package/cjs/models/handover.js +1 -13
  246. package/cjs/models/handover.js.map +1 -1
  247. package/cjs/models/hosted-preso.js +1 -15
  248. package/cjs/models/hosted-preso.js.map +1 -1
  249. package/cjs/models/image.js +30 -11
  250. package/cjs/models/image.js.map +1 -1
  251. package/cjs/models/location.js +1 -13
  252. package/cjs/models/location.js.map +1 -1
  253. package/cjs/models/manifest-json.js +75 -74
  254. package/cjs/models/manifest-json.js.map +1 -1
  255. package/cjs/models/onshare.js +1 -14
  256. package/cjs/models/onshare.js.map +1 -1
  257. package/cjs/models/opportunity.js +1 -14
  258. package/cjs/models/opportunity.js.map +1 -1
  259. package/cjs/models/pack-diff.js +1 -14
  260. package/cjs/models/pack-diff.js.map +1 -1
  261. package/cjs/models/pack.js +1 -12
  262. package/cjs/models/pack.js.map +1 -1
  263. package/cjs/models/preset.js +4 -20
  264. package/cjs/models/preset.js.map +1 -1
  265. package/cjs/models/refresh-request.js +17 -11
  266. package/cjs/models/refresh-request.js.map +1 -1
  267. package/cjs/models/room.js +1 -9
  268. package/cjs/models/room.js.map +1 -1
  269. package/cjs/models/salesforce-lookup.js +1 -12
  270. package/cjs/models/salesforce-lookup.js.map +1 -1
  271. package/cjs/models/section-selection.js +1 -14
  272. package/cjs/models/section-selection.js.map +1 -1
  273. package/cjs/models/section.js +4 -15
  274. package/cjs/models/section.js.map +1 -1
  275. package/cjs/models/slide-selection.js +1 -14
  276. package/cjs/models/slide-selection.js.map +1 -1
  277. package/cjs/models/slide.js +4 -15
  278. package/cjs/models/slide.js.map +1 -1
  279. package/cjs/models/snapshot.js +13 -15
  280. package/cjs/models/snapshot.js.map +1 -1
  281. package/cjs/models/snapshot.spec.js +44 -0
  282. package/cjs/models/snapshot.spec.js.map +1 -0
  283. package/cjs/models/sub-slide.js +1 -12
  284. package/cjs/models/sub-slide.js.map +1 -1
  285. package/cjs/models/support-ticket.js +1 -11
  286. package/cjs/models/support-ticket.js.map +1 -1
  287. package/cjs/models/tag.js +1 -13
  288. package/cjs/models/tag.js.map +1 -1
  289. package/cjs/models/team.js +14 -13
  290. package/cjs/models/team.js.map +1 -1
  291. package/cjs/models/template.js +89 -15
  292. package/cjs/models/template.js.map +1 -1
  293. package/cjs/models/tenancy.js +4 -11
  294. package/cjs/models/tenancy.js.map +1 -1
  295. package/cjs/models/timing-log.js +21 -78
  296. package/cjs/models/timing-log.js.map +1 -1
  297. package/cjs/models/timing-log.spec.js +24 -37
  298. package/cjs/models/timing-log.spec.js.map +1 -1
  299. package/cjs/models/token.js +46 -0
  300. package/cjs/models/token.js.map +1 -0
  301. package/cjs/models/transcribe-socket.js +1 -8
  302. package/cjs/models/transcribe-socket.js.map +1 -1
  303. package/cjs/models/upload.js +1 -7
  304. package/cjs/models/upload.js.map +1 -1
  305. package/cjs/models/user.js +11 -28
  306. package/cjs/models/user.js.map +1 -1
  307. package/cjs/models/user.spec.js +20 -30
  308. package/cjs/models/user.spec.js.map +1 -1
  309. package/cjs/models.js +44 -128
  310. package/cjs/models.js.map +1 -1
  311. package/cjs/presentation/appointment-presentation.js +14 -36
  312. package/cjs/presentation/appointment-presentation.js.map +1 -1
  313. package/cjs/presentation/base-presentation-collection.js +1 -7
  314. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  315. package/cjs/presentation/base-presentation-model.js +108 -33
  316. package/cjs/presentation/base-presentation-model.js.map +1 -1
  317. package/cjs/presentation/base-presentation-model.spec.js +58 -23
  318. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  319. package/cjs/presentation/presentation-deck.js +73 -83
  320. package/cjs/presentation/presentation-deck.js.map +1 -1
  321. package/cjs/presentation/presentation-deck.spec.js +118 -88
  322. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  323. package/cjs/presentation/presentation-decks.js +1 -9
  324. package/cjs/presentation/presentation-decks.js.map +1 -1
  325. package/cjs/presentation/presentation-section.js +70 -84
  326. package/cjs/presentation/presentation-section.js.map +1 -1
  327. package/cjs/presentation/presentation-section.spec.js +296 -238
  328. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  329. package/cjs/presentation/presentation-sections.js +1 -9
  330. package/cjs/presentation/presentation-sections.js.map +1 -1
  331. package/cjs/presentation/presentation-slide.js +74 -84
  332. package/cjs/presentation/presentation-slide.js.map +1 -1
  333. package/cjs/presentation/presentation-slide.spec.js +211 -166
  334. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  335. package/cjs/presentation/presentation-slides.js +1 -9
  336. package/cjs/presentation/presentation-slides.js.map +1 -1
  337. package/cjs/presentation/presentation-subslide.js +3 -23
  338. package/cjs/presentation/presentation-subslide.js.map +1 -1
  339. package/cjs/presentation/presentation-subslide.spec.js +101 -125
  340. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  341. package/cjs/presentation/presentation-subslides.js +1 -9
  342. package/cjs/presentation/presentation-subslides.js.map +1 -1
  343. package/cjs/presentation/presentation.js +87 -32
  344. package/cjs/presentation/presentation.js.map +1 -1
  345. package/cjs/presentation.js +0 -20
  346. package/cjs/presentation.js.map +1 -1
  347. package/cjs/selections.js +81 -0
  348. package/cjs/selections.js.map +1 -0
  349. package/cjs/state-register.js +3 -11
  350. package/cjs/state-register.js.map +1 -1
  351. package/cjs/sync.js +32 -76
  352. package/cjs/sync.js.map +1 -1
  353. package/cjs/utils.js +51 -42
  354. package/cjs/utils.js.map +1 -1
  355. package/cjs/utils.spec.js +0 -4
  356. package/cjs/utils.spec.js.map +1 -1
  357. package/jest.config.js +5 -3
  358. package/package.json +11 -8
  359. package/src/api.js +17 -2
  360. package/src/auth.js +45 -9
  361. package/src/auth.spec.js +2 -0
  362. package/src/collections/activity.js +4 -4
  363. package/src/collections/adjunct-sections.js +1 -1
  364. package/src/collections/adjunct-slides.js +1 -1
  365. package/src/collections/adjunct-sub-slides.js +1 -1
  366. package/src/collections/appointment-adjunct-tags.js +1 -1
  367. package/src/collections/appointment-deckversion-tags.js +2 -2
  368. package/src/collections/appointment-duplicates.js +1 -1
  369. package/src/collections/appointment-editors.js +1 -1
  370. package/src/collections/appointment-section-tags.js +1 -1
  371. package/src/collections/appointment-slide-tags.js +1 -1
  372. package/src/collections/appointment-tags.js +20 -18
  373. package/src/collections/appointment-templates.js +26 -0
  374. package/src/collections/appointments.js +9 -9
  375. package/src/collections/assets.js +1 -1
  376. package/src/collections/auto-adjuncts.js +1 -1
  377. package/src/collections/base.js +20 -10
  378. package/src/collections/base.spec.js +19 -5
  379. package/src/collections/cms-vals.js +5 -1
  380. package/src/collections/contact-phones.js +18 -0
  381. package/src/collections/contacts.js +1 -1
  382. package/src/collections/created-assets.js +1 -1
  383. package/src/collections/customers.js +1 -1
  384. package/src/collections/deck-notes.js +1 -1
  385. package/src/collections/deck-version-screenshots.js +48 -0
  386. package/src/collections/deck-versions.js +1 -1
  387. package/src/collections/decks.js +1 -1
  388. package/src/collections/deleted-assets.js +1 -1
  389. package/src/collections/dispatches.js +2 -2
  390. package/src/collections/event-objects.js +1 -1
  391. package/src/collections/events.js +1 -1
  392. package/src/collections/groups.js +1 -1
  393. package/src/collections/images.js +1 -1
  394. package/src/collections/locations.js +1 -1
  395. package/src/collections/opportunities.js +1 -1
  396. package/src/collections/pack-diffs.js +1 -1
  397. package/src/collections/packs.js +1 -1
  398. package/src/collections/presets.js +1 -1
  399. package/src/collections/section-selections.js +1 -1
  400. package/src/collections/sections.js +1 -1
  401. package/src/collections/slide-selections.js +1 -1
  402. package/src/collections/slides.js +1 -1
  403. package/src/collections/snapshots.js +1 -1
  404. package/src/collections/sub-slides.js +1 -1
  405. package/src/collections/tags.js +1 -1
  406. package/src/collections/teams.js +1 -1
  407. package/src/collections/templates.js +1 -1
  408. package/src/collections/uploads.js +1 -1
  409. package/src/collections/users.js +1 -1
  410. package/src/collections.js +3 -0
  411. package/src/fixtures.js +193 -0
  412. package/src/models/activity-item.js +3 -1
  413. package/src/models/adjunct-section.js +7 -2
  414. package/src/models/adjunct-slide.js +7 -2
  415. package/src/models/adjunct-sub-slide.js +1 -1
  416. package/src/models/adjunct.js +39 -1
  417. package/src/models/appointment-adjunct-tags.js +1 -1
  418. package/src/models/appointment-deckversion-tags.js +1 -1
  419. package/src/models/appointment-duplicate.js +1 -1
  420. package/src/models/appointment-editor.js +1 -1
  421. package/src/models/appointment-section-tags.js +1 -1
  422. package/src/models/appointment-slide-tags.js +1 -1
  423. package/src/models/appointment-stats.js +1 -1
  424. package/src/models/appointment-tags.js +1 -1
  425. package/src/models/appointment-template.js +19 -0
  426. package/src/models/appointment-viewing.js +1 -1
  427. package/src/models/appointment.js +112 -37
  428. package/src/models/asset.js +15 -1
  429. package/src/models/auto-adjunct-key-check.js +1 -1
  430. package/src/models/auto-adjunct.js +4 -1
  431. package/src/models/base.js +55 -22
  432. package/src/models/base.spec.js +34 -27
  433. package/src/models/choicelist.js +1 -1
  434. package/src/models/cms-val.js +24 -1
  435. package/src/models/cms-val.spec.js +14 -0
  436. package/src/models/contact-phone.js +57 -0
  437. package/src/models/contact.js +1 -1
  438. package/src/models/customer.js +3 -3
  439. package/src/models/deck-note.js +1 -1
  440. package/src/models/deck-tags.js +1 -1
  441. package/src/models/deck-version-screenshot.js +48 -0
  442. package/src/models/deck-version.js +60 -9
  443. package/src/models/deck.js +1 -1
  444. package/src/models/dispatch-preview.js +1 -1
  445. package/src/models/dispatch.js +1 -1
  446. package/src/models/event-object.js +1 -1
  447. package/src/models/event.js +1 -1
  448. package/src/models/feed-data.js +3 -1
  449. package/src/models/file.js +1 -1
  450. package/src/models/group.js +1 -1
  451. package/src/models/handover.js +1 -1
  452. package/src/models/hosted-preso.js +1 -1
  453. package/src/models/image.js +33 -1
  454. package/src/models/location.js +1 -1
  455. package/src/models/manifest-json.js +57 -6
  456. package/src/models/onshare.js +1 -1
  457. package/src/models/opportunity.js +1 -1
  458. package/src/models/pack-diff.js +1 -1
  459. package/src/models/pack.js +1 -1
  460. package/src/models/preset.js +3 -1
  461. package/src/models/refresh-request.js +15 -1
  462. package/src/models/room.js +1 -1
  463. package/src/models/salesforce-lookup.js +1 -1
  464. package/src/models/section-selection.js +1 -1
  465. package/src/models/section.js +3 -1
  466. package/src/models/slide-selection.js +1 -1
  467. package/src/models/slide.js +3 -1
  468. package/src/models/snapshot.js +11 -2
  469. package/src/models/snapshot.spec.js +31 -0
  470. package/src/models/sub-slide.js +1 -1
  471. package/src/models/support-ticket.js +1 -1
  472. package/src/models/tag.js +1 -1
  473. package/src/models/team.js +14 -3
  474. package/src/models/template.js +74 -2
  475. package/src/models/tenancy.js +4 -1
  476. package/src/models/timing-log.js +2 -2
  477. package/src/models/timing-log.spec.js +1 -1
  478. package/src/models/token.js +47 -0
  479. package/src/models/transcribe-socket.js +1 -1
  480. package/src/models/user.js +15 -2
  481. package/src/models.js +4 -0
  482. package/src/presentation/appointment-presentation.js +13 -5
  483. package/src/presentation/base-presentation-collection.js +1 -1
  484. package/src/presentation/base-presentation-model.js +88 -3
  485. package/src/presentation/base-presentation-model.spec.js +80 -3
  486. package/src/presentation/presentation-deck.js +65 -22
  487. package/src/presentation/presentation-deck.spec.js +55 -2
  488. package/src/presentation/presentation-decks.js +1 -1
  489. package/src/presentation/presentation-section.js +91 -31
  490. package/src/presentation/presentation-section.spec.js +142 -10
  491. package/src/presentation/presentation-sections.js +1 -1
  492. package/src/presentation/presentation-slide.js +69 -23
  493. package/src/presentation/presentation-slide.spec.js +105 -9
  494. package/src/presentation/presentation-slides.js +1 -1
  495. package/src/presentation/presentation-subslide.js +5 -5
  496. package/src/presentation/presentation-subslide.spec.js +3 -3
  497. package/src/presentation/presentation-subslides.js +1 -1
  498. package/src/presentation/presentation.js +27 -8
  499. package/src/selections.js +71 -0
  500. package/src/sync.js +1 -1
  501. package/src/utils.js +31 -8
  502. package/src/utils.spec.js +4 -4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collections/auto-adjuncts.js"],"names":["AutoAdjunctCollection","BaseCollection","extend","comparator","model","fetchByDeckID","deckID","options","fetch","data","deck","opts","user","Auth","team","concat","team_set","map","id","prototype","call"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,qBAAqB,GAAGC,qBAAeC,MAAf;AACpC;AAAiD;AAChDC,EAAAA,UAAU,EAAE,UADoC;AAEhDC,EAAAA,KAAK,EAAE,kBAFyC;AAIhDC,EAAAA,aAJgD,yBAIlCC,MAJkC,EAIZ;AAAA,QAAdC,OAAc,uEAAJ,EAAI;AACnC,WAAO,KAAKC,KAAL,iCACHD,OADG;AAENE,MAAAA,IAAI,EAAE;AACLC,QAAAA,IAAI,EAAEJ;AADD;AAFA,OAAP;AAMA,GAX+C;AAahDE,EAAAA,KAbgD,mBAa/B;AAAA,QAAXG,IAAW,uEAAJ,EAAI;AAChB,QAAQC,IAAR,GAAiBC,aAAjB,CAAQD,IAAR;;AAEA,QAAI,CAACD,IAAI,CAACF,IAAV,EAAgB;AACfE,MAAAA,IAAI,CAACF,IAAL,GAAY,EAAZ;AACA,KALe,CAOhB;AACA;;;AACA,QAAI,CAACE,IAAI,CAACF,IAAL,CAAUK,IAAf,EAAqB;AACpB;AACA;AACA;AACA;AACA;AACAH,MAAAA,IAAI,CAACF,IAAL,CAAUK,IAAV,GAAiB,CAAC,IAAD,EAAOC,MAAP,CAAcH,IAAI,CAACI,QAAL,CAAcC,GAAd,CAAkB,UAACH,IAAD;AAAA,eAAUA,IAAI,CAACI,EAAf;AAAA,OAAlB,CAAd,CAAjB;AACA;;AAED,WAAOjB,qBAAekB,SAAf,CAAyBX,KAAzB,CAA+BY,IAA/B,CAAoC,IAApC,EAA0CT,IAA1C,CAAP;AACA;AAhC+C,CADb,CAA9B;;;AAqCP,6BAAS,uBAAT,EAAkCX,qBAAlC","sourcesContent":["import \"../models/auto-adjunct.js\";\n\nimport Auth from \"../auth.js\";\nimport { BaseCollection } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias collections.AutoAdjunctCollection\n * @extends collections.BaseCollection\n * @see models.AutoAdjunctModel\n */\nexport const AutoAdjunctCollection = BaseCollection.extend(\n\t/** @lends collections.AutoAdjunctCollection# */ {\n\t\tcomparator: \"sequence\",\n\t\tmodel: \"AutoAdjunctModel\",\n\n\t\tfetchByDeckID(deckID, options = {}) {\n\t\t\treturn this.fetch({\n\t\t\t\t...options,\n\t\t\t\tdata: {\n\t\t\t\t\tdeck: deckID,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\n\t\tfetch(opts = {}) {\n\t\t\tconst { user } = Auth;\n\n\t\t\tif (!opts.data) {\n\t\t\t\topts.data = {};\n\t\t\t}\n\n\t\t\t// Let's only add this if it's not already being set, in case a global user\n\t\t\t// DOES want to see a specific team.\n\t\t\tif (!opts.data.team) {\n\t\t\t\t//\n\t\t\t\t// Filter all global autoadjuncts, and only query teams that\n\t\t\t\t// the authorized user is a part of. This is mostly for the case where\n\t\t\t\t// a 'global' temp slide admin could end up seeing autoadjuncts for\n\t\t\t\t// many teams - which would be increadibly confusing.\n\t\t\t\topts.data.team = [null].concat(user.team_set.map((team) => team.id));\n\t\t\t}\n\n\t\t\treturn BaseCollection.prototype.fetch.call(this, opts);\n\t\t},\n\t}\n);\n\nregister(\"AutoAdjunctCollection\", AutoAdjunctCollection);\n"],"file":"auto-adjuncts.js"}
1
+ {"version":3,"file":"auto-adjuncts.js","names":["require","_auth","_interopRequireDefault","_base","_stateRegister","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","AutoAdjunctCollection","exports","BaseCollection","extend","comparator","model","fetchByDeckID","deckID","options","undefined","fetch","data","deck","opts","user","Auth","team","concat","team_set","map","id","prototype","call","register"],"sources":["../../src/collections/auto-adjuncts.js"],"sourcesContent":["import \"../models/auto-adjunct.js\";\n\nimport Auth from \"../auth.js\";\nimport { BaseCollection } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias collections.AutoAdjunctCollection\n * @extends collections.BaseCollection\n * @see models.AutoAdjunctModel\n */\nexport const AutoAdjunctCollection = BaseCollection.extend(\n\t/** @lends collections.AutoAdjunctCollection# */ {\n\t\tcomparator: \"sequence\",\n\t\tmodel: \"AutoAdjunctModel\",\n\n\t\tfetchByDeckID(deckID, options = {}) {\n\t\t\treturn this.fetch({\n\t\t\t\t...options,\n\t\t\t\tdata: {\n\t\t\t\t\tdeck: deckID,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\n\t\tfetch(opts = {}) {\n\t\t\tconst { user } = Auth;\n\n\t\t\tif (!opts.data) {\n\t\t\t\topts.data = {};\n\t\t\t}\n\n\t\t\t// Let's only add this if it's not already being set, in case a global user\n\t\t\t// DOES want to see a specific team.\n\t\t\tif (!opts.data.team) {\n\t\t\t\t//\n\t\t\t\t// Filter all global autoadjuncts, and only query teams that\n\t\t\t\t// the authorized user is a part of. This is mostly for the case where\n\t\t\t\t// a 'global' temp slide admin could end up seeing autoadjuncts for\n\t\t\t\t// many teams - which would be increadibly confusing.\n\t\t\t\topts.data.team = [null].concat(user.team_set.map((team) => team.id));\n\t\t\t}\n\n\t\t\treturn BaseCollection.prototype.fetch.call(this, opts);\n\t\t},\n\t},\n);\n\nregister(\"AutoAdjunctCollection\", AutoAdjunctCollection);\n"],"mappings":";;;;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAAgD,SAAAK,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAnB,CAAA,EAAAG,MAAA,CAAAe,yBAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAiB,cAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAEhD;AACA;AACA;AACA;AACA;AACA;AACO,IAAMqB,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAGE,oBAAc,CAACC,MAAM,EACzD,gDAAiD;EAChDC,UAAU,EAAE,UAAU;EACtBC,KAAK,EAAE,kBAAkB;EAEzBC,aAAa,WAAAA,cAACC,MAAM,EAAgB;IAAA,IAAdC,OAAO,GAAAhB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAiB,SAAA,GAAAjB,SAAA,MAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAACkB,KAAK,CAAAnB,aAAA,CAAAA,aAAA,KACbiB,OAAO;MACVG,IAAI,EAAE;QACLC,IAAI,EAAEL;MACP;IAAC,EACD,CAAC;EACH,CAAC;EAEDG,KAAK,WAAAA,MAAA,EAAY;IAAA,IAAXG,IAAI,GAAArB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAiB,SAAA,GAAAjB,SAAA,MAAG,CAAC,CAAC;IACd,IAAQsB,IAAI,GAAKC,aAAI,CAAbD,IAAI;IAEZ,IAAI,CAACD,IAAI,CAACF,IAAI,EAAE;MACfE,IAAI,CAACF,IAAI,GAAG,CAAC,CAAC;IACf;;IAEA;IACA;IACA,IAAI,CAACE,IAAI,CAACF,IAAI,CAACK,IAAI,EAAE;MACpB;MACA;MACA;MACA;MACA;MACAH,IAAI,CAACF,IAAI,CAACK,IAAI,GAAG,CAAC,IAAI,CAAC,CAACC,MAAM,CAACH,IAAI,CAACI,QAAQ,CAACC,GAAG,CAAC,UAACH,IAAI;QAAA,OAAKA,IAAI,CAACI,EAAE;MAAA,EAAC,CAAC;IACrE;IAEA,OAAOlB,oBAAc,CAACmB,SAAS,CAACX,KAAK,CAACY,IAAI,CAAC,IAAI,EAAET,IAAI,CAAC;EACvD;AACD,CACD,CAAC;AAED,IAAAU,uBAAQ,EAAC,uBAAuB,EAAEvB,qBAAqB,CAAC"}
@@ -1,59 +1,37 @@
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.BaseCollection = void 0;
9
-
10
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
-
16
11
  var _api = require("../api.js");
17
-
18
12
  var _base = require("../models/base.js");
19
-
20
13
  var _ampersandRestCollection = _interopRequireDefault(require("ampersand-rest-collection"));
21
-
22
14
  var _bluebird = _interopRequireDefault(require("bluebird"));
23
-
24
15
  var _lodash = _interopRequireDefault(require("lodash"));
25
-
26
16
  var _log = _interopRequireDefault(require("../log.js"));
27
-
28
17
  var _qs = _interopRequireDefault(require("qs"));
29
-
30
18
  var _stateRegister = require("../state-register.js");
31
-
32
19
  var _sync2 = require("../sync.js");
33
-
34
20
  var _excluded = ["data"];
35
-
36
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
37
-
38
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
39
-
21
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
40
23
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
41
-
42
24
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
43
-
44
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
45
-
25
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
46
26
  // Current hardcoded limit for maximum number of pages fetched
47
27
  // automatically by fetchAll
48
28
  var pageLimit = 20;
29
+
49
30
  /**
50
31
  * @constructor
51
32
  * @alias collections.BaseCollection
52
33
  */
53
-
54
- var BaseCollection = _ampersandRestCollection.default.extend(
55
- /** @lends collections.BaseCollection# */
56
- {
34
+ var BaseCollection = exports.BaseCollection = _ampersandRestCollection.default.extend( /** @lends collections.BaseCollection# */{
57
35
  modelName: null,
58
36
  model: _base.BaseModel,
59
37
  fetchEmpty: false,
@@ -72,65 +50,60 @@ var BaseCollection = _ampersandRestCollection.default.extend(
72
50
  per_page: 1000
73
51
  },
74
52
  constructor: function constructor() {
75
- var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
53
+ var _data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76
54
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
77
-
55
+ var data = _data;
78
56
  var options = _lodash.default.defaults(opts, {
79
57
  data: {}
80
- }); // We ensure that we pass an array because we don't want the collection constructor to
81
- // create an empty model using a data object
82
-
58
+ });
83
59
 
84
- var newData = []; // Allow passing in collections
60
+ // We ensure that we pass an array because we don't want the collection constructor to
61
+ // create an empty model using a data object
62
+ var newData = [];
85
63
 
64
+ // Allow passing in collections
86
65
  if (data instanceof _ampersandRestCollection.default) {
87
66
  data = data.toJSON();
88
67
  }
89
-
90
68
  this._data = data;
91
- this._options = options; // Remove reference to the prototype, or this can accidentally
69
+ this._options = options;
70
+
71
+ // Remove reference to the prototype, or this can accidentally
92
72
  // apply to all collections
73
+ this.queryData = _lodash.default.extend({}, this.defaultFetchData, options.data);
93
74
 
94
- this.queryData = _lodash.default.extend({}, this.defaultFetchData, options.data); // Check for specialized url returns from the server. This is for when the
75
+ // Check for specialized url returns from the server. This is for when the
95
76
  // server responds with an array of urls rather than object data.
96
-
97
77
  if (data && data.url) {
98
78
  this._url = data.url;
99
79
  } else if (data && data.length) {
100
80
  newData = data;
101
81
  }
102
-
103
82
  this.registerStates();
83
+ _ampersandRestCollection.default.prototype.constructor.call(this, newData, opts);
104
84
 
105
- _ampersandRestCollection.default.prototype.constructor.call(this, newData, opts); // Get the name for the collection based on the model
106
-
107
-
85
+ // Get the name for the collection based on the model
108
86
  if (!this.modelName && typeof this.model === "function") {
109
87
  this.modelName = this.model.prototype.modelName;
110
88
  }
111
89
  },
112
90
  add: function add(values) {
113
91
  var args = Array.prototype.slice.call(arguments);
114
-
115
92
  if (values && values instanceof _ampersandRestCollection.default) {
116
93
  args[0] = values.toJSON();
117
94
  }
118
-
119
95
  return _ampersandRestCollection.default.prototype.add.apply(this, args);
120
96
  },
121
97
  _prepareModel: function _prepareModel(attrs, options) {
122
98
  var opts = _lodash.default.omit(options, ["data"]);
123
-
124
99
  return _ampersandRestCollection.default.prototype._prepareModel.call(this, attrs, opts);
125
100
  },
126
101
  registerStates: function registerStates() {
127
102
  if (typeof this.model === "string") {
128
103
  var Model = _stateRegister.registeredStates[this.model];
129
-
130
104
  if (!Model) {
131
105
  throw new Error("'".concat(this.model, "' not found! Did you forget to import it on the '").concat(this.modelName, "' model?"));
132
106
  }
133
-
134
107
  this.model = Model;
135
108
  }
136
109
  },
@@ -142,61 +115,52 @@ var BaseCollection = _ampersandRestCollection.default.extend(
142
115
  },
143
116
  getFullURLPath: function getFullURLPath(path) {
144
117
  var url = path;
145
-
146
118
  if (Object.keys(this.queryData).length) {
147
119
  var query = this.queryData;
148
120
  var queryIndex = url.indexOf("?");
149
-
150
121
  if (queryIndex > -1) {
151
122
  url = url.slice(0, queryIndex);
152
123
  query = _lodash.default.extend({}, _qs.default.parse(url.slice(queryIndex + 1)), this.queryData);
153
124
  }
154
-
155
125
  if (url.slice(-1) !== "/") {
156
126
  url += "/";
157
127
  }
158
-
159
128
  url += "?".concat(_qs.default.stringify(query, {
160
129
  arrayFormat: "repeat"
161
130
  }));
162
131
  }
163
-
164
132
  return url;
165
133
  },
166
134
  url: function url() {
167
135
  if (this._url) {
168
136
  return this.getFullURLPath(this._url);
169
137
  }
170
-
171
138
  var resp = this.urlRoot();
172
-
173
139
  if (resp.slice(-1) !== "/" && resp.indexOf("?") === -1) {
174
140
  resp += "/";
175
- } // Replace any values in a url with one from the collection's options.
141
+ }
142
+ if (!resp.includes("{") || !resp.includes("}")) {
143
+ return this.getFullURLPath(resp);
144
+ }
145
+
146
+ // Replace any values in a url with one from the collection's options.
176
147
  // So if you have /path/to/{model.id}/models/
177
148
  // It will check the collection options for "model.id" and replace
178
149
  // it in the url
179
-
180
-
181
150
  var re = /(\{(?:\w+\.?)+\})/g;
182
151
  var matches = resp.match(re) || [];
183
-
184
152
  var _iterator = _createForOfIteratorHelper(matches),
185
- _step;
186
-
153
+ _step;
187
154
  try {
188
155
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
189
156
  var match = _step.value;
190
157
  var path = match.slice(1, -1);
191
-
192
158
  var replacement = _lodash.default.get(this._options, path);
193
-
194
159
  if (replacement) {
195
160
  resp = resp.replace(match, replacement);
196
161
  } else if (!this.isNew()) {
197
162
  _log.default.error("Collection ".concat(this.modelName, " is missing value ").concat(path, " as an option"));
198
163
  }
199
-
200
164
  resp = resp.replace(match, replacement);
201
165
  }
202
166
  } catch (err) {
@@ -204,7 +168,6 @@ var BaseCollection = _ampersandRestCollection.default.extend(
204
168
  } finally {
205
169
  _iterator.f();
206
170
  }
207
-
208
171
  return this.getFullURLPath(resp);
209
172
  },
210
173
  getResourceURL: function getResourceURL() {
@@ -212,7 +175,6 @@ var BaseCollection = _ampersandRestCollection.default.extend(
212
175
  if (this.modelName === null) {
213
176
  return _api.Api.getURL();
214
177
  }
215
-
216
178
  return _api.Api.getResourceURL(this.modelName);
217
179
  },
218
180
  sync: function sync() {
@@ -227,108 +189,89 @@ var BaseCollection = _ampersandRestCollection.default.extend(
227
189
  },
228
190
  fetchSet: function fetchSet() {
229
191
  var _this = this;
230
-
231
192
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
232
193
  var idSet = this.models.map(function (model) {
233
194
  return model.id;
234
195
  });
235
-
236
196
  if (!idSet.length) {
237
197
  _log.default.warn("Tried to fetch ".concat(this.modelName, " set with no models"));
238
-
239
198
  return _bluebird.default.resolve();
240
199
  }
241
-
242
200
  var data = opts.data,
243
- otherOpts = (0, _objectWithoutProperties2.default)(opts, _excluded);
244
-
201
+ otherOpts = (0, _objectWithoutProperties2.default)(opts, _excluded);
245
202
  var options = _objectSpread({
246
203
  data: _objectSpread(_objectSpread({}, data), {}, {
247
204
  id: idSet
248
205
  })
249
- }, otherOpts); // Necessary because these models were already initialised before the fetch,
250
- // and the children weren't updated correctly with the new data.
251
-
206
+ }, otherOpts);
252
207
 
208
+ // Necessary because these models were already initialised before the fetch,
209
+ // and the children weren't updated correctly with the new data.
253
210
  return this.fetch(options).tap(function (data) {
254
211
  _this.reset();
255
-
256
212
  _this.add(data.results);
257
213
  });
258
214
  },
259
215
  fetch: function fetch() {
260
216
  var _this2 = this;
261
-
262
217
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
218
+ var options = _lodash.default.cloneDeep(opts);
263
219
 
264
- var options = _lodash.default.cloneDeep(opts); // Add default params to the fetch (ie ?per_page=1000)
265
-
266
-
220
+ // Add default params to the fetch (ie ?per_page=1000)
267
221
  options.data = _lodash.default.extend({}, this.queryData, options.data || {});
268
222
  this._options = _lodash.default.extend({}, this._options, options);
269
223
  this.queryData = _objectSpread({}, options.data);
270
-
271
224
  if (options.url) {
272
225
  this._url = options.url;
273
226
  }
274
-
275
227
  return _ampersandRestCollection.default.prototype.fetch.call(this, options).tap(function (response) {
276
228
  _this2._data = response;
277
229
  });
278
230
  },
279
231
  fetchAll: function fetchAll() {
280
232
  var _this3 = this;
281
-
282
233
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
234
+ var options = _lodash.default.cloneDeep(opts);
283
235
 
284
- var options = _lodash.default.cloneDeep(opts); // Add default params to the fetch (ie ?per_page=1000)
285
-
286
-
236
+ // Add default params to the fetch (ie ?per_page=1000)
287
237
  options.data = _lodash.default.extend({}, this.queryData, options.data || {});
288
238
  this._options = _lodash.default.extend({}, this._options, options);
289
239
  this.queryData = _objectSpread({}, this._options.data);
290
-
291
240
  if (this._options.url) {
292
241
  this._url = options.url;
293
242
  }
294
-
295
243
  var checkPages = function checkPages(response) {
296
244
  var notLastPage = response.total_pages > response.page;
297
245
  var belowPageLimit = response.page < pageLimit;
298
-
299
246
  if (notLastPage && belowPageLimit) {
300
247
  var _options = _objectSpread(_objectSpread({}, _this3._options), {}, {
301
248
  data: _objectSpread(_objectSpread({}, _this3._options.data), {}, {
302
249
  page: response.page + 1
303
250
  })
304
- }); // Update the collection with the new data & page number
305
-
251
+ });
306
252
 
253
+ // Update the collection with the new data & page number
307
254
  _this3._options = _options;
308
255
  _this3.queryData = _objectSpread({}, _options.data);
309
256
  return _this3.fetchPage().then(function (response) {
310
- checkPages(response);
257
+ return checkPages(response);
311
258
  });
312
259
  } else {
313
260
  // The collection's models are replaced with the latest
314
261
  // batch of models every time a new page is fetched.
315
262
  // Here we add back all of the previously-fetched models.
316
263
  _this3.add(_this3._data.results);
317
-
318
264
  return _this3._data;
319
265
  }
320
266
  };
321
-
322
267
  return this.fetchPage().then(function (response) {
323
268
  return checkPages(response);
324
269
  });
325
270
  },
326
271
  fetchPage: function fetchPage() {
327
272
  var _this4 = this;
328
-
329
273
  return _ampersandRestCollection.default.prototype.fetch.call(this, this._options).then(function (response) {
330
274
  var _this4$_data$results;
331
-
332
275
  // Add the response data to this._data - if we're fetching
333
276
  // multiple pages, this._data.results will contain all of the
334
277
  // results fetched from all pages so far
@@ -339,7 +282,6 @@ var BaseCollection = _ampersandRestCollection.default.extend(
339
282
  } else {
340
283
  _this4._data = response;
341
284
  }
342
-
343
285
  return response;
344
286
  });
345
287
  },
@@ -350,40 +292,38 @@ var BaseCollection = _ampersandRestCollection.default.extend(
350
292
  } else if (model.serialize) {
351
293
  return model.serialize();
352
294
  }
353
-
354
295
  var out = {};
355
-
356
296
  _lodash.default.extend(out, model);
357
-
358
297
  delete out.collection;
359
298
  return out;
360
299
  });
361
300
  },
301
+ // Returns "true" if all child models have been fetched
302
+ areModelsFetched: function areModelsFetched() {
303
+ return this.map(function (model) {
304
+ return model.isFetched();
305
+ }).every(Boolean);
306
+ },
362
307
  isNew: function isNew() {
363
308
  return true;
364
309
  },
365
310
  serialize: function serialize() {
366
311
  var collection = _ampersandRestCollection.default.prototype.serialize.call(this);
367
-
368
312
  if (_lodash.default.isObject(this._data) && this._data.url && !collection.length) {
369
313
  return this._data.url;
370
314
  }
371
-
372
315
  return collection;
373
316
  },
374
317
  save: function save() {
375
318
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
376
319
  var batch = options.batch,
377
- patch = options.patch;
378
-
320
+ patch = options.patch;
379
321
  if (batch || !this.length) {
380
322
  if (patch) {
381
323
  return this.sync("patch", this, options);
382
324
  }
383
-
384
325
  return this.sync("create", this, options);
385
326
  }
386
-
387
327
  return _bluebird.default.all(this.map(function (model) {
388
328
  return model.save(model.toServer(), options);
389
329
  }));
@@ -391,18 +331,15 @@ var BaseCollection = _ampersandRestCollection.default.extend(
391
331
  delete: function _delete() {
392
332
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
393
333
  var batch = options.batch;
394
-
395
334
  if (batch) {
396
335
  return this.sync("delete", this, options);
397
336
  }
398
-
399
337
  return _bluebird.default.all(this.map(function (model) {
400
338
  return model.delete(model.toServer(), options);
401
339
  }));
402
340
  },
403
341
  parse: function parse(attrs) {
404
342
  var results = attrs.results || attrs;
405
-
406
343
  if (Array.isArray(results) && results.length && typeof results[0] === "string") {
407
344
  // Convert any url responses from the server into an object that
408
345
  // can be passed to the model.
@@ -414,14 +351,11 @@ var BaseCollection = _ampersandRestCollection.default.extend(
414
351
  };
415
352
  });
416
353
  }
417
-
418
354
  return results;
419
355
  }
420
- }); // Make matchesURL available as a static method
421
-
422
-
423
- exports.BaseCollection = BaseCollection;
356
+ });
424
357
 
358
+ // Make matchesURL available as a static method
425
359
  BaseCollection.matchesURL = function (url) {
426
360
  return this.prototype.matchesURL(url);
427
361
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/collections/base.js"],"names":["pageLimit","BaseCollection","Collection","extend","modelName","model","BaseModel","fetchEmpty","urlMatchKeys","defaultFetchData","per_page","constructor","data","opts","options","_","defaults","newData","toJSON","_data","_options","queryData","url","_url","length","registerStates","prototype","call","add","values","args","arguments","apply","_prepareModel","attrs","omit","Model","registeredStates","Error","urlRoot","getResourceURL","matchesURL","_matchesURL","getFullURLPath","path","Object","keys","query","queryIndex","indexOf","slice","qs","parse","stringify","arrayFormat","resp","re","matches","match","replacement","get","replace","isNew","log","error","Api","getURL","sync","fetchModels","Promise","all","models","map","fetch","fetchSet","idSet","id","warn","resolve","otherOpts","tap","reset","results","cloneDeep","response","fetchAll","checkPages","notLastPage","total_pages","page","belowPageLimit","fetchPage","then","toServer","serialize","out","collection","isObject","save","batch","patch","delete","Array","isArray","attr"],"mappings":"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","sourcesContent":["import { Api } from \"../api.js\";\nimport { BaseModel } from \"../models/base.js\";\nimport Collection from \"ampersand-rest-collection\";\nimport Promise from \"bluebird\";\nimport _ from \"lodash\";\nimport log from \"../log.js\";\nimport qs from \"qs\";\nimport { registeredStates } from \"../state-register.js\";\nimport { sync } from \"../sync.js\";\n\n// Current hardcoded limit for maximum number of pages fetched\n// automatically by fetchAll\nconst pageLimit = 20;\n\n/**\n * @constructor\n * @alias collections.BaseCollection\n */\nexport const BaseCollection = Collection.extend(\n\t/** @lends collections.BaseCollection# */ {\n\t\tmodelName: null,\n\t\tmodel: BaseModel,\n\t\tfetchEmpty: false,\n\n\t\t// Object of regexes that should be used to match a url in `matchesURL`\n\t\t// For example the URL: /api/foo/{pk}/bar/ might have the following:\n\t\t//\n\t\t// Example:\n\t\t//\n\t\t// ```\n\t\t// {\n\t\t// pk: \"number\"\n\t\t// }\n\t\t// ```\n\t\turlMatchKeys: {},\n\n\t\tdefaultFetchData: {\n\t\t\tper_page: 1000,\n\t\t},\n\n\t\tconstructor(data = {}, opts = {}) {\n\t\t\tconst options = _.defaults(opts, {\n\t\t\t\tdata: {},\n\t\t\t});\n\n\t\t\t// We ensure that we pass an array because we don't want the collection constructor to\n\t\t\t// create an empty model using a data object\n\t\t\tlet newData = [];\n\n\t\t\t// Allow passing in collections\n\t\t\tif (data instanceof Collection) {\n\t\t\t\tdata = data.toJSON();\n\t\t\t}\n\n\t\t\tthis._data = data;\n\t\t\tthis._options = options;\n\n\t\t\t// Remove reference to the prototype, or this can accidentally\n\t\t\t// apply to all collections\n\t\t\tthis.queryData = _.extend({}, this.defaultFetchData, options.data);\n\n\t\t\t// Check for specialized url returns from the server. This is for when the\n\t\t\t// server responds with an array of urls rather than object data.\n\t\t\tif (data && data.url) {\n\t\t\t\tthis._url = data.url;\n\t\t\t} else if (data && data.length) {\n\t\t\t\tnewData = data;\n\t\t\t}\n\n\t\t\tthis.registerStates();\n\n\t\t\tCollection.prototype.constructor.call(this, newData, opts);\n\n\t\t\t// Get the name for the collection based on the model\n\t\t\tif (!this.modelName && typeof this.model === \"function\") {\n\t\t\t\tthis.modelName = this.model.prototype.modelName;\n\t\t\t}\n\t\t},\n\n\t\tadd(values) {\n\t\t\tconst args = [...arguments];\n\n\t\t\tif (values && values instanceof Collection) {\n\t\t\t\targs[0] = values.toJSON();\n\t\t\t}\n\n\t\t\treturn Collection.prototype.add.apply(this, args);\n\t\t},\n\n\t\t_prepareModel(attrs, options) {\n\t\t\tconst opts = _.omit(options, [\"data\"]);\n\t\t\treturn Collection.prototype._prepareModel.call(this, attrs, opts);\n\t\t},\n\n\t\tregisterStates() {\n\t\t\tif (typeof this.model === \"string\") {\n\t\t\t\tconst Model = registeredStates[this.model];\n\t\t\t\tif (!Model) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`'${this.model}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.model = Model;\n\t\t\t}\n\t\t},\n\n\t\turlRoot() {\n\t\t\treturn this.getResourceURL();\n\t\t},\n\n\t\tmatchesURL(url) {\n\t\t\treturn this.model.prototype._matchesURL(url, false);\n\t\t},\n\n\t\tgetFullURLPath(path) {\n\t\t\tlet url = path;\n\t\t\tif (Object.keys(this.queryData).length) {\n\t\t\t\tlet query = this.queryData;\n\t\t\t\tconst queryIndex = url.indexOf(\"?\");\n\t\t\t\tif (queryIndex > -1) {\n\t\t\t\t\turl = url.slice(0, queryIndex);\n\t\t\t\t\tquery = _.extend(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs.parse(url.slice(queryIndex + 1)),\n\t\t\t\t\t\tthis.queryData\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (url.slice(-1) !== \"/\") {\n\t\t\t\t\turl += \"/\";\n\t\t\t\t}\n\t\t\t\turl += `?${qs.stringify(query, { arrayFormat: \"repeat\" })}`;\n\t\t\t}\n\t\t\treturn url;\n\t\t},\n\n\t\turl() {\n\t\t\tif (this._url) {\n\t\t\t\treturn this.getFullURLPath(this._url);\n\t\t\t}\n\t\t\tlet resp = this.urlRoot();\n\t\t\tif (resp.slice(-1) !== \"/\" && resp.indexOf(\"?\") === -1) {\n\t\t\t\tresp += \"/\";\n\t\t\t}\n\n\t\t\t// Replace any values in a url with one from the collection's options.\n\t\t\t// So if you have /path/to/{model.id}/models/\n\t\t\t// It will check the collection options for \"model.id\" and replace\n\t\t\t// it in the url\n\t\t\tconst re = /(\\{(?:\\w+\\.?)+\\})/g;\n\t\t\tconst matches = resp.match(re) || [];\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst path = match.slice(1, -1);\n\t\t\t\tconst replacement = _.get(this._options, path);\n\t\t\t\tif (replacement) {\n\t\t\t\t\tresp = resp.replace(match, replacement);\n\t\t\t\t} else if (!this.isNew()) {\n\t\t\t\t\tlog.error(\n\t\t\t\t\t\t`Collection ${this.modelName} is missing value ${path} as an option`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresp = resp.replace(match, replacement);\n\t\t\t}\n\n\t\t\treturn this.getFullURLPath(resp);\n\t\t},\n\n\t\tgetResourceURL() {\n\t\t\t// If no name is present, assume we want the root API.\n\t\t\tif (this.modelName === null) {\n\t\t\t\treturn Api.getURL();\n\t\t\t}\n\t\t\treturn Api.getResourceURL(this.modelName);\n\t\t},\n\n\t\tsync() {\n\t\t\t// Use our own sync instead of the default ampersand one\n\t\t\treturn sync.apply(this, arguments);\n\t\t},\n\n\t\tfetchModels(options = {}) {\n\t\t\treturn Promise.all(this.models.map((model) => model.fetch(options)));\n\t\t},\n\n\t\tfetchSet(opts = {}) {\n\t\t\tconst idSet = this.models.map((model) => model.id);\n\n\t\t\tif (!idSet.length) {\n\t\t\t\tlog.warn(`Tried to fetch ${this.modelName} set with no models`);\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\n\t\t\tconst { data, ...otherOpts } = opts;\n\n\t\t\tconst options = {\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\tid: idSet,\n\t\t\t\t},\n\t\t\t\t...otherOpts,\n\t\t\t};\n\n\t\t\t// Necessary because these models were already initialised before the fetch,\n\t\t\t// and the children weren't updated correctly with the new data.\n\t\t\treturn this.fetch(options).tap((data) => {\n\t\t\t\tthis.reset();\n\t\t\t\tthis.add(data.results);\n\t\t\t});\n\t\t},\n\n\t\tfetch(opts = {}) {\n\t\t\tconst options = _.cloneDeep(opts);\n\n\t\t\t// Add default params to the fetch (ie ?per_page=1000)\n\t\t\toptions.data = _.extend({}, this.queryData, options.data || {});\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.queryData = { ...options.data };\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\treturn Collection.prototype.fetch.call(this, options).tap((response) => {\n\t\t\t\tthis._data = response;\n\t\t\t});\n\t\t},\n\n\t\tfetchAll(opts = {}) {\n\t\t\tconst options = _.cloneDeep(opts);\n\n\t\t\t// Add default params to the fetch (ie ?per_page=1000)\n\t\t\toptions.data = _.extend({}, this.queryData, options.data || {});\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.queryData = { ...this._options.data };\n\n\t\t\tif (this._options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\tconst checkPages = (response) => {\n\t\t\t\tconst notLastPage = response.total_pages > response.page;\n\t\t\t\tconst belowPageLimit = response.page < pageLimit;\n\n\t\t\t\tif (notLastPage && belowPageLimit) {\n\t\t\t\t\tconst options = {\n\t\t\t\t\t\t...this._options,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t...this._options.data,\n\t\t\t\t\t\t\tpage: response.page + 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\t// Update the collection with the new data & page number\n\t\t\t\t\tthis._options = options;\n\t\t\t\t\tthis.queryData = { ...options.data };\n\n\t\t\t\t\treturn this.fetchPage().then((response) => {\n\t\t\t\t\t\tcheckPages(response);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// The collection's models are replaced with the latest\n\t\t\t\t\t// batch of models every time a new page is fetched.\n\t\t\t\t\t// Here we add back all of the previously-fetched models.\n\t\t\t\t\tthis.add(this._data.results);\n\t\t\t\t\treturn this._data;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn this.fetchPage().then((response) => {\n\t\t\t\treturn checkPages(response);\n\t\t\t});\n\t\t},\n\n\t\tfetchPage() {\n\t\t\treturn Collection.prototype.fetch\n\t\t\t\t.call(this, this._options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// Add the response data to this._data - if we're fetching\n\t\t\t\t\t// multiple pages, this._data.results will contain all of the\n\t\t\t\t\t// results fetched from all pages so far\n\t\t\t\t\tif (this._data.results?.length) {\n\t\t\t\t\t\tthis._data = {\n\t\t\t\t\t\t\t...response,\n\t\t\t\t\t\t\tresults: [...this._data.results, ...response.results],\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._data = response;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response;\n\t\t\t\t});\n\t\t},\n\n\t\ttoServer() {\n\t\t\treturn this.map(function (model) {\n\t\t\t\tif (model.toServer) {\n\t\t\t\t\treturn model.toServer();\n\t\t\t\t} else if (model.serialize) {\n\t\t\t\t\treturn model.serialize();\n\t\t\t\t}\n\n\t\t\t\tconst out = {};\n\t\t\t\t_.extend(out, model);\n\t\t\t\tdelete out.collection;\n\t\t\t\treturn out;\n\t\t\t});\n\t\t},\n\n\t\tisNew() {\n\t\t\treturn true;\n\t\t},\n\n\t\tserialize() {\n\t\t\tconst collection = Collection.prototype.serialize.call(this);\n\n\t\t\tif (_.isObject(this._data) && this._data.url && !collection.length) {\n\t\t\t\treturn this._data.url;\n\t\t\t}\n\n\t\t\treturn collection;\n\t\t},\n\n\t\tsave(options = {}) {\n\t\t\tconst { batch, patch } = options;\n\n\t\t\tif (batch || !this.length) {\n\t\t\t\tif (patch) {\n\t\t\t\t\treturn this.sync(\"patch\", this, options);\n\t\t\t\t}\n\t\t\t\treturn this.sync(\"create\", this, options);\n\t\t\t}\n\n\t\t\treturn Promise.all(\n\t\t\t\tthis.map((model) => {\n\t\t\t\t\treturn model.save(model.toServer(), options);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\tdelete(options = {}) {\n\t\t\tconst { batch } = options;\n\n\t\t\tif (batch) {\n\t\t\t\treturn this.sync(\"delete\", this, options);\n\t\t\t}\n\n\t\t\treturn Promise.all(\n\t\t\t\tthis.map((model) => {\n\t\t\t\t\treturn model.delete(model.toServer(), options);\n\t\t\t\t})\n\t\t\t);\n\t\t},\n\n\t\tparse(attrs) {\n\t\t\tconst results = attrs.results || attrs;\n\n\t\t\tif (\n\t\t\t\tArray.isArray(results) &&\n\t\t\t\tresults.length &&\n\t\t\t\ttypeof results[0] === \"string\"\n\t\t\t) {\n\t\t\t\t// Convert any url responses from the server into an object that\n\t\t\t\t// can be passed to the model.\n\t\t\t\t//\n\t\t\t\t// TODO: Regex match for URLs\n\t\t\t\treturn results.map(function (attr) {\n\t\t\t\t\treturn { url: attr };\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn results;\n\t\t},\n\t}\n);\n\n// Make matchesURL available as a static method\nBaseCollection.matchesURL = function (url) {\n\treturn this.prototype.matchesURL(url);\n};\n"],"file":"base.js"}
1
+ {"version":3,"file":"base.js","names":["_api","require","_base","_ampersandRestCollection","_interopRequireDefault","_bluebird","_lodash","_log","_qs","_stateRegister","_sync2","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","i","F","s","n","done","value","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","pageLimit","BaseCollection","exports","Collection","extend","modelName","model","BaseModel","fetchEmpty","urlMatchKeys","defaultFetchData","per_page","_data","undefined","opts","data","options","_","defaults","newData","toJSON","_options","queryData","url","_url","registerStates","add","values","args","_prepareModel","attrs","omit","Model","registeredStates","Error","concat","urlRoot","getResourceURL","matchesURL","_matchesURL","getFullURLPath","path","query","queryIndex","indexOf","qs","parse","stringify","arrayFormat","resp","includes","re","matches","match","_iterator","_step","replacement","get","replace","isNew","log","error","Api","getURL","sync","fetchModels","Promise","all","models","map","fetch","fetchSet","_this","idSet","id","warn","resolve","otherOpts","_objectWithoutProperties2","tap","reset","results","_this2","cloneDeep","response","fetchAll","_this3","checkPages","notLastPage","total_pages","page","belowPageLimit","fetchPage","then","_this4","_this4$_data$results","_toConsumableArray2","toServer","serialize","out","collection","areModelsFetched","isFetched","every","Boolean","isObject","save","batch","patch","delete","_delete","attr"],"sources":["../../src/collections/base.js"],"sourcesContent":["import { Api } from \"../api.js\";\nimport { BaseModel } from \"../models/base.js\";\nimport Collection from \"ampersand-rest-collection\";\nimport Promise from \"bluebird\";\nimport _ from \"lodash\";\nimport log from \"../log.js\";\nimport qs from \"qs\";\nimport { registeredStates } from \"../state-register.js\";\nimport { sync } from \"../sync.js\";\n\n// Current hardcoded limit for maximum number of pages fetched\n// automatically by fetchAll\nconst pageLimit = 20;\n\n/**\n * @constructor\n * @alias collections.BaseCollection\n */\nexport const BaseCollection = Collection.extend(\n\t/** @lends collections.BaseCollection# */ {\n\t\tmodelName: null,\n\t\tmodel: BaseModel,\n\t\tfetchEmpty: false,\n\n\t\t// Object of regexes that should be used to match a url in `matchesURL`\n\t\t// For example the URL: /api/foo/{pk}/bar/ might have the following:\n\t\t//\n\t\t// Example:\n\t\t//\n\t\t// ```\n\t\t// {\n\t\t// pk: \"number\"\n\t\t// }\n\t\t// ```\n\t\turlMatchKeys: {},\n\n\t\tdefaultFetchData: {\n\t\t\tper_page: 1000,\n\t\t},\n\n\t\tconstructor(_data = {}, opts = {}) {\n\t\t\tlet data = _data;\n\t\t\tconst options = _.defaults(opts, {\n\t\t\t\tdata: {},\n\t\t\t});\n\n\t\t\t// We ensure that we pass an array because we don't want the collection constructor to\n\t\t\t// create an empty model using a data object\n\t\t\tlet newData = [];\n\n\t\t\t// Allow passing in collections\n\t\t\tif (data instanceof Collection) {\n\t\t\t\tdata = data.toJSON();\n\t\t\t}\n\n\t\t\tthis._data = data;\n\t\t\tthis._options = options;\n\n\t\t\t// Remove reference to the prototype, or this can accidentally\n\t\t\t// apply to all collections\n\t\t\tthis.queryData = _.extend({}, this.defaultFetchData, options.data);\n\n\t\t\t// Check for specialized url returns from the server. This is for when the\n\t\t\t// server responds with an array of urls rather than object data.\n\t\t\tif (data && data.url) {\n\t\t\t\tthis._url = data.url;\n\t\t\t} else if (data && data.length) {\n\t\t\t\tnewData = data;\n\t\t\t}\n\n\t\t\tthis.registerStates();\n\n\t\t\tCollection.prototype.constructor.call(this, newData, opts);\n\n\t\t\t// Get the name for the collection based on the model\n\t\t\tif (!this.modelName && typeof this.model === \"function\") {\n\t\t\t\tthis.modelName = this.model.prototype.modelName;\n\t\t\t}\n\t\t},\n\n\t\tadd(values) {\n\t\t\tconst args = [...arguments];\n\n\t\t\tif (values && values instanceof Collection) {\n\t\t\t\targs[0] = values.toJSON();\n\t\t\t}\n\n\t\t\treturn Collection.prototype.add.apply(this, args);\n\t\t},\n\n\t\t_prepareModel(attrs, options) {\n\t\t\tconst opts = _.omit(options, [\"data\"]);\n\t\t\treturn Collection.prototype._prepareModel.call(this, attrs, opts);\n\t\t},\n\n\t\tregisterStates() {\n\t\t\tif (typeof this.model === \"string\") {\n\t\t\t\tconst Model = registeredStates[this.model];\n\t\t\t\tif (!Model) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`'${this.model}' not found! Did you forget to import it on the '${this.modelName}' model?`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.model = Model;\n\t\t\t}\n\t\t},\n\n\t\turlRoot() {\n\t\t\treturn this.getResourceURL();\n\t\t},\n\n\t\tmatchesURL(url) {\n\t\t\treturn this.model.prototype._matchesURL(url, false);\n\t\t},\n\n\t\tgetFullURLPath(path) {\n\t\t\tlet url = path;\n\t\t\tif (Object.keys(this.queryData).length) {\n\t\t\t\tlet query = this.queryData;\n\t\t\t\tconst queryIndex = url.indexOf(\"?\");\n\t\t\t\tif (queryIndex > -1) {\n\t\t\t\t\turl = url.slice(0, queryIndex);\n\t\t\t\t\tquery = _.extend(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tqs.parse(url.slice(queryIndex + 1)),\n\t\t\t\t\t\tthis.queryData,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (url.slice(-1) !== \"/\") {\n\t\t\t\t\turl += \"/\";\n\t\t\t\t}\n\t\t\t\turl += `?${qs.stringify(query, { arrayFormat: \"repeat\" })}`;\n\t\t\t}\n\t\t\treturn url;\n\t\t},\n\n\t\turl() {\n\t\t\tif (this._url) {\n\t\t\t\treturn this.getFullURLPath(this._url);\n\t\t\t}\n\t\t\tlet resp = this.urlRoot();\n\t\t\tif (resp.slice(-1) !== \"/\" && resp.indexOf(\"?\") === -1) {\n\t\t\t\tresp += \"/\";\n\t\t\t}\n\n\t\t\tif (!resp.includes(\"{\") || !resp.includes(\"}\")) {\n\t\t\t\treturn this.getFullURLPath(resp);\n\t\t\t}\n\n\t\t\t// Replace any values in a url with one from the collection's options.\n\t\t\t// So if you have /path/to/{model.id}/models/\n\t\t\t// It will check the collection options for \"model.id\" and replace\n\t\t\t// it in the url\n\t\t\tconst re = /(\\{(?:\\w+\\.?)+\\})/g;\n\t\t\tconst matches = resp.match(re) || [];\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst path = match.slice(1, -1);\n\t\t\t\tconst replacement = _.get(this._options, path);\n\t\t\t\tif (replacement) {\n\t\t\t\t\tresp = resp.replace(match, replacement);\n\t\t\t\t} else if (!this.isNew()) {\n\t\t\t\t\tlog.error(\n\t\t\t\t\t\t`Collection ${this.modelName} is missing value ${path} as an option`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresp = resp.replace(match, replacement);\n\t\t\t}\n\n\t\t\treturn this.getFullURLPath(resp);\n\t\t},\n\n\t\tgetResourceURL() {\n\t\t\t// If no name is present, assume we want the root API.\n\t\t\tif (this.modelName === null) {\n\t\t\t\treturn Api.getURL();\n\t\t\t}\n\t\t\treturn Api.getResourceURL(this.modelName);\n\t\t},\n\n\t\tsync() {\n\t\t\t// Use our own sync instead of the default ampersand one\n\t\t\treturn sync.apply(this, arguments);\n\t\t},\n\n\t\tfetchModels(options = {}) {\n\t\t\treturn Promise.all(this.models.map((model) => model.fetch(options)));\n\t\t},\n\n\t\tfetchSet(opts = {}) {\n\t\t\tconst idSet = this.models.map((model) => model.id);\n\n\t\t\tif (!idSet.length) {\n\t\t\t\tlog.warn(`Tried to fetch ${this.modelName} set with no models`);\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\n\t\t\tconst { data, ...otherOpts } = opts;\n\n\t\t\tconst options = {\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\tid: idSet,\n\t\t\t\t},\n\t\t\t\t...otherOpts,\n\t\t\t};\n\n\t\t\t// Necessary because these models were already initialised before the fetch,\n\t\t\t// and the children weren't updated correctly with the new data.\n\t\t\treturn this.fetch(options).tap((data) => {\n\t\t\t\tthis.reset();\n\t\t\t\tthis.add(data.results);\n\t\t\t});\n\t\t},\n\n\t\tfetch(opts = {}) {\n\t\t\tconst options = _.cloneDeep(opts);\n\n\t\t\t// Add default params to the fetch (ie ?per_page=1000)\n\t\t\toptions.data = _.extend({}, this.queryData, options.data || {});\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.queryData = { ...options.data };\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\treturn Collection.prototype.fetch.call(this, options).tap((response) => {\n\t\t\t\tthis._data = response;\n\t\t\t});\n\t\t},\n\n\t\tfetchAll(opts = {}) {\n\t\t\tconst options = _.cloneDeep(opts);\n\n\t\t\t// Add default params to the fetch (ie ?per_page=1000)\n\t\t\toptions.data = _.extend({}, this.queryData, options.data || {});\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.queryData = { ...this._options.data };\n\n\t\t\tif (this._options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\tconst checkPages = (response) => {\n\t\t\t\tconst notLastPage = response.total_pages > response.page;\n\t\t\t\tconst belowPageLimit = response.page < pageLimit;\n\n\t\t\t\tif (notLastPage && belowPageLimit) {\n\t\t\t\t\tconst options = {\n\t\t\t\t\t\t...this._options,\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t...this._options.data,\n\t\t\t\t\t\t\tpage: response.page + 1,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\n\t\t\t\t\t// Update the collection with the new data & page number\n\t\t\t\t\tthis._options = options;\n\t\t\t\t\tthis.queryData = { ...options.data };\n\n\t\t\t\t\treturn this.fetchPage().then((response) => {\n\t\t\t\t\t\treturn checkPages(response);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// The collection's models are replaced with the latest\n\t\t\t\t\t// batch of models every time a new page is fetched.\n\t\t\t\t\t// Here we add back all of the previously-fetched models.\n\t\t\t\t\tthis.add(this._data.results);\n\t\t\t\t\treturn this._data;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn this.fetchPage().then((response) => {\n\t\t\t\treturn checkPages(response);\n\t\t\t});\n\t\t},\n\n\t\tfetchPage() {\n\t\t\treturn Collection.prototype.fetch\n\t\t\t\t.call(this, this._options)\n\t\t\t\t.then((response) => {\n\t\t\t\t\t// Add the response data to this._data - if we're fetching\n\t\t\t\t\t// multiple pages, this._data.results will contain all of the\n\t\t\t\t\t// results fetched from all pages so far\n\t\t\t\t\tif (this._data.results?.length) {\n\t\t\t\t\t\tthis._data = {\n\t\t\t\t\t\t\t...response,\n\t\t\t\t\t\t\tresults: [...this._data.results, ...response.results],\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._data = response;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response;\n\t\t\t\t});\n\t\t},\n\n\t\ttoServer() {\n\t\t\treturn this.map((model) => {\n\t\t\t\tif (model.toServer) {\n\t\t\t\t\treturn model.toServer();\n\t\t\t\t} else if (model.serialize) {\n\t\t\t\t\treturn model.serialize();\n\t\t\t\t}\n\n\t\t\t\tconst out = {};\n\t\t\t\t_.extend(out, model);\n\t\t\t\tdelete out.collection;\n\t\t\t\treturn out;\n\t\t\t});\n\t\t},\n\n\t\t// Returns \"true\" if all child models have been fetched\n\t\tareModelsFetched() {\n\t\t\treturn this.map((model) => model.isFetched()).every(Boolean);\n\t\t},\n\n\t\tisNew() {\n\t\t\treturn true;\n\t\t},\n\n\t\tserialize() {\n\t\t\tconst collection = Collection.prototype.serialize.call(this);\n\n\t\t\tif (_.isObject(this._data) && this._data.url && !collection.length) {\n\t\t\t\treturn this._data.url;\n\t\t\t}\n\n\t\t\treturn collection;\n\t\t},\n\n\t\tsave(options = {}) {\n\t\t\tconst { batch, patch } = options;\n\n\t\t\tif (batch || !this.length) {\n\t\t\t\tif (patch) {\n\t\t\t\t\treturn this.sync(\"patch\", this, options);\n\t\t\t\t}\n\t\t\t\treturn this.sync(\"create\", this, options);\n\t\t\t}\n\n\t\t\treturn Promise.all(\n\t\t\t\tthis.map((model) => {\n\t\t\t\t\treturn model.save(model.toServer(), options);\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\n\t\tdelete(options = {}) {\n\t\t\tconst { batch } = options;\n\n\t\t\tif (batch) {\n\t\t\t\treturn this.sync(\"delete\", this, options);\n\t\t\t}\n\n\t\t\treturn Promise.all(\n\t\t\t\tthis.map((model) => {\n\t\t\t\t\treturn model.delete(model.toServer(), options);\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\n\t\tparse(attrs) {\n\t\t\tconst results = attrs.results || attrs;\n\n\t\t\tif (\n\t\t\t\tArray.isArray(results) &&\n\t\t\t\tresults.length &&\n\t\t\t\ttypeof results[0] === \"string\"\n\t\t\t) {\n\t\t\t\t// Convert any url responses from the server into an object that\n\t\t\t\t// can be passed to the model.\n\t\t\t\t//\n\t\t\t\t// TODO: Regex match for URLs\n\t\t\t\treturn results.map((attr) => {\n\t\t\t\t\treturn { url: attr };\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn results;\n\t\t},\n\t},\n);\n\n// Make matchesURL available as a static method\nBaseCollection.matchesURL = function (url) {\n\treturn this.prototype.matchesURL(url);\n};\n"],"mappings":"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"}