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