@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/sync.js
CHANGED
|
@@ -1,90 +1,116 @@
|
|
|
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.sync = exports.methodMap = exports.defaultFetchURL = exports.buildURL = exports.ajaxSync = void 0;
|
|
9
|
+
|
|
8
10
|
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
11
|
+
|
|
9
12
|
var _superagentBluebirdPromise = _interopRequireDefault(require("superagent-bluebird-promise"));
|
|
13
|
+
|
|
10
14
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
|
+
|
|
11
16
|
var _log = _interopRequireDefault(require("./log.js"));
|
|
17
|
+
|
|
12
18
|
var _middleware = require("./middleware.js");
|
|
19
|
+
|
|
13
20
|
var _superagent = _interopRequireDefault(require("superagent"));
|
|
21
|
+
|
|
14
22
|
var _url = _interopRequireDefault(require("url"));
|
|
23
|
+
|
|
15
24
|
var defaults = _lodash.default.defaults;
|
|
16
|
-
var assign = _lodash.default.assign;
|
|
25
|
+
var assign = _lodash.default.assign; // Throw an error when a URL is needed, and none is supplied.
|
|
17
26
|
|
|
18
|
-
// Throw an error when a URL is needed, and none is supplied.
|
|
19
27
|
var urlError = function urlError() {
|
|
20
28
|
throw new Error("A \"url\" property or function must be specified");
|
|
21
|
-
};
|
|
29
|
+
}; // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
var methodMap =
|
|
31
|
+
|
|
32
|
+
var methodMap = {
|
|
25
33
|
create: "POST",
|
|
26
34
|
update: "PUT",
|
|
27
35
|
patch: "PATCH",
|
|
28
36
|
delete: "DELETE",
|
|
29
37
|
read: "GET"
|
|
30
38
|
};
|
|
31
|
-
|
|
39
|
+
exports.methodMap = methodMap;
|
|
40
|
+
|
|
41
|
+
var defaultFetchURL = function defaultFetchURL(_ref) {
|
|
32
42
|
var model = _ref.model;
|
|
43
|
+
|
|
33
44
|
_log.default.warn("Deprecation: defaultFetchURL is deprecated. Just use .url()");
|
|
45
|
+
|
|
34
46
|
return model.url();
|
|
35
47
|
};
|
|
36
|
-
|
|
48
|
+
|
|
49
|
+
exports.defaultFetchURL = defaultFetchURL;
|
|
50
|
+
|
|
51
|
+
var buildURL = function buildURL(_ref2) {
|
|
37
52
|
var method = _ref2.method,
|
|
38
|
-
|
|
53
|
+
model = _ref2.model;
|
|
39
54
|
var url = model.url();
|
|
40
|
-
var urlParse = _url.default.parse(url);
|
|
41
55
|
|
|
42
|
-
// If not a GET request, strip the query params from the url
|
|
56
|
+
var urlParse = _url.default.parse(url); // If not a GET request, strip the query params from the url
|
|
57
|
+
|
|
58
|
+
|
|
43
59
|
if (method !== "read") {
|
|
44
60
|
return url.replace(urlParse.search, "");
|
|
45
61
|
}
|
|
62
|
+
|
|
46
63
|
return url;
|
|
47
64
|
};
|
|
48
|
-
|
|
65
|
+
|
|
66
|
+
exports.buildURL = buildURL;
|
|
67
|
+
|
|
68
|
+
var sync = function sync(method) {
|
|
49
69
|
var _this = this;
|
|
70
|
+
|
|
50
71
|
var syncArguments = arguments;
|
|
72
|
+
|
|
51
73
|
if (method === "read") {
|
|
52
74
|
// look for sync methods
|
|
53
75
|
var syncActions = [];
|
|
76
|
+
|
|
54
77
|
_middleware.middlewares.forEach(function (middleware) {
|
|
55
78
|
if (middleware.sync) {
|
|
56
79
|
syncActions.push(middleware.sync.apply(_this, syncArguments));
|
|
57
80
|
}
|
|
58
81
|
});
|
|
82
|
+
|
|
59
83
|
return _bluebird.default.all(syncActions).then(function () {
|
|
60
84
|
return ajaxSync.apply(_this, syncArguments);
|
|
61
85
|
});
|
|
62
86
|
}
|
|
87
|
+
|
|
63
88
|
return ajaxSync.apply(this, syncArguments);
|
|
64
89
|
};
|
|
65
|
-
var ajaxSync = exports.ajaxSync = function ajaxSync(method, model, options) {
|
|
66
|
-
var type = methodMap[method];
|
|
67
90
|
|
|
68
|
-
|
|
91
|
+
exports.sync = sync;
|
|
92
|
+
|
|
93
|
+
var ajaxSync = function ajaxSync(method, model, options) {
|
|
94
|
+
var type = methodMap[method]; // Default options, unless specified.
|
|
95
|
+
|
|
69
96
|
defaults(options || (options = {}), {
|
|
70
97
|
emulateHTTP: false,
|
|
71
98
|
emulateJSON: false
|
|
72
|
-
});
|
|
99
|
+
}); // Default request options.
|
|
73
100
|
|
|
74
|
-
// Default request options.
|
|
75
101
|
var params = {
|
|
76
102
|
type: type
|
|
77
|
-
};
|
|
103
|
+
}; // Ensure that we have a URL.
|
|
78
104
|
|
|
79
|
-
// Ensure that we have a URL.
|
|
80
105
|
if (!options.url) {
|
|
81
106
|
options.url = _lodash.default.result(model, "url") || urlError();
|
|
82
|
-
}
|
|
107
|
+
} // Ensure that we have the appropriate request data.
|
|
108
|
+
|
|
83
109
|
|
|
84
|
-
// Ensure that we have the appropriate request data.
|
|
85
110
|
if (options.data === null && model && (method === "create" || method === "update" || method === "patch" || method === "delete" && options.batch)) {
|
|
86
111
|
params.json = options.attrs || model.toJSON(options);
|
|
87
112
|
}
|
|
113
|
+
|
|
88
114
|
var url = buildURL({
|
|
89
115
|
method: method,
|
|
90
116
|
model: model,
|
|
@@ -93,63 +119,72 @@ var ajaxSync = exports.ajaxSync = function ajaxSync(method, model, options) {
|
|
|
93
119
|
var requestSettings = assign(params, options);
|
|
94
120
|
requestSettings.method = type;
|
|
95
121
|
var request = (0, _superagentBluebirdPromise.default)(type, url);
|
|
96
|
-
if (type === "PATCH" || type === "POST" || type === "PUT" || type === "DELETE" && options.batch) {
|
|
97
|
-
var data = model.toServer();
|
|
98
122
|
|
|
99
|
-
|
|
123
|
+
if (type === "PATCH" || type === "POST" || type === "PUT" || type === "DELETE" && options.batch) {
|
|
124
|
+
var data = model.toServer(); // Note we can use formdata to override the way a patch works - if we
|
|
100
125
|
// are doing this it's for a particular patch with an image or file,
|
|
101
126
|
// probably.
|
|
127
|
+
|
|
102
128
|
if (type === "PATCH" && !_lodash.default.isArray(data) && !(data instanceof FormData)) {
|
|
103
129
|
// Make sure we're only updating data actually passed to the save
|
|
104
130
|
// function, rather than automatically generated stuff
|
|
105
131
|
data = _lodash.default.pick(options.attrs, Object.keys(data));
|
|
106
132
|
}
|
|
133
|
+
|
|
107
134
|
request.send(data);
|
|
108
135
|
}
|
|
136
|
+
|
|
109
137
|
options.xhr = request;
|
|
138
|
+
|
|
110
139
|
_middleware.middlewares.forEach(function (middleware) {
|
|
111
140
|
if (middleware.preflight) {
|
|
112
141
|
middleware.preflight(request);
|
|
113
142
|
}
|
|
114
143
|
});
|
|
144
|
+
|
|
115
145
|
var mc = 0;
|
|
146
|
+
|
|
116
147
|
function getNextMiddleware(request) {
|
|
117
148
|
return function middlewareInterceptor(response) {
|
|
118
149
|
if (mc < _middleware.middlewares.length) {
|
|
119
150
|
return _middleware.middlewares[mc++].intercept(request, response, model).then(getNextMiddleware(request));
|
|
120
151
|
}
|
|
152
|
+
|
|
121
153
|
return _bluebird.default.resolve(response);
|
|
122
154
|
};
|
|
123
155
|
}
|
|
156
|
+
|
|
124
157
|
model.trigger("request", model, request, options, requestSettings);
|
|
125
158
|
request.requestSettings = requestSettings;
|
|
126
|
-
var ajaxConfig = _lodash.default.result(model, "ajaxConfig") || {};
|
|
159
|
+
var ajaxConfig = _lodash.default.result(model, "ajaxConfig") || {}; // Combine generated headers with user's headers.
|
|
127
160
|
|
|
128
|
-
// Combine generated headers with user's headers.
|
|
129
161
|
if (ajaxConfig.headers) {
|
|
130
162
|
for (var key in ajaxConfig.headers) {
|
|
131
163
|
request.header[key.toLowerCase()] = ajaxConfig.headers[key];
|
|
132
164
|
}
|
|
133
165
|
}
|
|
166
|
+
|
|
134
167
|
if (options.headers) {
|
|
135
168
|
for (var _key in options.headers) {
|
|
136
169
|
request.header[_key.toLowerCase()] = options.headers[_key];
|
|
137
170
|
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// TODO: Remove me when this can be moved... for now this removal is quite a complex
|
|
171
|
+
} // TODO: Remove me when this can be moved... for now this removal is quite a complex
|
|
141
172
|
// process.
|
|
173
|
+
|
|
174
|
+
|
|
142
175
|
if (options.cached && !options.deleted) {
|
|
143
176
|
return _bluebird.default.resolve(options.cachedResponse).then(getNextMiddleware(request)).then(function (response) {
|
|
144
177
|
if (!response.data) {
|
|
145
178
|
response.data = JSON.parse(response.text);
|
|
146
179
|
}
|
|
180
|
+
|
|
147
181
|
return _bluebird.default.each(_middleware.middlewares, function (middleware) {
|
|
148
182
|
return middleware.success(request, response, model, true);
|
|
149
183
|
}).then(function () {
|
|
150
184
|
if (options.success) {
|
|
151
185
|
options.success(response.data, "success", response);
|
|
152
186
|
}
|
|
187
|
+
|
|
153
188
|
return response.data;
|
|
154
189
|
});
|
|
155
190
|
}).catch(function (response) {
|
|
@@ -159,29 +194,34 @@ var ajaxSync = exports.ajaxSync = function ajaxSync(method, model, options) {
|
|
|
159
194
|
if (options.error) {
|
|
160
195
|
options.error(response, "error", response.message);
|
|
161
196
|
}
|
|
197
|
+
|
|
162
198
|
throw response;
|
|
163
199
|
});
|
|
164
200
|
});
|
|
165
201
|
}
|
|
166
|
-
|
|
167
|
-
// Force a timeout on every request. Intermittent connections
|
|
202
|
+
|
|
203
|
+
return request // Force a timeout on every request. Intermittent connections
|
|
168
204
|
// can have the request continue trying for minutes otherwise.
|
|
169
205
|
.timeout(60 * 1000).then(getNextMiddleware(request)).then(function (response) {
|
|
170
206
|
var data;
|
|
207
|
+
|
|
171
208
|
try {
|
|
172
209
|
data = JSON.parse(response.text);
|
|
173
210
|
} catch (e) {
|
|
174
211
|
data = response;
|
|
175
212
|
}
|
|
213
|
+
|
|
176
214
|
if (type !== "DELETE") {
|
|
177
215
|
model.set(data);
|
|
178
216
|
}
|
|
217
|
+
|
|
179
218
|
return _bluebird.default.each(_middleware.middlewares, function (middleware) {
|
|
180
219
|
return middleware.success(request, response, model, false);
|
|
181
220
|
}).then(function () {
|
|
182
221
|
if (options.success) {
|
|
183
222
|
options.success(data, "success", response);
|
|
184
223
|
}
|
|
224
|
+
|
|
185
225
|
request.emit("success", response);
|
|
186
226
|
return data;
|
|
187
227
|
});
|
|
@@ -189,6 +229,7 @@ var ajaxSync = exports.ajaxSync = function ajaxSync(method, model, options) {
|
|
|
189
229
|
if (e.res && e.res.body && (e.status >= 400 && e.status < 500 || e.status === 503)) {
|
|
190
230
|
e.message += "\nBody: ".concat(JSON.stringify(e.res.body));
|
|
191
231
|
}
|
|
232
|
+
|
|
192
233
|
throw e;
|
|
193
234
|
}).catch(function (response) {
|
|
194
235
|
return _bluebird.default.each(_middleware.middlewares, function (middleware) {
|
|
@@ -196,14 +237,17 @@ var ajaxSync = exports.ajaxSync = function ajaxSync(method, model, options) {
|
|
|
196
237
|
}).then(function () {
|
|
197
238
|
if (options.error) {
|
|
198
239
|
options.error(response, "error", response.message);
|
|
199
|
-
}
|
|
240
|
+
} // Provide a more explanatory error message on timeout
|
|
241
|
+
|
|
200
242
|
|
|
201
|
-
// Provide a more explanatory error message on timeout
|
|
202
243
|
if (response && response.originalError && response.originalError.code === "ECONNABORTED") {
|
|
203
244
|
throw new Error("Failed ".concat(type, " request on url: ").concat(url, ". ").concat(response.message));
|
|
204
245
|
}
|
|
246
|
+
|
|
205
247
|
throw response;
|
|
206
248
|
});
|
|
207
249
|
});
|
|
208
250
|
};
|
|
251
|
+
|
|
252
|
+
exports.ajaxSync = ajaxSync;
|
|
209
253
|
//# sourceMappingURL=sync.js.map
|
package/cjs/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","names":["_bluebird","_interopRequireDefault","require","_superagentBluebirdPromise","_lodash","_log","_middleware","_superagent","_url","defaults","_","assign","urlError","Error","methodMap","exports","create","update","patch","delete","read","defaultFetchURL","_ref","model","log","warn","url","buildURL","_ref2","method","urlParse","url2","parse","replace","search","sync","_this","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","SuperAgentRequest","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","concat","stringify","originalError","code"],"sources":["../src/sync.js"],"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"],"mappings":"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"}
|
|
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
|
@@ -1,6 +1,7 @@
|
|
|
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
|
});
|
|
@@ -14,39 +15,53 @@ exports.removeMultiByteChars = removeMultiByteChars;
|
|
|
14
15
|
exports.replaceHostname = replaceHostname;
|
|
15
16
|
exports.sanitizeBase64 = sanitizeBase64;
|
|
16
17
|
exports.setSequentialSequences = setSequentialSequences;
|
|
18
|
+
|
|
17
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
|
+
|
|
18
21
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
22
|
+
|
|
19
23
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
24
|
+
|
|
20
25
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
26
|
+
|
|
21
27
|
var _url = _interopRequireDefault(require("url"));
|
|
22
|
-
|
|
23
|
-
function
|
|
24
|
-
|
|
25
|
-
var
|
|
28
|
+
|
|
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
|
+
|
|
33
|
+
var DATE_FORMAT = "YYYY-MM-DD HH:mm:ss.SSSSSS[Z]";
|
|
34
|
+
exports.DATE_FORMAT = DATE_FORMAT;
|
|
35
|
+
var DATE_FORMAT_T = "YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]";
|
|
36
|
+
exports.DATE_FORMAT_T = DATE_FORMAT_T;
|
|
37
|
+
|
|
26
38
|
function getShortURL(url) {
|
|
27
39
|
return _url.default.parse(url).path;
|
|
28
40
|
}
|
|
29
|
-
|
|
30
41
|
/**
|
|
31
42
|
* Sometimes a string(especially from another platform) has characters encoded using another method.
|
|
32
43
|
* In these circumstances those characters, when encoded with utf-8, look like errors.
|
|
33
44
|
* see http://i18nqa.com/debug/utf8-debug.html for examples
|
|
34
45
|
*/
|
|
46
|
+
|
|
47
|
+
|
|
35
48
|
function removeMultiByteChars(_txt) {
|
|
36
49
|
// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space
|
|
37
|
-
var txt = _txt.replace(/(\xA0| |\x07|\xE2\x80\x89)/gm, " ");
|
|
50
|
+
var txt = _txt.replace(/(\xA0| |\x07|\xE2\x80\x89)/gm, " "); // remove every other cursed character entirely.
|
|
51
|
+
|
|
38
52
|
|
|
39
|
-
// remove every other cursed character entirely.
|
|
40
53
|
return txt.replace(/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}|[\x80-\xBF][\xC0-\xFF]/gm, "");
|
|
41
54
|
}
|
|
55
|
+
|
|
42
56
|
var HOSTNAME_RE = /^(?:https?:\/\/)?([\w-\._]*)/;
|
|
57
|
+
|
|
43
58
|
function getHostname(data) {
|
|
44
59
|
if (typeof data !== "string") {
|
|
45
60
|
throw new Error("Arg must contain a hostname, ie: \"test.livepreso.com\". Found \"".concat(data, "\""));
|
|
46
61
|
}
|
|
62
|
+
|
|
47
63
|
return data.match(HOSTNAME_RE)[1];
|
|
48
64
|
}
|
|
49
|
-
|
|
50
65
|
/**
|
|
51
66
|
* Replaces the hostname in some data (regardless of it being a string, array or object),
|
|
52
67
|
* it will recursively update it all.
|
|
@@ -57,13 +72,17 @@ function getHostname(data) {
|
|
|
57
72
|
* > "https://real.com/api/cool/1/"
|
|
58
73
|
*
|
|
59
74
|
*/
|
|
75
|
+
|
|
76
|
+
|
|
60
77
|
function replaceHostname(data, before, after) {
|
|
61
78
|
// Don't do anything if they're the same!
|
|
62
79
|
if (before === after) {
|
|
63
80
|
return data;
|
|
64
81
|
}
|
|
82
|
+
|
|
65
83
|
var hostnameBefore = getHostname(before, "Before");
|
|
66
84
|
var hostnameAfter = getHostname(after, "After");
|
|
85
|
+
|
|
67
86
|
if (typeof data === "string" && data.indexOf("http") === 0) {
|
|
68
87
|
return data.replace(hostnameBefore, hostnameAfter);
|
|
69
88
|
} else if (Array.isArray(data)) {
|
|
@@ -76,33 +95,38 @@ function replaceHostname(data, before, after) {
|
|
|
76
95
|
return newObj;
|
|
77
96
|
}, {});
|
|
78
97
|
}
|
|
79
|
-
return data;
|
|
80
|
-
}
|
|
81
98
|
|
|
82
|
-
|
|
99
|
+
return data;
|
|
100
|
+
} // Takes the deckversion model and retrieves the highest id between all of
|
|
83
101
|
// the sections, slides and subslides
|
|
102
|
+
|
|
103
|
+
|
|
84
104
|
function getMaxID(deckVersionModel) {
|
|
85
105
|
var ids = deckVersionModel.section_set.map(function (section) {
|
|
86
106
|
var slides = [];
|
|
107
|
+
|
|
87
108
|
if (section.slide_set) {
|
|
88
109
|
slides = section.slide_set.map(function (slide) {
|
|
89
110
|
var subslides = [];
|
|
111
|
+
|
|
90
112
|
if (slide.subslide_set) {
|
|
91
113
|
subslides = slide.subslide_set.map(function (subslide) {
|
|
92
114
|
return subslide.id;
|
|
93
115
|
});
|
|
94
116
|
}
|
|
117
|
+
|
|
95
118
|
return [slide.id].concat((0, _toConsumableArray2.default)(subslides));
|
|
96
119
|
});
|
|
97
120
|
}
|
|
121
|
+
|
|
98
122
|
return [section.id].concat((0, _toConsumableArray2.default)(_lodash.default.flatten(slides)));
|
|
99
123
|
});
|
|
100
124
|
return _lodash.default.max(_lodash.default.flatten(ids));
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// The sections, slides and subslides are currently ordered by sequence
|
|
125
|
+
} // The sections, slides and subslides are currently ordered by sequence
|
|
104
126
|
// but the sequence is not necessarily 0-based and sequential (e.g. in the
|
|
105
127
|
// case of impostor decks). We fix that here.
|
|
128
|
+
|
|
129
|
+
|
|
106
130
|
function setSequentialSequences(deck) {
|
|
107
131
|
deck.sections.forEach(function (section, index) {
|
|
108
132
|
section.sequence = index;
|
|
@@ -116,35 +140,37 @@ function setSequentialSequences(deck) {
|
|
|
116
140
|
});
|
|
117
141
|
});
|
|
118
142
|
});
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// A simple function to check the tags of a model - if it has the "section-header"
|
|
143
|
+
} // A simple function to check the tags of a model - if it has the "section-header"
|
|
122
144
|
// tag then it's an impostor slide
|
|
145
|
+
|
|
146
|
+
|
|
123
147
|
function isImpostor(model) {
|
|
124
148
|
var tags = model.tags || [];
|
|
125
149
|
return tags.indexOf("section-header") !== -1;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// An impostor deck will have impostor slides - checking for these is the
|
|
150
|
+
} // An impostor deck will have impostor slides - checking for these is the
|
|
129
151
|
// most reliable method of determining whether a deck is an impostor deck,
|
|
130
152
|
// and is also the same method that the server uses.
|
|
153
|
+
|
|
154
|
+
|
|
131
155
|
function isImpostorDeck(deckVersionModel) {
|
|
132
156
|
var section = deckVersionModel.section_set.first();
|
|
133
157
|
return Boolean(section && section.slide_set.find(function (slide) {
|
|
134
158
|
return isImpostor(slide);
|
|
135
159
|
}));
|
|
136
160
|
}
|
|
137
|
-
|
|
138
161
|
/**
|
|
139
162
|
* Strips base64 strings recursively.
|
|
140
163
|
*
|
|
141
164
|
* Optionally accepts a condition function, which you can use you add any extra
|
|
142
165
|
* checks to test whether you want to clear the string.
|
|
143
166
|
*/
|
|
167
|
+
|
|
168
|
+
|
|
144
169
|
function sanitizeBase64(obj) {
|
|
145
170
|
var conditionFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
|
|
146
171
|
return true;
|
|
147
172
|
};
|
|
173
|
+
|
|
148
174
|
if (Array.isArray(obj)) {
|
|
149
175
|
return obj.map(function (v) {
|
|
150
176
|
return sanitizeBase64(v, conditionFn);
|
|
@@ -155,10 +181,12 @@ function sanitizeBase64(obj) {
|
|
|
155
181
|
}, {});
|
|
156
182
|
} else if (typeof obj === "string") {
|
|
157
183
|
var re = /^data:image\/[a-zA-Z]+;base64,[A-Za-z0-9+/=]+$/;
|
|
184
|
+
|
|
158
185
|
if (re.test(obj) && conditionFn(obj)) {
|
|
159
186
|
return "";
|
|
160
187
|
}
|
|
161
188
|
}
|
|
189
|
+
|
|
162
190
|
return obj;
|
|
163
191
|
}
|
|
164
192
|
//# sourceMappingURL=utils.js.map
|
package/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["_lodash","_interopRequireDefault","require","_url","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DATE_FORMAT","exports","DATE_FORMAT_T","getShortURL","url","url2","parse","path","removeMultiByteChars","_txt","txt","replace","HOSTNAME_RE","getHostname","data","Error","concat","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","_toConsumableArray2","flatten","max","setSequentialSequences","deck","sections","index","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find","sanitizeBase64","obj","conditionFn","undefined","v","_typeof2","acc","re","test"],"sources":["../src/utils.js"],"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"],"mappings":"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"}
|
|
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":"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","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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _utils = require("./utils.js");
|
|
4
|
+
|
|
4
5
|
describe("getShortURL()", function () {
|
|
5
6
|
test("shorten a full url to a short one", function () {
|
|
6
7
|
var url = "http://client.salespreso.com/api/users/1/";
|
|
@@ -16,7 +17,7 @@ describe("removeMultiByteChars()", function () {
|
|
|
16
17
|
var testString = "SUZI LUCKâS CANTEENâ& COCKTAIL BAR";
|
|
17
18
|
expect((0, _utils.removeMultiByteChars)(testString)).toEqual("SUZI LUCKS CANTEEN & COCKTAIL BAR");
|
|
18
19
|
});
|
|
19
|
-
test("
|
|
20
|
+
test("sanitize urls correctly", function () {
|
|
20
21
|
var testString = "http://client.salespreso.com/api/users/1/â";
|
|
21
22
|
var testString2 = "/api/users/1/â";
|
|
22
23
|
var testString3 = "/api/users/1/?param=1&test=3&_r=4";
|
|
@@ -30,6 +31,7 @@ describe("getHostname()", function () {
|
|
|
30
31
|
var actual = function actual() {
|
|
31
32
|
return (0, _utils.getHostname)(null);
|
|
32
33
|
};
|
|
34
|
+
|
|
33
35
|
expect(actual).toThrow();
|
|
34
36
|
});
|
|
35
37
|
it("returns a hostname from a full URL", function () {
|
|
@@ -50,12 +52,14 @@ describe("replaceHostname()", function () {
|
|
|
50
52
|
var actual = function actual() {
|
|
51
53
|
return (0, _utils.replaceHostname)("foo", null, "brand.new.com");
|
|
52
54
|
};
|
|
55
|
+
|
|
53
56
|
expect(actual).toThrow();
|
|
54
57
|
});
|
|
55
58
|
it("throws an error if not to hostname", function () {
|
|
56
59
|
var actual = function actual() {
|
|
57
60
|
return (0, _utils.replaceHostname)("foo", "old.url.com", null);
|
|
58
61
|
};
|
|
62
|
+
|
|
59
63
|
expect(actual).toThrow();
|
|
60
64
|
});
|
|
61
65
|
it("replaces hostname of a string", function () {
|