@livepreso/api 6.45.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 (478) hide show
  1. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  2. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  3. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  4. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  5. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  6. package/.rush/temp/operation/test/all.log +19 -0
  7. package/.rush/temp/operation/test/state.json +3 -0
  8. package/.rush/temp/shrinkwrap-deps.json +563 -546
  9. package/CHANGELOG.json +12 -0
  10. package/CHANGELOG.md +8 -1
  11. package/README.md +4 -4
  12. package/api.build.log +2 -4
  13. package/api.test.cache.log +1 -0
  14. package/api.test.log +19 -0
  15. package/cjs/api.js +18 -17
  16. package/cjs/api.js.map +1 -1
  17. package/cjs/api.spec.js +0 -4
  18. package/cjs/api.spec.js.map +1 -1
  19. package/cjs/auth.js +5 -32
  20. package/cjs/auth.js.map +1 -1
  21. package/cjs/auth.spec.js +52 -77
  22. package/cjs/auth.spec.js.map +1 -1
  23. package/cjs/caching.js +2 -7
  24. package/cjs/caching.js.map +1 -1
  25. package/cjs/collections/activity.js +16 -56
  26. package/cjs/collections/activity.js.map +1 -1
  27. package/cjs/collections/adjunct-sections.js +1 -10
  28. package/cjs/collections/adjunct-sections.js.map +1 -1
  29. package/cjs/collections/adjunct-slides.js +1 -10
  30. package/cjs/collections/adjunct-slides.js.map +1 -1
  31. package/cjs/collections/adjunct-sub-slides.js +1 -9
  32. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  33. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  34. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  35. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  36. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  37. package/cjs/collections/appointment-duplicates.js +1 -9
  38. package/cjs/collections/appointment-duplicates.js.map +1 -1
  39. package/cjs/collections/appointment-editors.js +1 -10
  40. package/cjs/collections/appointment-editors.js.map +1 -1
  41. package/cjs/collections/appointment-section-tags.js +1 -9
  42. package/cjs/collections/appointment-section-tags.js.map +1 -1
  43. package/cjs/collections/appointment-slide-tags.js +1 -9
  44. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  45. package/cjs/collections/appointment-tags.js +66 -103
  46. package/cjs/collections/appointment-tags.js.map +1 -1
  47. package/cjs/collections/appointment-templates.js +27 -0
  48. package/cjs/collections/appointment-templates.js.map +1 -0
  49. package/cjs/collections/appointments.js +9 -29
  50. package/cjs/collections/appointments.js.map +1 -1
  51. package/cjs/collections/assets.js +1 -9
  52. package/cjs/collections/assets.js.map +1 -1
  53. package/cjs/collections/auto-adjuncts.js +6 -21
  54. package/cjs/collections/auto-adjuncts.js.map +1 -1
  55. package/cjs/collections/base.js +37 -111
  56. package/cjs/collections/base.js.map +1 -1
  57. package/cjs/collections/base.spec.js +186 -233
  58. package/cjs/collections/base.spec.js.map +1 -1
  59. package/cjs/collections/cms-vals.js +9 -16
  60. package/cjs/collections/cms-vals.js.map +1 -1
  61. package/cjs/collections/contact-phones.js +20 -0
  62. package/cjs/collections/contact-phones.js.map +1 -0
  63. package/cjs/collections/contacts.js +1 -9
  64. package/cjs/collections/contacts.js.map +1 -1
  65. package/cjs/collections/created-assets.js +1 -10
  66. package/cjs/collections/created-assets.js.map +1 -1
  67. package/cjs/collections/customers.js +1 -9
  68. package/cjs/collections/customers.js.map +1 -1
  69. package/cjs/collections/deck-notes.js +1 -10
  70. package/cjs/collections/deck-notes.js.map +1 -1
  71. package/cjs/collections/deck-version-screenshots.js +4 -17
  72. package/cjs/collections/deck-version-screenshots.js.map +1 -1
  73. package/cjs/collections/deck-versions.js +5 -20
  74. package/cjs/collections/deck-versions.js.map +1 -1
  75. package/cjs/collections/decks.js +1 -9
  76. package/cjs/collections/decks.js.map +1 -1
  77. package/cjs/collections/deleted-assets.js +1 -10
  78. package/cjs/collections/deleted-assets.js.map +1 -1
  79. package/cjs/collections/dispatches.js +1 -13
  80. package/cjs/collections/dispatches.js.map +1 -1
  81. package/cjs/collections/event-objects.js +1 -9
  82. package/cjs/collections/event-objects.js.map +1 -1
  83. package/cjs/collections/events.js +1 -9
  84. package/cjs/collections/events.js.map +1 -1
  85. package/cjs/collections/groups.js +1 -9
  86. package/cjs/collections/groups.js.map +1 -1
  87. package/cjs/collections/images.js +1 -9
  88. package/cjs/collections/images.js.map +1 -1
  89. package/cjs/collections/locations.js +1 -9
  90. package/cjs/collections/locations.js.map +1 -1
  91. package/cjs/collections/opportunities.js +1 -9
  92. package/cjs/collections/opportunities.js.map +1 -1
  93. package/cjs/collections/pack-diffs.js +1 -9
  94. package/cjs/collections/pack-diffs.js.map +1 -1
  95. package/cjs/collections/packs.js +1 -9
  96. package/cjs/collections/packs.js.map +1 -1
  97. package/cjs/collections/presets.js +1 -9
  98. package/cjs/collections/presets.js.map +1 -1
  99. package/cjs/collections/section-selections.js +1 -9
  100. package/cjs/collections/section-selections.js.map +1 -1
  101. package/cjs/collections/sections.js +1 -9
  102. package/cjs/collections/sections.js.map +1 -1
  103. package/cjs/collections/slide-selections.js +1 -9
  104. package/cjs/collections/slide-selections.js.map +1 -1
  105. package/cjs/collections/slides.js +1 -9
  106. package/cjs/collections/slides.js.map +1 -1
  107. package/cjs/collections/snapshots.js +1 -9
  108. package/cjs/collections/snapshots.js.map +1 -1
  109. package/cjs/collections/sub-slides.js +1 -9
  110. package/cjs/collections/sub-slides.js.map +1 -1
  111. package/cjs/collections/tags.js +1 -9
  112. package/cjs/collections/tags.js.map +1 -1
  113. package/cjs/collections/teams.js +1 -9
  114. package/cjs/collections/teams.js.map +1 -1
  115. package/cjs/collections/templates.js +1 -9
  116. package/cjs/collections/templates.js.map +1 -1
  117. package/cjs/collections/uploads.js +1 -9
  118. package/cjs/collections/uploads.js.map +1 -1
  119. package/cjs/collections/users.js +1 -9
  120. package/cjs/collections/users.js.map +1 -1
  121. package/cjs/collections.js +22 -88
  122. package/cjs/collections.js.map +1 -1
  123. package/cjs/fixtures.js +187 -0
  124. package/cjs/fixtures.js.map +1 -0
  125. package/cjs/index.js +0 -10
  126. package/cjs/index.js.map +1 -1
  127. package/cjs/log.js +0 -1
  128. package/cjs/log.js.map +1 -1
  129. package/cjs/middleware.js +2 -7
  130. package/cjs/middleware.js.map +1 -1
  131. package/cjs/middlewares/auth.js +1 -17
  132. package/cjs/middlewares/auth.js.map +1 -1
  133. package/cjs/middlewares/base.js +3 -9
  134. package/cjs/middlewares/base.js.map +1 -1
  135. package/cjs/middlewares/json.js +1 -19
  136. package/cjs/middlewares/json.js.map +1 -1
  137. package/cjs/middlewares/redirect.js +5 -21
  138. package/cjs/middlewares/redirect.js.map +1 -1
  139. package/cjs/models/activity-item.js +3 -19
  140. package/cjs/models/activity-item.js.map +1 -1
  141. package/cjs/models/adjunct-section.js +8 -21
  142. package/cjs/models/adjunct-section.js.map +1 -1
  143. package/cjs/models/adjunct-slide.js +8 -21
  144. package/cjs/models/adjunct-slide.js.map +1 -1
  145. package/cjs/models/adjunct-sub-slide.js +1 -16
  146. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  147. package/cjs/models/adjunct.js +34 -10
  148. package/cjs/models/adjunct.js.map +1 -1
  149. package/cjs/models/api.js +1 -6
  150. package/cjs/models/api.js.map +1 -1
  151. package/cjs/models/appointment-adjunct-tags.js +1 -13
  152. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  153. package/cjs/models/appointment-deckversion-tags.js +1 -13
  154. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  155. package/cjs/models/appointment-duplicate.js +3 -25
  156. package/cjs/models/appointment-duplicate.js.map +1 -1
  157. package/cjs/models/appointment-editor.js +1 -14
  158. package/cjs/models/appointment-editor.js.map +1 -1
  159. package/cjs/models/appointment-section-tags.js +1 -13
  160. package/cjs/models/appointment-section-tags.js.map +1 -1
  161. package/cjs/models/appointment-slide-tags.js +1 -13
  162. package/cjs/models/appointment-slide-tags.js.map +1 -1
  163. package/cjs/models/appointment-stats.js +1 -11
  164. package/cjs/models/appointment-stats.js.map +1 -1
  165. package/cjs/models/appointment-tags.js +1 -10
  166. package/cjs/models/appointment-tags.js.map +1 -1
  167. package/cjs/models/appointment-template.js +23 -0
  168. package/cjs/models/appointment-template.js.map +1 -0
  169. package/cjs/models/appointment-viewing.js +1 -8
  170. package/cjs/models/appointment-viewing.js.map +1 -1
  171. package/cjs/models/appointment.js +85 -70
  172. package/cjs/models/appointment.js.map +1 -1
  173. package/cjs/models/asset.js +12 -11
  174. package/cjs/models/asset.js.map +1 -1
  175. package/cjs/models/auto-adjunct-key-check.js +1 -15
  176. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  177. package/cjs/models/auto-adjunct.js +3 -14
  178. package/cjs/models/auto-adjunct.js.map +1 -1
  179. package/cjs/models/base.js +74 -176
  180. package/cjs/models/base.js.map +1 -1
  181. package/cjs/models/base.spec.js +0 -31
  182. package/cjs/models/base.spec.js.map +1 -1
  183. package/cjs/models/choicelist.js +1 -8
  184. package/cjs/models/choicelist.js.map +1 -1
  185. package/cjs/models/cms-val.js +28 -15
  186. package/cjs/models/cms-val.js.map +1 -1
  187. package/cjs/models/cms-val.spec.js +25 -0
  188. package/cjs/models/cms-val.spec.js.map +1 -0
  189. package/cjs/models/contact-phone.js +54 -0
  190. package/cjs/models/contact-phone.js.map +1 -0
  191. package/cjs/models/contact.js +1 -18
  192. package/cjs/models/contact.js.map +1 -1
  193. package/cjs/models/customer.js +5 -30
  194. package/cjs/models/customer.js.map +1 -1
  195. package/cjs/models/deck-note.js +1 -9
  196. package/cjs/models/deck-note.js.map +1 -1
  197. package/cjs/models/deck-tags.js +1 -12
  198. package/cjs/models/deck-tags.js.map +1 -1
  199. package/cjs/models/deck-version-screenshot.js +1 -13
  200. package/cjs/models/deck-version-screenshot.js.map +1 -1
  201. package/cjs/models/deck-version.js +28 -44
  202. package/cjs/models/deck-version.js.map +1 -1
  203. package/cjs/models/deck.js +1 -14
  204. package/cjs/models/deck.js.map +1 -1
  205. package/cjs/models/dispatch-preview.js +1 -13
  206. package/cjs/models/dispatch-preview.js.map +1 -1
  207. package/cjs/models/dispatch.js +1 -23
  208. package/cjs/models/dispatch.js.map +1 -1
  209. package/cjs/models/envs.js +1 -6
  210. package/cjs/models/envs.js.map +1 -1
  211. package/cjs/models/event-object.js +1 -11
  212. package/cjs/models/event-object.js.map +1 -1
  213. package/cjs/models/event.js +1 -13
  214. package/cjs/models/event.js.map +1 -1
  215. package/cjs/models/feed-data.js +1 -13
  216. package/cjs/models/feed-data.js.map +1 -1
  217. package/cjs/models/file.js +1 -11
  218. package/cjs/models/file.js.map +1 -1
  219. package/cjs/models/group.js +1 -11
  220. package/cjs/models/group.js.map +1 -1
  221. package/cjs/models/handover.js +1 -13
  222. package/cjs/models/handover.js.map +1 -1
  223. package/cjs/models/hosted-preso.js +1 -15
  224. package/cjs/models/hosted-preso.js.map +1 -1
  225. package/cjs/models/image.js +1 -16
  226. package/cjs/models/image.js.map +1 -1
  227. package/cjs/models/location.js +1 -13
  228. package/cjs/models/location.js.map +1 -1
  229. package/cjs/models/manifest-json.js +74 -73
  230. package/cjs/models/manifest-json.js.map +1 -1
  231. package/cjs/models/onshare.js +1 -14
  232. package/cjs/models/onshare.js.map +1 -1
  233. package/cjs/models/opportunity.js +1 -14
  234. package/cjs/models/opportunity.js.map +1 -1
  235. package/cjs/models/pack-diff.js +1 -14
  236. package/cjs/models/pack-diff.js.map +1 -1
  237. package/cjs/models/pack.js +1 -12
  238. package/cjs/models/pack.js.map +1 -1
  239. package/cjs/models/preset.js +4 -20
  240. package/cjs/models/preset.js.map +1 -1
  241. package/cjs/models/refresh-request.js +17 -11
  242. package/cjs/models/refresh-request.js.map +1 -1
  243. package/cjs/models/room.js +1 -9
  244. package/cjs/models/room.js.map +1 -1
  245. package/cjs/models/salesforce-lookup.js +1 -12
  246. package/cjs/models/salesforce-lookup.js.map +1 -1
  247. package/cjs/models/section-selection.js +1 -14
  248. package/cjs/models/section-selection.js.map +1 -1
  249. package/cjs/models/section.js +1 -14
  250. package/cjs/models/section.js.map +1 -1
  251. package/cjs/models/slide-selection.js +1 -14
  252. package/cjs/models/slide-selection.js.map +1 -1
  253. package/cjs/models/slide.js +1 -14
  254. package/cjs/models/slide.js.map +1 -1
  255. package/cjs/models/snapshot.js +13 -15
  256. package/cjs/models/snapshot.js.map +1 -1
  257. package/cjs/models/snapshot.spec.js +44 -0
  258. package/cjs/models/snapshot.spec.js.map +1 -0
  259. package/cjs/models/sub-slide.js +1 -12
  260. package/cjs/models/sub-slide.js.map +1 -1
  261. package/cjs/models/support-ticket.js +1 -11
  262. package/cjs/models/support-ticket.js.map +1 -1
  263. package/cjs/models/tag.js +1 -13
  264. package/cjs/models/tag.js.map +1 -1
  265. package/cjs/models/team.js +14 -13
  266. package/cjs/models/team.js.map +1 -1
  267. package/cjs/models/template.js +87 -15
  268. package/cjs/models/template.js.map +1 -1
  269. package/cjs/models/tenancy.js +4 -11
  270. package/cjs/models/tenancy.js.map +1 -1
  271. package/cjs/models/timing-log.js +21 -78
  272. package/cjs/models/timing-log.js.map +1 -1
  273. package/cjs/models/timing-log.spec.js +24 -37
  274. package/cjs/models/timing-log.spec.js.map +1 -1
  275. package/cjs/models/token.js +1 -11
  276. package/cjs/models/token.js.map +1 -1
  277. package/cjs/models/transcribe-socket.js +1 -8
  278. package/cjs/models/transcribe-socket.js.map +1 -1
  279. package/cjs/models/upload.js +1 -7
  280. package/cjs/models/upload.js.map +1 -1
  281. package/cjs/models/user.js +10 -28
  282. package/cjs/models/user.js.map +1 -1
  283. package/cjs/models/user.spec.js +20 -30
  284. package/cjs/models/user.spec.js.map +1 -1
  285. package/cjs/models.js +22 -132
  286. package/cjs/models.js.map +1 -1
  287. package/cjs/presentation/appointment-presentation.js +9 -35
  288. package/cjs/presentation/appointment-presentation.js.map +1 -1
  289. package/cjs/presentation/base-presentation-collection.js +1 -7
  290. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  291. package/cjs/presentation/base-presentation-model.js +40 -74
  292. package/cjs/presentation/base-presentation-model.js.map +1 -1
  293. package/cjs/presentation/base-presentation-model.spec.js +6 -27
  294. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  295. package/cjs/presentation/presentation-deck.js +46 -83
  296. package/cjs/presentation/presentation-deck.js.map +1 -1
  297. package/cjs/presentation/presentation-deck.spec.js +72 -95
  298. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  299. package/cjs/presentation/presentation-decks.js +1 -9
  300. package/cjs/presentation/presentation-decks.js.map +1 -1
  301. package/cjs/presentation/presentation-section.js +37 -77
  302. package/cjs/presentation/presentation-section.js.map +1 -1
  303. package/cjs/presentation/presentation-section.spec.js +211 -271
  304. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  305. package/cjs/presentation/presentation-sections.js +1 -9
  306. package/cjs/presentation/presentation-sections.js.map +1 -1
  307. package/cjs/presentation/presentation-slide.js +49 -76
  308. package/cjs/presentation/presentation-slide.js.map +1 -1
  309. package/cjs/presentation/presentation-slide.spec.js +145 -192
  310. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  311. package/cjs/presentation/presentation-slides.js +1 -9
  312. package/cjs/presentation/presentation-slides.js.map +1 -1
  313. package/cjs/presentation/presentation-subslide.js +3 -23
  314. package/cjs/presentation/presentation-subslide.js.map +1 -1
  315. package/cjs/presentation/presentation-subslide.spec.js +101 -125
  316. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  317. package/cjs/presentation/presentation-subslides.js +1 -9
  318. package/cjs/presentation/presentation-subslides.js.map +1 -1
  319. package/cjs/presentation/presentation.js +62 -111
  320. package/cjs/presentation/presentation.js.map +1 -1
  321. package/cjs/presentation.js +0 -20
  322. package/cjs/presentation.js.map +1 -1
  323. package/cjs/selections.js +81 -0
  324. package/cjs/selections.js.map +1 -0
  325. package/cjs/state-register.js +3 -11
  326. package/cjs/state-register.js.map +1 -1
  327. package/cjs/sync.js +32 -76
  328. package/cjs/sync.js.map +1 -1
  329. package/cjs/utils.js +51 -42
  330. package/cjs/utils.js.map +1 -1
  331. package/cjs/utils.spec.js +0 -4
  332. package/cjs/utils.spec.js.map +1 -1
  333. package/jest.config.js +4 -3
  334. package/package.json +9 -6
  335. package/src/api.js +17 -2
  336. package/src/auth.js +3 -3
  337. package/src/collections/activity.js +4 -4
  338. package/src/collections/adjunct-sections.js +1 -1
  339. package/src/collections/adjunct-slides.js +1 -1
  340. package/src/collections/adjunct-sub-slides.js +1 -1
  341. package/src/collections/appointment-adjunct-tags.js +1 -1
  342. package/src/collections/appointment-deckversion-tags.js +2 -2
  343. package/src/collections/appointment-duplicates.js +1 -1
  344. package/src/collections/appointment-editors.js +1 -1
  345. package/src/collections/appointment-section-tags.js +1 -1
  346. package/src/collections/appointment-slide-tags.js +1 -1
  347. package/src/collections/appointment-tags.js +20 -18
  348. package/src/collections/appointment-templates.js +26 -0
  349. package/src/collections/appointments.js +9 -9
  350. package/src/collections/assets.js +1 -1
  351. package/src/collections/auto-adjuncts.js +1 -1
  352. package/src/collections/base.js +10 -6
  353. package/src/collections/base.spec.js +2 -2
  354. package/src/collections/cms-vals.js +5 -1
  355. package/src/collections/contact-phones.js +18 -0
  356. package/src/collections/contacts.js +1 -1
  357. package/src/collections/created-assets.js +1 -1
  358. package/src/collections/customers.js +1 -1
  359. package/src/collections/deck-notes.js +1 -1
  360. package/src/collections/deck-version-screenshots.js +1 -1
  361. package/src/collections/deck-versions.js +1 -1
  362. package/src/collections/decks.js +1 -1
  363. package/src/collections/deleted-assets.js +1 -1
  364. package/src/collections/dispatches.js +2 -2
  365. package/src/collections/event-objects.js +1 -1
  366. package/src/collections/events.js +1 -1
  367. package/src/collections/groups.js +1 -1
  368. package/src/collections/images.js +1 -1
  369. package/src/collections/locations.js +1 -1
  370. package/src/collections/opportunities.js +1 -1
  371. package/src/collections/pack-diffs.js +1 -1
  372. package/src/collections/packs.js +1 -1
  373. package/src/collections/presets.js +1 -1
  374. package/src/collections/section-selections.js +1 -1
  375. package/src/collections/sections.js +1 -1
  376. package/src/collections/slide-selections.js +1 -1
  377. package/src/collections/slides.js +1 -1
  378. package/src/collections/snapshots.js +1 -1
  379. package/src/collections/sub-slides.js +1 -1
  380. package/src/collections/tags.js +1 -1
  381. package/src/collections/teams.js +1 -1
  382. package/src/collections/templates.js +1 -1
  383. package/src/collections/uploads.js +1 -1
  384. package/src/collections/users.js +1 -1
  385. package/src/collections.js +2 -0
  386. package/src/fixtures.js +193 -0
  387. package/src/models/activity-item.js +1 -1
  388. package/src/models/adjunct-section.js +7 -2
  389. package/src/models/adjunct-slide.js +7 -2
  390. package/src/models/adjunct-sub-slide.js +1 -1
  391. package/src/models/adjunct.js +39 -1
  392. package/src/models/appointment-adjunct-tags.js +1 -1
  393. package/src/models/appointment-deckversion-tags.js +1 -1
  394. package/src/models/appointment-duplicate.js +1 -1
  395. package/src/models/appointment-editor.js +1 -1
  396. package/src/models/appointment-section-tags.js +1 -1
  397. package/src/models/appointment-slide-tags.js +1 -1
  398. package/src/models/appointment-stats.js +1 -1
  399. package/src/models/appointment-tags.js +1 -1
  400. package/src/models/appointment-template.js +19 -0
  401. package/src/models/appointment-viewing.js +1 -1
  402. package/src/models/appointment.js +101 -38
  403. package/src/models/asset.js +15 -1
  404. package/src/models/auto-adjunct-key-check.js +1 -1
  405. package/src/models/auto-adjunct.js +2 -1
  406. package/src/models/base.js +36 -21
  407. package/src/models/base.spec.js +18 -18
  408. package/src/models/choicelist.js +1 -1
  409. package/src/models/cms-val.js +24 -1
  410. package/src/models/cms-val.spec.js +14 -0
  411. package/src/models/contact-phone.js +57 -0
  412. package/src/models/contact.js +1 -1
  413. package/src/models/customer.js +3 -3
  414. package/src/models/deck-note.js +1 -1
  415. package/src/models/deck-tags.js +1 -1
  416. package/src/models/deck-version-screenshot.js +1 -1
  417. package/src/models/deck-version.js +31 -6
  418. package/src/models/deck.js +1 -1
  419. package/src/models/dispatch-preview.js +1 -1
  420. package/src/models/dispatch.js +1 -1
  421. package/src/models/event-object.js +1 -1
  422. package/src/models/event.js +1 -1
  423. package/src/models/feed-data.js +2 -2
  424. package/src/models/file.js +1 -1
  425. package/src/models/group.js +1 -1
  426. package/src/models/handover.js +1 -1
  427. package/src/models/hosted-preso.js +1 -1
  428. package/src/models/image.js +1 -1
  429. package/src/models/location.js +1 -1
  430. package/src/models/manifest-json.js +56 -5
  431. package/src/models/onshare.js +1 -1
  432. package/src/models/opportunity.js +1 -1
  433. package/src/models/pack-diff.js +1 -1
  434. package/src/models/pack.js +1 -1
  435. package/src/models/preset.js +3 -1
  436. package/src/models/refresh-request.js +15 -1
  437. package/src/models/room.js +1 -1
  438. package/src/models/salesforce-lookup.js +1 -1
  439. package/src/models/section-selection.js +1 -1
  440. package/src/models/section.js +1 -1
  441. package/src/models/slide-selection.js +1 -1
  442. package/src/models/slide.js +1 -1
  443. package/src/models/snapshot.js +11 -2
  444. package/src/models/snapshot.spec.js +31 -0
  445. package/src/models/sub-slide.js +1 -1
  446. package/src/models/support-ticket.js +1 -1
  447. package/src/models/tag.js +1 -1
  448. package/src/models/team.js +14 -3
  449. package/src/models/template.js +72 -2
  450. package/src/models/tenancy.js +4 -1
  451. package/src/models/timing-log.js +2 -2
  452. package/src/models/timing-log.spec.js +1 -1
  453. package/src/models/token.js +1 -1
  454. package/src/models/transcribe-socket.js +1 -1
  455. package/src/models/user.js +13 -2
  456. package/src/models.js +2 -0
  457. package/src/presentation/appointment-presentation.js +4 -4
  458. package/src/presentation/base-presentation-collection.js +1 -1
  459. package/src/presentation/base-presentation-model.js +25 -16
  460. package/src/presentation/base-presentation-model.spec.js +5 -5
  461. package/src/presentation/presentation-deck.js +28 -23
  462. package/src/presentation/presentation-deck.spec.js +4 -4
  463. package/src/presentation/presentation-decks.js +1 -1
  464. package/src/presentation/presentation-section.js +59 -31
  465. package/src/presentation/presentation-section.spec.js +31 -32
  466. package/src/presentation/presentation-sections.js +1 -1
  467. package/src/presentation/presentation-slide.js +51 -25
  468. package/src/presentation/presentation-slide.spec.js +21 -27
  469. package/src/presentation/presentation-slides.js +1 -1
  470. package/src/presentation/presentation-subslide.js +5 -5
  471. package/src/presentation/presentation-subslide.spec.js +3 -3
  472. package/src/presentation/presentation-subslides.js +1 -1
  473. package/src/presentation/presentation.js +5 -3
  474. package/src/selections.js +71 -0
  475. package/src/sync.js +1 -1
  476. package/src/utils.js +31 -8
  477. package/src/utils.spec.js +4 -4
  478. package/.rush/temp/package-deps_test.json +0 -172
