@livepreso/api 6.44.0 → 6.45.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 (127) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  3. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  4. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  5. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  6. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  7. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  8. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  9. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  10. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  11. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  12. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  13. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  14. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  15. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  16. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  17. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  18. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  19. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  20. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  21. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  22. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  23. package/.rush/temp/package-deps_build.json +170 -0
  24. package/.rush/temp/package-deps_test.json +38 -36
  25. package/.rush/temp/shrinkwrap-deps.json +231 -240
  26. package/CHANGELOG.json +17 -0
  27. package/CHANGELOG.md +8 -1
  28. package/api.build.log +4 -2
  29. package/bin/test.sh +0 -1
  30. package/cjs/auth.js +36 -10
  31. package/cjs/auth.js.map +1 -1
  32. package/cjs/auth.spec.js +12 -6
  33. package/cjs/auth.spec.js.map +1 -1
  34. package/cjs/collections/base.js +10 -2
  35. package/cjs/collections/base.js.map +1 -1
  36. package/cjs/collections/base.spec.js +22 -4
  37. package/cjs/collections/base.spec.js.map +1 -1
  38. package/cjs/collections/deck-version-screenshots.js +62 -0
  39. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  40. package/cjs/collections.js +13 -0
  41. package/cjs/collections.js.map +1 -1
  42. package/cjs/models/activity-item.js +3 -1
  43. package/cjs/models/activity-item.js.map +1 -1
  44. package/cjs/models/appointment.js +11 -1
  45. package/cjs/models/appointment.js.map +1 -1
  46. package/cjs/models/auto-adjunct.js +3 -1
  47. package/cjs/models/auto-adjunct.js.map +1 -1
  48. package/cjs/models/base.js +19 -1
  49. package/cjs/models/base.js.map +1 -1
  50. package/cjs/models/base.spec.js +9 -0
  51. package/cjs/models/base.spec.js.map +1 -1
  52. package/cjs/models/deck-version-screenshot.js +59 -0
  53. package/cjs/models/deck-version-screenshot.js.map +1 -0
  54. package/cjs/models/deck-version.js +28 -5
  55. package/cjs/models/deck-version.js.map +1 -1
  56. package/cjs/models/feed-data.js +5 -0
  57. package/cjs/models/feed-data.js.map +1 -1
  58. package/cjs/models/image.js +34 -0
  59. package/cjs/models/image.js.map +1 -1
  60. package/cjs/models/manifest-json.js +1 -1
  61. package/cjs/models/manifest-json.js.map +1 -1
  62. package/cjs/models/section.js +3 -1
  63. package/cjs/models/section.js.map +1 -1
  64. package/cjs/models/slide.js +3 -1
  65. package/cjs/models/slide.js.map +1 -1
  66. package/cjs/models/template.js +3 -1
  67. package/cjs/models/template.js.map +1 -1
  68. package/cjs/models/token.js +56 -0
  69. package/cjs/models/token.js.map +1 -0
  70. package/cjs/models/user.js +2 -1
  71. package/cjs/models/user.js.map +1 -1
  72. package/cjs/models.js +26 -0
  73. package/cjs/models.js.map +1 -1
  74. package/cjs/presentation/appointment-presentation.js +7 -3
  75. package/cjs/presentation/appointment-presentation.js.map +1 -1
  76. package/cjs/presentation/base-presentation-model.js +111 -2
  77. package/cjs/presentation/base-presentation-model.js.map +1 -1
  78. package/cjs/presentation/base-presentation-model.spec.js +56 -0
  79. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  80. package/cjs/presentation/presentation-deck.js +33 -6
  81. package/cjs/presentation/presentation-deck.js.map +1 -1
  82. package/cjs/presentation/presentation-deck.spec.js +53 -0
  83. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  84. package/cjs/presentation/presentation-section.js +42 -16
  85. package/cjs/presentation/presentation-section.js.map +1 -1
  86. package/cjs/presentation/presentation-section.spec.js +121 -3
  87. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  88. package/cjs/presentation/presentation-slide.js +30 -13
  89. package/cjs/presentation/presentation-slide.js.map +1 -1
  90. package/cjs/presentation/presentation-slide.spec.js +94 -2
  91. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  92. package/cjs/presentation/presentation.js +112 -8
  93. package/cjs/presentation/presentation.js.map +1 -1
  94. package/jest.config.js +1 -0
  95. package/package.json +4 -4
  96. package/src/auth.js +44 -8
  97. package/src/auth.spec.js +2 -0
  98. package/src/collections/base.js +10 -4
  99. package/src/collections/base.spec.js +17 -3
  100. package/src/collections/deck-version-screenshots.js +48 -0
  101. package/src/collections.js +1 -0
  102. package/src/models/activity-item.js +2 -0
  103. package/src/models/appointment.js +12 -0
  104. package/src/models/auto-adjunct.js +2 -0
  105. package/src/models/base.js +19 -1
  106. package/src/models/base.spec.js +16 -9
  107. package/src/models/deck-version-screenshot.js +48 -0
  108. package/src/models/deck-version.js +30 -4
  109. package/src/models/feed-data.js +2 -0
  110. package/src/models/image.js +32 -0
  111. package/src/models/manifest-json.js +1 -1
  112. package/src/models/section.js +2 -0
  113. package/src/models/slide.js +2 -0
  114. package/src/models/template.js +2 -0
  115. package/src/models/token.js +47 -0
  116. package/src/models/user.js +2 -0
  117. package/src/models.js +2 -0
  118. package/src/presentation/appointment-presentation.js +10 -2
  119. package/src/presentation/base-presentation-model.js +77 -1
  120. package/src/presentation/base-presentation-model.spec.js +77 -0
  121. package/src/presentation/presentation-deck.js +40 -2
  122. package/src/presentation/presentation-deck.spec.js +53 -0
  123. package/src/presentation/presentation-section.js +37 -5
  124. package/src/presentation/presentation-section.spec.js +135 -2
  125. package/src/presentation/presentation-slide.js +25 -5
  126. package/src/presentation/presentation-slide.spec.js +104 -2
  127. package/src/presentation/presentation.js +24 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/collections.js"],"names":[],"mappings":";;;;;;AAGA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/**\n * @namespace collections\n */\nexport * from \"./collections/activity\";\nexport * from \"./collections/adjunct-sections\";\nexport * from \"./collections/adjunct-slides\";\nexport * from \"./collections/adjunct-sub-slides\";\nexport * from \"./collections/appointments\";\nexport * from \"./collections/assets\";\nexport * from \"./collections/auto-adjuncts\";\nexport * from \"./collections/base\";\nexport * from \"./collections/cms-vals\";\nexport * from \"./collections/contacts\";\nexport * from \"./collections/created-assets\";\nexport * from \"./collections/customers\";\nexport * from \"./collections/deck-versions\";\nexport * from \"./collections/decks\";\nexport * from \"./collections/deleted-assets\";\nexport * from \"./collections/dispatches\";\nexport * from \"./collections/events\";\nexport * from \"./collections/event-objects\";\nexport * from \"./collections/deck-notes\";\nexport * from \"./collections/opportunities\";\nexport * from \"./collections/pack-diffs\";\nexport * from \"./collections/packs\";\nexport * from \"./collections/presets\";\nexport * from \"./collections/section-selections\";\nexport * from \"./collections/sections\";\nexport * from \"./collections/slide-selections\";\nexport * from \"./collections/slides\";\nexport * from \"./collections/snapshots\";\nexport * from \"./collections/sub-slides\";\nexport * from \"./collections/groups\";\nexport * from \"./collections/images\";\nexport * from \"./collections/users\";\nexport * from \"./collections/uploads\";\nexport * from \"./collections/appointment-editors.js\";\nexport * from \"./collections/appointment-duplicates.js\";\nexport * from \"./collections/tags.js\";\nexport * from \"./collections/teams.js\";\nexport * from \"./collections/templates.js\";\nexport * from \"./collections/appointment-tags.js\";\nexport * from \"./collections/appointment-deckversion-tags.js\";\nexport * from \"./collections/appointment-section-tags.js\";\nexport * from \"./collections/appointment-slide-tags.js\";\nexport * from \"./collections/appointment-adjunct-tags.js\";\n"],"file":"collections.js"}
1
+ {"version":3,"sources":["../src/collections.js"],"names":[],"mappings":";;;;;;AAGA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/**\n * @namespace collections\n */\nexport * from \"./collections/activity\";\nexport * from \"./collections/adjunct-sections\";\nexport * from \"./collections/adjunct-slides\";\nexport * from \"./collections/adjunct-sub-slides\";\nexport * from \"./collections/appointments\";\nexport * from \"./collections/assets\";\nexport * from \"./collections/auto-adjuncts\";\nexport * from \"./collections/base\";\nexport * from \"./collections/cms-vals\";\nexport * from \"./collections/contacts\";\nexport * from \"./collections/created-assets\";\nexport * from \"./collections/customers\";\nexport * from \"./collections/deck-versions\";\nexport * from \"./collections/deck-version-screenshots\";\nexport * from \"./collections/decks\";\nexport * from \"./collections/deleted-assets\";\nexport * from \"./collections/dispatches\";\nexport * from \"./collections/events\";\nexport * from \"./collections/event-objects\";\nexport * from \"./collections/deck-notes\";\nexport * from \"./collections/opportunities\";\nexport * from \"./collections/pack-diffs\";\nexport * from \"./collections/packs\";\nexport * from \"./collections/presets\";\nexport * from \"./collections/section-selections\";\nexport * from \"./collections/sections\";\nexport * from \"./collections/slide-selections\";\nexport * from \"./collections/slides\";\nexport * from \"./collections/snapshots\";\nexport * from \"./collections/sub-slides\";\nexport * from \"./collections/groups\";\nexport * from \"./collections/images\";\nexport * from \"./collections/users\";\nexport * from \"./collections/uploads\";\nexport * from \"./collections/appointment-editors.js\";\nexport * from \"./collections/appointment-duplicates.js\";\nexport * from \"./collections/tags.js\";\nexport * from \"./collections/teams.js\";\nexport * from \"./collections/templates.js\";\nexport * from \"./collections/appointment-tags.js\";\nexport * from \"./collections/appointment-deckversion-tags.js\";\nexport * from \"./collections/appointment-section-tags.js\";\nexport * from \"./collections/appointment-slide-tags.js\";\nexport * from \"./collections/appointment-adjunct-tags.js\";\n"],"file":"collections.js"}
@@ -55,7 +55,9 @@ var ActivityItemModel = _base.BaseModel.extend(
55
55
  notes: "stringSanitized",
56
56
  notyours: "boolean",
57
57
  onshare: "boolean",
58
- view_type: "string"
58
+ view_type: "string",
59
+ is_muted: "boolean",
60
+ appointment_is_deleted: "boolean"
59
61
  },
60
62
  children: {
61
63
  hostedpreso: "HostedPresoModel",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/activity-item.js"],"names":["ActivityItemModel","BaseModel","extend","modelName","urlMatchKeys","id","props","user","activity","activity_date","appointment","appointment_name","from_appointment","contacts","customers","decks","from_user","to_user","contact","created_date","modified_date","notes","notyours","onshare","view_type","children","hostedpreso","dispatch","appointmentviewing","serialize","data","prototype","call","AppointmentModel","url","appointmentID"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,iBAAiB,GAAGC,gBAAUC,MAAV;AAChC;AAAwC;AACvCC,EAAAA,SAAS,EAAE,YAD4B;AAGvCC,EAAAA,YAAY,EAAE;AACbC,IAAAA,EAAE,EAAE;AADS,GAHyB;AAOvCC,EAAAA,KAAK,EAAE;AACNC,IAAAA,IAAI,EAAE,QADA;AAENC,IAAAA,QAAQ,EAAE,QAFJ;AAGNC,IAAAA,aAAa,EAAE,MAHT;AAINC,IAAAA,WAAW,EAAE,QAJP;AAKNC,IAAAA,gBAAgB,EAAE,QALZ;AAMNC,IAAAA,gBAAgB,EAAE,QANZ;AAONC,IAAAA,QAAQ,EAAE,OAPJ;AAQNC,IAAAA,SAAS,EAAE,OARL;AASNC,IAAAA,KAAK,EAAE,OATD;AAUNC,IAAAA,SAAS,EAAE,QAVL;AAWNC,IAAAA,OAAO,EAAE,QAXH;AAYNC,IAAAA,OAAO,EAAE,QAZH;AAaNC,IAAAA,YAAY,EAAE,MAbR;AAcNC,IAAAA,aAAa,EAAE,MAdT;AAeNC,IAAAA,KAAK,EAAE,iBAfD;AAgBNC,IAAAA,QAAQ,EAAE,SAhBJ;AAiBNC,IAAAA,OAAO,EAAE,SAjBH;AAkBNC,IAAAA,SAAS,EAAE;AAlBL,GAPgC;AA4BvCC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,WAAW,EAAE,kBADJ;AAETC,IAAAA,QAAQ,EAAE,eAFD;AAGTC,IAAAA,kBAAkB,EAAE;AAHX,GA5B6B;AAkCvCC,EAAAA,SAlCuC,uBAkC3B;AACX,QAAMC,IAAI,GAAG7B,gBAAU8B,SAAV,CAAoBF,SAApB,CAA8BG,IAA9B,CAAmC,IAAnC,CAAb;;AAEA,QAAMtB,WAAW,GAAG,IAAIuB,6BAAJ,CAAqB;AACxCC,MAAAA,GAAG,EAAEJ,IAAI,CAACpB,WAAL,CAAiBwB;AADkB,KAArB,CAApB;AAIA;AACCC,MAAAA,aAAa,EAAEzB,WAAW,CAACL;AAD5B,OAEIyB,IAFJ;AAIA;AA7CsC,CADR,CAA1B;;;AAkDP,6BAAS,mBAAT,EAA8B9B,iBAA9B","sourcesContent":["import \"../models/dispatch.js\";\nimport \"./hosted-preso.js\";\nimport \"./appointment-viewing.js\";\n\nimport { AppointmentModel } from \"../models/appointment.js\";\nimport { BaseModel } from \"../models/base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.ActivityItemModel\n * @extends models.BaseModel\n */\nexport const ActivityItemModel = BaseModel.extend(\n\t/** @lends models.ActivityItemModel# */ {\n\t\tmodelName: \"activities\",\n\n\t\turlMatchKeys: {\n\t\t\tid: \"number\",\n\t\t},\n\n\t\tprops: {\n\t\t\tuser: \"object\",\n\t\t\tactivity: \"string\",\n\t\t\tactivity_date: \"date\",\n\t\t\tappointment: \"object\",\n\t\t\tappointment_name: \"string\",\n\t\t\tfrom_appointment: \"object\",\n\t\t\tcontacts: \"array\",\n\t\t\tcustomers: \"array\",\n\t\t\tdecks: \"array\",\n\t\t\tfrom_user: \"object\",\n\t\t\tto_user: \"object\",\n\t\t\tcontact: \"object\",\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnotes: \"stringSanitized\",\n\t\t\tnotyours: \"boolean\",\n\t\t\tonshare: \"boolean\",\n\t\t\tview_type: \"string\",\n\t\t},\n\n\t\tchildren: {\n\t\t\thostedpreso: \"HostedPresoModel\",\n\t\t\tdispatch: \"DispatchModel\",\n\t\t\tappointmentviewing: \"AppointmentViewingModel\",\n\t\t},\n\n\t\tserialize() {\n\t\t\tconst data = BaseModel.prototype.serialize.call(this);\n\n\t\t\tconst appointment = new AppointmentModel({\n\t\t\t\turl: data.appointment.url,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tappointmentID: appointment.id,\n\t\t\t\t...data,\n\t\t\t};\n\t\t},\n\t}\n);\n\nregister(\"ActivityItemModel\", ActivityItemModel);\n"],"file":"activity-item.js"}
