@livepreso/api 6.46.0 → 6.48.0

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