@@ -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,
@@ -73,66 +51,59 @@ var BaseCollection = _ampersandRestCollection.default.extend(
73
51
  },
74
52
  constructor: function constructor() {
75
53
  var _data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76
-
77
54
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
78
55
  var data = _data;
79
-
80
56
  var options = _lodash.default.defaults(opts, {
81
57
  data: {}
82
- }); // We ensure that we pass an array because we don't want the collection constructor to
83
- // create an empty model using a data object
84
-
58
+ });
85
59
 
86
- 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 = [];
87
63
 
64
+ // Allow passing in collections
88
65
  if (data instanceof _ampersandRestCollection.default) {
89
66
  data = data.toJSON();
90
67
  }
91
-
92
68
  this._data = data;
93
- 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
94
72
  // apply to all collections
73
+ this.queryData = _lodash.default.extend({}, this.defaultFetchData, options.data);
95
74
 
96
- 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
97
76
  // server responds with an array of urls rather than object data.
98
-
99
77
  if (data && data.url) {
100
78
  this._url = data.url;
101
79
  } else if (data && data.length) {
102
80
  newData = data;
103
81
  }
104
-
105
82
  this.registerStates();
83
+ _ampersandRestCollection.default.prototype.constructor.call(this, newData, opts);
106
84
 
107
- _ampersandRestCollection.default.prototype.constructor.call(this, newData, opts); // Get the name for the collection based on the model
108
-
109
-
85
+ // Get the name for the collection based on the model
110
86
  if (!this.modelName && typeof this.model === "function") {
111
87
  this.modelName = this.model.prototype.modelName;
112
88
  }
