@livepreso/api 6.45.0 → 6.47.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 (364) 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/package-deps_build.json +156 -141
  9. package/.rush/temp/shrinkwrap-deps.json +281 -214
  10. package/CHANGELOG.json +29 -0
  11. package/CHANGELOG.md +15 -1
  12. package/README.md +4 -4
  13. package/api.build.log +6 -3
  14. package/api.test.cache.log +1 -0
  15. package/api.test.log +19 -0
  16. package/cjs/api.js +18 -2
  17. package/cjs/api.js.map +1 -1
  18. package/cjs/auth.js +3 -3
  19. package/cjs/auth.js.map +1 -1
  20. package/cjs/collections/activity.js.map +1 -1
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js.map +1 -1
  23. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  24. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  25. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  26. package/cjs/collections/appointment-editors.js.map +1 -1
  27. package/cjs/collections/appointment-section-tags.js.map +1 -1
  28. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  29. package/cjs/collections/appointment-tags.js +9 -7
  30. package/cjs/collections/appointment-tags.js.map +1 -1
  31. package/cjs/collections/appointment-templates.js +36 -0
  32. package/cjs/collections/appointment-templates.js.map +1 -0
  33. package/cjs/collections/appointments.js.map +1 -1
  34. package/cjs/collections/assets.js.map +1 -1
  35. package/cjs/collections/auto-adjuncts.js.map +1 -1
  36. package/cjs/collections/base.js +4 -0
  37. package/cjs/collections/base.js.map +1 -1
  38. package/cjs/collections/base.spec.js.map +1 -1
  39. package/cjs/collections/cms-vals.js +5 -0
  40. package/cjs/collections/cms-vals.js.map +1 -1
  41. package/cjs/collections/contact-phones.js +28 -0
  42. package/cjs/collections/contact-phones.js.map +1 -0
  43. package/cjs/collections/contacts.js.map +1 -1
  44. package/cjs/collections/created-assets.js.map +1 -1
  45. package/cjs/collections/customers.js.map +1 -1
  46. package/cjs/collections/deck-notes.js.map +1 -1
  47. package/cjs/collections/deck-version-screenshots.js.map +1 -1
  48. package/cjs/collections/deck-versions.js.map +1 -1
  49. package/cjs/collections/decks.js.map +1 -1
  50. package/cjs/collections/deleted-assets.js.map +1 -1
  51. package/cjs/collections/dispatches.js.map +1 -1
  52. package/cjs/collections/event-objects.js.map +1 -1
  53. package/cjs/collections/events.js.map +1 -1
  54. package/cjs/collections/groups.js.map +1 -1
  55. package/cjs/collections/images.js.map +1 -1
  56. package/cjs/collections/locations.js.map +1 -1
  57. package/cjs/collections/opportunities.js.map +1 -1
  58. package/cjs/collections/pack-diffs.js.map +1 -1
  59. package/cjs/collections/packs.js.map +1 -1
  60. package/cjs/collections/presets.js.map +1 -1
  61. package/cjs/collections/section-selections.js.map +1 -1
  62. package/cjs/collections/sections.js.map +1 -1
  63. package/cjs/collections/signers.js +28 -0
  64. package/cjs/collections/signers.js.map +1 -0
  65. package/cjs/collections/signing-requests.js +28 -0
  66. package/cjs/collections/signing-requests.js.map +1 -0
  67. package/cjs/collections/slide-selections.js.map +1 -1
  68. package/cjs/collections/slides.js.map +1 -1
  69. package/cjs/collections/snapshots.js.map +1 -1
  70. package/cjs/collections/sub-slides.js.map +1 -1
  71. package/cjs/collections/tags.js.map +1 -1
  72. package/cjs/collections/teams.js.map +1 -1
  73. package/cjs/collections/templates.js.map +1 -1
  74. package/cjs/collections/uploads.js.map +1 -1
  75. package/cjs/collections/users.js.map +1 -1
  76. package/cjs/collections.js +52 -13
  77. package/cjs/collections.js.map +1 -1
  78. package/cjs/fixtures.js +232 -0
  79. package/cjs/fixtures.js.map +1 -0
  80. package/cjs/index.js +28 -4
  81. package/cjs/index.js.map +1 -1
  82. package/cjs/models/activity-item.js +10 -2
  83. package/cjs/models/activity-item.js.map +1 -1
  84. package/cjs/models/adjunct-section.js +7 -2
  85. package/cjs/models/adjunct-section.js.map +1 -1
  86. package/cjs/models/adjunct-slide.js +7 -2
  87. package/cjs/models/adjunct-slide.js.map +1 -1
  88. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  89. package/cjs/models/adjunct.js +40 -0
  90. package/cjs/models/adjunct.js.map +1 -1
  91. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  92. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  93. package/cjs/models/appointment-editor.js.map +1 -1
  94. package/cjs/models/appointment-section-tags.js.map +1 -1
  95. package/cjs/models/appointment-slide-tags.js.map +1 -1
  96. package/cjs/models/appointment-stats.js.map +1 -1
  97. package/cjs/models/appointment-tags.js.map +1 -1
  98. package/cjs/models/appointment-template.js +28 -0
  99. package/cjs/models/appointment-template.js.map +1 -0
  100. package/cjs/models/appointment-viewing.js.map +1 -1
  101. package/cjs/models/appointment.js +108 -15
  102. package/cjs/models/appointment.js.map +1 -1
  103. package/cjs/models/asset.js +12 -0
  104. package/cjs/models/asset.js.map +1 -1
  105. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  106. package/cjs/models/auto-adjunct.js +2 -1
  107. package/cjs/models/auto-adjunct.js.map +1 -1
  108. package/cjs/models/base.js +25 -5
  109. package/cjs/models/base.js.map +1 -1
  110. package/cjs/models/base.spec.js.map +1 -1
  111. package/cjs/models/choicelist.js.map +1 -1
  112. package/cjs/models/cms-val.js +35 -1
  113. package/cjs/models/cms-val.js.map +1 -1
  114. package/cjs/models/cms-val.spec.js +32 -0
  115. package/cjs/models/cms-val.spec.js.map +1 -0
  116. package/cjs/models/contact-phone.js +66 -0
  117. package/cjs/models/contact-phone.js.map +1 -0
  118. package/cjs/models/contact.js.map +1 -1
  119. package/cjs/models/customer.js +3 -1
  120. package/cjs/models/customer.js.map +1 -1
  121. package/cjs/models/deck-note.js.map +1 -1
  122. package/cjs/models/deck-tags.js.map +1 -1
  123. package/cjs/models/deck-version-screenshot.js.map +1 -1
  124. package/cjs/models/deck-version.js +31 -8
  125. package/cjs/models/deck-version.js.map +1 -1
  126. package/cjs/models/deck.js.map +1 -1
  127. package/cjs/models/dispatch-preview.js.map +1 -1
  128. package/cjs/models/dispatch.js.map +1 -1
  129. package/cjs/models/event-object.js.map +1 -1
  130. package/cjs/models/event.js.map +1 -1
  131. package/cjs/models/feed-data.js.map +1 -1
  132. package/cjs/models/file.js.map +1 -1
  133. package/cjs/models/group.js.map +1 -1
  134. package/cjs/models/handover.js.map +1 -1
  135. package/cjs/models/hosted-preso.js.map +1 -1
  136. package/cjs/models/image.js.map +1 -1
  137. package/cjs/models/location.js.map +1 -1
  138. package/cjs/models/manifest-json.js +70 -2
  139. package/cjs/models/manifest-json.js.map +1 -1
  140. package/cjs/models/onshare.js.map +1 -1
  141. package/cjs/models/opportunity.js.map +1 -1
  142. package/cjs/models/pack-diff.js.map +1 -1
  143. package/cjs/models/pack.js.map +1 -1
  144. package/cjs/models/preset.js +4 -1
  145. package/cjs/models/preset.js.map +1 -1
  146. package/cjs/models/refresh-request.js +24 -0
  147. package/cjs/models/refresh-request.js.map +1 -1
  148. package/cjs/models/room.js.map +1 -1
  149. package/cjs/models/salesforce-lookup.js.map +1 -1
  150. package/cjs/models/section-selection.js.map +1 -1
  151. package/cjs/models/section.js.map +1 -1
  152. package/cjs/models/signer.js +47 -0
  153. package/cjs/models/signer.js.map +1 -0
  154. package/cjs/models/signing-request.js +66 -0
  155. package/cjs/models/signing-request.js.map +1 -0
  156. package/cjs/models/slide-selection.js.map +1 -1
  157. package/cjs/models/slide.js.map +1 -1
  158. package/cjs/models/snapshot.js +41 -2
  159. package/cjs/models/snapshot.js.map +1 -1
  160. package/cjs/models/snapshot.spec.js +51 -0
  161. package/cjs/models/snapshot.spec.js.map +1 -0
  162. package/cjs/models/sub-slide.js.map +1 -1
  163. package/cjs/models/support-ticket.js.map +1 -1
  164. package/cjs/models/tag.js.map +1 -1
  165. package/cjs/models/team.js +15 -2
  166. package/cjs/models/team.js.map +1 -1
  167. package/cjs/models/template.js +105 -3
  168. package/cjs/models/template.js.map +1 -1
  169. package/cjs/models/tenancy.js +3 -0
  170. package/cjs/models/tenancy.js.map +1 -1
  171. package/cjs/models/timing-log.js.map +1 -1
  172. package/cjs/models/timing-log.spec.js.map +1 -1
  173. package/cjs/models/token.js.map +1 -1
  174. package/cjs/models/transcribe-socket.js.map +1 -1
  175. package/cjs/models/user.js +7 -2
  176. package/cjs/models/user.js.map +1 -1
  177. package/cjs/models.js +52 -13
  178. package/cjs/models.js.map +1 -1
  179. package/cjs/presentation/appointment-presentation.js.map +1 -1
  180. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  181. package/cjs/presentation/base-presentation-model.js +23 -14
  182. package/cjs/presentation/base-presentation-model.js.map +1 -1
  183. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  184. package/cjs/presentation/presentation-deck.js +5 -1
  185. package/cjs/presentation/presentation-deck.js.map +1 -1
  186. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  187. package/cjs/presentation/presentation-decks.js.map +1 -1
  188. package/cjs/presentation/presentation-section.js +33 -8
  189. package/cjs/presentation/presentation-section.js.map +1 -1
  190. package/cjs/presentation/presentation-section.spec.js +13 -20
  191. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  192. package/cjs/presentation/presentation-sections.js.map +1 -1
  193. package/cjs/presentation/presentation-slide.js +43 -9
  194. package/cjs/presentation/presentation-slide.js.map +1 -1
  195. package/cjs/presentation/presentation-slide.spec.js +11 -18
  196. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  197. package/cjs/presentation/presentation-slides.js.map +1 -1
  198. package/cjs/presentation/presentation-subslide.js.map +1 -1
  199. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  200. package/cjs/presentation/presentation-subslides.js.map +1 -1
  201. package/cjs/presentation/presentation.js +8 -3
  202. package/cjs/presentation/presentation.js.map +1 -1
  203. package/cjs/selections.js +106 -0
  204. package/cjs/selections.js.map +1 -0
  205. package/cjs/sync.js.map +1 -1
  206. package/cjs/utils.js +43 -6
  207. package/cjs/utils.js.map +1 -1
  208. package/cjs/utils.spec.js +1 -1
  209. package/cjs/utils.spec.js.map +1 -1
  210. package/jest.config.js +4 -3
  211. package/package.json +12 -9
  212. package/src/api.js +17 -2
  213. package/src/auth.js +3 -3
  214. package/src/collections/activity.js +4 -4
  215. package/src/collections/adjunct-sections.js +1 -1
  216. package/src/collections/adjunct-slides.js +1 -1
  217. package/src/collections/adjunct-sub-slides.js +1 -1
  218. package/src/collections/appointment-adjunct-tags.js +1 -1
  219. package/src/collections/appointment-deckversion-tags.js +2 -2
  220. package/src/collections/appointment-editors.js +1 -1
  221. package/src/collections/appointment-section-tags.js +1 -1
  222. package/src/collections/appointment-slide-tags.js +1 -1
  223. package/src/collections/appointment-tags.js +20 -18
  224. package/src/collections/appointment-templates.js +26 -0
  225. package/src/collections/appointments.js +9 -9
  226. package/src/collections/assets.js +1 -1
  227. package/src/collections/auto-adjuncts.js +1 -1
  228. package/src/collections/base.js +10 -6
  229. package/src/collections/base.spec.js +2 -2
  230. package/src/collections/cms-vals.js +5 -1
  231. package/src/collections/contact-phones.js +18 -0
  232. package/src/collections/contacts.js +1 -1
  233. package/src/collections/created-assets.js +1 -1
  234. package/src/collections/customers.js +1 -1
  235. package/src/collections/deck-notes.js +1 -1
  236. package/src/collections/deck-version-screenshots.js +1 -1
  237. package/src/collections/deck-versions.js +1 -1
  238. package/src/collections/decks.js +1 -1
  239. package/src/collections/deleted-assets.js +1 -1
  240. package/src/collections/dispatches.js +2 -2
  241. package/src/collections/event-objects.js +1 -1
  242. package/src/collections/events.js +1 -1
  243. package/src/collections/groups.js +1 -1
  244. package/src/collections/images.js +1 -1
  245. package/src/collections/locations.js +1 -1
  246. package/src/collections/opportunities.js +1 -1
  247. package/src/collections/pack-diffs.js +1 -1
  248. package/src/collections/packs.js +1 -1
  249. package/src/collections/presets.js +1 -1
  250. package/src/collections/section-selections.js +1 -1
  251. package/src/collections/sections.js +1 -1
  252. package/src/collections/signers.js +18 -0
  253. package/src/collections/signing-requests.js +18 -0
  254. package/src/collections/slide-selections.js +1 -1
  255. package/src/collections/slides.js +1 -1
  256. package/src/collections/snapshots.js +1 -1
  257. package/src/collections/sub-slides.js +1 -1
  258. package/src/collections/tags.js +1 -1
  259. package/src/collections/teams.js +1 -1
  260. package/src/collections/templates.js +1 -1
  261. package/src/collections/uploads.js +1 -1
  262. package/src/collections/users.js +1 -1
  263. package/src/collections.js +4 -1
  264. package/src/fixtures.js +195 -0
  265. package/src/index.js +2 -3
  266. package/src/models/activity-item.js +9 -1
  267. package/src/models/adjunct-section.js +7 -2
  268. package/src/models/adjunct-slide.js +7 -2
  269. package/src/models/adjunct-sub-slide.js +1 -1
  270. package/src/models/adjunct.js +39 -1
  271. package/src/models/appointment-adjunct-tags.js +1 -1
  272. package/src/models/appointment-deckversion-tags.js +1 -1
  273. package/src/models/appointment-editor.js +1 -1
  274. package/src/models/appointment-section-tags.js +1 -1
  275. package/src/models/appointment-slide-tags.js +1 -1
  276. package/src/models/appointment-stats.js +1 -1
  277. package/src/models/appointment-tags.js +1 -1
  278. package/src/models/appointment-template.js +19 -0
  279. package/src/models/appointment-viewing.js +1 -1
  280. package/src/models/appointment.js +104 -38
  281. package/src/models/asset.js +15 -1
  282. package/src/models/auto-adjunct-key-check.js +1 -1
  283. package/src/models/auto-adjunct.js +2 -1
  284. package/src/models/base.js +36 -21
  285. package/src/models/base.spec.js +18 -18
  286. package/src/models/choicelist.js +1 -1
  287. package/src/models/cms-val.js +24 -1
  288. package/src/models/cms-val.spec.js +14 -0
  289. package/src/models/contact-phone.js +57 -0
  290. package/src/models/contact.js +1 -1
  291. package/src/models/customer.js +3 -3
  292. package/src/models/deck-note.js +1 -1
  293. package/src/models/deck-tags.js +1 -1
  294. package/src/models/deck-version-screenshot.js +1 -1
  295. package/src/models/deck-version.js +32 -6
  296. package/src/models/deck.js +1 -1
  297. package/src/models/dispatch-preview.js +1 -1
  298. package/src/models/dispatch.js +1 -1
  299. package/src/models/event-object.js +1 -1
  300. package/src/models/event.js +1 -1
  301. package/src/models/feed-data.js +2 -2
  302. package/src/models/file.js +1 -1
  303. package/src/models/group.js +1 -1
  304. package/src/models/handover.js +1 -1
  305. package/src/models/hosted-preso.js +1 -1
  306. package/src/models/image.js +1 -1
  307. package/src/models/location.js +1 -1
  308. package/src/models/manifest-json.js +65 -5
  309. package/src/models/onshare.js +1 -1
  310. package/src/models/opportunity.js +1 -1
  311. package/src/models/pack-diff.js +1 -1
  312. package/src/models/pack.js +1 -1
  313. package/src/models/preset.js +4 -1
  314. package/src/models/refresh-request.js +16 -1
  315. package/src/models/room.js +1 -1
  316. package/src/models/salesforce-lookup.js +1 -1
  317. package/src/models/section-selection.js +1 -1
  318. package/src/models/section.js +1 -1
  319. package/src/models/signer.js +37 -0
  320. package/src/models/signing-request.js +56 -0
  321. package/src/models/slide-selection.js +1 -1
  322. package/src/models/slide.js +1 -1
  323. package/src/models/snapshot.js +30 -2
  324. package/src/models/snapshot.spec.js +31 -0
  325. package/src/models/sub-slide.js +1 -1
  326. package/src/models/support-ticket.js +1 -1
  327. package/src/models/tag.js +1 -1
  328. package/src/models/team.js +14 -3
  329. package/src/models/template.js +72 -2
  330. package/src/models/tenancy.js +4 -1
  331. package/src/models/timing-log.js +2 -2
  332. package/src/models/timing-log.spec.js +1 -1
  333. package/src/models/token.js +1 -1
  334. package/src/models/transcribe-socket.js +1 -1
  335. package/src/models/user.js +13 -2
  336. package/src/models.js +4 -1
  337. package/src/presentation/appointment-presentation.js +4 -4
  338. package/src/presentation/base-presentation-collection.js +1 -1
  339. package/src/presentation/base-presentation-model.js +25 -16
  340. package/src/presentation/base-presentation-model.spec.js +5 -5
  341. package/src/presentation/presentation-deck.js +28 -23
  342. package/src/presentation/presentation-deck.spec.js +4 -4
  343. package/src/presentation/presentation-decks.js +1 -1
  344. package/src/presentation/presentation-section.js +59 -31
  345. package/src/presentation/presentation-section.spec.js +31 -32
  346. package/src/presentation/presentation-sections.js +1 -1
  347. package/src/presentation/presentation-slide.js +51 -25
  348. package/src/presentation/presentation-slide.spec.js +21 -27
  349. package/src/presentation/presentation-slides.js +1 -1
  350. package/src/presentation/presentation-subslide.js +5 -5
  351. package/src/presentation/presentation-subslide.spec.js +3 -3
  352. package/src/presentation/presentation-subslides.js +1 -1
  353. package/src/presentation/presentation.js +5 -3
  354. package/src/selections.js +71 -0
  355. package/src/sync.js +1 -1
  356. package/src/utils.js +31 -8
  357. package/src/utils.spec.js +8 -8
  358. package/.rush/temp/package-deps_test.json +0 -172
  359. package/cjs/collections/appointment-duplicates.js +0 -29
  360. package/cjs/collections/appointment-duplicates.js.map +0 -1
  361. package/cjs/models/appointment-duplicate.js +0 -94
  362. package/cjs/models/appointment-duplicate.js.map +0 -1
  363. package/src/collections/appointment-duplicates.js +0 -19
  364. package/src/models/appointment-duplicate.js +0 -73
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/appointment.js"],"names":["AppointmentModel","BaseModel","extend","modelName","props","name","attendees","begin","content_modified_date","created_by_support","created_date","creation_status","creation_status_history","editors_can_change_editors","end","locks","modified_date","notes","sort_date","display_contacts","display_title","viewtype","support_mode","is_muted","no_edit_after","no_share_after","no_delete_after","no_snapshot_create_after","collections","contact_set","deckversion_set","opportunity_set","appointmenteditor_set","appointmentssection_set","appointmentsslide_set","dispatch_set","current_editor_set","tags","appointmentdeckversiontags_set","appointmentsectiontags_set","appointmentslidetags_set","appointmentadjuncttags_set","children","preset","latest_snapshot","latest_feed_data","user","latest_tele","stats","team","derived","adjunctSlides","deps","fn","AdjunctSlideCollection","queryData","appointment","id","adjunctSections","AdjunctSectionCollection","adjunctSubSlides","AdjunctSubSlideCollection","deckNotes","appointmentUrl","url","DeckNoteCollection","cannotShare","noShareAfter","diff","cannotEdit","noEditAfter","cannotDelete","noDeleteAfter","cannotCreateSnapshot","noCreateAfter","readOnly","shareOnly","getHooksPath","length","Error","first","fetchAll","fetchSelf","options","Promise","resolve","then","_url","fetch","fetches","fetchModels","fetchSet","catch","e","status","log","error","toJSON","push","all","filter","adj","template","map","model","screenshots","template_set","manifest_json","deck","return","toServer","data","_retrieveURL"],"mappings":"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","sourcesContent":["import \"./user.js\";\nimport \"./snapshot.js\";\nimport \"./feed-data.js\";\nimport \"./preset.js\";\nimport \"./team.js\";\nimport \"./hosted-preso.js\";\nimport \"./appointment-stats.js\";\nimport \"./appointment-tags.js\";\nimport \"../collections/contacts.js\";\nimport \"../collections/appointment-editors.js\";\nimport \"../collections/deck-versions.js\";\nimport \"../collections/opportunities.js\";\nimport \"../collections/section-selections.js\";\nimport \"../collections/slide-selections.js\";\nimport \"../collections/dispatches.js\";\nimport \"../collections/users.js\";\nimport \"../collections/appointment-tags\";\n\nimport { AdjunctSectionCollection } from \"../collections/adjunct-sections.js\";\nimport { AdjunctSlideCollection } from \"../collections/adjunct-slides.js\";\nimport { AdjunctSubSlideCollection } from \"../collections/adjunct-sub-slides.js\";\nimport { BaseModel } from \"./base.js\";\nimport { DeckNoteCollection } from \"../collections/deck-notes.js\";\nimport Promise from \"bluebird\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AppointmentModel\n * @extends models.BaseModel\n */\nexport const AppointmentModel = BaseModel.extend(\n\t/** @lends models.AppointmentModel# */ {\n\t\tmodelName: \"appointments\",\n\n\t\t/**\n\t\t * @property {string} name\n\t\t * @property {string} attendees\n\t\t * @property {date} begin\n\t\t * @property {boolean} created_by_support\n\t\t * @property {date} created_date\n\t\t * @property {string} creation_state\n\t\t * @property {date} end\n\t\t * @property {date} modified_date\n\t\t * @property {string} notes\n\t\t * @property {date} sort_date\n\t\t * @property {string} display_contacts\n\t\t * @property {string} display_title\n\t\t * @property {string} viewtype\n\t\t * @property {boolean} support_mode\n\t\t * @property {boolean} is_muted\n\t\t * @property {date} no_edit_after\n\t\t * @property {date} no_share_after\n\t\t * @property {date} no_delete_after\n\t\t */\n\t\tprops: {\n\t\t\tname: \"stringSanitized\",\n\t\t\tattendees: \"string\",\n\t\t\tbegin: \"date\",\n\t\t\tcontent_modified_date: \"date\",\n\t\t\tcreated_by_support: \"boolean\",\n\t\t\tcreated_date: \"date\",\n\t\t\tcreation_status: \"string\",\n\t\t\tcreation_status_history: \"array\",\n\t\t\teditors_can_change_editors: \"boolean\",\n\t\t\tend: \"date\",\n\t\t\tlocks: \"array\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnotes: \"stringSanitized\",\n\t\t\tsort_date: \"date\",\n\t\t\tdisplay_contacts: \"string\",\n\t\t\tdisplay_title: \"stringSanitized\",\n\t\t\tviewtype: \"string\",\n\t\t\tsupport_mode: \"boolean\",\n\t\t\tis_muted: \"boolean\",\n\t\t\tno_edit_after: \"date\",\n\t\t\tno_share_after: \"date\",\n\t\t\tno_delete_after: \"date\",\n\t\t\tno_snapshot_create_after: \"date\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.ContactCollection} contact_set\n\t\t * @property {collections.DeckVersionCollection} deckversion_set\n\t\t * @property {collections.OpportunityCollection} opportunity_set\n\t\t * @property {collections.SectionSelectionCollection} appointmentssection_set\n\t\t * @property {collections.SlideSelectionCollection} appointmentsslide_set\n\t\t */\n\t\tcollections: {\n\t\t\tcontact_set: \"ContactCollection\",\n\t\t\tdeckversion_set: \"DeckVersionCollection\",\n\t\t\topportunity_set: \"OpportunityCollection\",\n\t\t\tappointmenteditor_set: \"AppointmentEditorCollection\",\n\t\t\tappointmentssection_set: \"SectionSelectionCollection\",\n\t\t\tappointmentsslide_set: \"SlideSelectionCollection\",\n\t\t\tdispatch_set: \"DispatchCollection\",\n\t\t\tcurrent_editor_set: \"UserCollection\",\n\t\t\ttags: \"AppointmentTagsCollection\",\n\t\t\tappointmentdeckversiontags_set: \"AppointmentDeckVersionTagsCollection\",\n\t\t\tappointmentsectiontags_set: \"AppointmentSectionTagsCollection\",\n\t\t\tappointmentslidetags_set: \"AppointmentSlideTagsCollection\",\n\t\t\tappointmentadjuncttags_set: \"AppointmentAdjunctTagsCollection\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.PresetModel} preset\n\t\t * @property {models.SnapshotModel} latest_snapshot\n\t\t * @property {models.UserModel} user\n\t\t * @property {models.AppointmentStatsModel} appointmentStats\n\t\t */\n\t\tchildren: {\n\t\t\tpreset: \"PresetModel\",\n\t\t\tlatest_snapshot: \"SnapshotModel\",\n\t\t\tlatest_feed_data: \"FeedDataModel\",\n\t\t\tuser: \"UserModel\",\n\t\t\tlatest_tele: \"HostedPresoModel\",\n\t\t\tstats: \"AppointmentStatsModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.AdjunctSlideCollection} adjunctSlides\n\t\t * @property {collections.AdjunctSectionCollection} adjunctSections\n\t\t * @property {collections.AdjunctSubSlideCollection} adjunctSubSlides\n\t\t * @property {boolean} readOnly\n\t\t * @property {boolean} shareOnly\n\t\t */\n\t\tderived: {\n\t\t\tadjunctSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSlides = new AdjunctSlideCollection();\n\t\t\t\t\tadjunctSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSections: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSections = new AdjunctSectionCollection();\n\t\t\t\t\tadjunctSections.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSections;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSubSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSubSlides = new AdjunctSubSlideCollection();\n\t\t\t\t\tadjunctSubSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSubSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeckNotes: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst appointmentUrl = this.url();\n\t\t\t\t\treturn new DeckNoteCollection({ url: `${appointmentUrl}notes/` });\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotShare: {\n\t\t\t\tdeps: [\"no_share_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_share_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noShareAfter = moment(this.no_share_after);\n\t\t\t\t\treturn moment().diff(noShareAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotEdit: {\n\t\t\t\tdeps: [\"no_edit_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_edit_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noEditAfter = moment(this.no_edit_after);\n\t\t\t\t\treturn moment().diff(noEditAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotDelete: {\n\t\t\t\tdeps: [\"no_delete_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_delete_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noDeleteAfter = moment(this.no_delete_after);\n\t\t\t\t\treturn moment().diff(noDeleteAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotCreateSnapshot: {\n\t\t\t\tdeps: [\"no_snapshot_create_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_snapshot_create_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noCreateAfter = moment(this.no_snapshot_create_after);\n\t\t\t\t\treturn moment().diff(noCreateAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\treadOnly: {\n\t\t\t\tdeps: [\"cannotShare\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotShare;\n\t\t\t\t},\n\t\t\t},\n\t\t\tshareOnly: {\n\t\t\t\tdeps: [\"cannotEdit\", \"cannotDelete\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotEdit || this.cannotDelete;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tgetHooksPath() {\n\t\t\tif (!this.deckversion_set.length) {\n\t\t\t\tthrow new Error(\"Requires a deckversion to get hooks.\");\n\t\t\t}\n\t\t\treturn this.deckversion_set.first().getHooksPath();\n\t\t},\n\n\t\tfetchAll(fetchSelf = false, options = {}) {\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (!this._url || fetchSelf) {\n\t\t\t\t\t\treturn this.fetch(options);\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst fetches = [\n\t\t\t\t\t\tthis.deckversion_set.fetchModels(options),\n\t\t\t\t\t\tthis.appointmentssection_set.fetch(options),\n\t\t\t\t\t\tthis.appointmentsslide_set.fetch(options),\n\t\t\t\t\t\tthis.appointmenteditor_set.fetch(options),\n\t\t\t\t\t\tthis.adjunctSlides.fetch(options),\n\t\t\t\t\t\tthis.adjunctSections.fetch(options),\n\t\t\t\t\t\tthis.adjunctSubSlides.fetch(options),\n\t\t\t\t\t\tthis.contact_set.fetchSet(options),\n\t\t\t\t\t\tthis.tags.fetch(options),\n\t\t\t\t\t\tthis.user.fetch(options).catch((e) => {\n\t\t\t\t\t\t\tif (e.status && e.status === 404) {\n\t\t\t\t\t\t\t\t// It's possible for a user to be deactivated, which means they'll\n\t\t\t\t\t\t\t\t// return with a 404. We want to be able to still load the preso,\n\t\t\t\t\t\t\t\t// but it will be readonly.\n\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tthis.deckNotes.fetch(options),\n\t\t\t\t\t\tthis.opportunity_set.fetchSet(options).catch(() => {\n\t\t\t\t\t\t\tlog.error(\n\t\t\t\t\t\t\t\t`Failed to fetch Opportunity set`,\n\t\t\t\t\t\t\t\tthis.opportunity_set.toJSON()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t\t\t}),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (this.latest_snapshot) {\n\t\t\t\t\t\tfetches.push(this.latest_snapshot.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_feed_data) {\n\t\t\t\t\t\tfetches.push(this.latest_feed_data.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_tele) {\n\t\t\t\t\t\tfetches.push(this.latest_tele.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all(fetches);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst adjunctSlides = this.adjunctSlides\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => adj.template.fetch(options));\n\t\t\t\t\tconst adjunctSections = this.adjunctSections\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => adj.template.fetch(options));\n\n\t\t\t\t\treturn Promise.all([...adjunctSlides, ...adjunctSections]);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\tthis.deckversion_set.map((model) => {\n\t\t\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\t\t\tmodel.screenshots.fetch(options),\n\t\t\t\t\t\t\t\tmodel.template_set.fetchSet(options),\n\t\t\t\t\t\t\t\tmodel.manifest_json.fetch(options),\n\t\t\t\t\t\t\t\tmodel.deck.fetch(options),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.return(this);\n\t\t},\n\n\t\ttoServer() {\n\t\t\tconst appointment = this.toJSON();\n\n\t\t\tconst data = {\n\t\t\t\tname: appointment.name,\n\t\t\t\tbegin: appointment.begin,\n\t\t\t\tend: appointment.end,\n\t\t\t\tcreation_status: appointment.creation_status,\n\t\t\t\tcontact_set: this._retrieveURL(appointment.contact_set),\n\t\t\t\tdeckversion_set: this._retrieveURL(appointment.deckversion_set),\n\t\t\t\tnotes: appointment.notes,\n\t\t\t\topportunity_set: this._retrieveURL(appointment.opportunity_set),\n\t\t\t\tuser: this._retrieveURL(appointment.user),\n\t\t\t\tviewtype: appointment.viewtype,\n\t\t\t\tpreset: this._retrieveURL(appointment.preset),\n\t\t\t\tlocks: appointment.locks,\n\t\t\t\tis_muted: appointment.is_muted,\n\t\t\t\tno_edit_after: appointment.no_edit_after,\n\t\t\t\tno_share_after: appointment.no_share_after,\n\t\t\t\tno_delete_after: appointment.no_delete_after,\n\t\t\t\tteam: this._retrieveURL(appointment.team),\n\t\t\t\teditors_can_change_editors: appointment.editors_can_change_editors,\n\t\t\t};\n\n\t\t\tif (this.id) {\n\t\t\t\tdata.id = this.id;\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t}\n);\n\nregister(\"AppointmentModel\", AppointmentModel);\n"],"file":"appointment.js"}
1
+ {"version":3,"sources":["../../src/models/appointment.js"],"names":["AppointmentModel","BaseModel","extend","modelName","props","name","attendees","begin","content_modified_date","created_by_support","created_date","creation_status","creation_status_history","editors_can_change_editors","end","locks","modified_date","notes","sort_date","display_contacts","display_title","viewtype","support_mode","is_muted","is_signing_enabled","no_edit_after","no_share_after","no_delete_after","no_snapshot_create_after","share_visibility_mode","collections","contact_set","deckversion_set","opportunity_set","appointmenteditor_set","appointmentssection_set","appointmentsslide_set","dispatch_set","current_editor_set","tags","appointmentdeckversiontags_set","appointmentsectiontags_set","appointmentslidetags_set","appointmentadjuncttags_set","children","preset","latest_snapshot","latest_feed_data","user","latest_tele","stats","team","derived","adjunctSlides","deps","fn","AdjunctSlideCollection","queryData","appointment","id","adjunctSections","AdjunctSectionCollection","adjunctSubSlides","AdjunctSubSlideCollection","includedTemplates","AppointmentTemplateCollection","deckNotes","appointmentUrl","url","DeckNoteCollection","cannotShare","noShareAfter","diff","cannotEdit","noEditAfter","cannotDelete","noDeleteAfter","cannotCreateSnapshot","noCreateAfter","readOnly","shareOnly","contactPhones","ContactPhoneCollection","getHooksPath","length","Error","first","fetchAll","fetchSelf","fetchOptions","Promise","resolve","then","_url","fetch","fetches","fetchModels","fetchSet","catch","e","status","all","map","opp","customer","log","error","toJSON","push","model","screenshots","template_set","manifest_json","deck","deckversionTemplates","models","allTemplates","_","uniqBy","concat","getTemplateOrFetch","adj","existingTemplate","find","t","template","filter","return","toServer","data","_retrieveURL"],"mappings":"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","sourcesContent":["import \"./user.js\";\nimport \"./snapshot.js\";\nimport \"./feed-data.js\";\nimport \"./preset.js\";\nimport \"./team.js\";\nimport \"./hosted-preso.js\";\nimport \"./appointment-stats.js\";\nimport \"./appointment-tags.js\";\nimport \"../collections/contacts.js\";\nimport \"../collections/appointment-editors.js\";\nimport \"../collections/deck-versions.js\";\nimport \"../collections/opportunities.js\";\nimport \"../collections/section-selections.js\";\nimport \"../collections/slide-selections.js\";\nimport \"../collections/dispatches.js\";\nimport \"../collections/users.js\";\nimport \"../collections/appointment-tags\";\nimport \"../collections/appointment-deckversion-tags\";\nimport \"../collections/appointment-section-tags\";\nimport \"../collections/appointment-slide-tags\";\nimport \"../collections/appointment-adjunct-tags\";\n\nimport { AdjunctSectionCollection } from \"../collections/adjunct-sections.js\";\nimport { AdjunctSlideCollection } from \"../collections/adjunct-slides.js\";\nimport { AdjunctSubSlideCollection } from \"../collections/adjunct-sub-slides.js\";\nimport { AppointmentTemplateCollection } from \"../collections/appointment-templates.js\";\nimport { BaseModel } from \"./base.js\";\nimport { ContactPhoneCollection } from \"../collections/contact-phones.js\";\nimport { DeckNoteCollection } from \"../collections/deck-notes.js\";\nimport Promise from \"bluebird\";\nimport _ from \"lodash\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AppointmentModel\n * @extends models.BaseModel\n */\nexport const AppointmentModel = BaseModel.extend(\n\t/** @lends models.AppointmentModel# */ {\n\t\tmodelName: \"appointments\",\n\n\t\t/**\n\t\t * @property {string} name\n\t\t * @property {string} attendees\n\t\t * @property {date} begin\n\t\t * @property {boolean} created_by_support\n\t\t * @property {date} created_date\n\t\t * @property {string} creation_state\n\t\t * @property {date} end\n\t\t * @property {date} modified_date\n\t\t * @property {string} notes\n\t\t * @property {date} sort_date\n\t\t * @property {string} display_contacts\n\t\t * @property {string} display_title\n\t\t * @property {string} viewtype\n\t\t * @property {boolean} support_mode\n\t\t * @property {boolean} is_muted\n\t\t * @property {boolean} is_signing_enabled\n\t\t * @property {date} no_edit_after\n\t\t * @property {date} no_share_after\n\t\t * @property {date} no_delete_after\n\t\t * @property {string} share_visibility_mode\n\t\t */\n\t\tprops: {\n\t\t\tname: \"stringSanitized\",\n\t\t\tattendees: \"string\",\n\t\t\tbegin: \"date\",\n\t\t\tcontent_modified_date: \"date\",\n\t\t\tcreated_by_support: \"boolean\",\n\t\t\tcreated_date: \"date\",\n\t\t\tcreation_status: \"string\",\n\t\t\tcreation_status_history: \"array\",\n\t\t\teditors_can_change_editors: \"boolean\",\n\t\t\tend: \"date\",\n\t\t\tlocks: \"array\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnotes: \"stringSanitized\",\n\t\t\tsort_date: \"date\",\n\t\t\tdisplay_contacts: \"string\",\n\t\t\tdisplay_title: \"stringSanitized\",\n\t\t\tviewtype: \"string\",\n\t\t\tsupport_mode: \"boolean\",\n\t\t\tis_muted: \"boolean\",\n\t\t\tis_signing_enabled: \"boolean\",\n\t\t\tno_edit_after: \"date\",\n\t\t\tno_share_after: \"date\",\n\t\t\tno_delete_after: \"date\",\n\t\t\tno_snapshot_create_after: \"date\",\n\t\t\tshare_visibility_mode: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.ContactCollection} contact_set\n\t\t * @property {collections.DeckVersionCollection} deckversion_set\n\t\t * @property {collections.OpportunityCollection} opportunity_set\n\t\t * @property {collections.SectionSelectionCollection} appointmentssection_set\n\t\t * @property {collections.SlideSelectionCollection} appointmentsslide_set\n\t\t */\n\t\tcollections: {\n\t\t\tcontact_set: \"ContactCollection\",\n\t\t\tdeckversion_set: \"DeckVersionCollection\",\n\t\t\topportunity_set: \"OpportunityCollection\",\n\t\t\tappointmenteditor_set: \"AppointmentEditorCollection\",\n\t\t\tappointmentssection_set: \"SectionSelectionCollection\",\n\t\t\tappointmentsslide_set: \"SlideSelectionCollection\",\n\t\t\tdispatch_set: \"DispatchCollection\",\n\t\t\tcurrent_editor_set: \"UserCollection\",\n\t\t\ttags: \"AppointmentTagsCollection\",\n\t\t\tappointmentdeckversiontags_set: \"AppointmentDeckVersionTagsCollection\",\n\t\t\tappointmentsectiontags_set: \"AppointmentSectionTagsCollection\",\n\t\t\tappointmentslidetags_set: \"AppointmentSlideTagsCollection\",\n\t\t\tappointmentadjuncttags_set: \"AppointmentAdjunctTagsCollection\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.PresetModel} preset\n\t\t * @property {models.SnapshotModel} latest_snapshot\n\t\t * @property {models.UserModel} user\n\t\t * @property {models.AppointmentStatsModel} appointmentStats\n\t\t */\n\t\tchildren: {\n\t\t\tpreset: \"PresetModel\",\n\t\t\tlatest_snapshot: \"SnapshotModel\",\n\t\t\tlatest_feed_data: \"FeedDataModel\",\n\t\t\tuser: \"UserModel\",\n\t\t\tlatest_tele: \"HostedPresoModel\",\n\t\t\tstats: \"AppointmentStatsModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.AdjunctSlideCollection} adjunctSlides\n\t\t * @property {collections.AdjunctSectionCollection} adjunctSections\n\t\t * @property {collections.AdjunctSubSlideCollection} adjunctSubSlides\n\t\t * @property {boolean} readOnly\n\t\t * @property {boolean} shareOnly\n\t\t */\n\t\tderived: {\n\t\t\tadjunctSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSlides = new AdjunctSlideCollection();\n\t\t\t\t\tadjunctSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSections: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSections = new AdjunctSectionCollection();\n\t\t\t\t\tadjunctSections.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSections;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSubSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSubSlides = new AdjunctSubSlideCollection();\n\t\t\t\t\tadjunctSubSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSubSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tincludedTemplates: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn new AppointmentTemplateCollection(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tappointment: this,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeckNotes: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst appointmentUrl = this.url();\n\t\t\t\t\treturn new DeckNoteCollection({ url: `${appointmentUrl}notes/` });\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotShare: {\n\t\t\t\tdeps: [\"no_share_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_share_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noShareAfter = moment(this.no_share_after);\n\t\t\t\t\treturn moment().diff(noShareAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotEdit: {\n\t\t\t\tdeps: [\"no_edit_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_edit_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noEditAfter = moment(this.no_edit_after);\n\t\t\t\t\treturn moment().diff(noEditAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotDelete: {\n\t\t\t\tdeps: [\"no_delete_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_delete_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noDeleteAfter = moment(this.no_delete_after);\n\t\t\t\t\treturn moment().diff(noDeleteAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotCreateSnapshot: {\n\t\t\t\tdeps: [\"no_snapshot_create_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_snapshot_create_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noCreateAfter = moment(this.no_snapshot_create_after);\n\t\t\t\t\treturn moment().diff(noCreateAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\treadOnly: {\n\t\t\t\tdeps: [\"cannotShare\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotShare;\n\t\t\t\t},\n\t\t\t},\n\t\t\tshareOnly: {\n\t\t\t\tdeps: [\"cannotEdit\", \"cannotDelete\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotEdit || this.cannotDelete;\n\t\t\t\t},\n\t\t\t},\n\t\t\t// This property should be set by the calling code of the appointment and be the set of\n\t\t\t// contact phones for all contacts on this preso. It must be fetchd and set after the contact_set\n\t\t\t// is fetched. It's up to the calling code to decide if this property is required and\n\t\t\t// therefore the extra fetch\n\t\t\tcontactPhones: {\n\t\t\t\tdeps: [\"id\", \"contact_set\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn new ContactPhoneCollection();\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tgetHooksPath() {\n\t\t\tif (!this.deckversion_set.length) {\n\t\t\t\tthrow new Error(\"Requires a deckversion to get hooks.\");\n\t\t\t}\n\t\t\treturn this.deckversion_set.first().getHooksPath();\n\t\t},\n\n\t\tfetchAll(fetchSelf = false, fetchOptions = {}) {\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (!this._url || fetchSelf) {\n\t\t\t\t\t\treturn this.fetch(fetchOptions);\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst fetches = [\n\t\t\t\t\t\tthis.deckversion_set?.fetchModels(fetchOptions),\n\t\t\t\t\t\tthis.appointmentssection_set?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.appointmentsslide_set?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.appointmenteditor_set?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.adjunctSlides?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.adjunctSections?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.adjunctSubSlides?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.contact_set?.fetchSet(fetchOptions),\n\t\t\t\t\t\tthis.tags?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.user?.fetch(fetchOptions)?.catch((e) => {\n\t\t\t\t\t\t\tif (e.status && e.status === 404) {\n\t\t\t\t\t\t\t\t// It's possible for a user to be deactivated, which means they'll\n\t\t\t\t\t\t\t\t// return with a 404. We want to be able to still load the preso,\n\t\t\t\t\t\t\t\t// but it will be readonly.\n\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tthis.deckNotes?.fetch(fetchOptions),\n\t\t\t\t\t\tthis.includedTemplates.fetch(fetchOptions),\n\t\t\t\t\t\tthis.opportunity_set\n\t\t\t\t\t\t\t?.fetchSet(fetchOptions)\n\t\t\t\t\t\t\t?.then(() => {\n\t\t\t\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\t\t\t\tthis.opportunity_set.map((opp) =>\n\t\t\t\t\t\t\t\t\t\topp.customer.fetch(fetchOptions),\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t?.catch(() => {\n\t\t\t\t\t\t\t\tlog.error(\n\t\t\t\t\t\t\t\t\t`Failed to fetch Opportunity set`,\n\t\t\t\t\t\t\t\t\tthis.opportunity_set.toJSON(),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (this.latest_snapshot) {\n\t\t\t\t\t\tfetches.push(this.latest_snapshot.fetch(fetchOptions));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_feed_data) {\n\t\t\t\t\t\tfetches.push(this.latest_feed_data.fetch(fetchOptions));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_tele) {\n\t\t\t\t\t\tfetches.push(this.latest_tele.fetch(fetchOptions));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all(fetches);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\tthis.deckversion_set.map((model) => {\n\t\t\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\t\t\tmodel.screenshots.fetch(fetchOptions),\n\t\t\t\t\t\t\t\tmodel.template_set.fetchSet(fetchOptions),\n\t\t\t\t\t\t\t\tmodel.manifest_json.fetch(fetchOptions),\n\t\t\t\t\t\t\t\tmodel.deck.fetch(fetchOptions),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst deckversionTemplates =\n\t\t\t\t\t\tthis.deckversion_set.first().template_set.models;\n\n\t\t\t\t\tconst allTemplates = _.uniqBy(\n\t\t\t\t\t\tthis.includedTemplates.models.concat(deckversionTemplates),\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t);\n\n\t\t\t\t\tasync function getTemplateOrFetch(adj) {\n\t\t\t\t\t\tconst existingTemplate = allTemplates.find(\n\t\t\t\t\t\t\t(t) => t.id === adj.template.id,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (existingTemplate) {\n\t\t\t\t\t\t\tadj.template = existingTemplate;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tawait adj.template.fetch(fetchOptions);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn adj;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst adjunctSlides = this.adjunctSlides\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => getTemplateOrFetch(adj));\n\n\t\t\t\t\tconst adjunctSections = this.adjunctSections\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => getTemplateOrFetch(adj));\n\n\t\t\t\t\treturn Promise.all([...adjunctSlides, ...adjunctSections]);\n\t\t\t\t})\n\t\t\t\t.return(this);\n\t\t},\n\n\t\ttoServer() {\n\t\t\tconst appointment = this.toJSON();\n\n\t\t\tconst data = {\n\t\t\t\tname: appointment.name,\n\t\t\t\tbegin: appointment.begin,\n\t\t\t\tend: appointment.end,\n\t\t\t\tcreation_status: appointment.creation_status,\n\t\t\t\tcontact_set: this._retrieveURL(appointment.contact_set),\n\t\t\t\tdeckversion_set: this._retrieveURL(appointment.deckversion_set),\n\t\t\t\tnotes: appointment.notes,\n\t\t\t\topportunity_set: this._retrieveURL(appointment.opportunity_set),\n\t\t\t\tuser: this._retrieveURL(appointment.user),\n\t\t\t\tviewtype: appointment.viewtype,\n\t\t\t\tpreset: this._retrieveURL(appointment.preset),\n\t\t\t\tlocks: appointment.locks,\n\t\t\t\tis_muted: appointment.is_muted,\n\t\t\t\tis_signing_enabled: appointment.is_signing_enabled,\n\t\t\t\tno_edit_after: appointment.no_edit_after,\n\t\t\t\tno_share_after: appointment.no_share_after,\n\t\t\t\tno_delete_after: appointment.no_delete_after,\n\t\t\t\tteam: this._retrieveURL(appointment.team),\n\t\t\t\teditors_can_change_editors: appointment.editors_can_change_editors,\n\t\t\t\tshare_visibility_mode: appointment.share_visibility_mode,\n\t\t\t};\n\n\t\t\tif (this.id) {\n\t\t\t\tdata.id = this.id;\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t},\n);\n\nregister(\"AppointmentModel\", AppointmentModel);\n"],"file":"appointment.js"}
@@ -41,6 +41,18 @@ var AssetModel = _base.BaseModel.extend(
41
41
  orig_path: "string"
42
42
  },