1
+ {"version":3,"sources":["../../src/models/activity-item.js"],"names":["ActivityItemModel","BaseModel","extend","modelName","urlMatchKeys","id","props","user","activity","activity_date","appointment","appointment_name","from_appointment","contacts","customers","decks","from_user","to_user","contact","created_date","modified_date","notes","notyours","onshare","view_type","is_muted","appointment_is_deleted","children","hostedpreso","dispatch","appointmentviewing","serialize","data","prototype","call","AppointmentModel","url","appointmentID"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,iBAAiB,GAAGC,gBAAUC,MAAV;AAChC;AAAwC;AACvCC,EAAAA,SAAS,EAAE,YAD4B;AAGvCC,EAAAA,YAAY,EAAE;AACbC,IAAAA,EAAE,EAAE;AADS,GAHyB;AAOvCC,EAAAA,KAAK,EAAE;AACNC,IAAAA,IAAI,EAAE,QADA;AAENC,IAAAA,QAAQ,EAAE,QAFJ;AAGNC,IAAAA,aAAa,EAAE,MAHT;AAINC,IAAAA,WAAW,EAAE,QAJP;AAKNC,IAAAA,gBAAgB,EAAE,QALZ;AAMNC,IAAAA,gBAAgB,EAAE,QANZ;AAONC,IAAAA,QAAQ,EAAE,OAPJ;AAQNC,IAAAA,SAAS,EAAE,OARL;AASNC,IAAAA,KAAK,EAAE,OATD;AAUNC,IAAAA,SAAS,EAAE,QAVL;AAWNC,IAAAA,OAAO,EAAE,QAXH;AAYNC,IAAAA,OAAO,EAAE,QAZH;AAaNC,IAAAA,YAAY,EAAE,MAbR;AAcNC,IAAAA,aAAa,EAAE,MAdT;AAeNC,IAAAA,KAAK,EAAE,iBAfD;AAgBNC,IAAAA,QAAQ,EAAE,SAhBJ;AAiBNC,IAAAA,OAAO,EAAE,SAjBH;AAkBNC,IAAAA,SAAS,EAAE,QAlBL;AAmBNC,IAAAA,QAAQ,EAAE,SAnBJ;AAoBNC,IAAAA,sBAAsB,EAAE;AApBlB,GAPgC;AA8BvCC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,WAAW,EAAE,kBADJ;AAETC,IAAAA,QAAQ,EAAE,eAFD;AAGTC,IAAAA,kBAAkB,EAAE;AAHX,GA9B6B;AAoCvCC,EAAAA,SApCuC,uBAoC3B;AACX,QAAMC,IAAI,GAAG/B,gBAAUgC,SAAV,CAAoBF,SAApB,CAA8BG,IAA9B,CAAmC,IAAnC,CAAb;;AAEA,QAAMxB,WAAW,GAAG,IAAIyB,6BAAJ,CAAqB;AACxCC,MAAAA,GAAG,EAAEJ,IAAI,CAACtB,WAAL,CAAiB0B;AADkB,KAArB,CAApB;AAIA;AACCC,MAAAA,aAAa,EAAE3B,WAAW,CAACL;AAD5B,OAEI2B,IAFJ;AAIA;AA/CsC,CADR,CAA1B;;;AAoDP,6BAAS,mBAAT,EAA8BhC,iBAA9B","sourcesContent":["import \"../models/dispatch.js\";\nimport \"./hosted-preso.js\";\nimport \"./appointment-viewing.js\";\n\nimport { AppointmentModel } from \"../models/appointment.js\";\nimport { BaseModel } from \"../models/base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.ActivityItemModel\n * @extends models.BaseModel\n */\nexport const ActivityItemModel = BaseModel.extend(\n\t/** @lends models.ActivityItemModel# */ {\n\t\tmodelName: \"activities\",\n\n\t\turlMatchKeys: {\n\t\t\tid: \"number\",\n\t\t},\n\n\t\tprops: {\n\t\t\tuser: \"object\",\n\t\t\tactivity: \"string\",\n\t\t\tactivity_date: \"date\",\n\t\t\tappointment: \"object\",\n\t\t\tappointment_name: \"string\",\n\t\t\tfrom_appointment: \"object\",\n\t\t\tcontacts: \"array\",\n\t\t\tcustomers: \"array\",\n\t\t\tdecks: \"array\",\n\t\t\tfrom_user: \"object\",\n\t\t\tto_user: \"object\",\n\t\t\tcontact: \"object\",\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnotes: \"stringSanitized\",\n\t\t\tnotyours: \"boolean\",\n\t\t\tonshare: \"boolean\",\n\t\t\tview_type: \"string\",\n\t\t\tis_muted: \"boolean\",\n\t\t\tappointment_is_deleted: \"boolean\",\n\t\t},\n\n\t\tchildren: {\n\t\t\thostedpreso: \"HostedPresoModel\",\n\t\t\tdispatch: \"DispatchModel\",\n\t\t\tappointmentviewing: \"AppointmentViewingModel\",\n\t\t},\n\n\t\tserialize() {\n\t\t\tconst data = BaseModel.prototype.serialize.call(this);\n\n\t\t\tconst appointment = new AppointmentModel({\n\t\t\t\turl: data.appointment.url,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tappointmentID: appointment.id,\n\t\t\t\t...data,\n\t\t\t};\n\t\t},\n\t}\n);\n\nregister(\"ActivityItemModel\", ActivityItemModel);\n"],"file":"activity-item.js"}
@@ -86,6 +86,7 @@ var AppointmentModel = _base.BaseModel.extend(
86
86
  * @property {string} display_title
87
87
  * @property {string} viewtype
88
88
  * @property {boolean} support_mode
89
+ * @property {boolean} is_muted
89
90
  * @property {date} no_edit_after
90
91
  * @property {date} no_share_after
91
92
  * @property {date} no_delete_after
@@ -109,6 +110,7 @@ var AppointmentModel = _base.BaseModel.extend(
109
110
  display_title: "stringSanitized",
110
111
  viewtype: "string",
111
112
  support_mode: "boolean",
113
+ is_muted: "boolean",
112
114
  no_edit_after: "date",
113
115
  no_share_after: "date",
114
116
  no_delete_after: "date",
@@ -252,6 +254,13 @@ var AppointmentModel = _base.BaseModel.extend(
252
254
  }
253
255
  }
254
256
  },
257
+ getHooksPath: function getHooksPath() {
258
+ if (!this.deckversion_set.length) {
259
+ throw new Error("Requires a deckversion to get hooks.");
260
+ }
261
+
262
+ return this.deckversion_set.first().getHooksPath();
263
+ },
255
264
  fetchAll: function fetchAll() {
256
265
  var _this = this;
257
266
 
@@ -309,7 +318,7 @@ var AppointmentModel = _base.BaseModel.extend(
309
318
  return _bluebird.default.all([].concat((0, _toConsumableArray2.default)(adjunctSlides), (0, _toConsumableArray2.default)(adjunctSections)));
310
319
  }).then(function () {
311
320
  return _bluebird.default.all(_this.deckversion_set.map(function (model) {
312
- return _bluebird.default.all([model.template_set.fetchSet(options), model.manifest_json.fetch(options), model.deck.fetch(options)]);
321
+ return _bluebird.default.all([model.screenshots.fetch(options), model.template_set.fetchSet(options), model.manifest_json.fetch(options), model.deck.fetch(options)]);
313
322
  }));
314
323
  }).return(this);
315
324
  },