113
89
  },
114
90
  add: function add(values) {
115
91
  var args = Array.prototype.slice.call(arguments);
116
-
117
92
  if (values && values instanceof _ampersandRestCollection.default) {
118
93
  args[0] = values.toJSON();
119
94
  }
120
-
121
95
  return _ampersandRestCollection.default.prototype.add.apply(this, args);
122
96
  },
123
97
  _prepareModel: function _prepareModel(attrs, options) {
124
98
  var opts = _lodash.default.omit(options, ["data"]);
125
-
126
99
  return _ampersandRestCollection.default.prototype._prepareModel.call(this, attrs, opts);
127
100
  },
128
101
  registerStates: function registerStates() {
129
102
  if (typeof this.model === "string") {
130
103
  var Model = _stateRegister.registeredStates[this.model];
131
-
132
104
  if (!Model) {
133
105
  throw new Error("'".concat(this.model, "' not found! Did you forget to import it on the '").concat(this.modelName, "' model?"));
134
106
  }
135
-
136
107
  this.model = Model;
137
108
  }
138
109
  },
@@ -144,61 +115,52 @@ var BaseCollection = _ampersandRestCollection.default.extend(
144
115
  },
145
116
  getFullURLPath: function getFullURLPath(path) {
146
117
  var url = path;
147
-
148
118
  if (Object.keys(this.queryData).length) {
149
119
  var query = this.queryData;
150
120
  var queryIndex = url.indexOf("?");
151
-
152
121
  if (queryIndex > -1) {
153
122
  url = url.slice(0, queryIndex);
154
123
  query = _lodash.default.extend({}, _qs.default.parse(url.slice(queryIndex + 1)), this.queryData);
155
124
  }
156
-
157
125
  if (url.slice(-1) !== "/") {
158
126
  url += "/";
159
127
  }
160
-
161
128
  url += "?".concat(_qs.default.stringify(query, {
162
129
  arrayFormat: "repeat"
163
130
  }));
164
131
  }
165
-
166
132
  return url;
167
133
  },
