@livepreso/api 6.45.0 → 6.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
- package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
- package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
- package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
- package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
- package/.rush/temp/operation/test/all.log +19 -0
- package/.rush/temp/operation/test/state.json +3 -0
- package/.rush/temp/package-deps_build.json +156 -141
- package/.rush/temp/shrinkwrap-deps.json +281 -214
- package/CHANGELOG.json +29 -0
- package/CHANGELOG.md +15 -1
- package/README.md +4 -4
- package/api.build.log +6 -3
- package/api.test.cache.log +1 -0
- package/api.test.log +19 -0
- package/cjs/api.js +18 -2
- package/cjs/api.js.map +1 -1
- package/cjs/auth.js +3 -3
- package/cjs/auth.js.map +1 -1
- package/cjs/collections/activity.js.map +1 -1
- package/cjs/collections/adjunct-sections.js.map +1 -1
- package/cjs/collections/adjunct-slides.js.map +1 -1
- package/cjs/collections/adjunct-sub-slides.js.map +1 -1
- package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
- package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
- package/cjs/collections/appointment-editors.js.map +1 -1
- package/cjs/collections/appointment-section-tags.js.map +1 -1
- package/cjs/collections/appointment-slide-tags.js.map +1 -1
- package/cjs/collections/appointment-tags.js +9 -7
- package/cjs/collections/appointment-tags.js.map +1 -1
- package/cjs/collections/appointment-templates.js +36 -0
- package/cjs/collections/appointment-templates.js.map +1 -0
- package/cjs/collections/appointments.js.map +1 -1
- package/cjs/collections/assets.js.map +1 -1
- package/cjs/collections/auto-adjuncts.js.map +1 -1
- package/cjs/collections/base.js +4 -0
- package/cjs/collections/base.js.map +1 -1
- package/cjs/collections/base.spec.js.map +1 -1
- package/cjs/collections/cms-vals.js +5 -0
- package/cjs/collections/cms-vals.js.map +1 -1
- package/cjs/collections/contact-phones.js +28 -0
- package/cjs/collections/contact-phones.js.map +1 -0
- package/cjs/collections/contacts.js.map +1 -1
- package/cjs/collections/created-assets.js.map +1 -1
- package/cjs/collections/customers.js.map +1 -1
- package/cjs/collections/deck-notes.js.map +1 -1
- package/cjs/collections/deck-version-screenshots.js.map +1 -1
- package/cjs/collections/deck-versions.js.map +1 -1
- package/cjs/collections/decks.js.map +1 -1
- package/cjs/collections/deleted-assets.js.map +1 -1
- package/cjs/collections/dispatches.js.map +1 -1
- package/cjs/collections/event-objects.js.map +1 -1
- package/cjs/collections/events.js.map +1 -1
- package/cjs/collections/groups.js.map +1 -1
- package/cjs/collections/images.js.map +1 -1
- package/cjs/collections/locations.js.map +1 -1
- package/cjs/collections/opportunities.js.map +1 -1
- package/cjs/collections/pack-diffs.js.map +1 -1
- package/cjs/collections/packs.js.map +1 -1
- package/cjs/collections/presets.js.map +1 -1
- package/cjs/collections/section-selections.js.map +1 -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-requests.js +28 -0
- package/cjs/collections/signing-requests.js.map +1 -0
- package/cjs/collections/slide-selections.js.map +1 -1
- package/cjs/collections/slides.js.map +1 -1
- package/cjs/collections/snapshots.js.map +1 -1
- package/cjs/collections/sub-slides.js.map +1 -1
- package/cjs/collections/tags.js.map +1 -1
- package/cjs/collections/teams.js.map +1 -1
- package/cjs/collections/templates.js.map +1 -1
- package/cjs/collections/uploads.js.map +1 -1
- package/cjs/collections/users.js.map +1 -1
- package/cjs/collections.js +52 -13
- package/cjs/collections.js.map +1 -1
- package/cjs/fixtures.js +232 -0
- package/cjs/fixtures.js.map +1 -0
- package/cjs/index.js +28 -4
- package/cjs/index.js.map +1 -1
- package/cjs/models/activity-item.js +10 -2
- package/cjs/models/activity-item.js.map +1 -1
- package/cjs/models/adjunct-section.js +7 -2
- package/cjs/models/adjunct-section.js.map +1 -1
- package/cjs/models/adjunct-slide.js +7 -2
- package/cjs/models/adjunct-slide.js.map +1 -1
- package/cjs/models/adjunct-sub-slide.js.map +1 -1
- package/cjs/models/adjunct.js +40 -0
- package/cjs/models/adjunct.js.map +1 -1
- package/cjs/models/appointment-adjunct-tags.js.map +1 -1
- package/cjs/models/appointment-deckversion-tags.js.map +1 -1
- package/cjs/models/appointment-editor.js.map +1 -1
- package/cjs/models/appointment-section-tags.js.map +1 -1
- package/cjs/models/appointment-slide-tags.js.map +1 -1
- package/cjs/models/appointment-stats.js.map +1 -1
- package/cjs/models/appointment-tags.js.map +1 -1
- package/cjs/models/appointment-template.js +28 -0
- package/cjs/models/appointment-template.js.map +1 -0
- package/cjs/models/appointment-viewing.js.map +1 -1
- package/cjs/models/appointment.js +108 -15
- package/cjs/models/appointment.js.map +1 -1
- package/cjs/models/asset.js +12 -0
- package/cjs/models/asset.js.map +1 -1
- package/cjs/models/auto-adjunct-key-check.js.map +1 -1
- package/cjs/models/auto-adjunct.js +2 -1
- package/cjs/models/auto-adjunct.js.map +1 -1
- package/cjs/models/base.js +25 -5
- package/cjs/models/base.js.map +1 -1
- package/cjs/models/base.spec.js.map +1 -1
- package/cjs/models/choicelist.js.map +1 -1
- package/cjs/models/cms-val.js +35 -1
- package/cjs/models/cms-val.js.map +1 -1
- package/cjs/models/cms-val.spec.js +32 -0
- package/cjs/models/cms-val.spec.js.map +1 -0
- package/cjs/models/contact-phone.js +66 -0
- package/cjs/models/contact-phone.js.map +1 -0
- package/cjs/models/contact.js.map +1 -1
- package/cjs/models/customer.js +3 -1
- package/cjs/models/customer.js.map +1 -1
- package/cjs/models/deck-note.js.map +1 -1
- package/cjs/models/deck-tags.js.map +1 -1
- package/cjs/models/deck-version-screenshot.js.map +1 -1
- package/cjs/models/deck-version.js +31 -8
- package/cjs/models/deck-version.js.map +1 -1
- package/cjs/models/deck.js.map +1 -1
- package/cjs/models/dispatch-preview.js.map +1 -1
- package/cjs/models/dispatch.js.map +1 -1
- package/cjs/models/event-object.js.map +1 -1
- package/cjs/models/event.js.map +1 -1
- package/cjs/models/feed-data.js.map +1 -1
- package/cjs/models/file.js.map +1 -1
- package/cjs/models/group.js.map +1 -1
- package/cjs/models/handover.js.map +1 -1
- package/cjs/models/hosted-preso.js.map +1 -1
- package/cjs/models/image.js.map +1 -1
- package/cjs/models/location.js.map +1 -1
- package/cjs/models/manifest-json.js +70 -2
- package/cjs/models/manifest-json.js.map +1 -1
- package/cjs/models/onshare.js.map +1 -1
- package/cjs/models/opportunity.js.map +1 -1
- package/cjs/models/pack-diff.js.map +1 -1
- package/cjs/models/pack.js.map +1 -1
- package/cjs/models/preset.js +4 -1
- package/cjs/models/preset.js.map +1 -1
- package/cjs/models/refresh-request.js +24 -0
- package/cjs/models/refresh-request.js.map +1 -1
- package/cjs/models/room.js.map +1 -1
- package/cjs/models/salesforce-lookup.js.map +1 -1
- package/cjs/models/section-selection.js.map +1 -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-request.js +66 -0
- package/cjs/models/signing-request.js.map +1 -0
- package/cjs/models/slide-selection.js.map +1 -1
- package/cjs/models/slide.js.map +1 -1
- package/cjs/models/snapshot.js +41 -2
- package/cjs/models/snapshot.js.map +1 -1
- package/cjs/models/snapshot.spec.js +51 -0
- package/cjs/models/snapshot.spec.js.map +1 -0
- package/cjs/models/sub-slide.js.map +1 -1
- package/cjs/models/support-ticket.js.map +1 -1
- package/cjs/models/tag.js.map +1 -1
- package/cjs/models/team.js +15 -2
- package/cjs/models/team.js.map +1 -1
- package/cjs/models/template.js +105 -3
- package/cjs/models/template.js.map +1 -1
- package/cjs/models/tenancy.js +3 -0
- package/cjs/models/tenancy.js.map +1 -1
- package/cjs/models/timing-log.js.map +1 -1
- package/cjs/models/timing-log.spec.js.map +1 -1
- package/cjs/models/token.js.map +1 -1
- package/cjs/models/transcribe-socket.js.map +1 -1
- package/cjs/models/user.js +7 -2
- package/cjs/models/user.js.map +1 -1
- package/cjs/models.js +52 -13
- package/cjs/models.js.map +1 -1
- package/cjs/presentation/appointment-presentation.js.map +1 -1
- package/cjs/presentation/base-presentation-collection.js.map +1 -1
- package/cjs/presentation/base-presentation-model.js +23 -14
- package/cjs/presentation/base-presentation-model.js.map +1 -1
- package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
- package/cjs/presentation/presentation-deck.js +5 -1
- package/cjs/presentation/presentation-deck.js.map +1 -1
- package/cjs/presentation/presentation-deck.spec.js.map +1 -1
- package/cjs/presentation/presentation-decks.js.map +1 -1
- package/cjs/presentation/presentation-section.js +33 -8
- package/cjs/presentation/presentation-section.js.map +1 -1
- package/cjs/presentation/presentation-section.spec.js +13 -20
- package/cjs/presentation/presentation-section.spec.js.map +1 -1
- package/cjs/presentation/presentation-sections.js.map +1 -1
- package/cjs/presentation/presentation-slide.js +43 -9
- package/cjs/presentation/presentation-slide.js.map +1 -1
- package/cjs/presentation/presentation-slide.spec.js +11 -18
- package/cjs/presentation/presentation-slide.spec.js.map +1 -1
- package/cjs/presentation/presentation-slides.js.map +1 -1
- package/cjs/presentation/presentation-subslide.js.map +1 -1
- package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
- package/cjs/presentation/presentation-subslides.js.map +1 -1
- package/cjs/presentation/presentation.js +8 -3
- package/cjs/presentation/presentation.js.map +1 -1
- package/cjs/selections.js +106 -0
- package/cjs/selections.js.map +1 -0
- package/cjs/sync.js.map +1 -1
- package/cjs/utils.js +43 -6
- package/cjs/utils.js.map +1 -1
- package/cjs/utils.spec.js +1 -1
- package/cjs/utils.spec.js.map +1 -1
- package/jest.config.js +4 -3
- package/package.json +12 -9
- package/src/api.js +17 -2
- package/src/auth.js +3 -3
- package/src/collections/activity.js +4 -4
- package/src/collections/adjunct-sections.js +1 -1
- package/src/collections/adjunct-slides.js +1 -1
- package/src/collections/adjunct-sub-slides.js +1 -1
- package/src/collections/appointment-adjunct-tags.js +1 -1
- package/src/collections/appointment-deckversion-tags.js +2 -2
- package/src/collections/appointment-editors.js +1 -1
- package/src/collections/appointment-section-tags.js +1 -1
- package/src/collections/appointment-slide-tags.js +1 -1
- package/src/collections/appointment-tags.js +20 -18
- package/src/collections/appointment-templates.js +26 -0
- package/src/collections/appointments.js +9 -9
- package/src/collections/assets.js +1 -1
- package/src/collections/auto-adjuncts.js +1 -1
- package/src/collections/base.js +10 -6
- package/src/collections/base.spec.js +2 -2
- package/src/collections/cms-vals.js +5 -1
- package/src/collections/contact-phones.js +18 -0
- package/src/collections/contacts.js +1 -1
- package/src/collections/created-assets.js +1 -1
- package/src/collections/customers.js +1 -1
- package/src/collections/deck-notes.js +1 -1
- package/src/collections/deck-version-screenshots.js +1 -1
- package/src/collections/deck-versions.js +1 -1
- package/src/collections/decks.js +1 -1
- package/src/collections/deleted-assets.js +1 -1
- package/src/collections/dispatches.js +2 -2
- package/src/collections/event-objects.js +1 -1
- package/src/collections/events.js +1 -1
- package/src/collections/groups.js +1 -1
- package/src/collections/images.js +1 -1
- package/src/collections/locations.js +1 -1
- package/src/collections/opportunities.js +1 -1
- package/src/collections/pack-diffs.js +1 -1
- package/src/collections/packs.js +1 -1
- package/src/collections/presets.js +1 -1
- package/src/collections/section-selections.js +1 -1
- package/src/collections/sections.js +1 -1
- package/src/collections/signers.js +18 -0
- package/src/collections/signing-requests.js +18 -0
- package/src/collections/slide-selections.js +1 -1
- package/src/collections/slides.js +1 -1
- package/src/collections/snapshots.js +1 -1
- package/src/collections/sub-slides.js +1 -1
- package/src/collections/tags.js +1 -1
- package/src/collections/teams.js +1 -1
- package/src/collections/templates.js +1 -1
- package/src/collections/uploads.js +1 -1
- package/src/collections/users.js +1 -1
- package/src/collections.js +4 -1
- package/src/fixtures.js +195 -0
- package/src/index.js +2 -3
- package/src/models/activity-item.js +9 -1
- package/src/models/adjunct-section.js +7 -2
- package/src/models/adjunct-slide.js +7 -2
- package/src/models/adjunct-sub-slide.js +1 -1
- package/src/models/adjunct.js +39 -1
- package/src/models/appointment-adjunct-tags.js +1 -1
- package/src/models/appointment-deckversion-tags.js +1 -1
- package/src/models/appointment-editor.js +1 -1
- package/src/models/appointment-section-tags.js +1 -1
- package/src/models/appointment-slide-tags.js +1 -1
- package/src/models/appointment-stats.js +1 -1
- package/src/models/appointment-tags.js +1 -1
- package/src/models/appointment-template.js +19 -0
- package/src/models/appointment-viewing.js +1 -1
- package/src/models/appointment.js +104 -38
- package/src/models/asset.js +15 -1
- package/src/models/auto-adjunct-key-check.js +1 -1
- package/src/models/auto-adjunct.js +2 -1
- package/src/models/base.js +36 -21
- package/src/models/base.spec.js +18 -18
- package/src/models/choicelist.js +1 -1
- package/src/models/cms-val.js +24 -1
- package/src/models/cms-val.spec.js +14 -0
- package/src/models/contact-phone.js +57 -0
- package/src/models/contact.js +1 -1
- package/src/models/customer.js +3 -3
- package/src/models/deck-note.js +1 -1
- package/src/models/deck-tags.js +1 -1
- package/src/models/deck-version-screenshot.js +1 -1
- package/src/models/deck-version.js +32 -6
- package/src/models/deck.js +1 -1
- package/src/models/dispatch-preview.js +1 -1
- package/src/models/dispatch.js +1 -1
- package/src/models/event-object.js +1 -1
- package/src/models/event.js +1 -1
- package/src/models/feed-data.js +2 -2
- package/src/models/file.js +1 -1
- package/src/models/group.js +1 -1
- package/src/models/handover.js +1 -1
- package/src/models/hosted-preso.js +1 -1
- package/src/models/image.js +1 -1
- package/src/models/location.js +1 -1
- package/src/models/manifest-json.js +65 -5
- package/src/models/onshare.js +1 -1
- package/src/models/opportunity.js +1 -1
- package/src/models/pack-diff.js +1 -1
- package/src/models/pack.js +1 -1
- package/src/models/preset.js +4 -1
- package/src/models/refresh-request.js +16 -1
- package/src/models/room.js +1 -1
- package/src/models/salesforce-lookup.js +1 -1
- package/src/models/section-selection.js +1 -1
- package/src/models/section.js +1 -1
- package/src/models/signer.js +37 -0
- package/src/models/signing-request.js +56 -0
- package/src/models/slide-selection.js +1 -1
- package/src/models/slide.js +1 -1
- package/src/models/snapshot.js +30 -2
- package/src/models/snapshot.spec.js +31 -0
- package/src/models/sub-slide.js +1 -1
- package/src/models/support-ticket.js +1 -1
- package/src/models/tag.js +1 -1
- package/src/models/team.js +14 -3
- package/src/models/template.js +72 -2
- package/src/models/tenancy.js +4 -1
- package/src/models/timing-log.js +2 -2
- package/src/models/timing-log.spec.js +1 -1
- package/src/models/token.js +1 -1
- package/src/models/transcribe-socket.js +1 -1
- package/src/models/user.js +13 -2
- package/src/models.js +4 -1
- package/src/presentation/appointment-presentation.js +4 -4
- package/src/presentation/base-presentation-collection.js +1 -1
- package/src/presentation/base-presentation-model.js +25 -16
- package/src/presentation/base-presentation-model.spec.js +5 -5
- package/src/presentation/presentation-deck.js +28 -23
- package/src/presentation/presentation-deck.spec.js +4 -4
- package/src/presentation/presentation-decks.js +1 -1
- package/src/presentation/presentation-section.js +59 -31
- package/src/presentation/presentation-section.spec.js +31 -32
- package/src/presentation/presentation-sections.js +1 -1
- package/src/presentation/presentation-slide.js +51 -25
- package/src/presentation/presentation-slide.spec.js +21 -27
- package/src/presentation/presentation-slides.js +1 -1
- package/src/presentation/presentation-subslide.js +5 -5
- package/src/presentation/presentation-subslide.spec.js +3 -3
- package/src/presentation/presentation-subslides.js +1 -1
- package/src/presentation/presentation.js +5 -3
- package/src/selections.js +71 -0
- package/src/sync.js +1 -1
- package/src/utils.js +31 -8
- package/src/utils.spec.js +8 -8
- package/.rush/temp/package-deps_test.json +0 -172
- package/cjs/collections/appointment-duplicates.js +0 -29
- package/cjs/collections/appointment-duplicates.js.map +0 -1
- package/cjs/models/appointment-duplicate.js +0 -94
- 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
|
@@ -13,6 +13,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
13
13
|
|
|
14
14
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
15
15
|
|
|
16
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
17
|
+
|
|
16
18
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
19
|
|
|
18
20
|
require("./presentation-decks.js");
|
|
@@ -71,7 +73,7 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
|
|
|
71
73
|
while (1) {
|
|
72
74
|
switch (_context2.prev = _context2.next) {
|
|
73
75
|
case 0:
|
|
74
|
-
templates = deckversion.template_set.models;
|
|
76
|
+
templates = (0, _toConsumableArray2.default)(deckversion.template_set.models);
|
|
75
77
|
_iterator = _createForOfIteratorHelper(opts.autoAdjuncts.models);
|
|
76
78
|
_context2.prev = 2;
|
|
77
79
|
_loop = /*#__PURE__*/_regenerator.default.mark(function _loop() {
|
|
@@ -91,7 +93,7 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
|
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
auto.template = dvTemplate;
|
|
94
|
-
_context.next =
|
|
96
|
+
_context.next = 9;
|
|
95
97
|
break;
|
|
96
98
|
|
|
97
99
|
case 6:
|
|
@@ -99,6 +101,9 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
|
|
|
99
101
|
return auto.template.fetch();
|
|
100
102
|
|
|
101
103
|
case 8:
|
|
104
|
+
templates.push(auto.template);
|
|
105
|
+
|
|
106
|
+
case 9:
|
|
102
107
|
case "end":
|
|
103
108
|
return _context.stop();
|
|
104
109
|
}
|
|
@@ -170,7 +175,7 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
|
|
|
170
175
|
};
|
|
171
176
|
|
|
172
177
|
Presentation.createFromManifestJSON = function (manifestJSON, url) {
|
|
173
|
-
var manifestModel = new _models.ManifestJSONModel(manifestJSON.toJSON()); // Let's use the model to transport the
|
|
178
|
+
var manifestModel = new _models.ManifestJSONModel(manifestJSON.toJSON()); // Let's use the model to transport the base url for the deck assets
|
|
174
179
|
|
|
175
180
|
manifestModel._url = url;
|
|
176
181
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/presentation/presentation.js"],"names":["Presentation","BasePresentationModel","extend","collections","decks","createFromDeckversion","deckversionURL","options","deckversion","DeckVersionModel","opts","_","defaults","includeTemplates","choicelist","autoAdjuncts","AutoAdjunctCollection","fetch","then","Promise","all","manifest_json","deck","templates","template_set","models","auto","dvTemplate","find","t","url","template","tags","deckTags","items","reduce","tagObj","tagItem","namespaced_key","presentation","otherOpts","toJSON","add","PresentationDeck","createFromDeckVersion","catch","e","log","error","createFromManifestJSON","manifestJSON","manifestModel","ManifestJSONModel","_url"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/presentation/presentation.js"],"names":["Presentation","BasePresentationModel","extend","collections","decks","createFromDeckversion","deckversionURL","options","deckversion","DeckVersionModel","opts","_","defaults","includeTemplates","choicelist","autoAdjuncts","AutoAdjunctCollection","fetch","then","Promise","all","manifest_json","deck","templates","template_set","models","auto","dvTemplate","find","t","url","template","push","tags","deckTags","items","reduce","tagObj","tagItem","namespaced_key","presentation","otherOpts","toJSON","add","PresentationDeck","createFromDeckVersion","catch","e","log","error","createFromManifestJSON","manifestJSON","manifestModel","ManifestJSONModel","_url"],"mappings":"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","sourcesContent":["import \"./presentation-decks.js\";\n\nimport { DeckVersionModel, ManifestJSONModel } from \"../models.js\";\n\nimport { AutoAdjunctCollection } from \"../collections/auto-adjuncts.js\";\nimport { BasePresentationModel } from \"./base-presentation-model.js\";\nimport { PresentationDeck } from \"./presentation-deck.js\";\nimport Promise from \"bluebird\";\nimport _ from \"lodash\";\nimport log from \"../log.js\";\nimport { register } from \"../state-register.js\";\n\nexport const Presentation = BasePresentationModel.extend({\n\tcollections: {\n\t\tdecks: \"PresentationDeckCollection\",\n\t},\n});\n\nPresentation.createFromDeckversion = function (deckversionURL, options) {\n\tconst deckversion = new DeckVersionModel(deckversionURL);\n\tconst opts = _.defaults(options, {\n\t\tincludeTemplates: false,\n\t\tchoicelist: null,\n\t\tautoAdjuncts: new AutoAdjunctCollection(),\n\t});\n\n\treturn deckversion\n\t\t.fetch()\n\t\t.then(() => {\n\t\t\treturn Promise.all([\n\t\t\t\tdeckversion.manifest_json.fetch(),\n\t\t\t\tdeckversion.deck.fetch(),\n\t\t\t]);\n\t\t})\n\t\t.then(async () => {\n\t\t\tconst templates = [...deckversion.template_set.models];\n\n\t\t\tfor (const auto of opts.autoAdjuncts.models) {\n\t\t\t\tconst dvTemplate = templates.find(\n\t\t\t\t\t(t) => t.url() === auto.template.url(),\n\t\t\t\t);\n\t\t\t\tif (dvTemplate) {\n\t\t\t\t\tauto.template = dvTemplate;\n\t\t\t\t} else {\n\t\t\t\t\tawait auto.template.fetch();\n\t\t\t\t\ttemplates.push(auto.template);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\treturn deckversion.deck.tags.fetch();\n\t\t})\n\t\t.then(() => {\n\t\t\tconst deckTags = deckversion.deck.tags.items.reduce((tagObj, tagItem) => {\n\t\t\t\ttagObj[tagItem.namespaced_key] = tagItem.tags;\n\t\t\t\treturn tagObj;\n\t\t\t}, {});\n\n\t\t\tconst presentation = new Presentation();\n\n\t\t\tconst { includeTemplates, ...otherOpts } = opts;\n\n\t\t\tif (includeTemplates) {\n\t\t\t\totherOpts.templates = deckversion.template_set.toJSON();\n\t\t\t}\n\n\t\t\tpresentation.decks.add([\n\t\t\t\tPresentationDeck.createFromDeckVersion(deckversion, {\n\t\t\t\t\t...otherOpts,\n\t\t\t\t\tdeckTags,\n\t\t\t\t}),\n\t\t\t]);\n\n\t\t\treturn presentation;\n\t\t})\n\t\t.catch((e) => {\n\t\t\tlog.error(e);\n\t\t\tthrow e;\n\t\t});\n};\n\nPresentation.createFromManifestJSON = function (manifestJSON, url) {\n\tconst manifestModel = new ManifestJSONModel(manifestJSON.toJSON());\n\n\t// Let's use the model to transport the base url for the deck assets\n\tmanifestModel._url = url;\n\n\tconst deck = PresentationDeck.createFromManifestJSON(manifestModel);\n\tconst presentation = new Presentation();\n\tpresentation.decks.add(deck);\n\treturn presentation;\n};\n\nregister(\"Presentation\", Presentation);\n"],"file":"presentation.js"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.SelectionsFailedError = void 0;
|
|
9
|
+
exports.getSelectionChanges = getSelectionChanges;
|
|
10
|
+
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
|
|
13
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
14
|
+
|
|
15
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
|
+
|
|
17
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
18
|
+
|
|
19
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
20
|
+
|
|
21
|
+
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
22
|
+
|
|
23
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
24
|
+
|
|
25
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
26
|
+
|
|
27
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
28
|
+
|
|
29
|
+
var SelectionsFailedError = /*#__PURE__*/function (_Error) {
|
|
30
|
+
(0, _inherits2.default)(SelectionsFailedError, _Error);
|
|
31
|
+
|
|
32
|
+
var _super = _createSuper(SelectionsFailedError);
|
|
33
|
+
|
|
34
|
+
function SelectionsFailedError() {
|
|
35
|
+
(0, _classCallCheck2.default)(this, SelectionsFailedError);
|
|
36
|
+
return _super.apply(this, arguments);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return (0, _createClass2.default)(SelectionsFailedError);
|
|
40
|
+
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
|
|
41
|
+
/***
|
|
42
|
+
* Generates a selection changelist from a selections hook
|
|
43
|
+
* @param {SelectionHook} selectionsHook - This should match the interface used by
|
|
44
|
+
* selections. Ie it should have a .onSave() method on it.
|
|
45
|
+
* @param {String} deckKey - The key for the deck used
|
|
46
|
+
* @param {Object} options - Options that are passed straight into .onSave()
|
|
47
|
+
* @param {Object[]} options.sections - A list of serialized section models
|
|
48
|
+
* @param {Object} options.context - A context object
|
|
49
|
+
* @param {Object} options.feeds - A feeds object
|
|
50
|
+
* @param {Object} options.data - A data object
|
|
51
|
+
* @param {Object} options.fields - Basically just `context.fields` here.
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
exports.SelectionsFailedError = SelectionsFailedError;
|
|
56
|
+
|
|
57
|
+
function getSelectionChanges(selectionsHook, deckKey, options) {
|
|
58
|
+
var opts = _lodash.default.cloneDeep(options);
|
|
59
|
+
|
|
60
|
+
var context = opts.context;
|
|
61
|
+
var isContextUpdated = false;
|
|
62
|
+
var sections;
|
|
63
|
+
|
|
64
|
+
try {
|
|
65
|
+
sections = selectionsHook.onSave(opts);
|
|
66
|
+
} catch (e) {
|
|
67
|
+
throw new SelectionsFailedError(e);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var sortedSections = _lodash.default.sortBy(sections, "sequence");
|
|
71
|
+
|
|
72
|
+
sortedSections.forEach(function (section) {
|
|
73
|
+
section.slides = _lodash.default.sortBy(section.slides, "sequence");
|
|
74
|
+
}); // If the user has applied a preset with a persistent context, we need to update
|
|
75
|
+
// the userChanges in the context. Specifically, if something registered as a user
|
|
76
|
+
// change has been negated by a change made by selections, we need to remove it
|
|
77
|
+
// from userChanges.
|
|
78
|
+
|
|
79
|
+
var userChanges = context._persistent && context._persistent.userChanges ? context._persistent.userChanges : null;
|
|
80
|
+
|
|
81
|
+
if (userChanges) {
|
|
82
|
+
var updateChanges = function updateChanges(key, visible) {
|
|
83
|
+
var change = userChanges[key];
|
|
84
|
+
|
|
85
|
+
if (change && change.visible !== visible) {
|
|
86
|
+
delete userChanges[key];
|
|
87
|
+
isContextUpdated = true;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
sortedSections.forEach(function (section) {
|
|
92
|
+
updateChanges("".concat(deckKey, "/").concat(section.key), section.visible);
|
|
93
|
+
section.slides.forEach(function (slide) {
|
|
94
|
+
updateChanges("".concat(deckKey, "/").concat(section.key, "/").concat(slide.key), slide.visible);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
context._persistent.userChanges = userChanges;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return {
|
|
101
|
+
context: context,
|
|
102
|
+
sections: sortedSections,
|
|
103
|
+
isContextUpdated: isContextUpdated
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=selections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/selections.js"],"names":["SelectionsFailedError","Error","getSelectionChanges","selectionsHook","deckKey","options","opts","_","cloneDeep","context","isContextUpdated","sections","onSave","e","sortedSections","sortBy","forEach","section","slides","userChanges","_persistent","updateChanges","key","visible","change","slide"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;IAEaA,qB;;;;;;;;;;;+CAA8BC,K;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AACO,SAASC,mBAAT,CAA6BC,cAA7B,EAA6CC,OAA7C,EAAsDC,OAAtD,EAA+D;AACrE,MAAMC,IAAI,GAAGC,gBAAEC,SAAF,CAAYH,OAAZ,CAAb;;AACA,MAAQI,OAAR,GAAoBH,IAApB,CAAQG,OAAR;AACA,MAAIC,gBAAgB,GAAG,KAAvB;AACA,MAAIC,QAAJ;;AAEA,MAAI;AACHA,IAAAA,QAAQ,GAAGR,cAAc,CAACS,MAAf,CAAsBN,IAAtB,CAAX;AACA,GAFD,CAEE,OAAOO,CAAP,EAAU;AACX,UAAM,IAAIb,qBAAJ,CAA0Ba,CAA1B,CAAN;AACA;;AAED,MAAMC,cAAc,GAAGP,gBAAEQ,MAAF,CAASJ,QAAT,EAAmB,UAAnB,CAAvB;;AAEAG,EAAAA,cAAc,CAACE,OAAf,CAAuB,UAACC,OAAD,EAAa;AACnCA,IAAAA,OAAO,CAACC,MAAR,GAAiBX,gBAAEQ,MAAF,CAASE,OAAO,CAACC,MAAjB,EAAyB,UAAzB,CAAjB;AACA,GAFD,EAdqE,CAkBrE;AACA;AACA;AACA;;AACA,MAAMC,WAAW,GAChBV,OAAO,CAACW,WAAR,IAAuBX,OAAO,CAACW,WAAR,CAAoBD,WAA3C,GACGV,OAAO,CAACW,WAAR,CAAoBD,WADvB,GAEG,IAHJ;;AAKA,MAAIA,WAAJ,EAAiB;AAChB,QAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACC,GAAD,EAAMC,OAAN,EAAkB;AACvC,UAAMC,MAAM,GAAGL,WAAW,CAACG,GAAD,CAA1B;;AAEA,UAAIE,MAAM,IAAIA,MAAM,CAACD,OAAP,KAAmBA,OAAjC,EAA0C;AACzC,eAAOJ,WAAW,CAACG,GAAD,CAAlB;AAEAZ,QAAAA,gBAAgB,GAAG,IAAnB;AACA;AACD,KARD;;AAUAI,IAAAA,cAAc,CAACE,OAAf,CAAuB,UAACC,OAAD,EAAa;AACnCI,MAAAA,aAAa,WAAIjB,OAAJ,cAAea,OAAO,CAACK,GAAvB,GAA8BL,OAAO,CAACM,OAAtC,CAAb;AAEAN,MAAAA,OAAO,CAACC,MAAR,CAAeF,OAAf,CAAuB,UAACS,KAAD,EAAW;AACjCJ,QAAAA,aAAa,WAAIjB,OAAJ,cAAea,OAAO,CAACK,GAAvB,cAA8BG,KAAK,CAACH,GAApC,GAA2CG,KAAK,CAACF,OAAjD,CAAb;AACA,OAFD;AAGA,KAND;AAQAd,IAAAA,OAAO,CAACW,WAAR,CAAoBD,WAApB,GAAkCA,WAAlC;AACA;;AAED,SAAO;AACNV,IAAAA,OAAO,EAAPA,OADM;AAENE,IAAAA,QAAQ,EAAEG,cAFJ;AAGNJ,IAAAA,gBAAgB,EAAhBA;AAHM,GAAP;AAKA","sourcesContent":["import _ from \"lodash\";\n\nexport class SelectionsFailedError extends Error {}\n\n/***\n * Generates a selection changelist from a selections hook\n * @param {SelectionHook} selectionsHook - This should match the interface used by\n * selections. Ie it should have a .onSave() method on it.\n * @param {String} deckKey - The key for the deck used\n * @param {Object} options - Options that are passed straight into .onSave()\n * @param {Object[]} options.sections - A list of serialized section models\n * @param {Object} options.context - A context object\n * @param {Object} options.feeds - A feeds object\n * @param {Object} options.data - A data object\n * @param {Object} options.fields - Basically just `context.fields` here.\n */\nexport function getSelectionChanges(selectionsHook, deckKey, options) {\n\tconst opts = _.cloneDeep(options);\n\tconst { context } = opts;\n\tlet isContextUpdated = false;\n\tlet sections;\n\n\ttry {\n\t\tsections = selectionsHook.onSave(opts);\n\t} catch (e) {\n\t\tthrow new SelectionsFailedError(e);\n\t}\n\n\tconst sortedSections = _.sortBy(sections, \"sequence\");\n\n\tsortedSections.forEach((section) => {\n\t\tsection.slides = _.sortBy(section.slides, \"sequence\");\n\t});\n\n\t// If the user has applied a preset with a persistent context, we need to update\n\t// the userChanges in the context. Specifically, if something registered as a user\n\t// change has been negated by a change made by selections, we need to remove it\n\t// from userChanges.\n\tconst userChanges =\n\t\tcontext._persistent && context._persistent.userChanges\n\t\t\t? context._persistent.userChanges\n\t\t\t: null;\n\n\tif (userChanges) {\n\t\tconst updateChanges = (key, visible) => {\n\t\t\tconst change = userChanges[key];\n\n\t\t\tif (change && change.visible !== visible) {\n\t\t\t\tdelete userChanges[key];\n\n\t\t\t\tisContextUpdated = true;\n\t\t\t}\n\t\t};\n\n\t\tsortedSections.forEach((section) => {\n\t\t\tupdateChanges(`${deckKey}/${section.key}`, section.visible);\n\n\t\t\tsection.slides.forEach((slide) => {\n\t\t\t\tupdateChanges(`${deckKey}/${section.key}/${slide.key}`, slide.visible);\n\t\t\t});\n\t\t});\n\n\t\tcontext._persistent.userChanges = userChanges;\n\t}\n\n\treturn {\n\t\tcontext,\n\t\tsections: sortedSections,\n\t\tisContextUpdated,\n\t};\n}\n"],"file":"selections.js"}
|
package/cjs/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/sync.js"],"names":["defaults","_","assign","urlError","Error","methodMap","create","update","patch","delete","read","defaultFetchURL","model","log","warn","url","buildURL","method","urlParse","url2","parse","replace","search","sync","syncArguments","arguments","syncActions","middlewares","forEach","middleware","push","apply","Promise","all","then","ajaxSync","options","type","emulateHTTP","emulateJSON","params","result","data","batch","json","attrs","toJSON","requestSettings","request","toServer","isArray","FormData","pick","Object","keys","send","xhr","preflight","mc","getNextMiddleware","middlewareInterceptor","response","length","intercept","resolve","trigger","ajaxConfig","headers","key","header","toLowerCase","cached","deleted","cachedResponse","JSON","text","each","success","catch","error","message","timeout","e","set","emit","superagent","SuperagentPromiseError","res","body","status","stringify","originalError","code"],"mappings":"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","sourcesContent":["import Promise from \"bluebird\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport log from \"./log.js\";\nimport { middlewares } from \"./middleware.js\";\nimport superagent from \"superagent\";\nimport url2 from \"url\";\n\nconst defaults = _.defaults;\nconst assign = _.assign;\n\n// Throw an error when a URL is needed, and none is supplied.\nconst urlError = function () {\n\tthrow new Error(`A \"url\" property or function must be specified`);\n};\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport const methodMap = {\n\tcreate: \"POST\",\n\tupdate: \"PUT\",\n\tpatch: \"PATCH\",\n\tdelete: \"DELETE\",\n\tread: \"GET\",\n};\n\nexport const defaultFetchURL = function ({ model }) {\n\tlog.warn(\"Deprecation: defaultFetchURL is deprecated. Just use .url()\");\n\treturn model.url();\n};\n\nexport const buildURL = function ({ method, model }) {\n\tconst url = model.url();\n\tconst urlParse = url2.parse(url);\n\n\t// If not a GET request, strip the query params from the url\n\tif (method !== \"read\") {\n\t\treturn url.replace(urlParse.search, \"\");\n\t}\n\n\treturn url;\n};\n\nexport const sync = function (method) {\n\tconst syncArguments = arguments;\n\n\tif (method === \"read\") {\n\t\t// look for sync methods\n\t\tconst syncActions = [];\n\t\tmiddlewares.forEach((middleware) => {\n\t\t\tif (middleware.sync) {\n\t\t\t\tsyncActions.push(middleware.sync.apply(this, syncArguments));\n\t\t\t}\n\t\t});\n\n\t\treturn Promise.all(syncActions).then(() => {\n\t\t\treturn ajaxSync.apply(this, syncArguments);\n\t\t});\n\t}\n\treturn ajaxSync.apply(this, syncArguments);\n};\n\nexport const ajaxSync = function (method, model, options) {\n\tconst type = methodMap[method];\n\n\t// Default options, unless specified.\n\tdefaults(options || (options = {}), {\n\t\temulateHTTP: false,\n\t\temulateJSON: false,\n\t});\n\n\t// Default request options.\n\tconst params = { type: type };\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\toptions.url = _.result(model, \"url\") || urlError();\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (\n\t\toptions.data === null &&\n\t\tmodel &&\n\t\t(method === \"create\" ||\n\t\t\tmethod === \"update\" ||\n\t\t\tmethod === \"patch\" ||\n\t\t\t(method === \"delete\" && options.batch))\n\t) {\n\t\tparams.json = options.attrs || model.toJSON(options);\n\t}\n\n\tconst url = buildURL({ method, model, options });\n\n\tconst requestSettings = assign(params, options);\n\trequestSettings.method = type;\n\n\tconst request = SuperAgentRequest(type, url);\n\n\tif (\n\t\ttype === \"PATCH\" ||\n\t\ttype === \"POST\" ||\n\t\ttype === \"PUT\" ||\n\t\t(type === \"DELETE\" && options.batch)\n\t) {\n\t\tlet data = model.toServer();\n\n\t\t// Note we can use formdata to override the way a patch works - if we\n\t\t// are doing this it's for a particular patch with an image or file,\n\t\t// probably.\n\t\tif (type === \"PATCH\" && !_.isArray(data) && !(data instanceof FormData)) {\n\t\t\t// Make sure we're only updating data actually passed to the save\n\t\t\t// function, rather than automatically generated stuff\n\t\t\tdata = _.pick(options.attrs, Object.keys(data));\n\t\t}\n\t\trequest.send(data);\n\t}\n\n\toptions.xhr = request;\n\n\tmiddlewares.forEach((middleware) => {\n\t\tif (middleware.preflight) {\n\t\t\tmiddleware.preflight(request);\n\t\t}\n\t});\n\n\tlet mc = 0;\n\n\tfunction getNextMiddleware(request) {\n\t\treturn function middlewareInterceptor(response) {\n\t\t\tif (mc < middlewares.length) {\n\t\t\t\treturn middlewares[mc++]\n\t\t\t\t\t.intercept(request, response, model)\n\t\t\t\t\t.then(getNextMiddleware(request));\n\t\t\t}\n\t\t\treturn Promise.resolve(response);\n\t\t};\n\t}\n\n\tmodel.trigger(\"request\", model, request, options, requestSettings);\n\trequest.requestSettings = requestSettings;\n\n\tconst ajaxConfig = _.result(model, \"ajaxConfig\") || {};\n\n\t// Combine generated headers with user's headers.\n\tif (ajaxConfig.headers) {\n\t\tfor (const key in ajaxConfig.headers) {\n\t\t\trequest.header[key.toLowerCase()] = ajaxConfig.headers[key];\n\t\t}\n\t}\n\n\tif (options.headers) {\n\t\tfor (const key in options.headers) {\n\t\t\trequest.header[key.toLowerCase()] = options.headers[key];\n\t\t}\n\t}\n\n\t// TODO: Remove me when this can be moved... for now this removal is quite a complex\n\t// process.\n\tif (options.cached && !options.deleted) {\n\t\treturn Promise.resolve(options.cachedResponse)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then(function (response) {\n\t\t\t\tif (!response.data) {\n\t\t\t\t\tresponse.data = JSON.parse(response.text);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, true);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(response.data, \"success\", response);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response.data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(function (response) {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response, model);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\treturn (\n\t\trequest\n\t\t\t// Force a timeout on every request. Intermittent connections\n\t\t\t// can have the request continue trying for minutes otherwise.\n\t\t\t.timeout(60 * 1000)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then(function (response) {\n\t\t\t\tlet data;\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(response.text);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tdata = response;\n\t\t\t\t}\n\n\t\t\t\tif (type !== \"DELETE\") {\n\t\t\t\t\tmodel.set(data);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, false);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(data, \"success\", response);\n\t\t\t\t\t}\n\t\t\t\t\trequest.emit(\"success\", response);\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\tif (\n\t\t\t\t\te.res &&\n\t\t\t\t\te.res.body &&\n\t\t\t\t\t((e.status >= 400 && e.status < 500) || e.status === 503)\n\t\t\t\t) {\n\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t})\n\t\t\t.catch(function (response) {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Provide a more explanatory error message on timeout\n\t\t\t\t\tif (\n\t\t\t\t\t\tresponse &&\n\t\t\t\t\t\tresponse.originalError &&\n\t\t\t\t\t\tresponse.originalError.code === \"ECONNABORTED\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Failed ${type} request on url: ${url}. ${response.message}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t})\n\t);\n};\n"],"file":"sync.js"}
|
|
1
|
+
{"version":3,"sources":["../src/sync.js"],"names":["defaults","_","assign","urlError","Error","methodMap","create","update","patch","delete","read","defaultFetchURL","model","log","warn","url","buildURL","method","urlParse","url2","parse","replace","search","sync","syncArguments","arguments","syncActions","middlewares","forEach","middleware","push","apply","Promise","all","then","ajaxSync","options","type","emulateHTTP","emulateJSON","params","result","data","batch","json","attrs","toJSON","requestSettings","request","toServer","isArray","FormData","pick","Object","keys","send","xhr","preflight","mc","getNextMiddleware","middlewareInterceptor","response","length","intercept","resolve","trigger","ajaxConfig","headers","key","header","toLowerCase","cached","deleted","cachedResponse","JSON","text","each","success","catch","error","message","timeout","e","set","emit","superagent","SuperagentPromiseError","res","body","status","stringify","originalError","code"],"mappings":"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","sourcesContent":["import Promise from \"bluebird\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport log from \"./log.js\";\nimport { middlewares } from \"./middleware.js\";\nimport superagent from \"superagent\";\nimport url2 from \"url\";\n\nconst defaults = _.defaults;\nconst assign = _.assign;\n\n// Throw an error when a URL is needed, and none is supplied.\nconst urlError = function () {\n\tthrow new Error(`A \"url\" property or function must be specified`);\n};\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport const methodMap = {\n\tcreate: \"POST\",\n\tupdate: \"PUT\",\n\tpatch: \"PATCH\",\n\tdelete: \"DELETE\",\n\tread: \"GET\",\n};\n\nexport const defaultFetchURL = function ({ model }) {\n\tlog.warn(\"Deprecation: defaultFetchURL is deprecated. Just use .url()\");\n\treturn model.url();\n};\n\nexport const buildURL = function ({ method, model }) {\n\tconst url = model.url();\n\tconst urlParse = url2.parse(url);\n\n\t// If not a GET request, strip the query params from the url\n\tif (method !== \"read\") {\n\t\treturn url.replace(urlParse.search, \"\");\n\t}\n\n\treturn url;\n};\n\nexport const sync = function (method) {\n\tconst syncArguments = arguments;\n\n\tif (method === \"read\") {\n\t\t// look for sync methods\n\t\tconst syncActions = [];\n\t\tmiddlewares.forEach((middleware) => {\n\t\t\tif (middleware.sync) {\n\t\t\t\tsyncActions.push(middleware.sync.apply(this, syncArguments));\n\t\t\t}\n\t\t});\n\n\t\treturn Promise.all(syncActions).then(() => {\n\t\t\treturn ajaxSync.apply(this, syncArguments);\n\t\t});\n\t}\n\treturn ajaxSync.apply(this, syncArguments);\n};\n\nexport const ajaxSync = function (method, model, options) {\n\tconst type = methodMap[method];\n\n\t// Default options, unless specified.\n\tdefaults(options || (options = {}), {\n\t\temulateHTTP: false,\n\t\temulateJSON: false,\n\t});\n\n\t// Default request options.\n\tconst params = { type: type };\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\toptions.url = _.result(model, \"url\") || urlError();\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (\n\t\toptions.data === null &&\n\t\tmodel &&\n\t\t(method === \"create\" ||\n\t\t\tmethod === \"update\" ||\n\t\t\tmethod === \"patch\" ||\n\t\t\t(method === \"delete\" && options.batch))\n\t) {\n\t\tparams.json = options.attrs || model.toJSON(options);\n\t}\n\n\tconst url = buildURL({ method, model, options });\n\n\tconst requestSettings = assign(params, options);\n\trequestSettings.method = type;\n\n\tconst request = SuperAgentRequest(type, url);\n\n\tif (\n\t\ttype === \"PATCH\" ||\n\t\ttype === \"POST\" ||\n\t\ttype === \"PUT\" ||\n\t\t(type === \"DELETE\" && options.batch)\n\t) {\n\t\tlet data = model.toServer();\n\n\t\t// Note we can use formdata to override the way a patch works - if we\n\t\t// are doing this it's for a particular patch with an image or file,\n\t\t// probably.\n\t\tif (type === \"PATCH\" && !_.isArray(data) && !(data instanceof FormData)) {\n\t\t\t// Make sure we're only updating data actually passed to the save\n\t\t\t// function, rather than automatically generated stuff\n\t\t\tdata = _.pick(options.attrs, Object.keys(data));\n\t\t}\n\t\trequest.send(data);\n\t}\n\n\toptions.xhr = request;\n\n\tmiddlewares.forEach((middleware) => {\n\t\tif (middleware.preflight) {\n\t\t\tmiddleware.preflight(request);\n\t\t}\n\t});\n\n\tlet mc = 0;\n\n\tfunction getNextMiddleware(request) {\n\t\treturn function middlewareInterceptor(response) {\n\t\t\tif (mc < middlewares.length) {\n\t\t\t\treturn middlewares[mc++]\n\t\t\t\t\t.intercept(request, response, model)\n\t\t\t\t\t.then(getNextMiddleware(request));\n\t\t\t}\n\t\t\treturn Promise.resolve(response);\n\t\t};\n\t}\n\n\tmodel.trigger(\"request\", model, request, options, requestSettings);\n\trequest.requestSettings = requestSettings;\n\n\tconst ajaxConfig = _.result(model, \"ajaxConfig\") || {};\n\n\t// Combine generated headers with user's headers.\n\tif (ajaxConfig.headers) {\n\t\tfor (const key in ajaxConfig.headers) {\n\t\t\trequest.header[key.toLowerCase()] = ajaxConfig.headers[key];\n\t\t}\n\t}\n\n\tif (options.headers) {\n\t\tfor (const key in options.headers) {\n\t\t\trequest.header[key.toLowerCase()] = options.headers[key];\n\t\t}\n\t}\n\n\t// TODO: Remove me when this can be moved... for now this removal is quite a complex\n\t// process.\n\tif (options.cached && !options.deleted) {\n\t\treturn Promise.resolve(options.cachedResponse)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then(function (response) {\n\t\t\t\tif (!response.data) {\n\t\t\t\t\tresponse.data = JSON.parse(response.text);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, true);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(response.data, \"success\", response);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response.data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(function (response) {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response, model);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\treturn (\n\t\trequest\n\t\t\t// Force a timeout on every request. Intermittent connections\n\t\t\t// can have the request continue trying for minutes otherwise.\n\t\t\t.timeout(60 * 1000)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then(function (response) {\n\t\t\t\tlet data;\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(response.text);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tdata = response;\n\t\t\t\t}\n\n\t\t\t\tif (type !== \"DELETE\") {\n\t\t\t\t\tmodel.set(data);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, false);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(data, \"success\", response);\n\t\t\t\t\t}\n\t\t\t\t\trequest.emit(\"success\", response);\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\tif (\n\t\t\t\t\te.res &&\n\t\t\t\t\te.res.body &&\n\t\t\t\t\t((e.status >= 400 && e.status < 500) || e.status === 503)\n\t\t\t\t) {\n\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t})\n\t\t\t.catch(function (response) {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Provide a more explanatory error message on timeout\n\t\t\t\t\tif (\n\t\t\t\t\t\tresponse &&\n\t\t\t\t\t\tresponse.originalError &&\n\t\t\t\t\t\tresponse.originalError.code === \"ECONNABORTED\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Failed ${type} request on url: ${url}. ${response.message}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t})\n\t);\n};\n"],"file":"sync.js"}
|
package/cjs/utils.js
CHANGED
|
@@ -13,15 +13,23 @@ exports.isImpostor = isImpostor;
|
|
|
13
13
|
exports.isImpostorDeck = isImpostorDeck;
|
|
14
14
|
exports.removeMultiByteChars = removeMultiByteChars;
|
|
15
15
|
exports.replaceHostname = replaceHostname;
|
|
16
|
+
exports.sanitizeBase64 = sanitizeBase64;
|
|
16
17
|
exports.setSequentialSequences = setSequentialSequences;
|
|
17
18
|
|
|
19
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
|
+
|
|
21
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
22
|
+
|
|
18
23
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
19
24
|
|
|
20
25
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
21
26
|
|
|
22
27
|
var _url = _interopRequireDefault(require("url"));
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
30
|
+
|
|
31
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
32
|
+
|
|
25
33
|
var DATE_FORMAT = "YYYY-MM-DD HH:mm:ss.SSSSSS[Z]";
|
|
26
34
|
exports.DATE_FORMAT = DATE_FORMAT;
|
|
27
35
|
var DATE_FORMAT_T = "YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]";
|
|
@@ -37,17 +45,15 @@ function getShortURL(url) {
|
|
|
37
45
|
*/
|
|
38
46
|
|
|
39
47
|
|
|
40
|
-
function removeMultiByteChars(
|
|
48
|
+
function removeMultiByteChars(_txt) {
|
|
41
49
|
// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space
|
|
42
|
-
txt =
|
|
50
|
+
var txt = _txt.replace(/(\xA0| |\x07|\xE2\x80\x89)/gm, " "); // remove every other cursed character entirely.
|
|
51
|
+
|
|
43
52
|
|
|
44
53
|
return txt.replace(/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}|[\x80-\xBF][\xC0-\xFF]/gm, "");
|
|
45
54
|
}
|
|
46
55
|
|
|
47
56
|
var HOSTNAME_RE = /^(?:https?:\/\/)?([\w-\._]*)/;
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
*/
|
|
51
57
|
|
|
52
58
|
function getHostname(data) {
|
|
53
59
|
if (typeof data !== "string") {
|
|
@@ -152,4 +158,35 @@ function isImpostorDeck(deckVersionModel) {
|
|
|
152
158
|
return isImpostor(slide);
|
|
153
159
|
}));
|
|
154
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Strips base64 strings recursively.
|
|
163
|
+
*
|
|
164
|
+
* Optionally accepts a condition function, which you can use you add any extra
|
|
165
|
+
* checks to test whether you want to clear the string.
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
function sanitizeBase64(obj) {
|
|
170
|
+
var conditionFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
|
|
171
|
+
return true;
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
if (Array.isArray(obj)) {
|
|
175
|
+
return obj.map(function (v) {
|
|
176
|
+
return sanitizeBase64(v, conditionFn);
|
|
177
|
+
});
|
|
178
|
+
} else if ((0, _typeof2.default)(obj) === "object" && obj !== null && typeof obj !== "undefined") {
|
|
179
|
+
return Object.keys(obj).reduce(function (acc, key) {
|
|
180
|
+
return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2.default)({}, key, sanitizeBase64(obj[key], conditionFn)));
|
|
181
|
+
}, {});
|
|
182
|
+
} else if (typeof obj === "string") {
|
|
183
|
+
var re = /^data:image\/[a-zA-Z]+;base64,[A-Za-z0-9+/=]+$/;
|
|
184
|
+
|
|
185
|
+
if (re.test(obj) && conditionFn(obj)) {
|
|
186
|
+
return "";
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return obj;
|
|
191
|
+
}
|
|
155
192
|
//# sourceMappingURL=utils.js.map
|
package/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.js"],"names":["DATE_FORMAT","DATE_FORMAT_T","getShortURL","url","url2","parse","path","removeMultiByteChars","txt","replace","HOSTNAME_RE","getHostname","data","Error","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","Object","keys","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","flatten","max","setSequentialSequences","deck","sections","forEach","index","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/utils.js"],"names":["DATE_FORMAT","DATE_FORMAT_T","getShortURL","url","url2","parse","path","removeMultiByteChars","_txt","txt","replace","HOSTNAME_RE","getHostname","data","Error","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","Object","keys","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","flatten","max","setSequentialSequences","deck","sections","forEach","index","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find","sanitizeBase64","obj","conditionFn","v","acc","re","test"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;;;;;AAEO,IAAMA,WAAW,GAAG,+BAApB;;AACA,IAAMC,aAAa,GAAG,+BAAtB;;;AAEA,SAASC,WAAT,CAAqBC,GAArB,EAA0B;AAChC,SAAOC,aAAKC,KAAL,CAAWF,GAAX,EAAgBG,IAAvB;AACA;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASC,oBAAT,CAA8BC,IAA9B,EAAoC;AAC1C;AACA,MAAMC,GAAG,GAAGD,IAAI,CAACE,OAAL,CAAa,8BAAb,EAAwC,GAAxC,CAAZ,CAF0C,CAI1C;;;AACA,SAAOD,GAAG,CAACC,OAAJ,CACN,qGADM,EAEN,EAFM,CAAP;AAIA;;AAED,IAAMC,WAAW,GAAG,8BAApB;;AAEO,SAASC,WAAT,CAAqBC,IAArB,EAA2B;AACjC,MAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC7B,UAAM,IAAIC,KAAJ,4EAC4DD,IAD5D,QAAN;AAGA;;AAED,SAAOA,IAAI,CAACE,KAAL,CAAWJ,WAAX,EAAwB,CAAxB,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASK,eAAT,CAAyBH,IAAzB,EAA+BI,MAA/B,EAAuCC,KAAvC,EAA8C;AACpD;AACA,MAAID,MAAM,KAAKC,KAAf,EAAsB;AACrB,WAAOL,IAAP;AACA;;AAED,MAAMM,cAAc,GAAGP,WAAW,CAACK,MAAD,EAAS,QAAT,CAAlC;AACA,MAAMG,aAAa,GAAGR,WAAW,CAACM,KAAD,EAAQ,OAAR,CAAjC;;AAEA,MAAI,OAAOL,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACQ,OAAL,CAAa,MAAb,MAAyB,CAAzD,EAA4D;AAC3D,WAAOR,IAAI,CAACH,OAAL,CAAaS,cAAb,EAA6BC,aAA7B,CAAP;AACA,GAFD,MAEO,IAAIE,KAAK,CAACC,OAAN,CAAcV,IAAd,CAAJ,EAAyB;AAC/B,WAAOA,IAAI,CAACW,GAAL,CAAS,UAACC,IAAD;AAAA,aAAUT,eAAe,CAACS,IAAD,EAAOR,MAAP,EAAeC,KAAf,CAAzB;AAAA,KAAT,CAAP;AACA,GAFM,MAEA,IAAIQ,gBAAEC,QAAF,CAAWd,IAAX,CAAJ,EAAsB;AAC5B,WAAOe,MAAM,CAACC,IAAP,CAAYhB,IAAZ,EAAkBiB,MAAlB,CAAyB,UAACC,MAAD,EAASC,GAAT,EAAiB;AAChDD,MAAAA,MAAM,CAACC,GAAD,CAAN,GAAchB,eAAe,CAACH,IAAI,CAACmB,GAAD,CAAL,EAAYf,MAAZ,EAAoBC,KAApB,CAA7B;AACA,aAAOa,MAAP;AACA,KAHM,EAGJ,EAHI,CAAP;AAIA;;AACD,SAAOlB,IAAP;AACA,C,CAED;AACA;;;AACO,SAASoB,QAAT,CAAkBC,gBAAlB,EAAoC;AAC1C,MAAMC,GAAG,GAAGD,gBAAgB,CAACE,WAAjB,CAA6BZ,GAA7B,CAAiC,UAACa,OAAD,EAAa;AACzD,QAAIC,MAAM,GAAG,EAAb;;AACA,QAAID,OAAO,CAACE,SAAZ,EAAuB;AACtBD,MAAAA,MAAM,GAAGD,OAAO,CAACE,SAAR,CAAkBf,GAAlB,CAAsB,UAACgB,KAAD,EAAW;AACzC,YAAIC,SAAS,GAAG,EAAhB;;AAEA,YAAID,KAAK,CAACE,YAAV,EAAwB;AACvBD,UAAAA,SAAS,GAAGD,KAAK,CAACE,YAAN,CAAmBlB,GAAnB,CAAuB,UAACmB,QAAD;AAAA,mBAAcA,QAAQ,CAACC,EAAvB;AAAA,WAAvB,CAAZ;AACA;;AAED,gBAAQJ,KAAK,CAACI,EAAd,0CAAqBH,SAArB;AACA,OARQ,CAAT;AASA;;AAED,YAAQJ,OAAO,CAACO,EAAhB,0CAAuBlB,gBAAEmB,OAAF,CAAUP,MAAV,CAAvB;AACA,GAfW,CAAZ;AAiBA,SAAOZ,gBAAEoB,GAAF,CAAMpB,gBAAEmB,OAAF,CAAUV,GAAV,CAAN,CAAP;AACA,C,CAED;AACA;AACA;;;AACO,SAASY,sBAAT,CAAgCC,IAAhC,EAAsC;AAC5CA,EAAAA,IAAI,CAACC,QAAL,CAAcC,OAAd,CAAsB,UAACb,OAAD,EAAUc,KAAV,EAAoB;AACzCd,IAAAA,OAAO,CAACe,QAAR,GAAmBD,KAAnB;AACAd,IAAAA,OAAO,CAACc,KAAR,GAAgBA,KAAhB;AAEAd,IAAAA,OAAO,CAACC,MAAR,CAAeY,OAAf,CAAuB,UAACV,KAAD,EAAQW,KAAR,EAAkB;AACxCX,MAAAA,KAAK,CAACY,QAAN,GAAiBD,KAAjB;AACAX,MAAAA,KAAK,CAACW,KAAN,GAAcA,KAAd;AAEAX,MAAAA,KAAK,CAACC,SAAN,CAAgBS,OAAhB,CAAwB,UAACP,QAAD,EAAWQ,KAAX,EAAqB;AAC5CR,QAAAA,QAAQ,CAACS,QAAT,GAAoBD,KAApB;AACAR,QAAAA,QAAQ,CAACQ,KAAT,GAAiBA,KAAjB;AACA,OAHD;AAIA,KARD;AASA,GAbD;AAcA,C,CAED;AACA;;;AACO,SAASE,UAAT,CAAoBC,KAApB,EAA2B;AACjC,MAAMC,IAAI,GAAGD,KAAK,CAACC,IAAN,IAAc,EAA3B;AAEA,SAAOA,IAAI,CAAClC,OAAL,CAAa,gBAAb,MAAmC,CAAC,CAA3C;AACA,C,CAED;AACA;AACA;;;AACO,SAASmC,cAAT,CAAwBtB,gBAAxB,EAA0C;AAChD,MAAMG,OAAO,GAAGH,gBAAgB,CAACE,WAAjB,CAA6BqB,KAA7B,EAAhB;AAEA,SAAOC,OAAO,CACbrB,OAAO,IAAIA,OAAO,CAACE,SAAR,CAAkBoB,IAAlB,CAAuB,UAACnB,KAAD;AAAA,WAAWa,UAAU,CAACb,KAAD,CAArB;AAAA,GAAvB,CADE,CAAd;AAGA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASoB,cAAT,CAAwBC,GAAxB,EAAuD;AAAA,MAA1BC,WAA0B,uEAAZ;AAAA,WAAM,IAAN;AAAA,GAAY;;AAC7D,MAAIxC,KAAK,CAACC,OAAN,CAAcsC,GAAd,CAAJ,EAAwB;AACvB,WAAOA,GAAG,CAACrC,GAAJ,CAAQ,UAACuC,CAAD;AAAA,aAAOH,cAAc,CAACG,CAAD,EAAID,WAAJ,CAArB;AAAA,KAAR,CAAP;AACA,GAFD,MAEO,IACN,sBAAOD,GAAP,MAAe,QAAf,IACAA,GAAG,KAAK,IADR,IAEA,OAAOA,GAAP,KAAe,WAHT,EAIL;AACD,WAAOjC,MAAM,CAACC,IAAP,CAAYgC,GAAZ,EAAiB/B,MAAjB,CAAwB,UAACkC,GAAD,EAAMhC,GAAN,EAAc;AAC5C,6CAAYgC,GAAZ,yCAAkBhC,GAAlB,EAAwB4B,cAAc,CAACC,GAAG,CAAC7B,GAAD,CAAJ,EAAW8B,WAAX,CAAtC;AACA,KAFM,EAEJ,EAFI,CAAP;AAGA,GARM,MAQA,IAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;AACnC,QAAMI,EAAE,GAAG,gDAAX;;AACA,QAAIA,EAAE,CAACC,IAAH,CAAQL,GAAR,KAAgBC,WAAW,CAACD,GAAD,CAA/B,EAAsC;AACrC,aAAO,EAAP;AACA;AACD;;AACD,SAAOA,GAAP;AACA","sourcesContent":["import _ from \"lodash\";\n/* eslint-disable no-control-regex */\nimport url2 from \"url\";\n\nexport const DATE_FORMAT = \"YYYY-MM-DD HH:mm:ss.SSSSSS[Z]\";\nexport const DATE_FORMAT_T = \"YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]\";\n\nexport function getShortURL(url) {\n\treturn url2.parse(url).path;\n}\n\n/**\n * Sometimes a string(especially from another platform) has characters encoded using another method.\n * In these circumstances those characters, when encoded with utf-8, look like errors.\n * see http://i18nqa.com/debug/utf8-debug.html for examples\n */\nexport function removeMultiByteChars(_txt) {\n\t// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space\n\tconst txt = _txt.replace(/(\\xA0|\\x20|\\x07|â)/gmu, \" \");\n\n\t// remove every other cursed character entirely.\n\treturn txt.replace(\n\t\t/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}|[\\x80-\\xBF][\\xC0-\\xFF]/gmu,\n\t\t\"\",\n\t);\n}\n\nconst HOSTNAME_RE = /^(?:https?:\\/\\/)?([\\w-\\._]*)/;\n\nexport function getHostname(data) {\n\tif (typeof data !== \"string\") {\n\t\tthrow new Error(\n\t\t\t`Arg must contain a hostname, ie: \"test.livepreso.com\". Found \"${data}\"`,\n\t\t);\n\t}\n\n\treturn data.match(HOSTNAME_RE)[1];\n}\n\n/**\n * Replaces the hostname in some data (regardless of it being a string, array or object),\n * it will recursively update it all.\n *\n * Eg:\n *\n * replaceHostname(\"https://test.com/api/cool/1/\", \"test.com\", \"real.com\")\n * > \"https://real.com/api/cool/1/\"\n *\n */\nexport function replaceHostname(data, before, after) {\n\t// Don't do anything if they're the same!\n\tif (before === after) {\n\t\treturn data;\n\t}\n\n\tconst hostnameBefore = getHostname(before, \"Before\");\n\tconst hostnameAfter = getHostname(after, \"After\");\n\n\tif (typeof data === \"string\" && data.indexOf(\"http\") === 0) {\n\t\treturn data.replace(hostnameBefore, hostnameAfter);\n\t} else if (Array.isArray(data)) {\n\t\treturn data.map((item) => replaceHostname(item, before, after));\n\t} else if (_.isObject(data)) {\n\t\treturn Object.keys(data).reduce((newObj, key) => {\n\t\t\tnewObj[key] = replaceHostname(data[key], before, after);\n\t\t\treturn newObj;\n\t\t}, {});\n\t}\n\treturn data;\n}\n\n// Takes the deckversion model and retrieves the highest id between all of\n// the sections, slides and subslides\nexport function getMaxID(deckVersionModel) {\n\tconst ids = deckVersionModel.section_set.map((section) => {\n\t\tlet slides = [];\n\t\tif (section.slide_set) {\n\t\t\tslides = section.slide_set.map((slide) => {\n\t\t\t\tlet subslides = [];\n\n\t\t\t\tif (slide.subslide_set) {\n\t\t\t\t\tsubslides = slide.subslide_set.map((subslide) => subslide.id);\n\t\t\t\t}\n\n\t\t\t\treturn [slide.id, ...subslides];\n\t\t\t});\n\t\t}\n\n\t\treturn [section.id, ..._.flatten(slides)];\n\t});\n\n\treturn _.max(_.flatten(ids));\n}\n\n// The sections, slides and subslides are currently ordered by sequence\n// but the sequence is not necessarily 0-based and sequential (e.g. in the\n// case of impostor decks). We fix that here.\nexport function setSequentialSequences(deck) {\n\tdeck.sections.forEach((section, index) => {\n\t\tsection.sequence = index;\n\t\tsection.index = index;\n\n\t\tsection.slides.forEach((slide, index) => {\n\t\t\tslide.sequence = index;\n\t\t\tslide.index = index;\n\n\t\t\tslide.subslides.forEach((subslide, index) => {\n\t\t\t\tsubslide.sequence = index;\n\t\t\t\tsubslide.index = index;\n\t\t\t});\n\t\t});\n\t});\n}\n\n// A simple function to check the tags of a model - if it has the \"section-header\"\n// tag then it's an impostor slide\nexport function isImpostor(model) {\n\tconst tags = model.tags || [];\n\n\treturn tags.indexOf(\"section-header\") !== -1;\n}\n\n// An impostor deck will have impostor slides - checking for these is the\n// most reliable method of determining whether a deck is an impostor deck,\n// and is also the same method that the server uses.\nexport function isImpostorDeck(deckVersionModel) {\n\tconst section = deckVersionModel.section_set.first();\n\n\treturn Boolean(\n\t\tsection && section.slide_set.find((slide) => isImpostor(slide)),\n\t);\n}\n\n/**\n * Strips base64 strings recursively.\n *\n * Optionally accepts a condition function, which you can use you add any extra\n * checks to test whether you want to clear the string.\n */\nexport function sanitizeBase64(obj, conditionFn = () => true) {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((v) => sanitizeBase64(v, conditionFn));\n\t} else if (\n\t\ttypeof obj === \"object\" &&\n\t\tobj !== null &&\n\t\ttypeof obj !== \"undefined\"\n\t) {\n\t\treturn Object.keys(obj).reduce((acc, key) => {\n\t\t\treturn { ...acc, [key]: sanitizeBase64(obj[key], conditionFn) };\n\t\t}, {});\n\t} else if (typeof obj === \"string\") {\n\t\tconst re = /^data:image\\/[a-zA-Z]+;base64,[A-Za-z0-9+/=]+$/;\n\t\tif (re.test(obj) && conditionFn(obj)) {\n\t\t\treturn \"\";\n\t\t}\n\t}\n\treturn obj;\n}\n"],"file":"utils.js"}
|
package/cjs/utils.spec.js
CHANGED
|
@@ -17,7 +17,7 @@ describe("removeMultiByteChars()", function () {
|
|
|
17
17
|
var testString = "SUZI LUCKâS CANTEENâ& COCKTAIL BAR";
|
|
18
18
|
expect((0, _utils.removeMultiByteChars)(testString)).toEqual("SUZI LUCKS CANTEEN & COCKTAIL BAR");
|
|
19
19
|
});
|
|
20
|
-
test("
|
|
20
|
+
test("sanitize urls correctly", function () {
|
|
21
21
|
var testString = "http://client.salespreso.com/api/users/1/â";
|
|
22
22
|
var testString2 = "/api/users/1/â";
|
|
23
23
|
var testString3 = "/api/users/1/?param=1&test=3&_r=4";
|
package/cjs/utils.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.spec.js"],"names":["describe","test","url","expect","toEqual","testString","testString2","testString3","it","actual","toThrow","data","expected","beforeURL","afterURL","first","anArray","nestedObject","second"],"mappings":";;AAAA;;AAOAA,QAAQ,CAAC,eAAD,EAAkB,YAAM;AAC/BC,EAAAA,IAAI,CAAC,mCAAD,EAAsC,
|
|
1
|
+
{"version":3,"sources":["../src/utils.spec.js"],"names":["describe","test","url","expect","toEqual","testString","testString2","testString3","it","actual","toThrow","data","expected","beforeURL","afterURL","first","anArray","nestedObject","second"],"mappings":"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","sourcesContent":["import {\n\tgetHostname,\n\tgetShortURL,\n\tremoveMultiByteChars,\n\treplaceHostname,\n} from \"./utils.js\";\n\ndescribe(\"getShortURL()\", () => {\n\ttest(\"shorten a full url to a short one\", () => {\n\t\tconst url = \"http://client.salespreso.com/api/users/1/\";\n\t\texpect(getShortURL(url)).toEqual(\"/api/users/1/\");\n\t});\n\n\ttest(\"not break an already short url\", () => {\n\t\tconst url = \"/api/users/1/\";\n\t\texpect(getShortURL(url)).toEqual(\"/api/users/1/\");\n\t});\n});\n\ndescribe(\"removeMultiByteChars()\", () => {\n\ttest(\"correctly strip offending multibyte characters from string\", () => {\n\t\tconst testString = \"SUZI LUCKâS CANTEENâ& COCKTAIL BAR\";\n\t\texpect(removeMultiByteChars(testString)).toEqual(\n\t\t\t\"SUZI LUCKS CANTEEN & COCKTAIL BAR\",\n\t\t);\n\t});\n\n\ttest(\"sanitize urls correctly\", () => {\n\t\tconst testString = \"http://client.salespreso.com/api/users/1/â\";\n\t\tconst testString2 = \"/api/users/1/â\";\n\t\tconst testString3 = \"/api/users/1/?param=1&test=3&_r=4\";\n\t\texpect(removeMultiByteChars(testString)).toEqual(\n\t\t\t\"http://client.salespreso.com/api/users/1/\",\n\t\t);\n\t\texpect(removeMultiByteChars(testString2)).toEqual(\"/api/users/1/\");\n\t\texpect(removeMultiByteChars(testString3)).toEqual(\n\t\t\t\"/api/users/1/?param=1&test=3&_r=4\",\n\t\t);\n\t});\n});\n\ndescribe(\"getHostname()\", () => {\n\tit(\"throws an error if hostname isn't a string\", () => {\n\t\tconst actual = () => getHostname(null);\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"returns a hostname from a full URL\", () => {\n\t\tconst actual = getHostname(\"https://www.horse.com/api/horses/1/\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n\n\tit(\"returns a hostname from just the domain\", () => {\n\t\tconst actual = getHostname(\"https://www.horse.com/\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n\n\tit(\"just returns the hostname\", () => {\n\t\tconst actual = getHostname(\"www.horse.com\");\n\t\texpect(actual).toEqual(\"www.horse.com\");\n\t});\n});\n\ndescribe(\"replaceHostname()\", () => {\n\tit(\"throws an error if not from hostname\", () => {\n\t\tconst actual = () => replaceHostname(\"foo\", null, \"brand.new.com\");\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"throws an error if not to hostname\", () => {\n\t\tconst actual = () => replaceHostname(\"foo\", \"old.url.com\", null);\n\t\texpect(actual).toThrow();\n\t});\n\n\tit(\"replaces hostname of a string\", () => {\n\t\tconst data = \"https://old.url.com/api/appointments/1/\";\n\t\tconst expected = \"https://brand.new.com/api/appointments/1/\";\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"takes into account the protocol\", () => {\n\t\tconst data = \"http://old.url.com/api/appointments/1/\";\n\t\tconst expected = \"http://brand.new.com/api/appointments/1/\";\n\t\tconst actual = replaceHostname(\n\t\t\tdata,\n\t\t\t\"https://old.url.com/\",\n\t\t\t\"https://brand.new.com/\",\n\t\t);\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"replaces hostnames in an array\", () => {\n\t\tconst data = [\n\t\t\t\"https://old.url.com/api/appointments/1/\",\n\t\t\t\"https://old.url.com/api/foo/1/bars/1/\",\n\t\t];\n\t\tconst expected = [\n\t\t\t\"https://brand.new.com/api/appointments/1/\",\n\t\t\t\"https://brand.new.com/api/foo/1/bars/1/\",\n\t\t];\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"replaces hostnames in an object\", () => {\n\t\tconst data = {\n\t\t\turl: \"https://old.url.com/api/appointments/1/\",\n\t\t};\n\t\tconst expected = {\n\t\t\turl: \"https://brand.new.com/api/appointments/1/\",\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"hostnames not related aren't affected\", () => {\n\t\tconst data = {\n\t\t\turl: \"https://some.otherurl.com/helloworld/\",\n\t\t};\n\t\tconst expected = {\n\t\t\turl: \"https://some.otherurl.com/helloworld/\",\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"brand.new.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"updates data that is nested\", () => {\n\t\tconst beforeURL = \"https://old.url.com/api/appointments/1/\";\n\t\tconst afterURL = \"https://some.otherurl.com/api/appointments/1/\";\n\n\t\tconst data = {\n\t\t\tfirst: beforeURL,\n\t\t\tanArray: [beforeURL, beforeURL],\n\t\t\tnestedObject: {\n\t\t\t\tfirst: beforeURL,\n\t\t\t\tsecond: beforeURL,\n\t\t\t},\n\t\t};\n\n\t\tconst expected = {\n\t\t\tfirst: afterURL,\n\t\t\tanArray: [afterURL, afterURL],\n\t\t\tnestedObject: {\n\t\t\t\tfirst: afterURL,\n\t\t\t\tsecond: afterURL,\n\t\t\t},\n\t\t};\n\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"some.otherurl.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n\n\tit(\"does not affect hostname within a string\", () => {\n\t\tconst data = \"room:old.url.com:123\";\n\t\tconst expected = \"room:old.url.com:123\";\n\t\tconst actual = replaceHostname(data, \"old.url.com\", \"some.otherurl.com\");\n\t\texpect(actual).toEqual(expected);\n\t});\n});\n"],"file":"utils.spec.js"}
|
package/jest.config.js
CHANGED
|
@@ -14,12 +14,13 @@ module.exports = {
|
|
|
14
14
|
coverageReporters: ["text-summary"],
|
|
15
15
|
moduleNameMapper: {
|
|
16
16
|
...resolutions,
|
|
17
|
-
// Use this project for all sp-api stuff, obviously. Prevents sp-test
|
|
18
|
-
// from having multiple registers
|
|
19
|
-
"^sp-api(.*)$": "<rootDir>/src/$1",
|
|
20
17
|
"^@livepreso/api(.*)$": "<rootDir>/src/$1",
|
|
21
18
|
},
|
|
22
19
|
setupFilesAfterEnv: ["<rootDir>/setup-tests.js"],
|
|
23
20
|
collectCoverageFrom: ["<rootDir>/src/**/*.js"],
|
|
24
21
|
testPathIgnorePatterns: ["<rootDir>/cjs"],
|
|
22
|
+
reporters: [
|
|
23
|
+
"jest-fixed-default-reporter/DefaultReporter",
|
|
24
|
+
"jest-fixed-default-reporter/SummaryReporter",
|
|
25
|
+
],
|
|
25
26
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livepreso/api",
|
|
3
3
|
"license": "UNLICENSED",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.47.0",
|
|
5
5
|
"description": "Everything to do with talking to the SalePreso API",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"module": "esm/index.js",
|
|
@@ -12,19 +12,19 @@
|
|
|
12
12
|
],
|
|
13
13
|
"keywords": [],
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@livepreso/log": "^1.3.
|
|
15
|
+
"@livepreso/log": "^1.3.11",
|
|
16
16
|
"ampersand-collection": "^2.0.0",
|
|
17
17
|
"ampersand-model": "^8.0.0",
|
|
18
18
|
"ampersand-rest-collection": "^6.0.0",
|
|
19
19
|
"process": "^0.11.10",
|
|
20
|
-
"bluebird": "
|
|
20
|
+
"bluebird": "~3.7.2",
|
|
21
21
|
"consola": "^2.11.0",
|
|
22
|
-
"dedent-js": "
|
|
22
|
+
"dedent-js": "~1.0.1",
|
|
23
23
|
"lodash": "^4.17.4",
|
|
24
24
|
"moment": "^2.18.1",
|
|
25
25
|
"qs": "^6.4.0",
|
|
26
26
|
"superagent": "^3.5.2",
|
|
27
|
-
"superagent-bluebird-promise": "
|
|
27
|
+
"superagent-bluebird-promise": "~4.2.0",
|
|
28
28
|
"systemjs": "^6.9.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"esdoc": "^1.1.0",
|
|
45
45
|
"esdoc-standard-plugin": "^1.0.0",
|
|
46
46
|
"git-hooks": "^1.0.2",
|
|
47
|
-
"jest": "~
|
|
47
|
+
"jest": "~29.7.0",
|
|
48
48
|
"jsdom-global": "^2.1.1",
|
|
49
49
|
"npm-run-all": "^4.1.5",
|
|
50
50
|
"sinon": "^2.1.0",
|
|
@@ -54,14 +54,17 @@
|
|
|
54
54
|
"testdouble": "^2.1.1",
|
|
55
55
|
"@livepreso/eslint-config": "~1.0.0",
|
|
56
56
|
"@rushstack/eslint-config": "~2.4.0",
|
|
57
|
-
"@babel/preset-react": "~7.14.5"
|
|
57
|
+
"@babel/preset-react": "~7.14.5",
|
|
58
|
+
"jest-fixed-default-reporter": "~2.0.1",
|
|
59
|
+
"rosie": "~2.1.0",
|
|
60
|
+
"@faker-js/faker": "~7.5.0"
|
|
58
61
|
},
|
|
59
62
|
"scripts": {
|
|
60
63
|
"test:debug": "node --inspect node_modules/.bin/jest --watch --runInBand",
|
|
61
|
-
"test": "jest --coverage --coverageReporters=json
|
|
64
|
+
"test": "jest --coverage --coverageReporters=json",
|
|
62
65
|
"build:cjs": "BABEL_ENV=cjs babel --delete-dir-on-start src/ --out-dir=cjs/ -s",
|
|
63
66
|
"build": "run-p build:*",
|
|
64
67
|
"prepublish": "npm run build"
|
|
65
68
|
},
|
|
66
|
-
"readme": "# API\n\nThe single point of entry for interacting with the SalesPreso API. Contains functionality for contacting and authorizing\nwi the API endpoint, as well as middleware, models and collections for sending and retrieving data.\n\n## Install\n\n```bash\nnpm install sp-api\n```\n\nor\n\n```bash\nyarn add sp-api\n```\n\n## Examples\n\n```javascript\nimport {Auth, Api} from \"
|
|
69
|
+
"readme": "# API\n\nThe single point of entry for interacting with the SalesPreso API. Contains functionality for contacting and authorizing\nwi the API endpoint, as well as middleware, models and collections for sending and retrieving data.\n\n## Install\n\n```bash\nnpm install sp-api\n```\n\nor\n\n```bash\nyarn add sp-api\n```\n\n## Examples\n\n```javascript\nimport {Auth, Api} from \"@livepreso/api\";\nimport {registerMiddleware} from \"@livepreso/api/middleware\";\nimport AuthMiddleware from \"@livepreso/api/middlewares/auth\";\nimport RedirectMiddleware from \"@livepreso/api/middlewares/redirect\";\n\nconst middlewares = [\n new AuthMiddleware(),\n new RedirectMiddleware(),\n new JSONMiddleware()\n];\n\nmiddlewares.map(registerMiddleware);\n\nApi.initialize(\"http://localhost:8000/api/\")\n .then(() => {\n return Auth.login(\"yourlogin\", \"yourpassword\");\n });\n```\n\n## Documentation\n\nhttp://developers.salespreso.com/modules/sp-api/\n"
|
|
67
70
|
}
|
package/src/api.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import Promise from "bluebird";
|
|
2
|
+
import url2 from "url";
|
|
3
|
+
|
|
2
4
|
/**
|
|
3
5
|
* @namespace api
|
|
4
6
|
*/
|
|
@@ -7,7 +9,7 @@ import Promise from "bluebird";
|
|
|
7
9
|
* @constructor
|
|
8
10
|
* @alias api.Api
|
|
9
11
|
* @example
|
|
10
|
-
* import {Api} from "
|
|
12
|
+
* import {Api} from "@livepreso/api";
|
|
11
13
|
*/
|
|
12
14
|
export const Api = {
|
|
13
15
|
resources: {},
|
|
@@ -18,7 +20,7 @@ export const Api = {
|
|
|
18
20
|
* @memberof api.Api
|
|
19
21
|
* @prop {number} version
|
|
20
22
|
*/
|
|
21
|
-
version:
|
|
23
|
+
version: 31,
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* Initialize the api. Connects to the network and returns the
|
|
@@ -63,6 +65,19 @@ export const Api = {
|
|
|
63
65
|
return Api._apiURL;
|
|
64
66
|
},
|
|
65
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Returns the root URL (origin) of the api server. Ie,
|
|
70
|
+
* server.com/api/ -> server.com/
|
|
71
|
+
* @memberof api.Api
|
|
72
|
+
* @returns {string}
|
|
73
|
+
*/
|
|
74
|
+
getRootURL() {
|
|
75
|
+
const urlObj = url2.parse(Api._apiURL);
|
|
76
|
+
urlObj.pathname = "";
|
|
77
|
+
urlObj.search = "";
|
|
78
|
+
return url2.format(urlObj);
|
|
79
|
+
},
|
|
80
|
+
|
|
66
81
|
/**
|
|
67
82
|
* Returns the full path to a resource endpoint, based on the resource
|
|
68
83
|
* name.
|
package/src/auth.js
CHANGED
|
@@ -12,7 +12,7 @@ import log from "./log.js";
|
|
|
12
12
|
* @constructor
|
|
13
13
|
* @alias auth.Auth
|
|
14
14
|
* @example
|
|
15
|
-
* import {Auth} from "
|
|
15
|
+
* import {Auth} from "@livepreso/api";
|
|
16
16
|
*/
|
|
17
17
|
export const Auth = {
|
|
18
18
|
_token: null,
|
|
@@ -97,10 +97,10 @@ export const Auth = {
|
|
|
97
97
|
|
|
98
98
|
return tokenModel
|
|
99
99
|
.fetch()
|
|
100
|
-
.
|
|
100
|
+
.tap(() => {
|
|
101
101
|
return tokenModel.user.fetch();
|
|
102
102
|
})
|
|
103
|
-
.
|
|
103
|
+
.tap(() => {
|
|
104
104
|
Auth._user = tokenModel.user;
|
|
105
105
|
Auth._loggedIn = true;
|
|
106
106
|
});
|