43
43
 
44
+ /**
45
+ * The asset serializer actually returns the file in question for the URL.
46
+ * This method returns the actual URL of the asset endpoint, for example:
47
+ *
48
+ * /api/assets/2/
49
+ */
50
+ assetURL: function assetURL() {
51
+ // HACK: For some reason the API endpoint returns a url with a pack in it, but
52
+ // this doesn't actually work. We just want the 'asset' url.
53
+ return "".concat(this.getResourceURL().replace("/packs/{pack.id}", "")).concat(this.id, "/");
54
+ },
55
+
44
56
  /**
45
57
  * @property {models.PackModel} pack
46
58
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/asset.js"],"names":["AssetModel","BaseModel","extend","modelName","urlMatchKeys","props","created_date","data","hash_algorithm","hash_digest","modified_date","orig_path","children","pack","url","_url"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,UAAU,GAAGC,gBAAUC,MAAV;AACzB;AAAiC;AAChCC,EAAAA,SAAS,EAAE,QADqB;AAGhCC,EAAAA,YAAY,EAAE;AACb,eAAW;AADE,GAHkB;;AAOhC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,YAAY,EAAE,MADR;AAENC,IAAAA,IAAI,EAAE,QAFA;AAGNC,IAAAA,cAAc,EAAE,QAHV;AAINC,IAAAA,WAAW,EAAE,QAJP;AAKNC,IAAAA,aAAa,EAAE,MALT;AAMNC,IAAAA,SAAS,EAAE;AANL,GAfyB;;AAwBhC;AACF;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE;AADG,GA3BsB;AA+BhCC,EAAAA,GA/BgC,iBA+B1B;AACL,WAAO,KAAKC,IAAZ;AACA;AAjC+B,CADR,CAAnB;;;AAsCP,6BAAS,YAAT,EAAuBf,UAAvB","sourcesContent":["import \"./pack.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AssetModel\n * @extends models.BaseModel\n */\nexport const AssetModel = BaseModel.extend(\n\t/** @lends models.AssetModel# */ {\n\t\tmodelName: \"assets\",\n\n\t\turlMatchKeys: {\n\t\t\t\"pack.id\": \"number\",\n\t\t},\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {string} data\n\t\t * @property {string} hash_algorithm\n\t\t * @property {string} hash_digest\n\t\t * @property {date} modified_date\n\t\t * @property {string} orig_path\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\tdata: \"string\",\n\t\t\thash_algorithm: \"string\",\n\t\t\thash_digest: \"string\",\n\t\t\tmodified_date: \"date\",\n\t\t\torig_path: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.PackModel} pack\n\t\t */\n\t\tchildren: {\n\t\t\tpack: \"PackModel\",\n\t\t},\n\n\t\turl() {\n\t\t\treturn this._url;\n\t\t},\n\t}\n);\n\nregister(\"AssetModel\", AssetModel);\n"],"file":"asset.js"}
1
+ {"version":3,"sources":["../../src/models/asset.js"],"names":["AssetModel","BaseModel","extend","modelName","urlMatchKeys","props","created_date","data","hash_algorithm","hash_digest","modified_date","orig_path","assetURL","getResourceURL","replace","id","children","pack","url","_url"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,UAAU,GAAGC,gBAAUC,MAAV;AACzB;AAAiC;AAChCC,EAAAA,SAAS,EAAE,QADqB;AAGhCC,EAAAA,YAAY,EAAE;AACb,eAAW;AADE,GAHkB;;AAOhC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,YAAY,EAAE,MADR;AAENC,IAAAA,IAAI,EAAE,QAFA;AAGNC,IAAAA,cAAc,EAAE,QAHV;AAINC,IAAAA,WAAW,EAAE,QAJP;AAKNC,IAAAA,aAAa,EAAE,MALT;AAMNC,IAAAA,SAAS,EAAE;AANL,GAfyB;;AAwBhC;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,QA9BgC,sBA8BrB;AACV;AACA;AACA,qBAAU,KAAKC,cAAL,GAAsBC,OAAtB,CAA8B,kBAA9B,EAAkD,EAAlD,CAAV,SACC,KAAKC,EADN;AAGA,GApC+B;;AAsChC;AACF;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE;AADG,GAzCsB;AA6ChCC,EAAAA,GA7CgC,iBA6C1B;AACL,WAAO,KAAKC,IAAZ;AACA;AA/C+B,CADR,CAAnB;;;AAoDP,6BAAS,YAAT,EAAuBnB,UAAvB","sourcesContent":["import \"./pack.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AssetModel\n * @extends models.BaseModel\n */\nexport const AssetModel = BaseModel.extend(\n\t/** @lends models.AssetModel# */ {\n\t\tmodelName: \"assets\",\n\n\t\turlMatchKeys: {\n\t\t\t\"pack.id\": \"number\",\n\t\t},\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {string} data\n\t\t * @property {string} hash_algorithm\n\t\t * @property {string} hash_digest\n\t\t * @property {date} modified_date\n\t\t * @property {string} orig_path\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\tdata: \"string\",\n\t\t\thash_algorithm: \"string\",\n\t\t\thash_digest: \"string\",\n\t\t\tmodified_date: \"date\",\n\t\t\torig_path: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * The asset serializer actually returns the file in question for the URL.\n\t\t * This method returns the actual URL of the asset endpoint, for example:\n\t\t *\n\t\t * /api/assets/2/\n\t\t */\n\t\tassetURL() {\n\t\t\t// HACK: For some reason the API endpoint returns a url with a pack in it, but\n\t\t\t// this doesn't actually work. We just want the 'asset' url.\n\t\t\treturn `${this.getResourceURL().replace(\"/packs/{pack.id}\", \"\")}${\n\t\t\t\tthis.id\n\t\t\t}/`;\n\t\t},\n\n\t\t/**\n\t\t * @property {models.PackModel} pack\n\t\t */\n\t\tchildren: {\n\t\t\tpack: \"PackModel\",\n\t\t},\n\n\t\turl() {\n\t\t\treturn this._url;\n\t\t},\n\t},\n);\n\nregister(\"AssetModel\", AssetModel);\n"],"file":"asset.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/auto-adjunct-key-check.js"],"names":["AutoAdjunctKeyCheckModel","BaseModel","extend","modelName","props","preferred_keys","children","deck","team","toServer","data","url"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,wBAAwB,GAAGC,gBAAUC,MAAV;AACvC;AAA+C;AAC9CC,EAAAA,SAAS,EAAE,wBADmC;;AAG9C;AACF;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,cAAc,EAAE;AADV,GANuC;;AAU9C;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,IAAI,EAAE;AAFG,GAdoC;AAmB9CC,EAAAA,QAnB8C,sBAmBnC;AACV,QAAMC,IAAI,GAAG;AACZL,MAAAA,cAAc,EAAE,KAAKA,cADT;AAEZE,MAAAA,IAAI,EAAE,KAAKA,IAAL,CAAUI,GAAV;AAFM,KAAb;;AAKA,QAAI,KAAKH,IAAT,EAAe;AACdE,MAAAA,IAAI,CAACF,IAAL,GAAY,KAAKA,IAAL,CAAUG,GAAV,EAAZ;AACA;;AAED,WAAOD,IAAP;AACA;AA9B6C,CADR,CAAjC;;;AAmCP,6BAAS,0BAAT,EAAqCV,wBAArC","sourcesContent":["import \"./template.js\";\nimport \"./team.js\";\nimport \"./deck.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AutoAdjunctKeyCheckModel\n * @extends models.BaseModel\n */\nexport const AutoAdjunctKeyCheckModel = BaseModel.extend(\n\t/** @lends models.AutoAdjunctKeyCheckModel# */ {\n\t\tmodelName: \"autoadjuncts-key-check\",\n\n\t\t/**\n\t\t * @property {array} preferred_keys\n\t\t */\n\t\tprops: {\n\t\t\tpreferred_keys: \"array\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.DeckModel} deck\n\t\t * @property {models.TeamModel} team\n\t\t */\n\t\tchildren: {\n\t\t\tdeck: \"DeckModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\n\t\ttoServer() {\n\t\t\tconst data = {\n\t\t\t\tpreferred_keys: this.preferred_keys,\n\t\t\t\tdeck: this.deck.url(),\n\t\t\t};\n\n\t\t\tif (this.team) {\n\t\t\t\tdata.team = this.team.url();\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t}\n);\n\nregister(\"AutoAdjunctKeyCheckModel\", AutoAdjunctKeyCheckModel);\n"],"file":"auto-adjunct-key-check.js"}
1
+ {"version":3,"sources":["../../src/models/auto-adjunct-key-check.js"],"names":["AutoAdjunctKeyCheckModel","BaseModel","extend","modelName","props","preferred_keys","children","deck","team","toServer","data","url"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,wBAAwB,GAAGC,gBAAUC,MAAV;AACvC;AAA+C;AAC9CC,EAAAA,SAAS,EAAE,wBADmC;;AAG9C;AACF;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,cAAc,EAAE;AADV,GANuC;;AAU9C;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,IAAI,EAAE;AAFG,GAdoC;AAmB9CC,EAAAA,QAnB8C,sBAmBnC;AACV,QAAMC,IAAI,GAAG;AACZL,MAAAA,cAAc,EAAE,KAAKA,cADT;AAEZE,MAAAA,IAAI,EAAE,KAAKA,IAAL,CAAUI,GAAV;AAFM,KAAb;;AAKA,QAAI,KAAKH,IAAT,EAAe;AACdE,MAAAA,IAAI,CAACF,IAAL,GAAY,KAAKA,IAAL,CAAUG,GAAV,EAAZ;AACA;;AAED,WAAOD,IAAP;AACA;AA9B6C,CADR,CAAjC;;;AAmCP,6BAAS,0BAAT,EAAqCV,wBAArC","sourcesContent":["import \"./template.js\";\nimport \"./team.js\";\nimport \"./deck.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AutoAdjunctKeyCheckModel\n * @extends models.BaseModel\n */\nexport const AutoAdjunctKeyCheckModel = BaseModel.extend(\n\t/** @lends models.AutoAdjunctKeyCheckModel# */ {\n\t\tmodelName: \"autoadjuncts-key-check\",\n\n\t\t/**\n\t\t * @property {array} preferred_keys\n\t\t */\n\t\tprops: {\n\t\t\tpreferred_keys: \"array\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.DeckModel} deck\n\t\t * @property {models.TeamModel} team\n\t\t */\n\t\tchildren: {\n\t\t\tdeck: \"DeckModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\n\t\ttoServer() {\n\t\t\tconst data = {\n\t\t\t\tpreferred_keys: this.preferred_keys,\n\t\t\t\tdeck: this.deck.url(),\n\t\t\t};\n\n\t\t\tif (this.team) {\n\t\t\t\tdata.team = this.team.url();\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t},\n);\n\nregister(\"AutoAdjunctKeyCheckModel\", AutoAdjunctKeyCheckModel);\n"],"file":"auto-adjunct-key-check.js"}
@@ -51,7 +51,8 @@ var AutoAdjunctModel = _base.BaseModel.extend(
51
51
  enabled: "boolean",
52
52
  sequence: "number",
53
53
  tags: "array",
54
- cmsvalkey_set: "array"
54
+ cmsvalkey_set: "array",
55
+ _tenancy: "object"
55
56
  },