168
134
  url: function url() {
169
135
  if (this._url) {
170
136
  return this.getFullURLPath(this._url);
171
137
  }
172
-
173
138
  var resp = this.urlRoot();
174
-
175
139
  if (resp.slice(-1) !== "/" && resp.indexOf("?") === -1) {
176
140
  resp += "/";
177
- } // 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.
178
147
  // So if you have /path/to/{model.id}/models/
179
148
  // It will check the collection options for "model.id" and replace
180
149
  // it in the url
181
-
182
-
183
150
  var re = /(\{(?:\w+\.?)+\})/g;
184
151
  var matches = resp.match(re) || [];
185
-
186
152
  var _iterator = _createForOfIteratorHelper(matches),
187
- _step;
188
-
153
+ _step;
189
154
  try {
190
155
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
191
156
  var match = _step.value;
192
157
  var path = match.slice(1, -1);
193
-
194
158
  var replacement = _lodash.default.get(this._options, path);
195
-
196
159
  if (replacement) {
197
160
  resp = resp.replace(match, replacement);
198
161
  } else if (!this.isNew()) {
199
162
  _log.default.error("Collection ".concat(this.modelName, " is missing value ").concat(path, " as an option"));
200
163
  }
201
-
202
164
  resp = resp.replace(match, replacement);
203
165
  }
204
166
  } catch (err) {
@@ -206,7 +168,6 @@ var BaseCollection = _ampersandRestCollection.default.extend(
206
168
  } finally {
207
169
  _iterator.f();
208
170
  }
209
-
210
171
  return this.getFullURLPath(resp);
211
172
  },