@@ -328,6 +337,7 @@ var AppointmentModel = _base.BaseModel.extend(
328
337
  viewtype: appointment.viewtype,
329
338
  preset: this._retrieveURL(appointment.preset),
330
339
  locks: appointment.locks,
340
+ is_muted: appointment.is_muted,
331
341
  no_edit_after: appointment.no_edit_after,
332
342
  no_share_after: appointment.no_share_after,
333
343
  no_delete_after: appointment.no_delete_after,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/appointment.js"],"names":["AppointmentModel","BaseModel","extend","modelName","props","name","attendees","begin","content_modified_date","created_by_support","created_date","creation_status","creation_status_history","editors_can_change_editors","end","locks","modified_date","notes","sort_date","display_contacts","display_title","viewtype","support_mode","no_edit_after","no_share_after","no_delete_after","no_snapshot_create_after","collections","contact_set","deckversion_set","opportunity_set","appointmenteditor_set","appointmentssection_set","appointmentsslide_set","dispatch_set","current_editor_set","tags","appointmentdeckversiontags_set","appointmentsectiontags_set","appointmentslidetags_set","appointmentadjuncttags_set","children","preset","latest_snapshot","latest_feed_data","user","latest_tele","stats","team","derived","adjunctSlides","deps","fn","AdjunctSlideCollection","queryData","appointment","id","adjunctSections","AdjunctSectionCollection","adjunctSubSlides","AdjunctSubSlideCollection","deckNotes","appointmentUrl","url","DeckNoteCollection","cannotShare","noShareAfter","diff","cannotEdit","noEditAfter","cannotDelete","noDeleteAfter","cannotCreateSnapshot","noCreateAfter","readOnly","shareOnly","fetchAll","fetchSelf","options","Promise","resolve","then","_url","fetch","fetches","fetchModels","fetchSet","catch","e","status","log","error","toJSON","push","all","filter","adj","template","map","model","template_set","manifest_json","deck","return","toServer","data","_retrieveURL"],"mappings":"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","sourcesContent":["import \"./user.js\";\nimport \"./snapshot.js\";\nimport \"./feed-data.js\";\nimport \"./preset.js\";\nimport \"./team.js\";\nimport \"./hosted-preso.js\";\nimport \"./appointment-stats.js\";\nimport \"./appointment-tags.js\";\nimport \"../collections/contacts.js\";\nimport \"../collections/appointment-editors.js\";\nimport \"../collections/deck-versions.js\";\nimport \"../collections/opportunities.js\";\nimport \"../collections/section-selections.js\";\nimport \"../collections/slide-selections.js\";\nimport \"../collections/dispatches.js\";\nimport \"../collections/users.js\";\nimport \"../collections/appointment-tags\";\n\nimport { AdjunctSectionCollection } from \"../collections/adjunct-sections.js\";\nimport { AdjunctSlideCollection } from \"../collections/adjunct-slides.js\";\nimport { AdjunctSubSlideCollection } from \"../collections/adjunct-sub-slides.js\";\nimport { BaseModel } from \"./base.js\";\nimport { DeckNoteCollection } from \"../collections/deck-notes.js\";\nimport Promise from \"bluebird\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AppointmentModel\n * @extends models.BaseModel\n */\nexport const AppointmentModel = BaseModel.extend(\n\t/** @lends models.AppointmentModel# */ {\n\t\tmodelName: \"appointments\",\n\n\t\t/**\n\t\t * @property {string} name\n\t\t * @property {string} attendees\n\t\t * @property {date} begin\n\t\t * @property {boolean} created_by_support\n\t\t * @property {date} created_date\n\t\t * @property {string} creation_state\n\t\t * @property {date} end\n\t\t * @property {date} modified_date\n\t\t * @property {string} notes\n\t\t * @property {date} sort_date\n\t\t * @property {string} display_contacts\n\t\t * @property {string} display_title\n\t\t * @property {string} viewtype\n\t\t * @property {boolean} support_mode\n\t\t * @property {date} no_edit_after\n\t\t * @property {date} no_share_after\n\t\t * @property {date} no_delete_after\n\t\t */\n\t\tprops: {\n\t\t\tname: \"stringSanitized\",\n\t\t\tattendees: \"string\",\n\t\t\tbegin: \"date\",\n\t\t\tcontent_modified_date: \"date\",\n\t\t\tcreated_by_support: \"boolean\",\n\t\t\tcreated_date: \"date\",\n\t\t\tcreation_status: \"string\",\n\t\t\tcreation_status_history: \"array\",\n\t\t\teditors_can_change_editors: \"boolean\",\n\t\t\tend: \"date\",\n\t\t\tlocks: \"array\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnotes: \"stringSanitized\",\n\t\t\tsort_date: \"date\",\n\t\t\tdisplay_contacts: \"string\",\n\t\t\tdisplay_title: \"stringSanitized\",\n\t\t\tviewtype: \"string\",\n\t\t\tsupport_mode: \"boolean\",\n\t\t\tno_edit_after: \"date\",\n\t\t\tno_share_after: \"date\",\n\t\t\tno_delete_after: \"date\",\n\t\t\tno_snapshot_create_after: \"date\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.ContactCollection} contact_set\n\t\t * @property {collections.DeckVersionCollection} deckversion_set\n\t\t * @property {collections.OpportunityCollection} opportunity_set\n\t\t * @property {collections.SectionSelectionCollection} appointmentssection_set\n\t\t * @property {collections.SlideSelectionCollection} appointmentsslide_set\n\t\t */\n\t\tcollections: {\n\t\t\tcontact_set: \"ContactCollection\",\n\t\t\tdeckversion_set: \"DeckVersionCollection\",\n\t\t\topportunity_set: \"OpportunityCollection\",\n\t\t\tappointmenteditor_set: \"AppointmentEditorCollection\",\n\t\t\tappointmentssection_set: \"SectionSelectionCollection\",\n\t\t\tappointmentsslide_set: \"SlideSelectionCollection\",\n\t\t\tdispatch_set: \"DispatchCollection\",\n\t\t\tcurrent_editor_set: \"UserCollection\",\n\t\t\ttags: \"AppointmentTagsCollection\",\n\t\t\tappointmentdeckversiontags_set: \"AppointmentDeckVersionTagsCollection\",\n\t\t\tappointmentsectiontags_set: \"AppointmentSectionTagsCollection\",\n\t\t\tappointmentslidetags_set: \"AppointmentSlideTagsCollection\",\n\t\t\tappointmentadjuncttags_set: \"AppointmentAdjunctTagsCollection\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.PresetModel} preset\n\t\t * @property {models.SnapshotModel} latest_snapshot\n\t\t * @property {models.UserModel} user\n\t\t * @property {models.AppointmentStatsModel} appointmentStats\n\t\t */\n\t\tchildren: {\n\t\t\tpreset: \"PresetModel\",\n\t\t\tlatest_snapshot: \"SnapshotModel\",\n\t\t\tlatest_feed_data: \"FeedDataModel\",\n\t\t\tuser: \"UserModel\",\n\t\t\tlatest_tele: \"HostedPresoModel\",\n\t\t\tstats: \"AppointmentStatsModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.AdjunctSlideCollection} adjunctSlides\n\t\t * @property {collections.AdjunctSectionCollection} adjunctSections\n\t\t * @property {collections.AdjunctSubSlideCollection} adjunctSubSlides\n\t\t * @property {boolean} readOnly\n\t\t * @property {boolean} shareOnly\n\t\t */\n\t\tderived: {\n\t\t\tadjunctSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSlides = new AdjunctSlideCollection();\n\t\t\t\t\tadjunctSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSections: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSections = new AdjunctSectionCollection();\n\t\t\t\t\tadjunctSections.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSections;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSubSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSubSlides = new AdjunctSubSlideCollection();\n\t\t\t\t\tadjunctSubSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSubSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeckNotes: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst appointmentUrl = this.url();\n\t\t\t\t\treturn new DeckNoteCollection({ url: `${appointmentUrl}notes/` });\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotShare: {\n\t\t\t\tdeps: [\"no_share_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_share_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noShareAfter = moment(this.no_share_after);\n\t\t\t\t\treturn moment().diff(noShareAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotEdit: {\n\t\t\t\tdeps: [\"no_edit_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_edit_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noEditAfter = moment(this.no_edit_after);\n\t\t\t\t\treturn moment().diff(noEditAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotDelete: {\n\t\t\t\tdeps: [\"no_delete_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_delete_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noDeleteAfter = moment(this.no_delete_after);\n\t\t\t\t\treturn moment().diff(noDeleteAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotCreateSnapshot: {\n\t\t\t\tdeps: [\"no_snapshot_create_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_snapshot_create_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noCreateAfter = moment(this.no_snapshot_create_after);\n\t\t\t\t\treturn moment().diff(noCreateAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\treadOnly: {\n\t\t\t\tdeps: [\"cannotShare\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotShare;\n\t\t\t\t},\n\t\t\t},\n\t\t\tshareOnly: {\n\t\t\t\tdeps: [\"cannotEdit\", \"cannotDelete\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotEdit || this.cannotDelete;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tfetchAll(fetchSelf = false, options = {}) {\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (!this._url || fetchSelf) {\n\t\t\t\t\t\treturn this.fetch(options);\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst fetches = [\n\t\t\t\t\t\tthis.deckversion_set.fetchModels(options),\n\t\t\t\t\t\tthis.appointmentssection_set.fetch(options),\n\t\t\t\t\t\tthis.appointmentsslide_set.fetch(options),\n\t\t\t\t\t\tthis.appointmenteditor_set.fetch(options),\n\t\t\t\t\t\tthis.adjunctSlides.fetch(options),\n\t\t\t\t\t\tthis.adjunctSections.fetch(options),\n\t\t\t\t\t\tthis.adjunctSubSlides.fetch(options),\n\t\t\t\t\t\tthis.contact_set.fetchSet(options),\n\t\t\t\t\t\tthis.tags.fetch(options),\n\t\t\t\t\t\tthis.user.fetch(options).catch((e) => {\n\t\t\t\t\t\t\tif (e.status && e.status === 404) {\n\t\t\t\t\t\t\t\t// It's possible for a user to be deactivated, which means they'll\n\t\t\t\t\t\t\t\t// return with a 404. We want to be able to still load the preso,\n\t\t\t\t\t\t\t\t// but it will be readonly.\n\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tthis.deckNotes.fetch(options),\n\t\t\t\t\t\tthis.opportunity_set.fetchSet(options).catch(() => {\n\t\t\t\t\t\t\tlog.error(\n\t\t\t\t\t\t\t\t`Failed to fetch Opportunity set`,\n\t\t\t\t\t\t\t\tthis.opportunity_set.toJSON()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t\t\t}),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (this.latest_snapshot) {\n\t\t\t\t\t\tfetches.push(this.latest_snapshot.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_feed_data) {\n\t\t\t\t\t\tfetches.push(this.latest_feed_data.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_tele) {\n\t\t\t\t\t\tfetches.push(this.latest_tele.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all(fetches);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst adjunctSlides = this.adjunctSlides\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => adj.template.fetch(options));\n\t\t\t\t\tconst adjunctSections = this.adjunctSections\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => adj.template.fetch(options));\n\n\t\t\t\t\treturn Promise.all([...adjunctSlides, ...adjunctSections]);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\tthis.deckversion_set.map((model) => {\n\t\t\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\t\t\tmodel.template_set.fetchSet(options),\n\t\t\t\t\t\t\t\tmodel.manifest_json.fetch(options),\n\t\t\t\t\t\t\t\tmodel.deck.fetch(options),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.return(this);\n\t\t},\n\n\t\ttoServer() {\n\t\t\tconst appointment = this.toJSON();\n\n\t\t\tconst data = {\n\t\t\t\tname: appointment.name,\n\t\t\t\tbegin: appointment.begin,\n\t\t\t\tend: appointment.end,\n\t\t\t\tcreation_status: appointment.creation_status,\n\t\t\t\tcontact_set: this._retrieveURL(appointment.contact_set),\n\t\t\t\tdeckversion_set: this._retrieveURL(appointment.deckversion_set),\n\t\t\t\tnotes: appointment.notes,\n\t\t\t\topportunity_set: this._retrieveURL(appointment.opportunity_set),\n\t\t\t\tuser: this._retrieveURL(appointment.user),\n\t\t\t\tviewtype: appointment.viewtype,\n\t\t\t\tpreset: this._retrieveURL(appointment.preset),\n\t\t\t\tlocks: appointment.locks,\n\t\t\t\tno_edit_after: appointment.no_edit_after,\n\t\t\t\tno_share_after: appointment.no_share_after,\n\t\t\t\tno_delete_after: appointment.no_delete_after,\n\t\t\t\tteam: this._retrieveURL(appointment.team),\n\t\t\t\teditors_can_change_editors: appointment.editors_can_change_editors,\n\t\t\t};\n\n\t\t\tif (this.id) {\n\t\t\t\tdata.id = this.id;\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t}\n);\n\nregister(\"AppointmentModel\", AppointmentModel);\n"],"file":"appointment.js"}