56
57
 
57
58
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/auto-adjunct.js"],"names":["AutoAdjunctModel","BaseModel","extend","modelName","props","image_128","image_256","image_512","image_1024","image_original","name","parent_key","after_key","key","enabled","sequence","tags","cmsvalkey_set","children","deck","template","team"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,GAAGC,gBAAUC,MAAV;AAC/B;AAAuC;AACtCC,EAAAA,SAAS,EAAE,cAD2B;;AAGtC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,SAAS,EAAE,QADL;AAENC,IAAAA,SAAS,EAAE,QAFL;AAGNC,IAAAA,SAAS,EAAE,QAHL;AAINC,IAAAA,UAAU,EAAE,QAJN;AAKNC,IAAAA,cAAc,EAAE,QALV;AAMNC,IAAAA,IAAI,EAAE,iBANA;AAONC,IAAAA,UAAU,EAAE,QAPN;AAQNC,IAAAA,SAAS,EAAE,QARL;AASNC,IAAAA,GAAG,EAAE,QATC;AAUNC,IAAAA,OAAO,EAAE,SAVH;AAWNC,IAAAA,QAAQ,EAAE,QAXJ;AAYNC,IAAAA,IAAI,EAAE,OAZA;AAaNC,IAAAA,aAAa,EAAE;AAbT,GAhB+B;;AAgCtC;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,QAAQ,EAAE,eAFD;AAGTC,IAAAA,IAAI,EAAE;AAHG;AApC4B,CADR,CAAzB;;;AA6CP,6BAAS,kBAAT,EAA6BrB,gBAA7B","sourcesContent":["import \"./template.js\";\nimport \"./team.js\";\nimport \"./deck.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AutoAdjunctModel\n * @extends models.BaseModel\n */\nexport const AutoAdjunctModel = BaseModel.extend(\n\t/** @lends models.AutoAdjunctModel# */ {\n\t\tmodelName: \"autoadjuncts\",\n\n\t\t/**\n\t\t * @property {string} image_128\n\t\t * @property {string} image_256\n\t\t * @property {string} image_512\n\t\t * @property {string} image_1024\n\t\t * @property {string} image_original\n\t\t * @property {string} name\n\t\t * @property {string} parent_key\n\t\t * @property {string} after_key\n\t\t * @property {boolean} enabled\n\t\t * @property {number} sequence\n\t\t * @property {string[]} cmsvalkey_set\n\t\t */\n\t\tprops: {\n\t\t\timage_128: \"string\",\n\t\t\timage_256: \"string\",\n\t\t\timage_512: \"string\",\n\t\t\timage_1024: \"string\",\n\t\t\timage_original: \"string\",\n\t\t\tname: \"stringSanitized\",\n\t\t\tparent_key: \"string\",\n\t\t\tafter_key: \"string\",\n\t\t\tkey: \"string\",\n\t\t\tenabled: \"boolean\",\n\t\t\tsequence: \"number\",\n\t\t\ttags: \"array\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.DeckModel} deck\n\t\t * @property {models.TemplateModel} template\n\t\t */\n\t\tchildren: {\n\t\t\tdeck: \"DeckModel\",\n\t\t\ttemplate: \"TemplateModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\t}\n);\n\nregister(\"AutoAdjunctModel\", AutoAdjunctModel);\n"],"file":"auto-adjunct.js"}
1
+ {"version":3,"sources":["../../src/models/auto-adjunct.js"],"names":["AutoAdjunctModel","BaseModel","extend","modelName","props","image_128","image_256","image_512","image_1024","image_original","name","parent_key","after_key","key","enabled","sequence","tags","cmsvalkey_set","_tenancy","children","deck","template","team"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,GAAGC,gBAAUC,MAAV;AAC/B;AAAuC;AACtCC,EAAAA,SAAS,EAAE,cAD2B;;AAGtC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,SAAS,EAAE,QADL;AAENC,IAAAA,SAAS,EAAE,QAFL;AAGNC,IAAAA,SAAS,EAAE,QAHL;AAINC,IAAAA,UAAU,EAAE,QAJN;AAKNC,IAAAA,cAAc,EAAE,QALV;AAMNC,IAAAA,IAAI,EAAE,iBANA;AAONC,IAAAA,UAAU,EAAE,QAPN;AAQNC,IAAAA,SAAS,EAAE,QARL;AASNC,IAAAA,GAAG,EAAE,QATC;AAUNC,IAAAA,OAAO,EAAE,SAVH;AAWNC,IAAAA,QAAQ,EAAE,QAXJ;AAYNC,IAAAA,IAAI,EAAE,OAZA;AAaNC,IAAAA,aAAa,EAAE,OAbT;AAcNC,IAAAA,QAAQ,EAAE;AAdJ,GAhB+B;;AAiCtC;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,QAAQ,EAAE,eAFD;AAGTC,IAAAA,IAAI,EAAE;AAHG;AArC4B,CADR,CAAzB;;;AA8CP,6BAAS,kBAAT,EAA6BtB,gBAA7B","sourcesContent":["import \"./template.js\";\nimport \"./team.js\";\nimport \"./deck.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AutoAdjunctModel\n * @extends models.BaseModel\n */\nexport const AutoAdjunctModel = BaseModel.extend(\n\t/** @lends models.AutoAdjunctModel# */ {\n\t\tmodelName: \"autoadjuncts\",\n\n\t\t/**\n\t\t * @property {string} image_128\n\t\t * @property {string} image_256\n\t\t * @property {string} image_512\n\t\t * @property {string} image_1024\n\t\t * @property {string} image_original\n\t\t * @property {string} name\n\t\t * @property {string} parent_key\n\t\t * @property {string} after_key\n\t\t * @property {boolean} enabled\n\t\t * @property {number} sequence\n\t\t * @property {string[]} cmsvalkey_set\n\t\t */\n\t\tprops: {\n\t\t\timage_128: \"string\",\n\t\t\timage_256: \"string\",\n\t\t\timage_512: \"string\",\n\t\t\timage_1024: \"string\",\n\t\t\timage_original: \"string\",\n\t\t\tname: \"stringSanitized\",\n\t\t\tparent_key: \"string\",\n\t\t\tafter_key: \"string\",\n\t\t\tkey: \"string\",\n\t\t\tenabled: \"boolean\",\n\t\t\tsequence: \"number\",\n\t\t\ttags: \"array\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t\t_tenancy: \"object\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.DeckModel} deck\n\t\t * @property {models.TemplateModel} template\n\t\t */\n\t\tchildren: {\n\t\t\tdeck: \"DeckModel\",\n\t\t\ttemplate: \"TemplateModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\t},\n);\n\nregister(\"AutoAdjunctModel\", AutoAdjunctModel);\n"],"file":"auto-adjunct.js"}
@@ -54,6 +54,7 @@ var BaseModel = _ampersandModel.default.extend(
54
54
  {
55
55
  modelName: null,
56
56
  queryData: {},
57
+ detailType: "number",
57
58
  // This is unfortunately necessary to avoid the default ampersand model/state
58
59
  // behaviour from automatically hydrating all children and collections on a fetch.
59
60
  isFetching: false,
@@ -132,6 +133,16 @@ var BaseModel = _ampersandModel.default.extend(
132
133
  if (def && (def.isState || def instanceof _ampersandRestCollection.default)) {
133
134
  dataCopy[key] = def.toJSON();
134
135
  }
136
+
137
+ if (def && Array.isArray(def)) {
138
+ dataCopy[key] = def.map(function (obj) {
139
+ if (obj instanceof _ampersandModel.default) {
140
+ return obj.toJSON();
141
+ }
142
+
143
+ return obj;
144
+ });
145
+ }
135
146
  }
136
147
 
137
148
  this.registerStates();
@@ -183,7 +194,7 @@ var BaseModel = _ampersandModel.default.extend(
183
194
  }
184
195
 
185
196
  var replacements = _lodash.default.extend({}, {
186
- detailKey: "number"
197
+ detailKey: this.detailType
187
198
  }, this.urlMatchKeys);
188
199
 
189
200
  var regexes = Object.keys(replacements).reduce(function (result, key) {
@@ -192,6 +203,8 @@ var BaseModel = _ampersandModel.default.extend(
192
203
 
193
204
  if (type === "number") {
194
205
  result[name] = "\\d+";
206
+ } else if (type === "uuid") {
207
+ result[name] = "([a-z]|[0-9]|-)+";
195
208
  } else if (type === "string") {
196
209
  result[name] = "\\w+";
197
210
  } else {
@@ -253,7 +266,8 @@ var BaseModel = _ampersandModel.default.extend(
253
266
  // and strip out the '/api' from both the resource url and the variable url
254
267
  // so that we can use the remaining part to isolate the id
255
268
  _getIDFromURL: function _getIDFromURL(url) {
256
- var resourceURL = this.getResourceURL();
269
+ var resource = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
270
+ var resourceURL = resource || this.getResourceURL();
257
271
 
258
272
  if (!url || !resourceURL) {
259
273
  return null;
@@ -627,6 +641,10 @@ var BaseModel = _ampersandModel.default.extend(
627
641
 
628
642
  if (resp.slice(-1) !== "/" && resp.indexOf("?") === -1) {
629
643
  resp += "/";
644
+ }
645
+
646
+ if (!resp.includes("{") || !resp.includes("}")) {
647
+ return resp;
630
648
  } // Replace any values in a url with one from the model.
631
649
  // So if you have /path/to/{model.id}/
632
650
  // It will check the model from "this.model.id" and replace
@@ -681,6 +699,10 @@ var BaseModel = _ampersandModel.default.extend(
681
699
  serialize: function serialize() {
682
700
  var _this8 = this;
683
701
 
702
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
703
+ derived: true
704
+ };
705
+
684
706
  // Return nothing if data passed is falsy. More than likely this is
685
707
  // a null value
686
708
  if (!this._data) {
@@ -690,9 +712,7 @@ var BaseModel = _ampersandModel.default.extend(
690
712
  var data = _ampersandModel.default.prototype.serialize.apply(this, arguments);
691
713
 
692
714
  data.url = this.url();
693
- var derived = this.getAttributes({
694
- derived: true
695
- });
715
+ var derived = this.getAttributes(opts);
696
716
  derived = Object.keys(derived).reduce(function (object, key) {
697
717
  var value = derived[key];
698
718
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/base.js"],"names":["BaseModel","Model","extend","modelName","queryData","isFetching","_isFetched","urlMatchKeys","constructor","_data","opts","options","_","defaults","data","_unsetChildren","_unsetCollections","_expandedValues","toJSON","isString","url","isNumber","id","dataCopy","_options","_children","clone","_collections","_definition","_url","key","def","isState","Collection","registerStates","_convertToValues","_getIDFromURL","prototype","call","_setDerived","_initUnsetValues","Object","keys","_derived","derivedKey","derivedProp","set","_matchesURL","matchesDetail","urlRoot","Api","getURL","replacements","detailKey","regexes","reduce","result","type","name","replace","Error","urlWithoutRoot","urlStructure","slice","split","argIndex","findIndex","val","indexOf","attemptedURLWithoutRoot","partial","join","interpolatedString","template","interpolate","e","log","error","dedent","baseString","re","RegExp","test","resourceURL","getResourceURL","urlPath","url2","parse","path","resourceURLPath","resourceEnd","urlEnd","idStr","match","length","parseInt","matchesURL","dataTypes","date","newVal","moment","utc","format","DATE_FORMAT_T","compare","currentVal","isSame","stringSanitized","get","any","default","props","required","toServer","serialize","_registerChildModel","states","prop","model","registeredStates","_registerCollection","state","collection","each","parent","_registerName","_updateResponse","response","forEach","save","apply","arguments","tap","fetch","Auth","headers","then","res","body","actions","isFetched","getSafeAttrs","isUndefined","_values","attrs","uniq","concat","_initChildren","child","_safeSet","listenTo","_getCachedEventBubblingHandler","_initCollections","coll","tmpValue","replacePropertyDefinition","safeSet","property","value","getFullURLPath","qs","stringify","arrayFormat","isNew","getPlainURL","resp","matches","replacement","resources","sync","derived","getAttributes","object","canBeEmpty","_retrieveURL","item","map","isArray","addCollection","addChild","expandCollection","expandChild","defineProperty","includes","configurable"],"mappings":"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","sourcesContent":["import { DATE_FORMAT_T, removeMultiByteChars } from \"../utils.js\";\n\nimport { Api } from \"../api.js\";\nimport Collection from \"ampersand-rest-collection\";\nimport Model from \"ampersand-model\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport qs from \"qs\";\nimport { registeredStates } from \"../state-register.js\";\nimport { sync } from \"../sync.js\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias models.BaseModel\n */\nexport const BaseModel = Model.extend(\n\t/** @lends models.BaseModel# */ {\n\t\tmodelName: null,\n\t\tqueryData: {},\n\n\t\t// This is unfortunately necessary to avoid the default ampersand model/state\n\t\t// behaviour from automatically hydrating all children and collections on a fetch.\n\t\tisFetching: false,\n\n\t\t// Useful to figure out whether the model is just a URL (unfetched), or has been\n\t\t// fetched from the server (an object).\n\t\t_isFetched: true,\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\tconstructor(_data = {}, opts = {}) {\n\t\t\tconst options = _.defaults(opts, {\n\t\t\t\tdata: {},\n\t\t\t});\n\n\t\t\tlet data = _data;\n\n\t\t\tthis._unsetChildren = {};\n\t\t\tthis._unsetCollections = {};\n\t\t\tthis._expandedValues = {};\n\n\t\t\tif (data === null) {\n\t\t\t\tdata = {};\n\t\t\t}\n\n\t\t\t// Allow passing in models\n\t\t\tif (data instanceof Model) {\n\t\t\t\tdata = data.toJSON();\n\t\t\t}\n\n\t\t\tthis.queryData = options.data;\n\n\t\t\t// Convert any strings into a url format we can understand\n\t\t\tif (_.isString(data)) {\n\t\t\t\tdata = { url: data };\n\t\t\t\tthis._isFetched = false;\n\t\t\t}\n\n\t\t\t// Convert model ids into a format we can understand\n\t\t\tif (_.isNumber(data)) {\n\t\t\t\tdata = { id: data };\n\t\t\t\tthis._isFetched = false;\n\t\t\t}\n\n\t\t\tconst dataCopy = _.extend({}, data);\n\n\t\t\tthis._data = dataCopy;\n\t\t\tthis._options = options;\n\n\t\t\t// Stop making edits to these affect other models\n\t\t\tthis._children = _.clone(this._children);\n\t\t\tthis._collections = _.clone(this._collections);\n\t\t\tthis._definition = _.clone(this._definition);\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 (dataCopy && typeof dataCopy.url === \"string\") {\n\t\t\t\tthis._url = dataCopy.url;\n\t\t\t}\n\n\t\t\tfor (const key in dataCopy) {\n\t\t\t\tconst def = dataCopy[key];\n\t\t\t\t// Any models/collections passed into the constructor should be\n\t\t\t\t// converted to JSON so that it can be parsed\n\t\t\t\tif (def && (def.isState || def instanceof Collection)) {\n\t\t\t\t\tdataCopy[key] = def.toJSON();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.registerStates();\n\n\t\t\tthis._convertToValues();\n\n\t\t\tconst id = this._getIDFromURL(this._url);\n\n\t\t\tif (!dataCopy.id && id) {\n\t\t\t\tdataCopy.id = id;\n\t\t\t}\n\n\t\t\tModel.prototype.constructor.call(this, dataCopy, options);\n\n\t\t\tthis._setDerived();\n\n\t\t\t// Re-set the values that were previously children or collections\n\t\t\tthis._initUnsetValues();\n\t\t},\n\n\t\t// If there is a model returned from a derived property, and the model\n\t\t// has been initialzied with model data, we manually set the values on it.\n\t\t_setDerived() {\n\t\t\tfor (const derivedKey of Object.keys(this._derived)) {\n\t\t\t\tif (!this._data[derivedKey]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this[derivedKey] instanceof Model) {\n\t\t\t\t\tfor (const derivedProp of Object.keys(this._data[derivedKey])) {\n\t\t\t\t\t\tthis[derivedKey].set(\n\t\t\t\t\t\t\tderivedProp,\n\t\t\t\t\t\t\tthis._data[derivedKey][derivedProp]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If it's a collection, we can just pass the data straight in\n\t\t\t\tif (this[derivedKey] instanceof Collection) {\n\t\t\t\t\tthis[derivedKey].set(this._data[derivedKey]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Internal function. Used by collection as well.\n\t\t_matchesURL(url, matchesDetail = true) {\n\t\t\tif (!this.modelName || this.urlRoot() === Api.getURL()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst replacements = _.extend(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tdetailKey: \"number\",\n\t\t\t\t},\n\t\t\t\tthis.urlMatchKeys\n\t\t\t);\n\n\t\t\tconst regexes = Object.keys(replacements).reduce((result, key) => {\n\t\t\t\tconst type = replacements[key];\n\t\t\t\tconst name = key.replace(/\\./g, \"_\");\n\t\t\t\tif (type === \"number\") {\n\t\t\t\t\tresult[name] = \"\\\\d+\";\n\t\t\t\t} else if (type === \"string\") {\n\t\t\t\t\tresult[name] = \"\\\\w+\";\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown regex type '${type}'.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}, {});\n\n\t\t\t// Create a starting regex string with variables. Strips the root url so that it could\n\t\t\t// be read from any server.\n\t\t\tconst urlWithoutRoot = this.urlRoot().replace(Api.getURL(), \"\");\n\t\t\tlet urlStructure = urlWithoutRoot.slice();\n\t\t\tif (matchesDetail) {\n\t\t\t\turlStructure += \"{detailKey}/\";\n\t\t\t}\n\n\t\t\t// Let's test if the url has even a remote chance of matching\n\t\t\t// the url (like a partial match, any part without variables).\n\t\t\t// If that doesn't match, we can sometimes prevent a nasty log\n\t\t\t// error from being thrown.\n\t\t\tconst split = urlStructure.split(\"/\");\n\t\t\tconst argIndex = split.findIndex((val) => {\n\t\t\t\treturn val.indexOf(\"{\") === 0;\n\t\t\t});\n\n\t\t\tif (argIndex >= 0) {\n\t\t\t\tconst attemptedURLWithoutRoot = url.replace(Api.getURL(), \"\");\n\n\t\t\t\tconst partial = split.slice(0, argIndex).join(\"/\");\n\t\t\t\tif (attemptedURLWithoutRoot.indexOf(partial) !== 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Replace keys with regexes\n\t\t\tlet interpolatedString;\n\t\t\ttry {\n\t\t\t\tinterpolatedString = _.template(urlStructure.replace(/\\./g, \"_\"), {\n\t\t\t\t\tinterpolate: /{([\\s\\S\\.]+?)}/g,\n\t\t\t\t})(regexes);\n\t\t\t} catch (e) {\n\t\t\t\tlog.error(\n\t\t\t\t\tdedent`\n\t\t\t\tFailed to match URL '${url}' for model '${this.modelName}'.\n\t\t\t\tThis is usually because the regex type for a key hasn't been set.\n\t\t\t\tError: `,\n\t\t\t\t\te\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Convert into a regex and test if url matches\n\t\t\tconst baseString = `.*${interpolatedString.replace(/\\//m, \"/\")}$`;\n\t\t\tconst re = new RegExp(baseString);\n\t\t\treturn re.test(url);\n\t\t},\n\n\t\t// Retrieve the id from the url (if present) without caring about\n\t\t// the hostname.\n\t\t// The url will have a structure like\n\t\t// https://staging-demo.salespreso.com/api/users/1/\n\t\t// and we want to ignore the hostname (https://staging-demo.salespreso.com)\n\t\t// and strip out the '/api' from both the resource url and the variable url\n\t\t// so that we can use the remaining part to isolate the id\n\t\t_getIDFromURL(url) {\n\t\t\tconst resourceURL = this.getResourceURL();\n\n\t\t\tif (!url || !resourceURL) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst urlPath = url2.parse(url).path;\n\t\t\tconst resourceURLPath = url2.parse(resourceURL).path;\n\n\t\t\t// Remove the '/api' if present\n\t\t\tconst resourceEnd = resourceURLPath.split(\"/api\").join(\"\");\n\t\t\tconst urlEnd = urlPath.split(\"/api\").join(\"\");\n\n\t\t\t// If they are the same, there is no id at the end\n\t\t\tif (!urlEnd || urlEnd === resourceEnd) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst idStr = urlEnd.split(resourceEnd).join(\"\");\n\n\t\t\tif ((idStr.match(/\\//g) || []).length === 1) {\n\t\t\t\treturn parseInt(idStr.slice(0, -1), 10);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\t// Public version for details only\n\t\tmatchesURL(url) {\n\t\t\treturn this._matchesURL(url, true);\n\t\t},\n\n\t\tdataTypes: {\n\t\t\tdate: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? moment.utc(newVal).format(DATE_FORMAT_T) : null,\n\t\t\t\t\t\ttype: \"date\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\tif (typeof currentVal === \"undefined\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentVal || newVal) {\n\t\t\t\t\t\treturn moment(currentVal).isSame(moment(newVal));\n\t\t\t\t\t}\n\t\t\t\t\treturn currentVal !== newVal;\n\t\t\t\t},\n\t\t\t},\n\t\t\tstringSanitized: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? removeMultiByteChars(newVal) : newVal,\n\t\t\t\t\t\ttype: \"stringSanitized\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\treturn currentVal === newVal;\n\t\t\t\t},\n\t\t\t\tget: (val) => {\n\t\t\t\t\treturn val;\n\t\t\t\t},\n\t\t\t},\n\t\t\tany: {\n\t\t\t\tdefault: () => {\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {number} [id]\n\t\t */\n\t\tprops: {\n\t\t\tid: { type: \"any\", required: false },\n\t\t},\n\n\t\t/*\n\t\t * Overridable serialization for sending data to\n\t\t * the server\n\t\t */\n\t\ttoServer() {\n\t\t\treturn this.serialize();\n\t\t},\n\n\t\t_registerChildModel(states, prop, model) {\n\t\t\tconst Model = registeredStates[model];\n\t\t\tif (!Model) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${model}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._children[prop] = Model;\n\t\t},\n\n\t\t_registerCollection(state, prop, collection) {\n\t\t\tconst Collection = state[collection];\n\t\t\tif (!Collection) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${collection}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._collections[prop] = Collection;\n\t\t},\n\n\t\t/*\n\t\t * Replace strings respresenting a registered model/collection the function\n\t\t */\n\t\tregisterStates() {\n\t\t\t// Loop through children and replace any parent objects directly to stop\n\t\t\t// maximum stack overflows\n\t\t\t_.each(\n\t\t\t\tthis._children,\n\t\t\t\t(model, prop) => {\n\t\t\t\t\tif (typeof model === \"string\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis._options.parent &&\n\t\t\t\t\t\t\tmodel === this._options.parent._registerName\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// This part is important, if the link stays when there's a circular dependency,\n\t\t\t\t\t\t\t// this will continue forever.\n\t\t\t\t\t\t\tdelete this._children[prop];\n\n\t\t\t\t\t\t\t// Can be a string or an object so we use \"any\". We add the definition\n\t\t\t\t\t\t\t// so that we can retrieve this value later.\n\t\t\t\t\t\t\tthis._definition[prop] = { type: \"any\" };\n\n\t\t\t\t\t\t\tthis[prop] = this._options.parent;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._registerChildModel(registeredStates, prop, model);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\n\t\t\t// Loop throught the collections and replace with the registered collection\n\t\t\t_.each(\n\t\t\t\tthis._collections,\n\t\t\t\t(collection, prop) => {\n\t\t\t\t\tif (typeof collection === \"string\") {\n\t\t\t\t\t\tthis._registerCollection(registeredStates, prop, collection);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\t\t},\n\n\t\t_updateResponse(response) {\n\t\t\tthis._data = response || {};\n\n\t\t\tif (!response) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set previously-initialised children & collections with new\n\t\t\t// data retrieved during the fetch\n\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tsave() {\n\t\t\treturn Model.prototype.save.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\tfetch(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.isFetching = true;\n\t\t\treturn Model.prototype.fetch.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._isFetched = true;\n\t\t\t\tthis.isFetching = false;\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\toptions(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\t\t\treturn SuperAgentRequest(\"OPTIONS\", this.url())\n\t\t\t\t.set(BaseModel.Auth.headers)\n\t\t\t\t.then((res) => {\n\t\t\t\t\tif (res.body && res.body.actions) {\n\t\t\t\t\t\treturn res.body.actions;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\t\t},\n\n\t\tisFetched() {\n\t\t\treturn this._isFetched;\n\t\t},\n\n\t\tgetSafeAttrs(key) {\n\t\t\tif (!_.isUndefined(key)) {\n\t\t\t\treturn !_.isUndefined(this._expandedValues[key])\n\t\t\t\t\t? this._expandedValues[key]\n\t\t\t\t\t: this._values[key];\n\t\t\t}\n\n\t\t\tconst attrs = {};\n\n\t\t\tconst keys = _.uniq(\n\t\t\t\t_.concat(\n\t\t\t\t\t_.concat(\n\t\t\t\t\t\tObject.keys(this._unsetChildren),\n\t\t\t\t\t\tObject.keys(this._unsetCollections)\n\t\t\t\t\t),\n\t\t\t\t\tObject.keys(this._values)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tif (!_.isUndefined(this._values[key])) {\n\t\t\t\t\tattrs[key] = this._values[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._expandedValues).forEach((key) => {\n\t\t\t\tattrs[key] = this[key];\n\t\t\t});\n\n\t\t\treturn attrs;\n\t\t},\n\n\t\t// Unset all specified children and collection constructors and insert value\n\t\t// definitions for them (necessary for Ampersand State to treat them as values)\n\t\t_convertToValues() {\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetChildren[key] = this._children[key];\n\t\t\t\tdelete this._children[key];\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetCollections[key] = this._collections[key];\n\t\t\t\tdelete this._collections[key];\n\t\t\t});\n\t\t},\n\n\t\t// Override the initialization of children to pass in data to the constructor.\n\t\t// The default version always creates an empty model\n\t\t_initChildren() {\n\t\t\tlet child;\n\t\t\tif (!this._children) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (child in this._children) {\n\t\t\t\tlet val = this._data[child];\n\t\t\t\tif (val) {\n\t\t\t\t\t// Assume here that if it's a string, it's a url.\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the child and\n\t\t\t\t// not the constructor. We want to add the non-hydrated url if so.\n\t\t\t\tif (typeof this._children[child] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tnew this._children[child](val, { parent: this })\n\t\t\t\t\t);\n\t\t\t\t\tthis.listenTo(\n\t\t\t\t\t\tthis[child],\n\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\tthis._getCachedEventBubblingHandler(child)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(child, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Override the initialization of collections to pass in data to the constructor.\n\t\t_initCollections() {\n\t\t\tlet coll;\n\t\t\tif (!this._collections) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (coll in this._collections) {\n\t\t\t\tlet val = this._data[coll];\n\t\t\t\tif (val) {\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the collection and\n\t\t\t\t// not the constructor. We want to add the non-hydrated array if so.\n\t\t\t\tif (typeof this._collections[coll] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tcoll,\n\t\t\t\t\t\tnew this._collections[coll](val, { parent: this })\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(coll, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_initUnsetValues() {\n\t\t\t_.each(this._unsetChildren, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\n\t\t\t_.each(this._unsetCollections, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\t\t},\n\n\t\t// Make safeSet less safe... as we do need to run this twice\n\t\t_safeSet: function safeSet(property, value) {\n\t\t\tthis[property] = value;\n\t\t\treturn this;\n\t\t},\n\n\t\turlRoot() {\n\t\t\treturn this.getResourceURL();\n\t\t},\n\n\t\tgetFullURLPath(path) {\n\t\t\tif (path === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet url = path;\n\t\t\tif (url.slice(-1) !== \"/\" && url.indexOf(\"?\") === -1) {\n\t\t\t\turl += \"/\";\n\t\t\t}\n\n\t\t\tif (Object.keys(this.queryData).length) {\n\t\t\t\turl += `?${qs.stringify(this.queryData, { arrayFormat: \"repeat\" })}`;\n\t\t\t}\n\t\t\treturn url;\n\t\t},\n\n\t\t/*\n\t\t * Get url\n\t\t * @return {String}\n\t\t */\n\t\turl() {\n\t\t\tif (this._url && this.isNew()) {\n\t\t\t\treturn this.getFullURLPath(this._url);\n\t\t\t}\n\n\t\t\treturn this.getFullURLPath(this.getPlainURL());\n\t\t},\n\n\t\t// Returns url without query data\n\t\tgetPlainURL() {\n\t\t\tif (!this.modelName) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet resp = Model.prototype.url.call(this);\n\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 model.\n\t\t\t// So if you have /path/to/{model.id}/\n\t\t\t// It will check the model from \"this.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, 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(`Model ${this.modelName} is missing value ${path}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetResourceURL() {\n\t\t\tif (this.modelName === null && !Object.keys(Api.resources).length) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!Object.keys(Api.resources).length) {\n\t\t\t\treturn `/${this.modelName}/`;\n\t\t\t}\n\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\treturn sync.apply(this, arguments);\n\t\t},\n\n\t\tserialize() {\n\t\t\t// Return nothing if data passed is falsy. More than likely this is\n\t\t\t// a null value\n\t\t\tif (!this._data) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst data = Model.prototype.serialize.apply(this, arguments);\n\t\t\tdata.url = this.url();\n\n\t\t\tlet derived = this.getAttributes({ derived: true });\n\t\t\tderived = Object.keys(derived).reduce((object, key) => {\n\t\t\t\tlet value = derived[key];\n\t\t\t\tif (value instanceof Collection || value instanceof Model) {\n\t\t\t\t\tvalue = value.toJSON();\n\t\t\t\t}\n\t\t\t\tobject[key] = value;\n\t\t\t\treturn object;\n\t\t\t}, {});\n\n\t\t\tObject.keys(this._unsetCollections).forEach((key) => {\n\t\t\t\tif (this._unsetCollections[key].canBeEmpty && !this._values[key]) {\n\t\t\t\t\tderived[key] = [];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._unsetChildren).forEach((key) => {\n\t\t\t\tif (\n\t\t\t\t\tthis._unsetChildren[key].canBeEmpty &&\n\t\t\t\t\t!this._values[key] &&\n\t\t\t\t\tthis[key]\n\t\t\t\t) {\n\t\t\t\t\tderived[key] = this[key].url();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn _.extend(data, derived);\n\t\t},\n\t\t// Safely retrieve the url from a child or collection that may or may not\n\t\t// be hydrated\n\t\t_retrieveURL(item) {\n\t\t\tif (_.isUndefined(item) || item === null) {\n\t\t\t\treturn item;\n\t\t\t} else if (typeof item === \"string\") {\n\t\t\t\t// It's just a url string\n\t\t\t\treturn item;\n\t\t\t} else if (item instanceof Model) {\n\t\t\t\treturn item.isNew() && !item._url ? null : item.url();\n\t\t\t} else if (item instanceof Collection) {\n\t\t\t\treturn _.map(item.toJSON(), \"url\");\n\t\t\t} else if (_.isArray(item)) {\n\t\t\t\t// It's an array of urls or objects\n\t\t\t\treturn item.map((child) => {\n\t\t\t\t\treturn this._retrieveURL(child);\n\t\t\t\t});\n\t\t\t} else if (typeof item === \"object\" && item !== null) {\n\t\t\t\treturn typeof item.url === \"function\" ? item.url() : item.url;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t}\n);\n\nfunction replacePropertyDefinition(object, name) {\n\tfunction addCollection(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst collection = new object._collections[name](data, { parent: object });\n\t\tobject._expandedValues[name] = collection;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction addChild(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst child = new object._children[name](data, { parent: object });\n\t\tobject._expandedValues[name] = child;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction expandCollection(value) {\n\t\tobject._collections[name] = object._unsetCollections[name];\n\t\tdelete object._unsetCollections[name];\n\n\t\treturn addCollection(value);\n\t}\n\n\tfunction expandChild(value) {\n\t\tobject._children[name] = object._unsetChildren[name];\n\t\tdelete object._unsetChildren[name];\n\n\t\treturn addChild(value);\n\t}\n\n\tObject.defineProperty(object, name, {\n\t\tset(val) {\n\t\t\tif (_.includes(Object.keys(object._children), name)) {\n\t\t\t\tif (val instanceof Model) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (val !== this[name].url()) {\n\t\t\t\t\taddChild(val);\n\t\t\t\t}\n\t\t\t} else if (_.includes(Object.keys(object._collections), name)) {\n\t\t\t\tif (val instanceof Collection) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (this[name].length || val !== this[name].url()) {\n\t\t\t\t\taddCollection(val);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Model &&\n\t\t\t\t_.includes(Object.keys(object._unsetChildren), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandChild(val.toJSON());\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Collection &&\n\t\t\t\t_.includes(Object.keys(object._unsetCollections), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandCollection(val.toJSON());\n\t\t\t} else {\n\t\t\t\tobject._values[name] = val;\n\t\t\t}\n\t\t},\n\t\tget() {\n\t\t\tif (!this._values) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Trying to retrieve value ${name} of model ${object.modelName} during constructor`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.includes(Object.keys(object._collections), name) ||\n\t\t\t\t\t_.includes(Object.keys(object._children), name)) &&\n\t\t\t\t_.includes(Object.keys(object._expandedValues), name)\n\t\t\t) {\n\t\t\t\treturn object._expandedValues[name];\n\t\t\t}\n\n\t\t\tconst value = object._values[name];\n\n\t\t\tif (this.isFetching) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.isUndefined(value) || value === null) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetChildren[name] && object._unsetChildren[name].canBeEmpty\n\t\t\t\t) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetCollections[name] &&\n\t\t\t\t\tobject._unsetCollections[name].canBeEmpty\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (_.includes(Object.keys(object._unsetCollections), name)) {\n\t\t\t\treturn expandCollection(value);\n\t\t\t} else if (_.includes(Object.keys(object._unsetChildren), name)) {\n\t\t\t\treturn expandChild(value);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tconfigurable: true,\n\t});\n}\n\n// Make matchesURL available as a static method\nBaseModel.matchesURL = function (url) {\n\treturn this.prototype.matchesURL(url);\n};\n"],"file":"base.js"}
1
+ {"version":3,"sources":["../../src/models/base.js"],"names":["BaseModel","Model","extend","modelName","queryData","detailType","isFetching","_isFetched","urlMatchKeys","constructor","_data","opts","options","_","defaults","data","_unsetChildren","_unsetCollections","_expandedValues","toJSON","isString","url","isNumber","id","dataCopy","_options","_children","clone","_collections","_definition","_url","key","def","isState","Collection","Array","isArray","map","obj","registerStates","_convertToValues","_getIDFromURL","prototype","call","_setDerived","_initUnsetValues","Object","keys","_derived","derivedKey","derivedProp","set","_matchesURL","matchesDetail","urlRoot","Api","getURL","replacements","detailKey","regexes","reduce","result","type","name","replace","Error","urlWithoutRoot","urlStructure","slice","split","argIndex","findIndex","val","indexOf","attemptedURLWithoutRoot","partial","join","interpolatedString","template","interpolate","e","log","error","dedent","baseString","re","RegExp","test","resource","resourceURL","getResourceURL","urlPath","url2","parse","path","resourceURLPath","resourceEnd","urlEnd","idStr","match","length","parseInt","matchesURL","dataTypes","date","newVal","moment","utc","format","DATE_FORMAT_T","compare","currentVal","isSame","stringSanitized","get","any","default","props","required","toServer","serialize","_registerChildModel","states","prop","model","registeredStates","_registerCollection","state","collection","each","parent","_registerName","_updateResponse","response","forEach","save","apply","arguments","tap","fetch","Auth","headers","then","res","body","actions","isFetched","getSafeAttrs","isUndefined","_values","attrs","uniq","concat","_initChildren","child","_safeSet","listenTo","_getCachedEventBubblingHandler","_initCollections","coll","tmpValue","replacePropertyDefinition","safeSet","property","value","getFullURLPath","qs","stringify","arrayFormat","isNew","getPlainURL","resp","includes","matches","replacement","resources","sync","derived","getAttributes","object","canBeEmpty","_retrieveURL","item","addCollection","addChild","expandCollection","expandChild","defineProperty","configurable"],"mappings":"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","sourcesContent":["import { DATE_FORMAT_T, removeMultiByteChars } from \"../utils.js\";\n\nimport { Api } from \"../api.js\";\nimport Collection from \"ampersand-rest-collection\";\nimport Model from \"ampersand-model\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport qs from \"qs\";\nimport { registeredStates } from \"../state-register.js\";\nimport { sync } from \"../sync.js\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias models.BaseModel\n */\nexport const BaseModel = Model.extend(\n\t/** @lends models.BaseModel# */ {\n\t\tmodelName: null,\n\t\tqueryData: {},\n\t\tdetailType: \"number\",\n\n\t\t// This is unfortunately necessary to avoid the default ampersand model/state\n\t\t// behaviour from automatically hydrating all children and collections on a fetch.\n\t\tisFetching: false,\n\n\t\t// Useful to figure out whether the model is just a URL (unfetched), or has been\n\t\t// fetched from the server (an object).\n\t\t_isFetched: true,\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\tconstructor(_data = {}, opts = {}) {\n\t\t\tconst options = _.defaults(opts, {\n\t\t\t\tdata: {},\n\t\t\t});\n\n\t\t\tlet data = _data;\n\n\t\t\tthis._unsetChildren = {};\n\t\t\tthis._unsetCollections = {};\n\t\t\tthis._expandedValues = {};\n\n\t\t\tif (data === null) {\n\t\t\t\tdata = {};\n\t\t\t}\n\n\t\t\t// Allow passing in models\n\t\t\tif (data instanceof Model) {\n\t\t\t\tdata = data.toJSON();\n\t\t\t}\n\n\t\t\tthis.queryData = options.data;\n\n\t\t\t// Convert any strings into a url format we can understand\n\t\t\tif (_.isString(data)) {\n\t\t\t\tdata = { url: data };\n\t\t\t\tthis._isFetched = false;\n\t\t\t}\n\n\t\t\t// Convert model ids into a format we can understand\n\t\t\tif (_.isNumber(data)) {\n\t\t\t\tdata = { id: data };\n\t\t\t\tthis._isFetched = false;\n\t\t\t}\n\n\t\t\tconst dataCopy = _.extend({}, data);\n\n\t\t\tthis._data = dataCopy;\n\t\t\tthis._options = options;\n\n\t\t\t// Stop making edits to these affect other models\n\t\t\tthis._children = _.clone(this._children);\n\t\t\tthis._collections = _.clone(this._collections);\n\t\t\tthis._definition = _.clone(this._definition);\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 (dataCopy && typeof dataCopy.url === \"string\") {\n\t\t\t\tthis._url = dataCopy.url;\n\t\t\t}\n\n\t\t\tfor (const key in dataCopy) {\n\t\t\t\tconst def = dataCopy[key];\n\t\t\t\t// Any models/collections passed into the constructor should be\n\t\t\t\t// converted to JSON so that it can be parsed\n\t\t\t\tif (def && (def.isState || def instanceof Collection)) {\n\t\t\t\t\tdataCopy[key] = def.toJSON();\n\t\t\t\t}\n\n\t\t\t\tif (def && Array.isArray(def)) {\n\t\t\t\t\tdataCopy[key] = def.map((obj) => {\n\t\t\t\t\t\tif (obj instanceof Model) {\n\t\t\t\t\t\t\treturn obj.toJSON();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.registerStates();\n\n\t\t\tthis._convertToValues();\n\n\t\t\tconst id = this._getIDFromURL(this._url);\n\n\t\t\tif (!dataCopy.id && id) {\n\t\t\t\tdataCopy.id = id;\n\t\t\t}\n\n\t\t\tModel.prototype.constructor.call(this, dataCopy, options);\n\n\t\t\tthis._setDerived();\n\n\t\t\t// Re-set the values that were previously children or collections\n\t\t\tthis._initUnsetValues();\n\t\t},\n\n\t\t// If there is a model returned from a derived property, and the model\n\t\t// has been initialzied with model data, we manually set the values on it.\n\t\t_setDerived() {\n\t\t\tfor (const derivedKey of Object.keys(this._derived)) {\n\t\t\t\tif (!this._data[derivedKey]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this[derivedKey] instanceof Model) {\n\t\t\t\t\tfor (const derivedProp of Object.keys(this._data[derivedKey])) {\n\t\t\t\t\t\tthis[derivedKey].set(\n\t\t\t\t\t\t\tderivedProp,\n\t\t\t\t\t\t\tthis._data[derivedKey][derivedProp],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If it's a collection, we can just pass the data straight in\n\t\t\t\tif (this[derivedKey] instanceof Collection) {\n\t\t\t\t\tthis[derivedKey].set(this._data[derivedKey]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Internal function. Used by collection as well.\n\t\t_matchesURL(url, matchesDetail = true) {\n\t\t\tif (!this.modelName || this.urlRoot() === Api.getURL()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst replacements = _.extend(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tdetailKey: this.detailType,\n\t\t\t\t},\n\t\t\t\tthis.urlMatchKeys,\n\t\t\t);\n\n\t\t\tconst regexes = Object.keys(replacements).reduce((result, key) => {\n\t\t\t\tconst type = replacements[key];\n\t\t\t\tconst name = key.replace(/\\./g, \"_\");\n\t\t\t\tif (type === \"number\") {\n\t\t\t\t\tresult[name] = \"\\\\d+\";\n\t\t\t\t} else if (type === \"uuid\") {\n\t\t\t\t\tresult[name] = \"([a-z]|[0-9]|-)+\";\n\t\t\t\t} else if (type === \"string\") {\n\t\t\t\t\tresult[name] = \"\\\\w+\";\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown regex type '${type}'.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}, {});\n\n\t\t\t// Create a starting regex string with variables. Strips the root url so that it could\n\t\t\t// be read from any server.\n\t\t\tconst urlWithoutRoot = this.urlRoot().replace(Api.getURL(), \"\");\n\t\t\tlet urlStructure = urlWithoutRoot.slice();\n\t\t\tif (matchesDetail) {\n\t\t\t\turlStructure += \"{detailKey}/\";\n\t\t\t}\n\n\t\t\t// Let's test if the url has even a remote chance of matching\n\t\t\t// the url (like a partial match, any part without variables).\n\t\t\t// If that doesn't match, we can sometimes prevent a nasty log\n\t\t\t// error from being thrown.\n\t\t\tconst split = urlStructure.split(\"/\");\n\t\t\tconst argIndex = split.findIndex((val) => {\n\t\t\t\treturn val.indexOf(\"{\") === 0;\n\t\t\t});\n\n\t\t\tif (argIndex >= 0) {\n\t\t\t\tconst attemptedURLWithoutRoot = url.replace(Api.getURL(), \"\");\n\n\t\t\t\tconst partial = split.slice(0, argIndex).join(\"/\");\n\t\t\t\tif (attemptedURLWithoutRoot.indexOf(partial) !== 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Replace keys with regexes\n\t\t\tlet interpolatedString;\n\t\t\ttry {\n\t\t\t\tinterpolatedString = _.template(urlStructure.replace(/\\./g, \"_\"), {\n\t\t\t\t\tinterpolate: /{([\\s\\S\\.]+?)}/g,\n\t\t\t\t})(regexes);\n\t\t\t} catch (e) {\n\t\t\t\tlog.error(\n\t\t\t\t\tdedent`\n\t\t\t\tFailed to match URL '${url}' for model '${this.modelName}'.\n\t\t\t\tThis is usually because the regex type for a key hasn't been set.\n\t\t\t\tError: `,\n\t\t\t\t\te,\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Convert into a regex and test if url matches\n\t\t\tconst baseString = `.*${interpolatedString.replace(/\\//m, \"/\")}$`;\n\t\t\tconst re = new RegExp(baseString);\n\t\t\treturn re.test(url);\n\t\t},\n\n\t\t// Retrieve the id from the url (if present) without caring about\n\t\t// the hostname.\n\t\t// The url will have a structure like\n\t\t// https://staging-demo.salespreso.com/api/users/1/\n\t\t// and we want to ignore the hostname (https://staging-demo.salespreso.com)\n\t\t// and strip out the '/api' from both the resource url and the variable url\n\t\t// so that we can use the remaining part to isolate the id\n\t\t_getIDFromURL(url, resource = \"\") {\n\t\t\tconst resourceURL = resource || this.getResourceURL();\n\n\t\t\tif (!url || !resourceURL) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst urlPath = url2.parse(url).path;\n\t\t\tconst resourceURLPath = url2.parse(resourceURL).path;\n\n\t\t\t// Remove the '/api' if present\n\t\t\tconst resourceEnd = resourceURLPath.split(\"/api\").join(\"\");\n\t\t\tconst urlEnd = urlPath.split(\"/api\").join(\"\");\n\n\t\t\t// If they are the same, there is no id at the end\n\t\t\tif (!urlEnd || urlEnd === resourceEnd) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst idStr = urlEnd.split(resourceEnd).join(\"\");\n\n\t\t\tif ((idStr.match(/\\//g) || []).length === 1) {\n\t\t\t\treturn parseInt(idStr.slice(0, -1), 10);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\t// Public version for details only\n\t\tmatchesURL(url) {\n\t\t\treturn this._matchesURL(url, true);\n\t\t},\n\n\t\tdataTypes: {\n\t\t\tdate: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? moment.utc(newVal).format(DATE_FORMAT_T) : null,\n\t\t\t\t\t\ttype: \"date\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\tif (typeof currentVal === \"undefined\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentVal || newVal) {\n\t\t\t\t\t\treturn moment(currentVal).isSame(moment(newVal));\n\t\t\t\t\t}\n\t\t\t\t\treturn currentVal !== newVal;\n\t\t\t\t},\n\t\t\t},\n\t\t\tstringSanitized: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? removeMultiByteChars(newVal) : newVal,\n\t\t\t\t\t\ttype: \"stringSanitized\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\treturn currentVal === newVal;\n\t\t\t\t},\n\t\t\t\tget: (val) => {\n\t\t\t\t\treturn val;\n\t\t\t\t},\n\t\t\t},\n\t\t\tany: {\n\t\t\t\tdefault: () => {\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {number} [id]\n\t\t */\n\t\tprops: {\n\t\t\tid: { type: \"any\", required: false },\n\t\t},\n\n\t\t/*\n\t\t * Overridable serialization for sending data to\n\t\t * the server\n\t\t */\n\t\ttoServer() {\n\t\t\treturn this.serialize();\n\t\t},\n\n\t\t_registerChildModel(states, prop, model) {\n\t\t\tconst Model = registeredStates[model];\n\t\t\tif (!Model) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${model}' not found! Did you forget to import it on the '${this.modelName}' model?`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._children[prop] = Model;\n\t\t},\n\n\t\t_registerCollection(state, prop, collection) {\n\t\t\tconst Collection = state[collection];\n\t\t\tif (!Collection) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${collection}' not found! Did you forget to import it on the '${this.modelName}' model?`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._collections[prop] = Collection;\n\t\t},\n\n\t\t/*\n\t\t * Replace strings respresenting a registered model/collection the function\n\t\t */\n\t\tregisterStates() {\n\t\t\t// Loop through children and replace any parent objects directly to stop\n\t\t\t// maximum stack overflows\n\t\t\t_.each(\n\t\t\t\tthis._children,\n\t\t\t\t(model, prop) => {\n\t\t\t\t\tif (typeof model === \"string\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis._options.parent &&\n\t\t\t\t\t\t\tmodel === this._options.parent._registerName\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// This part is important, if the link stays when there's a circular dependency,\n\t\t\t\t\t\t\t// this will continue forever.\n\t\t\t\t\t\t\tdelete this._children[prop];\n\n\t\t\t\t\t\t\t// Can be a string or an object so we use \"any\". We add the definition\n\t\t\t\t\t\t\t// so that we can retrieve this value later.\n\t\t\t\t\t\t\tthis._definition[prop] = { type: \"any\" };\n\n\t\t\t\t\t\t\tthis[prop] = this._options.parent;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._registerChildModel(registeredStates, prop, model);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis,\n\t\t\t);\n\n\t\t\t// Loop throught the collections and replace with the registered collection\n\t\t\t_.each(\n\t\t\t\tthis._collections,\n\t\t\t\t(collection, prop) => {\n\t\t\t\t\tif (typeof collection === \"string\") {\n\t\t\t\t\t\tthis._registerCollection(registeredStates, prop, collection);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis,\n\t\t\t);\n\t\t},\n\n\t\t_updateResponse(response) {\n\t\t\tthis._data = response || {};\n\n\t\t\tif (!response) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set previously-initialised children & collections with new\n\t\t\t// data retrieved during the fetch\n\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tsave() {\n\t\t\treturn Model.prototype.save.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\tfetch(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.isFetching = true;\n\t\t\treturn Model.prototype.fetch.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._isFetched = true;\n\t\t\t\tthis.isFetching = false;\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\toptions(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\t\t\treturn SuperAgentRequest(\"OPTIONS\", this.url())\n\t\t\t\t.set(BaseModel.Auth.headers)\n\t\t\t\t.then((res) => {\n\t\t\t\t\tif (res.body && res.body.actions) {\n\t\t\t\t\t\treturn res.body.actions;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\t\t},\n\n\t\tisFetched() {\n\t\t\treturn this._isFetched;\n\t\t},\n\n\t\tgetSafeAttrs(key) {\n\t\t\tif (!_.isUndefined(key)) {\n\t\t\t\treturn !_.isUndefined(this._expandedValues[key])\n\t\t\t\t\t? this._expandedValues[key]\n\t\t\t\t\t: this._values[key];\n\t\t\t}\n\n\t\t\tconst attrs = {};\n\n\t\t\tconst keys = _.uniq(\n\t\t\t\t_.concat(\n\t\t\t\t\t_.concat(\n\t\t\t\t\t\tObject.keys(this._unsetChildren),\n\t\t\t\t\t\tObject.keys(this._unsetCollections),\n\t\t\t\t\t),\n\t\t\t\t\tObject.keys(this._values),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tif (!_.isUndefined(this._values[key])) {\n\t\t\t\t\tattrs[key] = this._values[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._expandedValues).forEach((key) => {\n\t\t\t\tattrs[key] = this[key];\n\t\t\t});\n\n\t\t\treturn attrs;\n\t\t},\n\n\t\t// Unset all specified children and collection constructors and insert value\n\t\t// definitions for them (necessary for Ampersand State to treat them as values)\n\t\t_convertToValues() {\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetChildren[key] = this._children[key];\n\t\t\t\tdelete this._children[key];\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetCollections[key] = this._collections[key];\n\t\t\t\tdelete this._collections[key];\n\t\t\t});\n\t\t},\n\n\t\t// Override the initialization of children to pass in data to the constructor.\n\t\t// The default version always creates an empty model\n\t\t_initChildren() {\n\t\t\tlet child;\n\t\t\tif (!this._children) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (child in this._children) {\n\t\t\t\tlet val = this._data[child];\n\t\t\t\tif (val) {\n\t\t\t\t\t// Assume here that if it's a string, it's a url.\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the child and\n\t\t\t\t// not the constructor. We want to add the non-hydrated url if so.\n\t\t\t\tif (typeof this._children[child] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tnew this._children[child](val, { parent: this }),\n\t\t\t\t\t);\n\t\t\t\t\tthis.listenTo(\n\t\t\t\t\t\tthis[child],\n\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\tthis._getCachedEventBubblingHandler(child),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(child, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Override the initialization of collections to pass in data to the constructor.\n\t\t_initCollections() {\n\t\t\tlet coll;\n\t\t\tif (!this._collections) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (coll in this._collections) {\n\t\t\t\tlet val = this._data[coll];\n\t\t\t\tif (val) {\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the collection and\n\t\t\t\t// not the constructor. We want to add the non-hydrated array if so.\n\t\t\t\tif (typeof this._collections[coll] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tcoll,\n\t\t\t\t\t\tnew this._collections[coll](val, { parent: this }),\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(coll, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_initUnsetValues() {\n\t\t\t_.each(this._unsetChildren, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\n\t\t\t_.each(this._unsetCollections, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\t\t},\n\n\t\t// Make safeSet less safe... as we do need to run this twice\n\t\t_safeSet: function safeSet(property, value) {\n\t\t\tthis[property] = value;\n\t\t\treturn this;\n\t\t},\n\n\t\turlRoot() {\n\t\t\treturn this.getResourceURL();\n\t\t},\n\n\t\tgetFullURLPath(path) {\n\t\t\tif (path === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet url = path;\n\t\t\tif (url.slice(-1) !== \"/\" && url.indexOf(\"?\") === -1) {\n\t\t\t\turl += \"/\";\n\t\t\t}\n\n\t\t\tif (Object.keys(this.queryData).length) {\n\t\t\t\turl += `?${qs.stringify(this.queryData, { arrayFormat: \"repeat\" })}`;\n\t\t\t}\n\t\t\treturn url;\n\t\t},\n\n\t\t/*\n\t\t * Get url\n\t\t * @return {String}\n\t\t */\n\t\turl() {\n\t\t\tif (this._url && this.isNew()) {\n\t\t\t\treturn this.getFullURLPath(this._url);\n\t\t\t}\n\t\t\treturn this.getFullURLPath(this.getPlainURL());\n\t\t},\n\n\t\t// Returns url without query data\n\t\tgetPlainURL() {\n\t\t\tif (!this.modelName) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet resp = Model.prototype.url.call(this);\n\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 resp;\n\t\t\t}\n\n\t\t\t// Replace any values in a url with one from the model.\n\t\t\t// So if you have /path/to/{model.id}/\n\t\t\t// It will check the model from \"this.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, 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(`Model ${this.modelName} is missing value ${path}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetResourceURL() {\n\t\t\tif (this.modelName === null && !Object.keys(Api.resources).length) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!Object.keys(Api.resources).length) {\n\t\t\t\treturn `/${this.modelName}/`;\n\t\t\t}\n\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\treturn sync.apply(this, arguments);\n\t\t},\n\n\t\tserialize(opts = { derived: true }) {\n\t\t\t// Return nothing if data passed is falsy. More than likely this is\n\t\t\t// a null value\n\t\t\tif (!this._data) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst data = Model.prototype.serialize.apply(this, arguments);\n\t\t\tdata.url = this.url();\n\n\t\t\tlet derived = this.getAttributes(opts);\n\t\t\tderived = Object.keys(derived).reduce((object, key) => {\n\t\t\t\tlet value = derived[key];\n\t\t\t\tif (value instanceof Collection || value instanceof Model) {\n\t\t\t\t\tvalue = value.toJSON();\n\t\t\t\t}\n\t\t\t\tobject[key] = value;\n\t\t\t\treturn object;\n\t\t\t}, {});\n\n\t\t\tObject.keys(this._unsetCollections).forEach((key) => {\n\t\t\t\tif (this._unsetCollections[key].canBeEmpty && !this._values[key]) {\n\t\t\t\t\tderived[key] = [];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._unsetChildren).forEach((key) => {\n\t\t\t\tif (\n\t\t\t\t\tthis._unsetChildren[key].canBeEmpty &&\n\t\t\t\t\t!this._values[key] &&\n\t\t\t\t\tthis[key]\n\t\t\t\t) {\n\t\t\t\t\tderived[key] = this[key].url();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn _.extend(data, derived);\n\t\t},\n\t\t// Safely retrieve the url from a child or collection that may or may not\n\t\t// be hydrated\n\t\t_retrieveURL(item) {\n\t\t\tif (_.isUndefined(item) || item === null) {\n\t\t\t\treturn item;\n\t\t\t} else if (typeof item === \"string\") {\n\t\t\t\t// It's just a url string\n\t\t\t\treturn item;\n\t\t\t} else if (item instanceof Model) {\n\t\t\t\treturn item.isNew() && !item._url ? null : item.url();\n\t\t\t} else if (item instanceof Collection) {\n\t\t\t\treturn _.map(item.toJSON(), \"url\");\n\t\t\t} else if (_.isArray(item)) {\n\t\t\t\t// It's an array of urls or objects\n\t\t\t\treturn item.map((child) => {\n\t\t\t\t\treturn this._retrieveURL(child);\n\t\t\t\t});\n\t\t\t} else if (typeof item === \"object\" && item !== null) {\n\t\t\t\treturn typeof item.url === \"function\" ? item.url() : item.url;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t},\n);\n\nfunction replacePropertyDefinition(object, name) {\n\tfunction addCollection(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst collection = new object._collections[name](data, { parent: object });\n\t\tobject._expandedValues[name] = collection;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction addChild(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst child = new object._children[name](data, { parent: object });\n\t\tobject._expandedValues[name] = child;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction expandCollection(value) {\n\t\tobject._collections[name] = object._unsetCollections[name];\n\t\tdelete object._unsetCollections[name];\n\n\t\treturn addCollection(value);\n\t}\n\n\tfunction expandChild(value) {\n\t\tobject._children[name] = object._unsetChildren[name];\n\t\tdelete object._unsetChildren[name];\n\n\t\treturn addChild(value);\n\t}\n\n\tObject.defineProperty(object, name, {\n\t\tset(val) {\n\t\t\tif (_.includes(Object.keys(object._children), name)) {\n\t\t\t\tif (val instanceof Model) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (val !== this[name].url()) {\n\t\t\t\t\taddChild(val);\n\t\t\t\t}\n\t\t\t} else if (_.includes(Object.keys(object._collections), name)) {\n\t\t\t\tif (val instanceof Collection) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (this[name].length || val !== this[name].url()) {\n\t\t\t\t\taddCollection(val);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Model &&\n\t\t\t\t_.includes(Object.keys(object._unsetChildren), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandChild(val.toJSON());\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Collection &&\n\t\t\t\t_.includes(Object.keys(object._unsetCollections), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandCollection(val.toJSON());\n\t\t\t} else {\n\t\t\t\tobject._values[name] = val;\n\t\t\t}\n\t\t},\n\t\tget() {\n\t\t\tif (!this._values) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Trying to retrieve value ${name} of model ${object.modelName} during constructor`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.includes(Object.keys(object._collections), name) ||\n\t\t\t\t\t_.includes(Object.keys(object._children), name)) &&\n\t\t\t\t_.includes(Object.keys(object._expandedValues), name)\n\t\t\t) {\n\t\t\t\treturn object._expandedValues[name];\n\t\t\t}\n\n\t\t\tconst value = object._values[name];\n\n\t\t\tif (this.isFetching) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.isUndefined(value) || value === null) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetChildren[name] && object._unsetChildren[name].canBeEmpty\n\t\t\t\t) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetCollections[name] &&\n\t\t\t\t\tobject._unsetCollections[name].canBeEmpty\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (_.includes(Object.keys(object._unsetCollections), name)) {\n\t\t\t\treturn expandCollection(value);\n\t\t\t} else if (_.includes(Object.keys(object._unsetChildren), name)) {\n\t\t\t\treturn expandChild(value);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tconfigurable: true,\n\t});\n}\n\n// Make matchesURL available as a static method\nBaseModel.matchesURL = function (url) {\n\treturn this.prototype.matchesURL(url);\n};\n"],"file":"base.js"}