212
173
  getResourceURL: function getResourceURL() {
@@ -214,7 +175,6 @@ var BaseCollection = _ampersandRestCollection.default.extend(
214
175
  if (this.modelName === null) {
215
176
  return _api.Api.getURL();
216
177
  }
217
-
218
178
  return _api.Api.getResourceURL(this.modelName);
219
179
  },
220
180
  sync: function sync() {
@@ -229,83 +189,68 @@ var BaseCollection = _ampersandRestCollection.default.extend(
229
189
  },
230
190
  fetchSet: function fetchSet() {
231
191
  var _this = this;
232
-
233
192
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
234
193
  var idSet = this.models.map(function (model) {
235
194
  return model.id;
236
195
  });
237
-
238
196
  if (!idSet.length) {
239
197
  _log.default.warn("Tried to fetch ".concat(this.modelName, " set with no models"));
240
-
241
198
  return _bluebird.default.resolve();
242
199
  }
243
-
244
200
  var data = opts.data,
245
- otherOpts = (0, _objectWithoutProperties2.default)(opts, _excluded);
246
-
201
+ otherOpts = (0, _objectWithoutProperties2.default)(opts, _excluded);
247
202
  var options = _objectSpread({
248
203
  data: _objectSpread(_objectSpread({}, data), {}, {
249
204
  id: idSet
250
205
  })
251
- }, otherOpts); // Necessary because these models were already initialised before the fetch,
252
- // and the children weren't updated correctly with the new data.
253
-
206
+ }, otherOpts);
254
207
 
208
+ // Necessary because these models were already initialised before the fetch,
209
+ // and the children weren't updated correctly with the new data.
255
210
  return this.fetch(options).tap(function (data) {
256
211
  _this.reset();
257
-
258
212
  _this.add(data.results);
259
213
  });
260
214
  },
