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