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