261
215
  fetch: function fetch() {
262
216
  var _this2 = this;
263
-
264
217
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
218
+ var options = _lodash.default.cloneDeep(opts);
265
219
 
266
- var options = _lodash.default.cloneDeep(opts); // Add default params to the fetch (ie ?per_page=1000)
267
-
268
-
220
+ // Add default params to the fetch (ie ?per_page=1000)
269
221
  options.data = _lodash.default.extend({}, this.queryData, options.data || {});
270
222
  this._options = _lodash.default.extend({}, this._options, options);
271
223
  this.queryData = _objectSpread({}, options.data);
272
-
273
224
  if (options.url) {
274
225
  this._url = options.url;
275
226
  }
276
-
277
227
  return _ampersandRestCollection.default.prototype.fetch.call(this, options).tap(function (response) {
278
228
  _this2._data = response;
279
229
  });
280
230
  },
281
231
  fetchAll: function fetchAll() {
282
232
  var _this3 = this;
283
-
284
233
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
234
+ var options = _lodash.default.cloneDeep(opts);
285
235
 
286
- var options = _lodash.default.cloneDeep(opts); // Add default params to the fetch (ie ?per_page=1000)
287
-
288
-
236
+ // Add default params to the fetch (ie ?per_page=1000)
289
237
  options.data = _lodash.default.extend({}, this.queryData, options.data || {});
290
238
  this._options = _lodash.default.extend({}, this._options, options);
291
239
  this.queryData = _objectSpread({}, this._options.data);
292
-
293
240
  if (this._options.url) {
294
241
  this._url = options.url;
295
242
  }
296
-
297
243
  var checkPages = function checkPages(response) {
298
244
  var notLastPage = response.total_pages > response.page;
299
245
  var belowPageLimit = response.page < pageLimit;
300
-
301
246
  if (notLastPage && belowPageLimit) {
302
247
  var _options = _objectSpread(_objectSpread({}, _this3._options), {}, {
303
248
  data: _objectSpread(_objectSpread({}, _this3._options.data), {}, {
304
249
  page: response.page + 1
305
250
  })
306
- }); // Update the collection with the new data & page number
307
-
251
+ });
308
252
 
253
+ // Update the collection with the new data & page number
309
254
  _this3._options = _options;
310
255
  _this3.queryData = _objectSpread({}, _options.data);
311
256
  return _this3.fetchPage().then(function (response) {
@@ -316,21 +261,17 @@ var BaseCollection = _ampersandRestCollection.default.extend(
316
261
  // batch of models every time a new page is fetched.
317
262
  // Here we add back all of the previously-fetched models.
318
263
  _this3.add(_this3._data.results);
319
-
320
264
  return _this3._data;
321
265
  }
322
266
  };
323
-
324
267
  return this.fetchPage().then(function (response) {
325
268
  return checkPages(response);
326
269
  });
327
270
  },
328
271
  fetchPage: function fetchPage() {
329
272
  var _this4 = this;
330
-
331
273
  return _ampersandRestCollection.default.prototype.fetch.call(this, this._options).then(function (response) {
332
274
  var _this4$_data$results;
333
-
334
275
  // Add the response data to this._data - if we're fetching
335
276
  // multiple pages, this._data.results will contain all of the
336
277
  // results fetched from all pages so far
@@ -341,7 +282,6 @@ var BaseCollection = _ampersandRestCollection.default.extend(
341
282
  } else {
342
283
  _this4._data = response;
343
284
  }
344
-
345
285
  return response;
346
286
  });
347
287
  },
@@ -352,11 +292,8 @@ var BaseCollection = _ampersandRestCollection.default.extend(
352
292
  } else if (model.serialize) {
353
293
  return model.serialize();
354
294
  }
355
-
356
295
  var out = {};
357
-
358
296
  _lodash.default.extend(out, model);
359
-
360
297
  delete out.collection;
361
298
  return out;
362
299
  });