1
+ {"version":3,"sources":["../../src/models/appointment.js"],"names":["AppointmentModel","BaseModel","extend","modelName","props","name","attendees","begin","content_modified_date","created_by_support","created_date","creation_status","creation_status_history","editors_can_change_editors","end","locks","modified_date","notes","sort_date","display_contacts","display_title","viewtype","support_mode","is_muted","no_edit_after","no_share_after","no_delete_after","no_snapshot_create_after","collections","contact_set","deckversion_set","opportunity_set","appointmenteditor_set","appointmentssection_set","appointmentsslide_set","dispatch_set","current_editor_set","tags","appointmentdeckversiontags_set","appointmentsectiontags_set","appointmentslidetags_set","appointmentadjuncttags_set","children","preset","latest_snapshot","latest_feed_data","user","latest_tele","stats","team","derived","adjunctSlides","deps","fn","AdjunctSlideCollection","queryData","appointment","id","adjunctSections","AdjunctSectionCollection","adjunctSubSlides","AdjunctSubSlideCollection","deckNotes","appointmentUrl","url","DeckNoteCollection","cannotShare","noShareAfter","diff","cannotEdit","noEditAfter","cannotDelete","noDeleteAfter","cannotCreateSnapshot","noCreateAfter","readOnly","shareOnly","getHooksPath","length","Error","first","fetchAll","fetchSelf","options","Promise","resolve","then","_url","fetch","fetches","fetchModels","fetchSet","catch","e","status","log","error","toJSON","push","all","filter","adj","template","map","model","screenshots","template_set","manifest_json","deck","return","toServer","data","_retrieveURL"],"mappings":"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","sourcesContent":["import \"./user.js\";\nimport \"./snapshot.js\";\nimport \"./feed-data.js\";\nimport \"./preset.js\";\nimport \"./team.js\";\nimport \"./hosted-preso.js\";\nimport \"./appointment-stats.js\";\nimport \"./appointment-tags.js\";\nimport \"../collections/contacts.js\";\nimport \"../collections/appointment-editors.js\";\nimport \"../collections/deck-versions.js\";\nimport \"../collections/opportunities.js\";\nimport \"../collections/section-selections.js\";\nimport \"../collections/slide-selections.js\";\nimport \"../collections/dispatches.js\";\nimport \"../collections/users.js\";\nimport \"../collections/appointment-tags\";\n\nimport { AdjunctSectionCollection } from \"../collections/adjunct-sections.js\";\nimport { AdjunctSlideCollection } from \"../collections/adjunct-slides.js\";\nimport { AdjunctSubSlideCollection } from \"../collections/adjunct-sub-slides.js\";\nimport { BaseModel } from \"./base.js\";\nimport { DeckNoteCollection } from \"../collections/deck-notes.js\";\nimport Promise from \"bluebird\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AppointmentModel\n * @extends models.BaseModel\n */\nexport const AppointmentModel = BaseModel.extend(\n\t/** @lends models.AppointmentModel# */ {\n\t\tmodelName: \"appointments\",\n\n\t\t/**\n\t\t * @property {string} name\n\t\t * @property {string} attendees\n\t\t * @property {date} begin\n\t\t * @property {boolean} created_by_support\n\t\t * @property {date} created_date\n\t\t * @property {string} creation_state\n\t\t * @property {date} end\n\t\t * @property {date} modified_date\n\t\t * @property {string} notes\n\t\t * @property {date} sort_date\n\t\t * @property {string} display_contacts\n\t\t * @property {string} display_title\n\t\t * @property {string} viewtype\n\t\t * @property {boolean} support_mode\n\t\t * @property {boolean} is_muted\n\t\t * @property {date} no_edit_after\n\t\t * @property {date} no_share_after\n\t\t * @property {date} no_delete_after\n\t\t */\n\t\tprops: {\n\t\t\tname: \"stringSanitized\",\n\t\t\tattendees: \"string\",\n\t\t\tbegin: \"date\",\n\t\t\tcontent_modified_date: \"date\",\n\t\t\tcreated_by_support: \"boolean\",\n\t\t\tcreated_date: \"date\",\n\t\t\tcreation_status: \"string\",\n\t\t\tcreation_status_history: \"array\",\n\t\t\teditors_can_change_editors: \"boolean\",\n\t\t\tend: \"date\",\n\t\t\tlocks: \"array\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnotes: \"stringSanitized\",\n\t\t\tsort_date: \"date\",\n\t\t\tdisplay_contacts: \"string\",\n\t\t\tdisplay_title: \"stringSanitized\",\n\t\t\tviewtype: \"string\",\n\t\t\tsupport_mode: \"boolean\",\n\t\t\tis_muted: \"boolean\",\n\t\t\tno_edit_after: \"date\",\n\t\t\tno_share_after: \"date\",\n\t\t\tno_delete_after: \"date\",\n\t\t\tno_snapshot_create_after: \"date\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.ContactCollection} contact_set\n\t\t * @property {collections.DeckVersionCollection} deckversion_set\n\t\t * @property {collections.OpportunityCollection} opportunity_set\n\t\t * @property {collections.SectionSelectionCollection} appointmentssection_set\n\t\t * @property {collections.SlideSelectionCollection} appointmentsslide_set\n\t\t */\n\t\tcollections: {\n\t\t\tcontact_set: \"ContactCollection\",\n\t\t\tdeckversion_set: \"DeckVersionCollection\",\n\t\t\topportunity_set: \"OpportunityCollection\",\n\t\t\tappointmenteditor_set: \"AppointmentEditorCollection\",\n\t\t\tappointmentssection_set: \"SectionSelectionCollection\",\n\t\t\tappointmentsslide_set: \"SlideSelectionCollection\",\n\t\t\tdispatch_set: \"DispatchCollection\",\n\t\t\tcurrent_editor_set: \"UserCollection\",\n\t\t\ttags: \"AppointmentTagsCollection\",\n\t\t\tappointmentdeckversiontags_set: \"AppointmentDeckVersionTagsCollection\",\n\t\t\tappointmentsectiontags_set: \"AppointmentSectionTagsCollection\",\n\t\t\tappointmentslidetags_set: \"AppointmentSlideTagsCollection\",\n\t\t\tappointmentadjuncttags_set: \"AppointmentAdjunctTagsCollection\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.PresetModel} preset\n\t\t * @property {models.SnapshotModel} latest_snapshot\n\t\t * @property {models.UserModel} user\n\t\t * @property {models.AppointmentStatsModel} appointmentStats\n\t\t */\n\t\tchildren: {\n\t\t\tpreset: \"PresetModel\",\n\t\t\tlatest_snapshot: \"SnapshotModel\",\n\t\t\tlatest_feed_data: \"FeedDataModel\",\n\t\t\tuser: \"UserModel\",\n\t\t\tlatest_tele: \"HostedPresoModel\",\n\t\t\tstats: \"AppointmentStatsModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.AdjunctSlideCollection} adjunctSlides\n\t\t * @property {collections.AdjunctSectionCollection} adjunctSections\n\t\t * @property {collections.AdjunctSubSlideCollection} adjunctSubSlides\n\t\t * @property {boolean} readOnly\n\t\t * @property {boolean} shareOnly\n\t\t */\n\t\tderived: {\n\t\t\tadjunctSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSlides = new AdjunctSlideCollection();\n\t\t\t\t\tadjunctSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSections: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSections = new AdjunctSectionCollection();\n\t\t\t\t\tadjunctSections.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSections;\n\t\t\t\t},\n\t\t\t},\n\t\t\tadjunctSubSlides: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst adjunctSubSlides = new AdjunctSubSlideCollection();\n\t\t\t\t\tadjunctSubSlides.queryData.appointment = this.id;\n\t\t\t\t\treturn adjunctSubSlides;\n\t\t\t\t},\n\t\t\t},\n\t\t\tdeckNotes: {\n\t\t\t\tdeps: [\"id\"],\n\t\t\t\tfn() {\n\t\t\t\t\tconst appointmentUrl = this.url();\n\t\t\t\t\treturn new DeckNoteCollection({ url: `${appointmentUrl}notes/` });\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotShare: {\n\t\t\t\tdeps: [\"no_share_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_share_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noShareAfter = moment(this.no_share_after);\n\t\t\t\t\treturn moment().diff(noShareAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotEdit: {\n\t\t\t\tdeps: [\"no_edit_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_edit_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noEditAfter = moment(this.no_edit_after);\n\t\t\t\t\treturn moment().diff(noEditAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotDelete: {\n\t\t\t\tdeps: [\"no_delete_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_delete_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noDeleteAfter = moment(this.no_delete_after);\n\t\t\t\t\treturn moment().diff(noDeleteAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\tcannotCreateSnapshot: {\n\t\t\t\tdeps: [\"no_snapshot_create_after\"],\n\t\t\t\tfn() {\n\t\t\t\t\tif (!this.no_snapshot_create_after) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst noCreateAfter = moment(this.no_snapshot_create_after);\n\t\t\t\t\treturn moment().diff(noCreateAfter) > 0;\n\t\t\t\t},\n\t\t\t},\n\t\t\treadOnly: {\n\t\t\t\tdeps: [\"cannotShare\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotShare;\n\t\t\t\t},\n\t\t\t},\n\t\t\tshareOnly: {\n\t\t\t\tdeps: [\"cannotEdit\", \"cannotDelete\"],\n\t\t\t\tfn() {\n\t\t\t\t\treturn this.cannotEdit || this.cannotDelete;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tgetHooksPath() {\n\t\t\tif (!this.deckversion_set.length) {\n\t\t\t\tthrow new Error(\"Requires a deckversion to get hooks.\");\n\t\t\t}\n\t\t\treturn this.deckversion_set.first().getHooksPath();\n\t\t},\n\n\t\tfetchAll(fetchSelf = false, options = {}) {\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (!this._url || fetchSelf) {\n\t\t\t\t\t\treturn this.fetch(options);\n\t\t\t\t\t}\n\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst fetches = [\n\t\t\t\t\t\tthis.deckversion_set.fetchModels(options),\n\t\t\t\t\t\tthis.appointmentssection_set.fetch(options),\n\t\t\t\t\t\tthis.appointmentsslide_set.fetch(options),\n\t\t\t\t\t\tthis.appointmenteditor_set.fetch(options),\n\t\t\t\t\t\tthis.adjunctSlides.fetch(options),\n\t\t\t\t\t\tthis.adjunctSections.fetch(options),\n\t\t\t\t\t\tthis.adjunctSubSlides.fetch(options),\n\t\t\t\t\t\tthis.contact_set.fetchSet(options),\n\t\t\t\t\t\tthis.tags.fetch(options),\n\t\t\t\t\t\tthis.user.fetch(options).catch((e) => {\n\t\t\t\t\t\t\tif (e.status && e.status === 404) {\n\t\t\t\t\t\t\t\t// It's possible for a user to be deactivated, which means they'll\n\t\t\t\t\t\t\t\t// return with a 404. We want to be able to still load the preso,\n\t\t\t\t\t\t\t\t// but it will be readonly.\n\t\t\t\t\t\t\t\tthis.user = null;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow e;\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tthis.deckNotes.fetch(options),\n\t\t\t\t\t\tthis.opportunity_set.fetchSet(options).catch(() => {\n\t\t\t\t\t\t\tlog.error(\n\t\t\t\t\t\t\t\t`Failed to fetch Opportunity set`,\n\t\t\t\t\t\t\t\tthis.opportunity_set.toJSON()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t\t\t}),\n\t\t\t\t\t];\n\n\t\t\t\t\tif (this.latest_snapshot) {\n\t\t\t\t\t\tfetches.push(this.latest_snapshot.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_feed_data) {\n\t\t\t\t\t\tfetches.push(this.latest_feed_data.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.latest_tele) {\n\t\t\t\t\t\tfetches.push(this.latest_tele.fetch(options));\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Promise.all(fetches);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tconst adjunctSlides = this.adjunctSlides\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => adj.template.fetch(options));\n\t\t\t\t\tconst adjunctSections = this.adjunctSections\n\t\t\t\t\t\t.filter((adj) => adj.template)\n\t\t\t\t\t\t.map((adj) => adj.template.fetch(options));\n\n\t\t\t\t\treturn Promise.all([...adjunctSlides, ...adjunctSections]);\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\tthis.deckversion_set.map((model) => {\n\t\t\t\t\t\t\treturn Promise.all([\n\t\t\t\t\t\t\t\tmodel.screenshots.fetch(options),\n\t\t\t\t\t\t\t\tmodel.template_set.fetchSet(options),\n\t\t\t\t\t\t\t\tmodel.manifest_json.fetch(options),\n\t\t\t\t\t\t\t\tmodel.deck.fetch(options),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.return(this);\n\t\t},\n\n\t\ttoServer() {\n\t\t\tconst appointment = this.toJSON();\n\n\t\t\tconst data = {\n\t\t\t\tname: appointment.name,\n\t\t\t\tbegin: appointment.begin,\n\t\t\t\tend: appointment.end,\n\t\t\t\tcreation_status: appointment.creation_status,\n\t\t\t\tcontact_set: this._retrieveURL(appointment.contact_set),\n\t\t\t\tdeckversion_set: this._retrieveURL(appointment.deckversion_set),\n\t\t\t\tnotes: appointment.notes,\n\t\t\t\topportunity_set: this._retrieveURL(appointment.opportunity_set),\n\t\t\t\tuser: this._retrieveURL(appointment.user),\n\t\t\t\tviewtype: appointment.viewtype,\n\t\t\t\tpreset: this._retrieveURL(appointment.preset),\n\t\t\t\tlocks: appointment.locks,\n\t\t\t\tis_muted: appointment.is_muted,\n\t\t\t\tno_edit_after: appointment.no_edit_after,\n\t\t\t\tno_share_after: appointment.no_share_after,\n\t\t\t\tno_delete_after: appointment.no_delete_after,\n\t\t\t\tteam: this._retrieveURL(appointment.team),\n\t\t\t\teditors_can_change_editors: appointment.editors_can_change_editors,\n\t\t\t};\n\n\t\t\tif (this.id) {\n\t\t\t\tdata.id = this.id;\n\t\t\t}\n\n\t\t\treturn data;\n\t\t},\n\t}\n);\n\nregister(\"AppointmentModel\", AppointmentModel);\n"],"file":"appointment.js"}
@@ -36,6 +36,7 @@ var AutoAdjunctModel = _base.BaseModel.extend(
36
36
  * @property {string} after_key
37
37
  * @property {boolean} enabled
38
38
  * @property {number} sequence
39
+ * @property {string[]} cmsvalkey_set
39
40
  */
40
41
  props: {
41
42
  image_128: "string",
@@ -49,7 +50,8 @@ var AutoAdjunctModel = _base.BaseModel.extend(
49
50
  key: "string",
50
51
  enabled: "boolean",
51
52
  sequence: "number",
52
- tags: "array"
53
+ tags: "array",
54
+ cmsvalkey_set: "array"
53
55
  },
54
56
 
55
57
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/auto-adjunct.js"],"names":["AutoAdjunctModel","BaseModel","extend","modelName","props","image_128","image_256","image_512","image_1024","image_original","name","parent_key","after_key","key","enabled","sequence","tags","children","deck","template","team"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,GAAGC,gBAAUC,MAAV;AAC/B;AAAuC;AACtCC,EAAAA,SAAS,EAAE,cAD2B;;AAGtC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,SAAS,EAAE,QADL;AAENC,IAAAA,SAAS,EAAE,QAFL;AAGNC,IAAAA,SAAS,EAAE,QAHL;AAINC,IAAAA,UAAU,EAAE,QAJN;AAKNC,IAAAA,cAAc,EAAE,QALV;AAMNC,IAAAA,IAAI,EAAE,iBANA;AAONC,IAAAA,UAAU,EAAE,QAPN;AAQNC,IAAAA,SAAS,EAAE,QARL;AASNC,IAAAA,GAAG,EAAE,QATC;AAUNC,IAAAA,OAAO,EAAE,SAVH;AAWNC,IAAAA,QAAQ,EAAE,QAXJ;AAYNC,IAAAA,IAAI,EAAE;AAZA,GAf+B;;AA8BtC;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,QAAQ,EAAE,eAFD;AAGTC,IAAAA,IAAI,EAAE;AAHG;AAlC4B,CADR,CAAzB;;;AA2CP,6BAAS,kBAAT,EAA6BpB,gBAA7B","sourcesContent":["import \"./template.js\";\nimport \"./team.js\";\nimport \"./deck.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AutoAdjunctModel\n * @extends models.BaseModel\n */\nexport const AutoAdjunctModel = BaseModel.extend(\n\t/** @lends models.AutoAdjunctModel# */ {\n\t\tmodelName: \"autoadjuncts\",\n\n\t\t/**\n\t\t * @property {string} image_128\n\t\t * @property {string} image_256\n\t\t * @property {string} image_512\n\t\t * @property {string} image_1024\n\t\t * @property {string} image_original\n\t\t * @property {string} name\n\t\t * @property {string} parent_key\n\t\t * @property {string} after_key\n\t\t * @property {boolean} enabled\n\t\t * @property {number} sequence\n\t\t */\n\t\tprops: {\n\t\t\timage_128: \"string\",\n\t\t\timage_256: \"string\",\n\t\t\timage_512: \"string\",\n\t\t\timage_1024: \"string\",\n\t\t\timage_original: \"string\",\n\t\t\tname: \"stringSanitized\",\n\t\t\tparent_key: \"string\",\n\t\t\tafter_key: \"string\",\n\t\t\tkey: \"string\",\n\t\t\tenabled: \"boolean\",\n\t\t\tsequence: \"number\",\n\t\t\ttags: \"array\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.DeckModel} deck\n\t\t * @property {models.TemplateModel} template\n\t\t */\n\t\tchildren: {\n\t\t\tdeck: \"DeckModel\",\n\t\t\ttemplate: \"TemplateModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\t}\n);\n\nregister(\"AutoAdjunctModel\", AutoAdjunctModel);\n"],"file":"auto-adjunct.js"}
1
+ {"version":3,"sources":["../../src/models/auto-adjunct.js"],"names":["AutoAdjunctModel","BaseModel","extend","modelName","props","image_128","image_256","image_512","image_1024","image_original","name","parent_key","after_key","key","enabled","sequence","tags","cmsvalkey_set","children","deck","template","team"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,gBAAgB,GAAGC,gBAAUC,MAAV;AAC/B;AAAuC;AACtCC,EAAAA,SAAS,EAAE,cAD2B;;AAGtC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,SAAS,EAAE,QADL;AAENC,IAAAA,SAAS,EAAE,QAFL;AAGNC,IAAAA,SAAS,EAAE,QAHL;AAINC,IAAAA,UAAU,EAAE,QAJN;AAKNC,IAAAA,cAAc,EAAE,QALV;AAMNC,IAAAA,IAAI,EAAE,iBANA;AAONC,IAAAA,UAAU,EAAE,QAPN;AAQNC,IAAAA,SAAS,EAAE,QARL;AASNC,IAAAA,GAAG,EAAE,QATC;AAUNC,IAAAA,OAAO,EAAE,SAVH;AAWNC,IAAAA,QAAQ,EAAE,QAXJ;AAYNC,IAAAA,IAAI,EAAE,OAZA;AAaNC,IAAAA,aAAa,EAAE;AAbT,GAhB+B;;AAgCtC;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,IAAI,EAAE,WADG;AAETC,IAAAA,QAAQ,EAAE,eAFD;AAGTC,IAAAA,IAAI,EAAE;AAHG;AApC4B,CADR,CAAzB;;;AA6CP,6BAAS,kBAAT,EAA6BrB,gBAA7B","sourcesContent":["import \"./template.js\";\nimport \"./team.js\";\nimport \"./deck.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.AutoAdjunctModel\n * @extends models.BaseModel\n */\nexport const AutoAdjunctModel = BaseModel.extend(\n\t/** @lends models.AutoAdjunctModel# */ {\n\t\tmodelName: \"autoadjuncts\",\n\n\t\t/**\n\t\t * @property {string} image_128\n\t\t * @property {string} image_256\n\t\t * @property {string} image_512\n\t\t * @property {string} image_1024\n\t\t * @property {string} image_original\n\t\t * @property {string} name\n\t\t * @property {string} parent_key\n\t\t * @property {string} after_key\n\t\t * @property {boolean} enabled\n\t\t * @property {number} sequence\n\t\t * @property {string[]} cmsvalkey_set\n\t\t */\n\t\tprops: {\n\t\t\timage_128: \"string\",\n\t\t\timage_256: \"string\",\n\t\t\timage_512: \"string\",\n\t\t\timage_1024: \"string\",\n\t\t\timage_original: \"string\",\n\t\t\tname: \"stringSanitized\",\n\t\t\tparent_key: \"string\",\n\t\t\tafter_key: \"string\",\n\t\t\tkey: \"string\",\n\t\t\tenabled: \"boolean\",\n\t\t\tsequence: \"number\",\n\t\t\ttags: \"array\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.DeckModel} deck\n\t\t * @property {models.TemplateModel} template\n\t\t */\n\t\tchildren: {\n\t\t\tdeck: \"DeckModel\",\n\t\t\ttemplate: \"TemplateModel\",\n\t\t\tteam: \"TeamModel\",\n\t\t},\n\t}\n);\n\nregister(\"AutoAdjunctModel\", AutoAdjunctModel);\n"],"file":"auto-adjunct.js"}
@@ -57,6 +57,9 @@ var BaseModel = _ampersandModel.default.extend(
57
57
  // This is unfortunately necessary to avoid the default ampersand model/state
58
58
  // behaviour from automatically hydrating all children and collections on a fetch.
59
59
  isFetching: false,
60
+ // Useful to figure out whether the model is just a URL (unfetched), or has been
61
+ // fetched from the server (an object).
62
+ _isFetched: true,
60
63
  // Object of regexes that should be used to match a url in `matchesURL`
61
64
  // For example the URL: /api/foo/{pk}/bar/ might have the following:
62
65
  //
@@ -69,13 +72,15 @@ var BaseModel = _ampersandModel.default.extend(
69
72
  // ```
70
73
  urlMatchKeys: {},
71
74
  constructor: function constructor() {
72
- var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75
+ var _data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
76
+
73
77
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
74
78
 
75
79
  var options = _lodash.default.defaults(opts, {
76
80
  data: {}
77
81
  });
78
82
 
83
+ var data = _data;
79
84
  this._unsetChildren = {};
80
85
  this._unsetCollections = {};
81
86
  this._expandedValues = {};
@@ -95,6 +100,15 @@ var BaseModel = _ampersandModel.default.extend(
95
100
  data = {
96
101
  url: data
97
102
  };
103
+ this._isFetched = false;
104
+ } // Convert model ids into a format we can understand
105
+
106
+
107
+ if (_lodash.default.isNumber(data)) {
108
+ data = {
109
+ id: data
110
+ };
111
+ this._isFetched = false;
98
112
  }
99
113
 
100
114
  var dataCopy = _lodash.default.extend({}, data);
@@ -420,6 +434,7 @@ var BaseModel = _ampersandModel.default.extend(
420
434
  this._options = _lodash.default.extend({}, this._options, options);
421
435
  this.isFetching = true;
422
436
  return _ampersandModel.default.prototype.fetch.apply(this, arguments).tap(function (response) {
437
+ _this4._isFetched = true;
423
438
  _this4.isFetching = false;
424
439
 
425
440
  _this4._updateResponse(response);
@@ -440,6 +455,9 @@ var BaseModel = _ampersandModel.default.extend(
440
455
  return null;
441
456
  });
442
457
  },
458
+ isFetched: function isFetched() {
459
+ return this._isFetched;
460
+ },
443
461
  getSafeAttrs: function getSafeAttrs(key) {
444
462
  var _this5 = this;
445
463
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/models/base.js"],"names":["BaseModel","Model","extend","modelName","queryData","isFetching","urlMatchKeys","constructor","data","opts","options","_","defaults","_unsetChildren","_unsetCollections","_expandedValues","toJSON","isString","url","dataCopy","_data","_options","_children","clone","_collections","_definition","_url","key","def","isState","Collection","registerStates","_convertToValues","id","_getIDFromURL","prototype","call","_setDerived","_initUnsetValues","Object","keys","_derived","derivedKey","derivedProp","set","_matchesURL","matchesDetail","urlRoot","Api","getURL","replacements","detailKey","regexes","reduce","result","type","name","replace","Error","urlWithoutRoot","urlStructure","slice","split","argIndex","findIndex","val","indexOf","attemptedURLWithoutRoot","partial","join","interpolatedString","template","interpolate","e","log","error","dedent","baseString","re","RegExp","test","resourceURL","getResourceURL","urlPath","url2","parse","path","resourceURLPath","resourceEnd","urlEnd","idStr","match","length","parseInt","matchesURL","dataTypes","date","newVal","moment","utc","format","DATE_FORMAT_T","compare","currentVal","isSame","stringSanitized","get","any","default","props","required","toServer","serialize","_registerChildModel","states","prop","model","registeredStates","_registerCollection","state","collection","each","parent","_registerName","_updateResponse","response","forEach","save","apply","arguments","tap","fetch","Auth","headers","then","res","body","actions","getSafeAttrs","isUndefined","_values","attrs","uniq","concat","_initChildren","child","_safeSet","listenTo","_getCachedEventBubblingHandler","_initCollections","coll","tmpValue","replacePropertyDefinition","safeSet","property","value","getFullURLPath","qs","stringify","arrayFormat","isNew","getPlainURL","resp","matches","replacement","resources","sync","derived","getAttributes","object","canBeEmpty","_retrieveURL","item","map","isArray","addCollection","addChild","expandCollection","expandChild","defineProperty","includes","configurable"],"mappings":"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","sourcesContent":["import { DATE_FORMAT_T, removeMultiByteChars } from \"../utils.js\";\n\nimport { Api } from \"../api.js\";\nimport Collection from \"ampersand-rest-collection\";\nimport Model from \"ampersand-model\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport qs from \"qs\";\nimport { registeredStates } from \"../state-register.js\";\nimport { sync } from \"../sync.js\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias models.BaseModel\n */\nexport const BaseModel = Model.extend(\n\t/** @lends models.BaseModel# */ {\n\t\tmodelName: null,\n\t\tqueryData: {},\n\n\t\t// This is unfortunately necessary to avoid the default ampersand model/state\n\t\t// behaviour from automatically hydrating all children and collections on a fetch.\n\t\tisFetching: false,\n\n\t\t// Object of regexes that should be used to match a url in `matchesURL`\n\t\t// For example the URL: /api/foo/{pk}/bar/ might have the following:\n\t\t//\n\t\t// Example:\n\t\t//\n\t\t// ```\n\t\t// {\n\t\t// pk: \"number\"\n\t\t// }\n\t\t// ```\n\t\turlMatchKeys: {},\n\n\t\tconstructor(data = {}, opts = {}) {\n\t\t\tconst options = _.defaults(opts, {\n\t\t\t\tdata: {},\n\t\t\t});\n\n\t\t\tthis._unsetChildren = {};\n\t\t\tthis._unsetCollections = {};\n\t\t\tthis._expandedValues = {};\n\n\t\t\tif (data === null) {\n\t\t\t\tdata = {};\n\t\t\t}\n\n\t\t\t// Allow passing in models\n\t\t\tif (data instanceof Model) {\n\t\t\t\tdata = data.toJSON();\n\t\t\t}\n\n\t\t\tthis.queryData = options.data;\n\n\t\t\t// Convert any strings into a url format we can understand\n\t\t\tif (_.isString(data)) {\n\t\t\t\tdata = { url: data };\n\t\t\t}\n\n\t\t\tconst dataCopy = _.extend({}, data);\n\n\t\t\tthis._data = dataCopy;\n\t\t\tthis._options = options;\n\n\t\t\t// Stop making edits to these affect other models\n\t\t\tthis._children = _.clone(this._children);\n\t\t\tthis._collections = _.clone(this._collections);\n\t\t\tthis._definition = _.clone(this._definition);\n\n\t\t\t// Check for specialized url returns from the server. This is for when the\n\t\t\t// server responds with an array of urls rather than object data.\n\t\t\tif (dataCopy && typeof dataCopy.url === \"string\") {\n\t\t\t\tthis._url = dataCopy.url;\n\t\t\t}\n\n\t\t\tfor (const key in dataCopy) {\n\t\t\t\tconst def = dataCopy[key];\n\t\t\t\t// Any models/collections passed into the constructor should be\n\t\t\t\t// converted to JSON so that it can be parsed\n\t\t\t\tif (def && (def.isState || def instanceof Collection)) {\n\t\t\t\t\tdataCopy[key] = def.toJSON();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.registerStates();\n\n\t\t\tthis._convertToValues();\n\n\t\t\tconst id = this._getIDFromURL(this._url);\n\n\t\t\tif (!dataCopy.id && id) {\n\t\t\t\tdataCopy.id = id;\n\t\t\t}\n\n\t\t\tModel.prototype.constructor.call(this, dataCopy, options);\n\n\t\t\tthis._setDerived();\n\n\t\t\t// Re-set the values that were previously children or collections\n\t\t\tthis._initUnsetValues();\n\t\t},\n\n\t\t// If there is a model returned from a derived property, and the model\n\t\t// has been initialzied with model data, we manually set the values on it.\n\t\t_setDerived() {\n\t\t\tfor (const derivedKey of Object.keys(this._derived)) {\n\t\t\t\tif (!this._data[derivedKey]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this[derivedKey] instanceof Model) {\n\t\t\t\t\tfor (const derivedProp of Object.keys(this._data[derivedKey])) {\n\t\t\t\t\t\tthis[derivedKey].set(\n\t\t\t\t\t\t\tderivedProp,\n\t\t\t\t\t\t\tthis._data[derivedKey][derivedProp]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If it's a collection, we can just pass the data straight in\n\t\t\t\tif (this[derivedKey] instanceof Collection) {\n\t\t\t\t\tthis[derivedKey].set(this._data[derivedKey]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Internal function. Used by collection as well.\n\t\t_matchesURL(url, matchesDetail = true) {\n\t\t\tif (!this.modelName || this.urlRoot() === Api.getURL()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst replacements = _.extend(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tdetailKey: \"number\",\n\t\t\t\t},\n\t\t\t\tthis.urlMatchKeys\n\t\t\t);\n\n\t\t\tconst regexes = Object.keys(replacements).reduce((result, key) => {\n\t\t\t\tconst type = replacements[key];\n\t\t\t\tconst name = key.replace(/\\./g, \"_\");\n\t\t\t\tif (type === \"number\") {\n\t\t\t\t\tresult[name] = \"\\\\d+\";\n\t\t\t\t} else if (type === \"string\") {\n\t\t\t\t\tresult[name] = \"\\\\w+\";\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown regex type '${type}'.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}, {});\n\n\t\t\t// Create a starting regex string with variables. Strips the root url so that it could\n\t\t\t// be read from any server.\n\t\t\tconst urlWithoutRoot = this.urlRoot().replace(Api.getURL(), \"\");\n\t\t\tlet urlStructure = urlWithoutRoot.slice();\n\t\t\tif (matchesDetail) {\n\t\t\t\turlStructure += \"{detailKey}/\";\n\t\t\t}\n\n\t\t\t// Let's test if the url has even a remote chance of matching\n\t\t\t// the url (like a partial match, any part without variables).\n\t\t\t// If that doesn't match, we can sometimes prevent a nasty log\n\t\t\t// error from being thrown.\n\t\t\tconst split = urlStructure.split(\"/\");\n\t\t\tconst argIndex = split.findIndex((val) => {\n\t\t\t\treturn val.indexOf(\"{\") === 0;\n\t\t\t});\n\n\t\t\tif (argIndex >= 0) {\n\t\t\t\tconst attemptedURLWithoutRoot = url.replace(Api.getURL(), \"\");\n\n\t\t\t\tconst partial = split.slice(0, argIndex).join(\"/\");\n\t\t\t\tif (attemptedURLWithoutRoot.indexOf(partial) !== 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Replace keys with regexes\n\t\t\tlet interpolatedString;\n\t\t\ttry {\n\t\t\t\tinterpolatedString = _.template(urlStructure.replace(/\\./g, \"_\"), {\n\t\t\t\t\tinterpolate: /{([\\s\\S\\.]+?)}/g,\n\t\t\t\t})(regexes);\n\t\t\t} catch (e) {\n\t\t\t\tlog.error(\n\t\t\t\t\tdedent`\n\t\t\t\tFailed to match URL '${url}' for model '${this.modelName}'.\n\t\t\t\tThis is usually because the regex type for a key hasn't been set.\n\t\t\t\tError: `,\n\t\t\t\t\te\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Convert into a regex and test if url matches\n\t\t\tconst baseString = `.*${interpolatedString.replace(/\\//m, \"/\")}$`;\n\t\t\tconst re = new RegExp(baseString);\n\t\t\treturn re.test(url);\n\t\t},\n\n\t\t// Retrieve the id from the url (if present) without caring about\n\t\t// the hostname.\n\t\t// The url will have a structure like\n\t\t// https://staging-demo.salespreso.com/api/users/1/\n\t\t// and we want to ignore the hostname (https://staging-demo.salespreso.com)\n\t\t// and strip out the '/api' from both the resource url and the variable url\n\t\t// so that we can use the remaining part to isolate the id\n\t\t_getIDFromURL(url) {\n\t\t\tconst resourceURL = this.getResourceURL();\n\n\t\t\tif (!url || !resourceURL) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst urlPath = url2.parse(url).path;\n\t\t\tconst resourceURLPath = url2.parse(resourceURL).path;\n\n\t\t\t// Remove the '/api' if present\n\t\t\tconst resourceEnd = resourceURLPath.split(\"/api\").join(\"\");\n\t\t\tconst urlEnd = urlPath.split(\"/api\").join(\"\");\n\n\t\t\t// If they are the same, there is no id at the end\n\t\t\tif (!urlEnd || urlEnd === resourceEnd) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst idStr = urlEnd.split(resourceEnd).join(\"\");\n\n\t\t\tif ((idStr.match(/\\//g) || []).length === 1) {\n\t\t\t\treturn parseInt(idStr.slice(0, -1), 10);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\t// Public version for details only\n\t\tmatchesURL(url) {\n\t\t\treturn this._matchesURL(url, true);\n\t\t},\n\n\t\tdataTypes: {\n\t\t\tdate: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? moment.utc(newVal).format(DATE_FORMAT_T) : null,\n\t\t\t\t\t\ttype: \"date\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\tif (typeof currentVal === \"undefined\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentVal || newVal) {\n\t\t\t\t\t\treturn moment(currentVal).isSame(moment(newVal));\n\t\t\t\t\t}\n\t\t\t\t\treturn currentVal !== newVal;\n\t\t\t\t},\n\t\t\t},\n\t\t\tstringSanitized: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? removeMultiByteChars(newVal) : newVal,\n\t\t\t\t\t\ttype: \"stringSanitized\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\treturn currentVal === newVal;\n\t\t\t\t},\n\t\t\t\tget: (val) => {\n\t\t\t\t\treturn val;\n\t\t\t\t},\n\t\t\t},\n\t\t\tany: {\n\t\t\t\tdefault: () => {\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {number} [id]\n\t\t */\n\t\tprops: {\n\t\t\tid: { type: \"any\", required: false },\n\t\t},\n\n\t\t/*\n\t\t * Overridable serialization for sending data to\n\t\t * the server\n\t\t */\n\t\ttoServer() {\n\t\t\treturn this.serialize();\n\t\t},\n\n\t\t_registerChildModel(states, prop, model) {\n\t\t\tconst Model = registeredStates[model];\n\t\t\tif (!Model) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${model}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._children[prop] = Model;\n\t\t},\n\n\t\t_registerCollection(state, prop, collection) {\n\t\t\tconst Collection = state[collection];\n\t\t\tif (!Collection) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${collection}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._collections[prop] = Collection;\n\t\t},\n\n\t\t/*\n\t\t * Replace strings respresenting a registered model/collection the function\n\t\t */\n\t\tregisterStates() {\n\t\t\t// Loop through children and replace any parent objects directly to stop\n\t\t\t// maximum stack overflows\n\t\t\t_.each(\n\t\t\t\tthis._children,\n\t\t\t\t(model, prop) => {\n\t\t\t\t\tif (typeof model === \"string\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis._options.parent &&\n\t\t\t\t\t\t\tmodel === this._options.parent._registerName\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// This part is important, if the link stays when there's a circular dependency,\n\t\t\t\t\t\t\t// this will continue forever.\n\t\t\t\t\t\t\tdelete this._children[prop];\n\n\t\t\t\t\t\t\t// Can be a string or an object so we use \"any\". We add the definition\n\t\t\t\t\t\t\t// so that we can retrieve this value later.\n\t\t\t\t\t\t\tthis._definition[prop] = { type: \"any\" };\n\n\t\t\t\t\t\t\tthis[prop] = this._options.parent;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._registerChildModel(registeredStates, prop, model);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\n\t\t\t// Loop throught the collections and replace with the registered collection\n\t\t\t_.each(\n\t\t\t\tthis._collections,\n\t\t\t\t(collection, prop) => {\n\t\t\t\t\tif (typeof collection === \"string\") {\n\t\t\t\t\t\tthis._registerCollection(registeredStates, prop, collection);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\t\t},\n\n\t\t_updateResponse(response) {\n\t\t\tthis._data = response || {};\n\n\t\t\tif (!response) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set previously-initialised children & collections with new\n\t\t\t// data retrieved during the fetch\n\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tsave() {\n\t\t\treturn Model.prototype.save.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\tfetch(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.isFetching = true;\n\t\t\treturn Model.prototype.fetch.apply(this, arguments).tap((response) => {\n\t\t\t\tthis.isFetching = false;\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\toptions(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\t\t\treturn SuperAgentRequest(\"OPTIONS\", this.url())\n\t\t\t\t.set(BaseModel.Auth.headers)\n\t\t\t\t.then((res) => {\n\t\t\t\t\tif (res.body && res.body.actions) {\n\t\t\t\t\t\treturn res.body.actions;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\t\t},\n\n\t\tgetSafeAttrs(key) {\n\t\t\tif (!_.isUndefined(key)) {\n\t\t\t\treturn !_.isUndefined(this._expandedValues[key])\n\t\t\t\t\t? this._expandedValues[key]\n\t\t\t\t\t: this._values[key];\n\t\t\t}\n\n\t\t\tconst attrs = {};\n\n\t\t\tconst keys = _.uniq(\n\t\t\t\t_.concat(\n\t\t\t\t\t_.concat(\n\t\t\t\t\t\tObject.keys(this._unsetChildren),\n\t\t\t\t\t\tObject.keys(this._unsetCollections)\n\t\t\t\t\t),\n\t\t\t\t\tObject.keys(this._values)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tif (!_.isUndefined(this._values[key])) {\n\t\t\t\t\tattrs[key] = this._values[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._expandedValues).forEach((key) => {\n\t\t\t\tattrs[key] = this[key];\n\t\t\t});\n\n\t\t\treturn attrs;\n\t\t},\n\n\t\t// Unset all specified children and collection constructors and insert value\n\t\t// definitions for them (necessary for Ampersand State to treat them as values)\n\t\t_convertToValues() {\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetChildren[key] = this._children[key];\n\t\t\t\tdelete this._children[key];\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetCollections[key] = this._collections[key];\n\t\t\t\tdelete this._collections[key];\n\t\t\t});\n\t\t},\n\n\t\t// Override the initialization of children to pass in data to the constructor.\n\t\t// The default version always creates an empty model\n\t\t_initChildren() {\n\t\t\tlet child;\n\t\t\tif (!this._children) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (child in this._children) {\n\t\t\t\tlet val = this._data[child];\n\t\t\t\tif (val) {\n\t\t\t\t\t// Assume here that if it's a string, it's a url.\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the child and\n\t\t\t\t// not the constructor. We want to add the non-hydrated url if so.\n\t\t\t\tif (typeof this._children[child] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tnew this._children[child](val, { parent: this })\n\t\t\t\t\t);\n\t\t\t\t\tthis.listenTo(\n\t\t\t\t\t\tthis[child],\n\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\tthis._getCachedEventBubblingHandler(child)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(child, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Override the initialization of collections to pass in data to the constructor.\n\t\t_initCollections() {\n\t\t\tlet coll;\n\t\t\tif (!this._collections) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (coll in this._collections) {\n\t\t\t\tlet val = this._data[coll];\n\t\t\t\tif (val) {\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the collection and\n\t\t\t\t// not the constructor. We want to add the non-hydrated array if so.\n\t\t\t\tif (typeof this._collections[coll] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tcoll,\n\t\t\t\t\t\tnew this._collections[coll](val, { parent: this })\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(coll, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_initUnsetValues() {\n\t\t\t_.each(this._unsetChildren, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\n\t\t\t_.each(this._unsetCollections, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\t\t},\n\n\t\t// Make safeSet less safe... as we do need to run this twice\n\t\t_safeSet: function safeSet(property, value) {\n\t\t\tthis[property] = value;\n\t\t\treturn this;\n\t\t},\n\n\t\turlRoot() {\n\t\t\treturn this.getResourceURL();\n\t\t},\n\n\t\tgetFullURLPath(path) {\n\t\t\tif (path === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet url = path;\n\t\t\tif (url.slice(-1) !== \"/\" && url.indexOf(\"?\") === -1) {\n\t\t\t\turl += \"/\";\n\t\t\t}\n\n\t\t\tif (Object.keys(this.queryData).length) {\n\t\t\t\turl += `?${qs.stringify(this.queryData, { arrayFormat: \"repeat\" })}`;\n\t\t\t}\n\t\t\treturn url;\n\t\t},\n\n\t\t/*\n\t\t * Get url\n\t\t * @return {String}\n\t\t */\n\t\turl() {\n\t\t\tif (this._url && this.isNew()) {\n\t\t\t\treturn this.getFullURLPath(this._url);\n\t\t\t}\n\n\t\t\treturn this.getFullURLPath(this.getPlainURL());\n\t\t},\n\n\t\t// Returns url without query data\n\t\tgetPlainURL() {\n\t\t\tif (!this.modelName) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet resp = Model.prototype.url.call(this);\n\n\t\t\tif (resp.slice(-1) !== \"/\" && resp.indexOf(\"?\") === -1) {\n\t\t\t\tresp += \"/\";\n\t\t\t}\n\n\t\t\t// Replace any values in a url with one from the model.\n\t\t\t// So if you have /path/to/{model.id}/\n\t\t\t// It will check the model from \"this.model.id\" and replace\n\t\t\t// it in the url\n\t\t\tconst re = /(\\{(?:\\w+\\.?)+\\})/g;\n\t\t\tconst matches = resp.match(re) || [];\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst path = match.slice(1, -1);\n\t\t\t\tconst replacement = _.get(this, path);\n\t\t\t\tif (replacement) {\n\t\t\t\t\tresp = resp.replace(match, replacement);\n\t\t\t\t} else if (!this.isNew()) {\n\t\t\t\t\tlog.error(`Model ${this.modelName} is missing value ${path}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetResourceURL() {\n\t\t\tif (this.modelName === null && !Object.keys(Api.resources).length) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!Object.keys(Api.resources).length) {\n\t\t\t\treturn `/${this.modelName}/`;\n\t\t\t}\n\n\t\t\tif (this.modelName === null) {\n\t\t\t\treturn Api.getURL();\n\t\t\t}\n\t\t\treturn Api.getResourceURL(this.modelName);\n\t\t},\n\n\t\tsync() {\n\t\t\treturn sync.apply(this, arguments);\n\t\t},\n\n\t\tserialize() {\n\t\t\t// Return nothing if data passed is falsy. More than likely this is\n\t\t\t// a null value\n\t\t\tif (!this._data) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst data = Model.prototype.serialize.apply(this, arguments);\n\t\t\tdata.url = this.url();\n\n\t\t\tlet derived = this.getAttributes({ derived: true });\n\t\t\tderived = Object.keys(derived).reduce((object, key) => {\n\t\t\t\tlet value = derived[key];\n\t\t\t\tif (value instanceof Collection || value instanceof Model) {\n\t\t\t\t\tvalue = value.toJSON();\n\t\t\t\t}\n\t\t\t\tobject[key] = value;\n\t\t\t\treturn object;\n\t\t\t}, {});\n\n\t\t\tObject.keys(this._unsetCollections).forEach((key) => {\n\t\t\t\tif (this._unsetCollections[key].canBeEmpty && !this._values[key]) {\n\t\t\t\t\tderived[key] = [];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._unsetChildren).forEach((key) => {\n\t\t\t\tif (\n\t\t\t\t\tthis._unsetChildren[key].canBeEmpty &&\n\t\t\t\t\t!this._values[key] &&\n\t\t\t\t\tthis[key]\n\t\t\t\t) {\n\t\t\t\t\tderived[key] = this[key].url();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn _.extend(data, derived);\n\t\t},\n\t\t// Safely retrieve the url from a child or collection that may or may not\n\t\t// be hydrated\n\t\t_retrieveURL(item) {\n\t\t\tif (_.isUndefined(item) || item === null) {\n\t\t\t\treturn item;\n\t\t\t} else if (typeof item === \"string\") {\n\t\t\t\t// It's just a url string\n\t\t\t\treturn item;\n\t\t\t} else if (item instanceof Model) {\n\t\t\t\treturn item.isNew() && !item._url ? null : item.url();\n\t\t\t} else if (item instanceof Collection) {\n\t\t\t\treturn _.map(item.toJSON(), \"url\");\n\t\t\t} else if (_.isArray(item)) {\n\t\t\t\t// It's an array of urls or objects\n\t\t\t\treturn item.map((child) => {\n\t\t\t\t\treturn this._retrieveURL(child);\n\t\t\t\t});\n\t\t\t} else if (typeof item === \"object\" && item !== null) {\n\t\t\t\treturn typeof item.url === \"function\" ? item.url() : item.url;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t}\n);\n\nfunction replacePropertyDefinition(object, name) {\n\tfunction addCollection(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst collection = new object._collections[name](data, { parent: object });\n\t\tobject._expandedValues[name] = collection;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction addChild(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst child = new object._children[name](data, { parent: object });\n\t\tobject._expandedValues[name] = child;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction expandCollection(value) {\n\t\tobject._collections[name] = object._unsetCollections[name];\n\t\tdelete object._unsetCollections[name];\n\n\t\treturn addCollection(value);\n\t}\n\n\tfunction expandChild(value) {\n\t\tobject._children[name] = object._unsetChildren[name];\n\t\tdelete object._unsetChildren[name];\n\n\t\treturn addChild(value);\n\t}\n\n\tObject.defineProperty(object, name, {\n\t\tset(val) {\n\t\t\tif (_.includes(Object.keys(object._children), name)) {\n\t\t\t\tif (val instanceof Model) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (val !== this[name].url()) {\n\t\t\t\t\taddChild(val);\n\t\t\t\t}\n\t\t\t} else if (_.includes(Object.keys(object._collections), name)) {\n\t\t\t\tif (val instanceof Collection) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (this[name].length || val !== this[name].url()) {\n\t\t\t\t\taddCollection(val);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Model &&\n\t\t\t\t_.includes(Object.keys(object._unsetChildren), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandChild(val.toJSON());\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Collection &&\n\t\t\t\t_.includes(Object.keys(object._unsetCollections), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandCollection(val.toJSON());\n\t\t\t} else {\n\t\t\t\tobject._values[name] = val;\n\t\t\t}\n\t\t},\n\t\tget() {\n\t\t\tif (!this._values) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Trying to retrieve value ${name} of model ${object.modelName} during constructor`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.includes(Object.keys(object._collections), name) ||\n\t\t\t\t\t_.includes(Object.keys(object._children), name)) &&\n\t\t\t\t_.includes(Object.keys(object._expandedValues), name)\n\t\t\t) {\n\t\t\t\treturn object._expandedValues[name];\n\t\t\t}\n\n\t\t\tconst value = object._values[name];\n\n\t\t\tif (this.isFetching) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.isUndefined(value) || value === null) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetChildren[name] && object._unsetChildren[name].canBeEmpty\n\t\t\t\t) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetCollections[name] &&\n\t\t\t\t\tobject._unsetCollections[name].canBeEmpty\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (_.includes(Object.keys(object._unsetCollections), name)) {\n\t\t\t\treturn expandCollection(value);\n\t\t\t} else if (_.includes(Object.keys(object._unsetChildren), name)) {\n\t\t\t\treturn expandChild(value);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tconfigurable: true,\n\t});\n}\n\n// Make matchesURL available as a static method\nBaseModel.matchesURL = function (url) {\n\treturn this.prototype.matchesURL(url);\n};\n"],"file":"base.js"}
1
+ {"version":3,"sources":["../../src/models/base.js"],"names":["BaseModel","Model","extend","modelName","queryData","isFetching","_isFetched","urlMatchKeys","constructor","_data","opts","options","_","defaults","data","_unsetChildren","_unsetCollections","_expandedValues","toJSON","isString","url","isNumber","id","dataCopy","_options","_children","clone","_collections","_definition","_url","key","def","isState","Collection","registerStates","_convertToValues","_getIDFromURL","prototype","call","_setDerived","_initUnsetValues","Object","keys","_derived","derivedKey","derivedProp","set","_matchesURL","matchesDetail","urlRoot","Api","getURL","replacements","detailKey","regexes","reduce","result","type","name","replace","Error","urlWithoutRoot","urlStructure","slice","split","argIndex","findIndex","val","indexOf","attemptedURLWithoutRoot","partial","join","interpolatedString","template","interpolate","e","log","error","dedent","baseString","re","RegExp","test","resourceURL","getResourceURL","urlPath","url2","parse","path","resourceURLPath","resourceEnd","urlEnd","idStr","match","length","parseInt","matchesURL","dataTypes","date","newVal","moment","utc","format","DATE_FORMAT_T","compare","currentVal","isSame","stringSanitized","get","any","default","props","required","toServer","serialize","_registerChildModel","states","prop","model","registeredStates","_registerCollection","state","collection","each","parent","_registerName","_updateResponse","response","forEach","save","apply","arguments","tap","fetch","Auth","headers","then","res","body","actions","isFetched","getSafeAttrs","isUndefined","_values","attrs","uniq","concat","_initChildren","child","_safeSet","listenTo","_getCachedEventBubblingHandler","_initCollections","coll","tmpValue","replacePropertyDefinition","safeSet","property","value","getFullURLPath","qs","stringify","arrayFormat","isNew","getPlainURL","resp","matches","replacement","resources","sync","derived","getAttributes","object","canBeEmpty","_retrieveURL","item","map","isArray","addCollection","addChild","expandCollection","expandChild","defineProperty","includes","configurable"],"mappings":"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","sourcesContent":["import { DATE_FORMAT_T, removeMultiByteChars } from \"../utils.js\";\n\nimport { Api } from \"../api.js\";\nimport Collection from \"ampersand-rest-collection\";\nimport Model from \"ampersand-model\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport qs from \"qs\";\nimport { registeredStates } from \"../state-register.js\";\nimport { sync } from \"../sync.js\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias models.BaseModel\n */\nexport const BaseModel = Model.extend(\n\t/** @lends models.BaseModel# */ {\n\t\tmodelName: null,\n\t\tqueryData: {},\n\n\t\t// This is unfortunately necessary to avoid the default ampersand model/state\n\t\t// behaviour from automatically hydrating all children and collections on a fetch.\n\t\tisFetching: false,\n\n\t\t// Useful to figure out whether the model is just a URL (unfetched), or has been\n\t\t// fetched from the server (an object).\n\t\t_isFetched: true,\n\n\t\t// Object of regexes that should be used to match a url in `matchesURL`\n\t\t// For example the URL: /api/foo/{pk}/bar/ might have the following:\n\t\t//\n\t\t// Example:\n\t\t//\n\t\t// ```\n\t\t// {\n\t\t// pk: \"number\"\n\t\t// }\n\t\t// ```\n\t\turlMatchKeys: {},\n\n\t\tconstructor(_data = {}, opts = {}) {\n\t\t\tconst options = _.defaults(opts, {\n\t\t\t\tdata: {},\n\t\t\t});\n\n\t\t\tlet data = _data;\n\n\t\t\tthis._unsetChildren = {};\n\t\t\tthis._unsetCollections = {};\n\t\t\tthis._expandedValues = {};\n\n\t\t\tif (data === null) {\n\t\t\t\tdata = {};\n\t\t\t}\n\n\t\t\t// Allow passing in models\n\t\t\tif (data instanceof Model) {\n\t\t\t\tdata = data.toJSON();\n\t\t\t}\n\n\t\t\tthis.queryData = options.data;\n\n\t\t\t// Convert any strings into a url format we can understand\n\t\t\tif (_.isString(data)) {\n\t\t\t\tdata = { url: data };\n\t\t\t\tthis._isFetched = false;\n\t\t\t}\n\n\t\t\t// Convert model ids into a format we can understand\n\t\t\tif (_.isNumber(data)) {\n\t\t\t\tdata = { id: data };\n\t\t\t\tthis._isFetched = false;\n\t\t\t}\n\n\t\t\tconst dataCopy = _.extend({}, data);\n\n\t\t\tthis._data = dataCopy;\n\t\t\tthis._options = options;\n\n\t\t\t// Stop making edits to these affect other models\n\t\t\tthis._children = _.clone(this._children);\n\t\t\tthis._collections = _.clone(this._collections);\n\t\t\tthis._definition = _.clone(this._definition);\n\n\t\t\t// Check for specialized url returns from the server. This is for when the\n\t\t\t// server responds with an array of urls rather than object data.\n\t\t\tif (dataCopy && typeof dataCopy.url === \"string\") {\n\t\t\t\tthis._url = dataCopy.url;\n\t\t\t}\n\n\t\t\tfor (const key in dataCopy) {\n\t\t\t\tconst def = dataCopy[key];\n\t\t\t\t// Any models/collections passed into the constructor should be\n\t\t\t\t// converted to JSON so that it can be parsed\n\t\t\t\tif (def && (def.isState || def instanceof Collection)) {\n\t\t\t\t\tdataCopy[key] = def.toJSON();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.registerStates();\n\n\t\t\tthis._convertToValues();\n\n\t\t\tconst id = this._getIDFromURL(this._url);\n\n\t\t\tif (!dataCopy.id && id) {\n\t\t\t\tdataCopy.id = id;\n\t\t\t}\n\n\t\t\tModel.prototype.constructor.call(this, dataCopy, options);\n\n\t\t\tthis._setDerived();\n\n\t\t\t// Re-set the values that were previously children or collections\n\t\t\tthis._initUnsetValues();\n\t\t},\n\n\t\t// If there is a model returned from a derived property, and the model\n\t\t// has been initialzied with model data, we manually set the values on it.\n\t\t_setDerived() {\n\t\t\tfor (const derivedKey of Object.keys(this._derived)) {\n\t\t\t\tif (!this._data[derivedKey]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this[derivedKey] instanceof Model) {\n\t\t\t\t\tfor (const derivedProp of Object.keys(this._data[derivedKey])) {\n\t\t\t\t\t\tthis[derivedKey].set(\n\t\t\t\t\t\t\tderivedProp,\n\t\t\t\t\t\t\tthis._data[derivedKey][derivedProp]\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If it's a collection, we can just pass the data straight in\n\t\t\t\tif (this[derivedKey] instanceof Collection) {\n\t\t\t\t\tthis[derivedKey].set(this._data[derivedKey]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Internal function. Used by collection as well.\n\t\t_matchesURL(url, matchesDetail = true) {\n\t\t\tif (!this.modelName || this.urlRoot() === Api.getURL()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst replacements = _.extend(\n\t\t\t\t{},\n\t\t\t\t{\n\t\t\t\t\tdetailKey: \"number\",\n\t\t\t\t},\n\t\t\t\tthis.urlMatchKeys\n\t\t\t);\n\n\t\t\tconst regexes = Object.keys(replacements).reduce((result, key) => {\n\t\t\t\tconst type = replacements[key];\n\t\t\t\tconst name = key.replace(/\\./g, \"_\");\n\t\t\t\tif (type === \"number\") {\n\t\t\t\t\tresult[name] = \"\\\\d+\";\n\t\t\t\t} else if (type === \"string\") {\n\t\t\t\t\tresult[name] = \"\\\\w+\";\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Unknown regex type '${type}'.`);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}, {});\n\n\t\t\t// Create a starting regex string with variables. Strips the root url so that it could\n\t\t\t// be read from any server.\n\t\t\tconst urlWithoutRoot = this.urlRoot().replace(Api.getURL(), \"\");\n\t\t\tlet urlStructure = urlWithoutRoot.slice();\n\t\t\tif (matchesDetail) {\n\t\t\t\turlStructure += \"{detailKey}/\";\n\t\t\t}\n\n\t\t\t// Let's test if the url has even a remote chance of matching\n\t\t\t// the url (like a partial match, any part without variables).\n\t\t\t// If that doesn't match, we can sometimes prevent a nasty log\n\t\t\t// error from being thrown.\n\t\t\tconst split = urlStructure.split(\"/\");\n\t\t\tconst argIndex = split.findIndex((val) => {\n\t\t\t\treturn val.indexOf(\"{\") === 0;\n\t\t\t});\n\n\t\t\tif (argIndex >= 0) {\n\t\t\t\tconst attemptedURLWithoutRoot = url.replace(Api.getURL(), \"\");\n\n\t\t\t\tconst partial = split.slice(0, argIndex).join(\"/\");\n\t\t\t\tif (attemptedURLWithoutRoot.indexOf(partial) !== 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Replace keys with regexes\n\t\t\tlet interpolatedString;\n\t\t\ttry {\n\t\t\t\tinterpolatedString = _.template(urlStructure.replace(/\\./g, \"_\"), {\n\t\t\t\t\tinterpolate: /{([\\s\\S\\.]+?)}/g,\n\t\t\t\t})(regexes);\n\t\t\t} catch (e) {\n\t\t\t\tlog.error(\n\t\t\t\t\tdedent`\n\t\t\t\tFailed to match URL '${url}' for model '${this.modelName}'.\n\t\t\t\tThis is usually because the regex type for a key hasn't been set.\n\t\t\t\tError: `,\n\t\t\t\t\te\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Convert into a regex and test if url matches\n\t\t\tconst baseString = `.*${interpolatedString.replace(/\\//m, \"/\")}$`;\n\t\t\tconst re = new RegExp(baseString);\n\t\t\treturn re.test(url);\n\t\t},\n\n\t\t// Retrieve the id from the url (if present) without caring about\n\t\t// the hostname.\n\t\t// The url will have a structure like\n\t\t// https://staging-demo.salespreso.com/api/users/1/\n\t\t// and we want to ignore the hostname (https://staging-demo.salespreso.com)\n\t\t// and strip out the '/api' from both the resource url and the variable url\n\t\t// so that we can use the remaining part to isolate the id\n\t\t_getIDFromURL(url) {\n\t\t\tconst resourceURL = this.getResourceURL();\n\n\t\t\tif (!url || !resourceURL) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst urlPath = url2.parse(url).path;\n\t\t\tconst resourceURLPath = url2.parse(resourceURL).path;\n\n\t\t\t// Remove the '/api' if present\n\t\t\tconst resourceEnd = resourceURLPath.split(\"/api\").join(\"\");\n\t\t\tconst urlEnd = urlPath.split(\"/api\").join(\"\");\n\n\t\t\t// If they are the same, there is no id at the end\n\t\t\tif (!urlEnd || urlEnd === resourceEnd) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst idStr = urlEnd.split(resourceEnd).join(\"\");\n\n\t\t\tif ((idStr.match(/\\//g) || []).length === 1) {\n\t\t\t\treturn parseInt(idStr.slice(0, -1), 10);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\n\t\t// Public version for details only\n\t\tmatchesURL(url) {\n\t\t\treturn this._matchesURL(url, true);\n\t\t},\n\n\t\tdataTypes: {\n\t\t\tdate: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? moment.utc(newVal).format(DATE_FORMAT_T) : null,\n\t\t\t\t\t\ttype: \"date\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\tif (typeof currentVal === \"undefined\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentVal || newVal) {\n\t\t\t\t\t\treturn moment(currentVal).isSame(moment(newVal));\n\t\t\t\t\t}\n\t\t\t\t\treturn currentVal !== newVal;\n\t\t\t\t},\n\t\t\t},\n\t\t\tstringSanitized: {\n\t\t\t\tset: (newVal) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tval: newVal ? removeMultiByteChars(newVal) : newVal,\n\t\t\t\t\t\ttype: \"stringSanitized\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tcompare: (currentVal, newVal) => {\n\t\t\t\t\treturn currentVal === newVal;\n\t\t\t\t},\n\t\t\t\tget: (val) => {\n\t\t\t\t\treturn val;\n\t\t\t\t},\n\t\t\t},\n\t\t\tany: {\n\t\t\t\tdefault: () => {\n\t\t\t\t\treturn null;\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {number} [id]\n\t\t */\n\t\tprops: {\n\t\t\tid: { type: \"any\", required: false },\n\t\t},\n\n\t\t/*\n\t\t * Overridable serialization for sending data to\n\t\t * the server\n\t\t */\n\t\ttoServer() {\n\t\t\treturn this.serialize();\n\t\t},\n\n\t\t_registerChildModel(states, prop, model) {\n\t\t\tconst Model = registeredStates[model];\n\t\t\tif (!Model) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${model}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._children[prop] = Model;\n\t\t},\n\n\t\t_registerCollection(state, prop, collection) {\n\t\t\tconst Collection = state[collection];\n\t\t\tif (!Collection) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`'${collection}' not found! Did you forget to import it on the '${this.modelName}' model?`\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis._collections[prop] = Collection;\n\t\t},\n\n\t\t/*\n\t\t * Replace strings respresenting a registered model/collection the function\n\t\t */\n\t\tregisterStates() {\n\t\t\t// Loop through children and replace any parent objects directly to stop\n\t\t\t// maximum stack overflows\n\t\t\t_.each(\n\t\t\t\tthis._children,\n\t\t\t\t(model, prop) => {\n\t\t\t\t\tif (typeof model === \"string\") {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tthis._options.parent &&\n\t\t\t\t\t\t\tmodel === this._options.parent._registerName\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// This part is important, if the link stays when there's a circular dependency,\n\t\t\t\t\t\t\t// this will continue forever.\n\t\t\t\t\t\t\tdelete this._children[prop];\n\n\t\t\t\t\t\t\t// Can be a string or an object so we use \"any\". We add the definition\n\t\t\t\t\t\t\t// so that we can retrieve this value later.\n\t\t\t\t\t\t\tthis._definition[prop] = { type: \"any\" };\n\n\t\t\t\t\t\t\tthis[prop] = this._options.parent;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._registerChildModel(registeredStates, prop, model);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\n\t\t\t// Loop throught the collections and replace with the registered collection\n\t\t\t_.each(\n\t\t\t\tthis._collections,\n\t\t\t\t(collection, prop) => {\n\t\t\t\t\tif (typeof collection === \"string\") {\n\t\t\t\t\t\tthis._registerCollection(registeredStates, prop, collection);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\t\t},\n\n\t\t_updateResponse(response) {\n\t\t\tthis._data = response || {};\n\n\t\t\tif (!response) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set previously-initialised children & collections with new\n\t\t\t// data retrieved during the fetch\n\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tif (response[key]) {\n\t\t\t\t\tthis[key] = response[key];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tsave() {\n\t\t\treturn Model.prototype.save.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\tfetch(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\n\t\t\tthis._options = _.extend({}, this._options, options);\n\n\t\t\tthis.isFetching = true;\n\t\t\treturn Model.prototype.fetch.apply(this, arguments).tap((response) => {\n\t\t\t\tthis._isFetched = true;\n\t\t\t\tthis.isFetching = false;\n\t\t\t\tthis._updateResponse(response);\n\t\t\t});\n\t\t},\n\n\t\toptions(options = {}) {\n\t\t\tif (options.url) {\n\t\t\t\tthis._url = options.url;\n\t\t\t}\n\t\t\treturn SuperAgentRequest(\"OPTIONS\", this.url())\n\t\t\t\t.set(BaseModel.Auth.headers)\n\t\t\t\t.then((res) => {\n\t\t\t\t\tif (res.body && res.body.actions) {\n\t\t\t\t\t\treturn res.body.actions;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t});\n\t\t},\n\n\t\tisFetched() {\n\t\t\treturn this._isFetched;\n\t\t},\n\n\t\tgetSafeAttrs(key) {\n\t\t\tif (!_.isUndefined(key)) {\n\t\t\t\treturn !_.isUndefined(this._expandedValues[key])\n\t\t\t\t\t? this._expandedValues[key]\n\t\t\t\t\t: this._values[key];\n\t\t\t}\n\n\t\t\tconst attrs = {};\n\n\t\t\tconst keys = _.uniq(\n\t\t\t\t_.concat(\n\t\t\t\t\t_.concat(\n\t\t\t\t\t\tObject.keys(this._unsetChildren),\n\t\t\t\t\t\tObject.keys(this._unsetCollections)\n\t\t\t\t\t),\n\t\t\t\t\tObject.keys(this._values)\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tkeys.forEach((key) => {\n\t\t\t\tif (!_.isUndefined(this._values[key])) {\n\t\t\t\t\tattrs[key] = this._values[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._expandedValues).forEach((key) => {\n\t\t\t\tattrs[key] = this[key];\n\t\t\t});\n\n\t\t\treturn attrs;\n\t\t},\n\n\t\t// Unset all specified children and collection constructors and insert value\n\t\t// definitions for them (necessary for Ampersand State to treat them as values)\n\t\t_convertToValues() {\n\t\t\tObject.keys(this._children).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetChildren[key] = this._children[key];\n\t\t\t\tdelete this._children[key];\n\t\t\t});\n\n\t\t\tObject.keys(this._collections).forEach((key) => {\n\t\t\t\tthis._definition[key] = { type: \"any\" };\n\t\t\t\tthis._unsetCollections[key] = this._collections[key];\n\t\t\t\tdelete this._collections[key];\n\t\t\t});\n\t\t},\n\n\t\t// Override the initialization of children to pass in data to the constructor.\n\t\t// The default version always creates an empty model\n\t\t_initChildren() {\n\t\t\tlet child;\n\t\t\tif (!this._children) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (child in this._children) {\n\t\t\t\tlet val = this._data[child];\n\t\t\t\tif (val) {\n\t\t\t\t\t// Assume here that if it's a string, it's a url.\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the child and\n\t\t\t\t// not the constructor. We want to add the non-hydrated url if so.\n\t\t\t\tif (typeof this._children[child] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tnew this._children[child](val, { parent: this })\n\t\t\t\t\t);\n\t\t\t\t\tthis.listenTo(\n\t\t\t\t\t\tthis[child],\n\t\t\t\t\t\t\"all\",\n\t\t\t\t\t\tthis._getCachedEventBubblingHandler(child)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(child, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Override the initialization of collections to pass in data to the constructor.\n\t\t_initCollections() {\n\t\t\tlet coll;\n\t\t\tif (!this._collections) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (coll in this._collections) {\n\t\t\t\tlet val = this._data[coll];\n\t\t\t\tif (val) {\n\t\t\t\t\tif (typeof val === \"string\") {\n\t\t\t\t\t\tval = { url: val };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If hydrate is set to false, this will be the name of the collection and\n\t\t\t\t// not the constructor. We want to add the non-hydrated array if so.\n\t\t\t\tif (typeof this._collections[coll] === \"function\") {\n\t\t\t\t\tthis._safeSet(\n\t\t\t\t\t\tcoll,\n\t\t\t\t\t\tnew this._collections[coll](val, { parent: this })\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis._safeSet(coll, val);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_initUnsetValues() {\n\t\t\t_.each(this._unsetChildren, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\n\t\t\t_.each(this._unsetCollections, (child, key) => {\n\t\t\t\tconst tmpValue = this._values[key];\n\n\t\t\t\treplacePropertyDefinition(this, key);\n\n\t\t\t\tthis[key] = tmpValue;\n\t\t\t});\n\t\t},\n\n\t\t// Make safeSet less safe... as we do need to run this twice\n\t\t_safeSet: function safeSet(property, value) {\n\t\t\tthis[property] = value;\n\t\t\treturn this;\n\t\t},\n\n\t\turlRoot() {\n\t\t\treturn this.getResourceURL();\n\t\t},\n\n\t\tgetFullURLPath(path) {\n\t\t\tif (path === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet url = path;\n\t\t\tif (url.slice(-1) !== \"/\" && url.indexOf(\"?\") === -1) {\n\t\t\t\turl += \"/\";\n\t\t\t}\n\n\t\t\tif (Object.keys(this.queryData).length) {\n\t\t\t\turl += `?${qs.stringify(this.queryData, { arrayFormat: \"repeat\" })}`;\n\t\t\t}\n\t\t\treturn url;\n\t\t},\n\n\t\t/*\n\t\t * Get url\n\t\t * @return {String}\n\t\t */\n\t\turl() {\n\t\t\tif (this._url && this.isNew()) {\n\t\t\t\treturn this.getFullURLPath(this._url);\n\t\t\t}\n\n\t\t\treturn this.getFullURLPath(this.getPlainURL());\n\t\t},\n\n\t\t// Returns url without query data\n\t\tgetPlainURL() {\n\t\t\tif (!this.modelName) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tlet resp = Model.prototype.url.call(this);\n\n\t\t\tif (resp.slice(-1) !== \"/\" && resp.indexOf(\"?\") === -1) {\n\t\t\t\tresp += \"/\";\n\t\t\t}\n\n\t\t\t// Replace any values in a url with one from the model.\n\t\t\t// So if you have /path/to/{model.id}/\n\t\t\t// It will check the model from \"this.model.id\" and replace\n\t\t\t// it in the url\n\t\t\tconst re = /(\\{(?:\\w+\\.?)+\\})/g;\n\t\t\tconst matches = resp.match(re) || [];\n\t\t\tfor (const match of matches) {\n\t\t\t\tconst path = match.slice(1, -1);\n\t\t\t\tconst replacement = _.get(this, path);\n\t\t\t\tif (replacement) {\n\t\t\t\t\tresp = resp.replace(match, replacement);\n\t\t\t\t} else if (!this.isNew()) {\n\t\t\t\t\tlog.error(`Model ${this.modelName} is missing value ${path}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn resp;\n\t\t},\n\n\t\tgetResourceURL() {\n\t\t\tif (this.modelName === null && !Object.keys(Api.resources).length) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif (!Object.keys(Api.resources).length) {\n\t\t\t\treturn `/${this.modelName}/`;\n\t\t\t}\n\n\t\t\tif (this.modelName === null) {\n\t\t\t\treturn Api.getURL();\n\t\t\t}\n\t\t\treturn Api.getResourceURL(this.modelName);\n\t\t},\n\n\t\tsync() {\n\t\t\treturn sync.apply(this, arguments);\n\t\t},\n\n\t\tserialize() {\n\t\t\t// Return nothing if data passed is falsy. More than likely this is\n\t\t\t// a null value\n\t\t\tif (!this._data) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst data = Model.prototype.serialize.apply(this, arguments);\n\t\t\tdata.url = this.url();\n\n\t\t\tlet derived = this.getAttributes({ derived: true });\n\t\t\tderived = Object.keys(derived).reduce((object, key) => {\n\t\t\t\tlet value = derived[key];\n\t\t\t\tif (value instanceof Collection || value instanceof Model) {\n\t\t\t\t\tvalue = value.toJSON();\n\t\t\t\t}\n\t\t\t\tobject[key] = value;\n\t\t\t\treturn object;\n\t\t\t}, {});\n\n\t\t\tObject.keys(this._unsetCollections).forEach((key) => {\n\t\t\t\tif (this._unsetCollections[key].canBeEmpty && !this._values[key]) {\n\t\t\t\t\tderived[key] = [];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tObject.keys(this._unsetChildren).forEach((key) => {\n\t\t\t\tif (\n\t\t\t\t\tthis._unsetChildren[key].canBeEmpty &&\n\t\t\t\t\t!this._values[key] &&\n\t\t\t\t\tthis[key]\n\t\t\t\t) {\n\t\t\t\t\tderived[key] = this[key].url();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn _.extend(data, derived);\n\t\t},\n\t\t// Safely retrieve the url from a child or collection that may or may not\n\t\t// be hydrated\n\t\t_retrieveURL(item) {\n\t\t\tif (_.isUndefined(item) || item === null) {\n\t\t\t\treturn item;\n\t\t\t} else if (typeof item === \"string\") {\n\t\t\t\t// It's just a url string\n\t\t\t\treturn item;\n\t\t\t} else if (item instanceof Model) {\n\t\t\t\treturn item.isNew() && !item._url ? null : item.url();\n\t\t\t} else if (item instanceof Collection) {\n\t\t\t\treturn _.map(item.toJSON(), \"url\");\n\t\t\t} else if (_.isArray(item)) {\n\t\t\t\t// It's an array of urls or objects\n\t\t\t\treturn item.map((child) => {\n\t\t\t\t\treturn this._retrieveURL(child);\n\t\t\t\t});\n\t\t\t} else if (typeof item === \"object\" && item !== null) {\n\t\t\t\treturn typeof item.url === \"function\" ? item.url() : item.url;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t}\n);\n\nfunction replacePropertyDefinition(object, name) {\n\tfunction addCollection(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst collection = new object._collections[name](data, { parent: object });\n\t\tobject._expandedValues[name] = collection;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction addChild(value) {\n\t\tconst data = typeof value === \"string\" ? { url: value } : value;\n\n\t\tconst child = new object._children[name](data, { parent: object });\n\t\tobject._expandedValues[name] = child;\n\n\t\treturn object._expandedValues[name];\n\t}\n\n\tfunction expandCollection(value) {\n\t\tobject._collections[name] = object._unsetCollections[name];\n\t\tdelete object._unsetCollections[name];\n\n\t\treturn addCollection(value);\n\t}\n\n\tfunction expandChild(value) {\n\t\tobject._children[name] = object._unsetChildren[name];\n\t\tdelete object._unsetChildren[name];\n\n\t\treturn addChild(value);\n\t}\n\n\tObject.defineProperty(object, name, {\n\t\tset(val) {\n\t\t\tif (_.includes(Object.keys(object._children), name)) {\n\t\t\t\tif (val instanceof Model) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (val !== this[name].url()) {\n\t\t\t\t\taddChild(val);\n\t\t\t\t}\n\t\t\t} else if (_.includes(Object.keys(object._collections), name)) {\n\t\t\t\tif (val instanceof Collection) {\n\t\t\t\t\tobject._expandedValues[name] = val;\n\t\t\t\t} else if (this[name].length || val !== this[name].url()) {\n\t\t\t\t\taddCollection(val);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Model &&\n\t\t\t\t_.includes(Object.keys(object._unsetChildren), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandChild(val.toJSON());\n\t\t\t} else if (\n\t\t\t\tval &&\n\t\t\t\tval instanceof Collection &&\n\t\t\t\t_.includes(Object.keys(object._unsetCollections), name)\n\t\t\t) {\n\t\t\t\tobject._expandedValues[name] = expandCollection(val.toJSON());\n\t\t\t} else {\n\t\t\t\tobject._values[name] = val;\n\t\t\t}\n\t\t},\n\t\tget() {\n\t\t\tif (!this._values) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Trying to retrieve value ${name} of model ${object.modelName} during constructor`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.includes(Object.keys(object._collections), name) ||\n\t\t\t\t\t_.includes(Object.keys(object._children), name)) &&\n\t\t\t\t_.includes(Object.keys(object._expandedValues), name)\n\t\t\t) {\n\t\t\t\treturn object._expandedValues[name];\n\t\t\t}\n\n\t\t\tconst value = object._values[name];\n\n\t\t\tif (this.isFetching) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t(_.isUndefined(value) || value === null) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetChildren[name] && object._unsetChildren[name].canBeEmpty\n\t\t\t\t) &&\n\t\t\t\t!(\n\t\t\t\t\tobject._unsetCollections[name] &&\n\t\t\t\t\tobject._unsetCollections[name].canBeEmpty\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tif (_.includes(Object.keys(object._unsetCollections), name)) {\n\t\t\t\treturn expandCollection(value);\n\t\t\t} else if (_.includes(Object.keys(object._unsetChildren), name)) {\n\t\t\t\treturn expandChild(value);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tconfigurable: true,\n\t});\n}\n\n// Make matchesURL available as a static method\nBaseModel.matchesURL = function (url) {\n\treturn this.prototype.matchesURL(url);\n};\n"],"file":"base.js"}
@@ -141,6 +141,15 @@ it("should convert a url into a model", function () {
141
141
  });
142
142
  expect(model.test.id).toEqual(1);
143
143
  });
144
+ it("should convert an id into a model", function () {
145
+ var TestModel = _base2.BaseModel.extend({
146
+ modelName: "test"
147
+ });
148
+
149
+ var testModel = new TestModel(1);
150
+ expect(testModel.id).toEqual(1);
151
+ expect(testModel.url()).toEqual("/test/1/");
152
+ });
144
153
  it("should convert an object into a model", function () {
145
154
  (0, _api2.G)(_base2.BaseModel, "TestModel");
146
155
  var Model = (0, _api2.G)(_base2.BaseModel.extend({