@@ -372,26 +309,21 @@ var BaseCollection = _ampersandRestCollection.default.extend(
372
309
  },
373
310
  serialize: function serialize() {
374
311
  var collection = _ampersandRestCollection.default.prototype.serialize.call(this);
375
-
376
312
  if (_lodash.default.isObject(this._data) && this._data.url && !collection.length) {
377
313
  return this._data.url;
378
314
  }
379
-
380
315
  return collection;
381
316
  },
382
317
  save: function save() {
383
318
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
384
319
  var batch = options.batch,
385
- patch = options.patch;
386
-
320
+ patch = options.patch;
387
321
  if (batch || !this.length) {
388
322
  if (patch) {
389
323
  return this.sync("patch", this, options);
390
324
  }
391
-
392
325
  return this.sync("create", this, options);
393
326
  }
394
-
395
327
  return _bluebird.default.all(this.map(function (model) {
396
328
  return model.save(model.toServer(), options);
397
329
  }));
@@ -399,18 +331,15 @@ var BaseCollection = _ampersandRestCollection.default.extend(
399
331
  delete: function _delete() {
400
332
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
401
333
  var batch = options.batch;
402
-
403
334
  if (batch) {
404
335
  return this.sync("delete", this, options);
405
336
  }
406
-
407
337
  return _bluebird.default.all(this.map(function (model) {
408
338
  return model.delete(model.toServer(), options);
409
339
  }));
410
340
  },
411
341
  parse: function parse(attrs) {
412
342
  var results = attrs.results || attrs;
413
-
414
343
  if (Array.isArray(results) && results.length && typeof results[0] === "string") {
415
344
  // Convert any url responses from the server into an object that
416
345
  // can be passed to the model.
@@ -422,14 +351,11 @@ var BaseCollection = _ampersandRestCollection.default.extend(
422
351
  };
423
352
  });
424
353
  }
425
-
426
354
  return results;
427
355
  }
428
- }); // Make matchesURL available as a static method
429
-
430
-
431
- exports.BaseCollection = BaseCollection;
356
+ });
432
357
 
358
+ // Make matchesURL available as a static method
433
359
  BaseCollection.matchesURL = function (url) {
434
360
  return this.prototype.matchesURL(url);
435
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","data","options","_","defaults","newData","toJSON","_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","areModelsFetched","isFetched","every","Boolean","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\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\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"],"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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"}