@livepreso/api 6.48.1 → 6.49.1
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/.lintstagedrc.js +6 -0
- package/.rush/temp/chunked-rush-logs/api.build.chunks.jsonl +6 -0
- package/.rush/temp/chunked-rush-logs/api.test.chunks.jsonl +1 -0
- package/.rush/temp/operation/build/all.log +6 -0
- package/.rush/temp/operation/build/log-chunks.jsonl +6 -0
- package/.rush/temp/operation/build/state.json +3 -0
- package/.rush/temp/shrinkwrap-deps.json +1131 -1013
- package/CHANGELOG.json +32 -0
- package/CHANGELOG.md +16 -1
- package/bin/test.sh +0 -0
- package/cjs/api.js +3 -18
- package/cjs/api.js.map +1 -1
- package/cjs/api.spec.js +0 -4
- package/cjs/api.spec.js.map +1 -1
- package/cjs/auth.js +2 -29
- package/cjs/auth.js.map +1 -1
- package/cjs/auth.spec.js +55 -80
- package/cjs/auth.spec.js.map +1 -1
- package/cjs/caching.js +2 -7
- package/cjs/caching.js.map +1 -1
- package/cjs/collections/activity.js +18 -58
- package/cjs/collections/activity.js.map +1 -1
- package/cjs/collections/adjunct-sections.js +2 -11
- package/cjs/collections/adjunct-sections.js.map +1 -1
- package/cjs/collections/adjunct-slides.js +2 -11
- package/cjs/collections/adjunct-slides.js.map +1 -1
- package/cjs/collections/adjunct-sub-slides.js +2 -10
- package/cjs/collections/adjunct-sub-slides.js.map +1 -1
- package/cjs/collections/appointment-adjunct-tags.js +1 -9
- package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
- package/cjs/collections/appointment-deckversion-tags.js +1 -9
- package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
- package/cjs/collections/appointment-editors.js +1 -10
- package/cjs/collections/appointment-editors.js.map +1 -1
- package/cjs/collections/appointment-section-tags.js +1 -9
- package/cjs/collections/appointment-section-tags.js.map +1 -1
- package/cjs/collections/appointment-slide-tags.js +1 -9
- package/cjs/collections/appointment-slide-tags.js.map +1 -1
- package/cjs/collections/appointment-tags.js +69 -108
- package/cjs/collections/appointment-tags.js.map +1 -1
- package/cjs/collections/appointment-templates.js +1 -10
- package/cjs/collections/appointment-templates.js.map +1 -1
- package/cjs/collections/appointments.js +9 -29
- package/cjs/collections/appointments.js.map +1 -1
- package/cjs/collections/assets.js +1 -9
- package/cjs/collections/assets.js.map +1 -1
- package/cjs/collections/auto-adjuncts.js +6 -21
- package/cjs/collections/auto-adjuncts.js.map +1 -1
- package/cjs/collections/base.js +54 -118
- package/cjs/collections/base.js.map +1 -1
- package/cjs/collections/base.spec.js +195 -242
- package/cjs/collections/base.spec.js.map +1 -1
- package/cjs/collections/cms-vals.js +4 -16
- package/cjs/collections/cms-vals.js.map +1 -1
- package/cjs/collections/contact-phones.js +1 -9
- package/cjs/collections/contact-phones.js.map +1 -1
- package/cjs/collections/contacts.js +1 -9
- package/cjs/collections/contacts.js.map +1 -1
- package/cjs/collections/created-assets.js +1 -10
- package/cjs/collections/created-assets.js.map +1 -1
- package/cjs/collections/customers.js +1 -9
- package/cjs/collections/customers.js.map +1 -1
- package/cjs/collections/deck-notes.js +1 -10
- package/cjs/collections/deck-notes.js.map +1 -1
- package/cjs/collections/deck-version-screenshots.js +4 -17
- package/cjs/collections/deck-version-screenshots.js.map +1 -1
- package/cjs/collections/deck-versions.js +5 -20
- package/cjs/collections/deck-versions.js.map +1 -1
- package/cjs/collections/decks.js +1 -9
- package/cjs/collections/decks.js.map +1 -1
- package/cjs/collections/deleted-assets.js +1 -10
- package/cjs/collections/deleted-assets.js.map +1 -1
- package/cjs/collections/dispatches.js +1 -13
- package/cjs/collections/dispatches.js.map +1 -1
- package/cjs/collections/event-objects.js +1 -9
- package/cjs/collections/event-objects.js.map +1 -1
- package/cjs/collections/events.js +1 -9
- package/cjs/collections/events.js.map +1 -1
- package/cjs/collections/groups.js +1 -9
- package/cjs/collections/groups.js.map +1 -1
- package/cjs/collections/images.js +1 -9
- package/cjs/collections/images.js.map +1 -1
- package/cjs/collections/locations.js +1 -9
- package/cjs/collections/locations.js.map +1 -1
- package/cjs/collections/opportunities.js +1 -9
- package/cjs/collections/opportunities.js.map +1 -1
- package/cjs/collections/pack-diffs.js +1 -9
- package/cjs/collections/pack-diffs.js.map +1 -1
- package/cjs/collections/packs.js +1 -9
- package/cjs/collections/packs.js.map +1 -1
- package/cjs/collections/presets.js +1 -9
- package/cjs/collections/presets.js.map +1 -1
- package/cjs/collections/section-selections.js +2 -10
- package/cjs/collections/section-selections.js.map +1 -1
- package/cjs/collections/sections.js +1 -9
- package/cjs/collections/sections.js.map +1 -1
- package/cjs/collections/signers.js +1 -9
- package/cjs/collections/signers.js.map +1 -1
- package/cjs/collections/signing-backends.js +1 -9
- package/cjs/collections/signing-backends.js.map +1 -1
- package/cjs/collections/signing-requests.js +1 -9
- package/cjs/collections/signing-requests.js.map +1 -1
- package/cjs/collections/slide-selections.js +2 -10
- package/cjs/collections/slide-selections.js.map +1 -1
- package/cjs/collections/slides.js +1 -9
- package/cjs/collections/slides.js.map +1 -1
- package/cjs/collections/snapshots.js +1 -9
- package/cjs/collections/snapshots.js.map +1 -1
- package/cjs/collections/sub-slides.js +1 -9
- package/cjs/collections/sub-slides.js.map +1 -1
- package/cjs/collections/tags.js +1 -9
- package/cjs/collections/tags.js.map +1 -1
- package/cjs/collections/teams.js +1 -9
- package/cjs/collections/teams.js.map +1 -1
- package/cjs/collections/templates.js +1 -9
- package/cjs/collections/templates.js.map +1 -1
- package/cjs/collections/uploads.js +1 -9
- package/cjs/collections/uploads.js.map +1 -1
- package/cjs/collections/users.js +1 -9
- package/cjs/collections/users.js.map +1 -1
- package/cjs/collections.js +0 -96
- package/cjs/collections.js.map +1 -1
- package/cjs/fixtures.js +19 -57
- package/cjs/fixtures.js.map +1 -1
- package/cjs/index.js +0 -12
- package/cjs/index.js.map +1 -1
- package/cjs/log.js +0 -1
- package/cjs/log.js.map +1 -1
- package/cjs/middleware.js +2 -7
- package/cjs/middleware.js.map +1 -1
- package/cjs/middlewares/auth.js +7 -25
- package/cjs/middlewares/auth.js.map +1 -1
- package/cjs/middlewares/base.js +4 -11
- package/cjs/middlewares/base.js.map +1 -1
- package/cjs/middlewares/json.js +7 -27
- package/cjs/middlewares/json.js.map +1 -1
- package/cjs/middlewares/redirect.js +11 -29
- package/cjs/middlewares/redirect.js.map +1 -1
- package/cjs/models/activity-item.js +3 -19
- package/cjs/models/activity-item.js.map +1 -1
- package/cjs/models/adjunct-section.js +6 -19
- package/cjs/models/adjunct-section.js.map +1 -1
- package/cjs/models/adjunct-slide.js +6 -19
- package/cjs/models/adjunct-slide.js.map +1 -1
- package/cjs/models/adjunct-sub-slide.js +5 -16
- package/cjs/models/adjunct-sub-slide.js.map +1 -1
- package/cjs/models/adjunct.js +7 -23
- package/cjs/models/adjunct.js.map +1 -1
- package/cjs/models/api.js +1 -6
- package/cjs/models/api.js.map +1 -1
- package/cjs/models/appointment-adjunct-tags.js +1 -13
- package/cjs/models/appointment-adjunct-tags.js.map +1 -1
- package/cjs/models/appointment-deckversion-tags.js +1 -13
- package/cjs/models/appointment-deckversion-tags.js.map +1 -1
- package/cjs/models/appointment-editor.js +1 -14
- package/cjs/models/appointment-editor.js.map +1 -1
- package/cjs/models/appointment-section-tags.js +1 -13
- package/cjs/models/appointment-section-tags.js.map +1 -1
- package/cjs/models/appointment-slide-tags.js +1 -13
- package/cjs/models/appointment-slide-tags.js.map +1 -1
- package/cjs/models/appointment-stats.js +1 -11
- package/cjs/models/appointment-stats.js.map +1 -1
- package/cjs/models/appointment-tags.js +1 -10
- package/cjs/models/appointment-tags.js.map +1 -1
- package/cjs/models/appointment-template.js +1 -6
- package/cjs/models/appointment-template.js.map +1 -1
- package/cjs/models/appointment-viewing.js +1 -8
- package/cjs/models/appointment-viewing.js.map +1 -1
- package/cjs/models/appointment.js +24 -97
- package/cjs/models/appointment.js.map +1 -1
- package/cjs/models/asset.js +1 -12
- package/cjs/models/asset.js.map +1 -1
- package/cjs/models/auto-adjunct-key-check.js +1 -15
- package/cjs/models/auto-adjunct-key-check.js.map +1 -1
- package/cjs/models/auto-adjunct.js +1 -13
- package/cjs/models/auto-adjunct.js.map +1 -1
- package/cjs/models/base.js +86 -216
- package/cjs/models/base.js.map +1 -1
- package/cjs/models/base.spec.js +0 -31
- package/cjs/models/base.spec.js.map +1 -1
- package/cjs/models/choicelist.js +1 -8
- package/cjs/models/choicelist.js.map +1 -1
- package/cjs/models/cms-val.js +5 -26
- package/cjs/models/cms-val.js.map +1 -1
- package/cjs/models/cms-val.spec.js +13 -20
- package/cjs/models/cms-val.spec.js.map +1 -1
- package/cjs/models/contact-phone.js +1 -13
- package/cjs/models/contact-phone.js.map +1 -1
- package/cjs/models/contact.js +1 -18
- package/cjs/models/contact.js.map +1 -1
- package/cjs/models/customer.js +3 -30
- package/cjs/models/customer.js.map +1 -1
- package/cjs/models/deck-note.js +1 -9
- package/cjs/models/deck-note.js.map +1 -1
- package/cjs/models/deck-tags.js +1 -12
- package/cjs/models/deck-tags.js.map +1 -1
- package/cjs/models/deck-version-screenshot.js +1 -13
- package/cjs/models/deck-version-screenshot.js.map +1 -1
- package/cjs/models/deck-version.js +13 -38
- package/cjs/models/deck-version.js.map +1 -1
- package/cjs/models/deck.js +1 -14
- package/cjs/models/deck.js.map +1 -1
- package/cjs/models/dispatch-preview.js +1 -13
- package/cjs/models/dispatch-preview.js.map +1 -1
- package/cjs/models/dispatch.js +1 -25
- package/cjs/models/dispatch.js.map +1 -1
- package/cjs/models/envs.js +1 -6
- package/cjs/models/envs.js.map +1 -1
- package/cjs/models/event-object.js +1 -11
- package/cjs/models/event-object.js.map +1 -1
- package/cjs/models/event.js +1 -13
- package/cjs/models/event.js.map +1 -1
- package/cjs/models/feed-data.js +1 -13
- package/cjs/models/feed-data.js.map +1 -1
- package/cjs/models/file.js +1 -11
- package/cjs/models/file.js.map +1 -1
- package/cjs/models/group.js +1 -11
- package/cjs/models/group.js.map +1 -1
- package/cjs/models/handover.js +1 -13
- package/cjs/models/handover.js.map +1 -1
- package/cjs/models/hosted-preso.js +1 -15
- package/cjs/models/hosted-preso.js.map +1 -1
- package/cjs/models/image.js +1 -16
- package/cjs/models/image.js.map +1 -1
- package/cjs/models/location.js +1 -13
- package/cjs/models/location.js.map +1 -1
- package/cjs/models/manifest-json.js +25 -84
- package/cjs/models/manifest-json.js.map +1 -1
- package/cjs/models/onshare.js +1 -14
- package/cjs/models/onshare.js.map +1 -1
- package/cjs/models/opportunity.js +1 -14
- package/cjs/models/opportunity.js.map +1 -1
- package/cjs/models/pack-diff.js +1 -14
- package/cjs/models/pack-diff.js.map +1 -1
- package/cjs/models/pack.js +1 -12
- package/cjs/models/pack.js.map +1 -1
- package/cjs/models/preset.js +1 -19
- package/cjs/models/preset.js.map +1 -1
- package/cjs/models/refresh-request.js +1 -11
- package/cjs/models/refresh-request.js.map +1 -1
- package/cjs/models/room.js +1 -9
- package/cjs/models/room.js.map +1 -1
- package/cjs/models/salesforce-lookup.js +1 -12
- package/cjs/models/salesforce-lookup.js.map +1 -1
- package/cjs/models/section-selection.js +7 -15
- package/cjs/models/section-selection.js.map +1 -1
- package/cjs/models/section.js +1 -14
- package/cjs/models/section.js.map +1 -1
- package/cjs/models/signer.js +1 -10
- package/cjs/models/signer.js.map +1 -1
- package/cjs/models/signing-backend.js +1 -9
- package/cjs/models/signing-backend.js.map +1 -1
- package/cjs/models/signing-request.js +1 -13
- package/cjs/models/signing-request.js.map +1 -1
- package/cjs/models/slide-selection.js +7 -15
- package/cjs/models/slide-selection.js.map +1 -1
- package/cjs/models/slide.js +1 -14
- package/cjs/models/slide.js.map +1 -1
- package/cjs/models/snapshot.js +3 -16
- package/cjs/models/snapshot.js.map +1 -1
- package/cjs/models/snapshot.spec.js +26 -33
- package/cjs/models/snapshot.spec.js.map +1 -1
- package/cjs/models/sub-slide.js +1 -12
- package/cjs/models/sub-slide.js.map +1 -1
- package/cjs/models/support-ticket.js +1 -11
- package/cjs/models/support-ticket.js.map +1 -1
- package/cjs/models/tag.js +1 -13
- package/cjs/models/tag.js.map +1 -1
- package/cjs/models/team.js +1 -13
- package/cjs/models/team.js.map +1 -1
- package/cjs/models/template.js +49 -79
- package/cjs/models/template.js.map +1 -1
- package/cjs/models/tenancy.js +1 -11
- package/cjs/models/tenancy.js.map +1 -1
- package/cjs/models/timing-log.js +23 -80
- package/cjs/models/timing-log.js.map +1 -1
- package/cjs/models/timing-log.spec.js +25 -38
- package/cjs/models/timing-log.spec.js.map +1 -1
- package/cjs/models/token.js +1 -11
- package/cjs/models/token.js.map +1 -1
- package/cjs/models/transcribe-socket.js +1 -8
- package/cjs/models/transcribe-socket.js.map +1 -1
- package/cjs/models/upload.js +1 -7
- package/cjs/models/upload.js.map +1 -1
- package/cjs/models/user.js +1 -29
- package/cjs/models/user.js.map +1 -1
- package/cjs/models/user.spec.js +22 -32
- package/cjs/models/user.spec.js.map +1 -1
- package/cjs/models.js +0 -140
- package/cjs/models.js.map +1 -1
- package/cjs/presentation/appointment-presentation.js +9 -35
- package/cjs/presentation/appointment-presentation.js.map +1 -1
- package/cjs/presentation/base-presentation-collection.js +1 -7
- package/cjs/presentation/base-presentation-collection.js.map +1 -1
- package/cjs/presentation/base-presentation-model.js +24 -67
- package/cjs/presentation/base-presentation-model.js.map +1 -1
- package/cjs/presentation/base-presentation-model.spec.js +5 -27
- package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
- package/cjs/presentation/presentation-deck.js +41 -82
- package/cjs/presentation/presentation-deck.js.map +1 -1
- package/cjs/presentation/presentation-deck.spec.js +75 -98
- package/cjs/presentation/presentation-deck.spec.js.map +1 -1
- package/cjs/presentation/presentation-decks.js +1 -9
- package/cjs/presentation/presentation-decks.js.map +1 -1
- package/cjs/presentation/presentation-section.js +12 -74
- package/cjs/presentation/presentation-section.js.map +1 -1
- package/cjs/presentation/presentation-section.spec.js +211 -264
- package/cjs/presentation/presentation-section.spec.js.map +1 -1
- package/cjs/presentation/presentation-sections.js +1 -9
- package/cjs/presentation/presentation-sections.js.map +1 -1
- package/cjs/presentation/presentation-slide.js +23 -77
- package/cjs/presentation/presentation-slide.js.map +1 -1
- package/cjs/presentation/presentation-slide.spec.js +144 -182
- package/cjs/presentation/presentation-slide.spec.js.map +1 -1
- package/cjs/presentation/presentation-slides.js +1 -9
- package/cjs/presentation/presentation-slides.js.map +1 -1
- package/cjs/presentation/presentation-subslide.js +3 -23
- package/cjs/presentation/presentation-subslide.js.map +1 -1
- package/cjs/presentation/presentation-subslide.spec.js +106 -130
- package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
- package/cjs/presentation/presentation-subslides.js +1 -9
- package/cjs/presentation/presentation-subslides.js.map +1 -1
- package/cjs/presentation/presentation.js +64 -118
- package/cjs/presentation/presentation.js.map +1 -1
- package/cjs/presentation.js +0 -20
- package/cjs/presentation.js.map +1 -1
- package/cjs/selections.js +10 -36
- package/cjs/selections.js.map +1 -1
- package/cjs/state-register.js +3 -11
- package/cjs/state-register.js.map +1 -1
- package/cjs/sync.js +32 -76
- package/cjs/sync.js.map +1 -1
- package/cjs/utils.js +21 -49
- package/cjs/utils.js.map +1 -1
- package/cjs/utils.spec.js +0 -4
- package/cjs/utils.spec.js.map +1 -1
- package/eslint.config.mjs +10 -0
- package/package.json +8 -9
- package/rush-logs/api.build.cache.log +1 -0
- package/rush-logs/api.build.log +6 -0
- package/rush-logs/api.test.cache.log +1 -0
- package/rush-logs/api.test.log +1 -0
- package/src/collections/activity.js +1 -1
- package/src/collections/adjunct-sections.js +3 -3
- package/src/collections/adjunct-slides.js +3 -3
- package/src/collections/adjunct-sub-slides.js +3 -3
- package/src/collections/base.js +14 -0
- package/src/collections/section-selections.js +3 -3
- package/src/collections/slide-selections.js +3 -3
- package/src/fixtures.js +8 -1
- package/src/models/adjunct-section.js +6 -0
- package/src/models/adjunct-slide.js +6 -0
- package/src/models/adjunct-sub-slide.js +5 -0
- package/src/models/adjunct.js +1 -1
- package/src/models/appointment.js +2 -0
- package/src/models/base.js +6 -2
- package/src/models/deck-version.js +7 -3
- package/src/models/manifest-json.js +1 -1
- package/src/models/section-selection.js +6 -0
- package/src/models/slide-selection.js +6 -0
- package/src/presentation/presentation-section.js +4 -0
- package/src/presentation/presentation-slide.js +8 -0
- package/src/presentation/presentation-slide.spec.js +2 -0
- package/.eslintrc.js +0 -8
- package/.gitlab-ci.yml +0 -4
- package/.husky/pre-commit +0 -4
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","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"}
|
|
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":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAuB,SAAAE,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAnB,CAAA,EAAAG,MAAA,CAAAe,yBAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAiB,cAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA,IADvB;AAGO,IAAMqB,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,+BAA+B;AACnD,IAAME,aAAa,GAAAD,OAAA,CAAAC,aAAA,GAAG,+BAA+B;AAErD,SAASC,WAAWA,CAACC,GAAG,EAAE;EAChC,OAAOC,YAAI,CAACC,KAAK,CAACF,GAAG,CAAC,CAACG,IAAI;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,IAAI,EAAE;EAC1C;EACA,IAAMC,GAAG,GAAGD,IAAI,CAACE,OAAO,CAAC,8BAAyB,EAAE,GAAG,CAAC;;EAExD;EACA,OAAOD,GAAG,CAACC,OAAO,CACjB,qGAAsG,EACtG,EACD,CAAC;AACF;AAEA,IAAMC,WAAW,GAAG,8BAA8B;AAE3C,SAASC,WAAWA,CAACC,IAAI,EAAE;EACjC,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC7B,MAAM,IAAIC,KAAK,qEAAAC,MAAA,CACmDF,IAAI,OACtE,CAAC;EACF;EAEA,OAAOA,IAAI,CAACG,KAAK,CAACL,WAAW,CAAC,CAAC,CAAC,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,eAAeA,CAACJ,IAAI,EAAEK,MAAM,EAAEC,KAAK,EAAE;EACpD;EACA,IAAID,MAAM,KAAKC,KAAK,EAAE;IACrB,OAAON,IAAI;EACZ;EAEA,IAAMO,cAAc,GAAGR,WAAW,CAACM,MAAM,EAAE,QAAQ,CAAC;EACpD,IAAMG,aAAa,GAAGT,WAAW,CAACO,KAAK,EAAE,OAAO,CAAC;EAEjD,IAAI,OAAON,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACS,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;IAC3D,OAAOT,IAAI,CAACH,OAAO,CAACU,cAAc,EAAEC,aAAa,CAAC;EACnD,CAAC,MAAM,IAAIE,KAAK,CAACC,OAAO,CAACX,IAAI,CAAC,EAAE;IAC/B,OAAOA,IAAI,CAACY,GAAG,CAAC,UAACC,IAAI;MAAA,OAAKT,eAAe,CAACS,IAAI,EAAER,MAAM,EAAEC,KAAK,CAAC;IAAA,EAAC;EAChE,CAAC,MAAM,IAAIQ,eAAC,CAACC,QAAQ,CAACf,IAAI,CAAC,EAAE;IAC5B,OAAOhC,MAAM,CAACC,IAAI,CAAC+B,IAAI,CAAC,CAACgB,MAAM,CAAC,UAACC,MAAM,EAAEC,GAAG,EAAK;MAChDD,MAAM,CAACC,GAAG,CAAC,GAAGd,eAAe,CAACJ,IAAI,CAACkB,GAAG,CAAC,EAAEb,MAAM,EAAEC,KAAK,CAAC;MACvD,OAAOW,MAAM;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;EACP;EACA,OAAOjB,IAAI;AACZ;;AAEA;AACA;AACO,SAASmB,QAAQA,CAACC,gBAAgB,EAAE;EAC1C,IAAMC,GAAG,GAAGD,gBAAgB,CAACE,WAAW,CAACV,GAAG,CAAC,UAACW,OAAO,EAAK;IACzD,IAAIC,MAAM,GAAG,EAAE;IACf,IAAID,OAAO,CAACE,SAAS,EAAE;MACtBD,MAAM,GAAGD,OAAO,CAACE,SAAS,CAACb,GAAG,CAAC,UAACc,KAAK,EAAK;QACzC,IAAIC,SAAS,GAAG,EAAE;QAElB,IAAID,KAAK,CAACE,YAAY,EAAE;UACvBD,SAAS,GAAGD,KAAK,CAACE,YAAY,CAAChB,GAAG,CAAC,UAACiB,QAAQ;YAAA,OAAKA,QAAQ,CAACC,EAAE;UAAA,EAAC;QAC9D;QAEA,QAAQJ,KAAK,CAACI,EAAE,EAAA5B,MAAA,KAAA6B,mBAAA,CAAAjD,OAAA,EAAK6C,SAAS;MAC/B,CAAC,CAAC;IACH;IAEA,QAAQJ,OAAO,CAACO,EAAE,EAAA5B,MAAA,KAAA6B,mBAAA,CAAAjD,OAAA,EAAKgC,eAAC,CAACkB,OAAO,CAACR,MAAM,CAAC;EACzC,CAAC,CAAC;EAEF,OAAOV,eAAC,CAACmB,GAAG,CAACnB,eAAC,CAACkB,OAAO,CAACX,GAAG,CAAC,CAAC;AAC7B;;AAEA;AACA;AACA;AACO,SAASa,sBAAsBA,CAACC,IAAI,EAAE;EAC5CA,IAAI,CAACC,QAAQ,CAACxD,OAAO,CAAC,UAAC2C,OAAO,EAAEc,KAAK,EAAK;IACzCd,OAAO,CAACe,QAAQ,GAAGD,KAAK;IACxBd,OAAO,CAACc,KAAK,GAAGA,KAAK;IAErBd,OAAO,CAACC,MAAM,CAAC5C,OAAO,CAAC,UAAC8C,KAAK,EAAEW,KAAK,EAAK;MACxCX,KAAK,CAACY,QAAQ,GAAGD,KAAK;MACtBX,KAAK,CAACW,KAAK,GAAGA,KAAK;MAEnBX,KAAK,CAACC,SAAS,CAAC/C,OAAO,CAAC,UAACiD,QAAQ,EAAEQ,KAAK,EAAK;QAC5CR,QAAQ,CAACS,QAAQ,GAAGD,KAAK;QACzBR,QAAQ,CAACQ,KAAK,GAAGA,KAAK;MACvB,CAAC,CAAC;IACH,CAAC,CAAC;EACH,CAAC,CAAC;AACH;;AAEA;AACA;AACO,SAASE,UAAUA,CAACC,KAAK,EAAE;EACjC,IAAMC,IAAI,GAAGD,KAAK,CAACC,IAAI,IAAI,EAAE;EAE7B,OAAOA,IAAI,CAAChC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC7C;;AAEA;AACA;AACA;AACO,SAASiC,cAAcA,CAACtB,gBAAgB,EAAE;EAChD,IAAMG,OAAO,GAAGH,gBAAgB,CAACE,WAAW,CAACqB,KAAK,CAAC,CAAC;EAEpD,OAAOC,OAAO,CACbrB,OAAO,IAAIA,OAAO,CAACE,SAAS,CAACoB,IAAI,CAAC,UAACnB,KAAK;IAAA,OAAKa,UAAU,CAACb,KAAK,CAAC;EAAA,EAC/D,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASoB,cAAcA,CAACC,GAAG,EAA4B;EAAA,IAA1BC,WAAW,GAAAtE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAuE,SAAA,GAAAvE,SAAA,MAAG;IAAA,OAAM,IAAI;EAAA;EAC3D,IAAIgC,KAAK,CAACC,OAAO,CAACoC,GAAG,CAAC,EAAE;IACvB,OAAOA,GAAG,CAACnC,GAAG,CAAC,UAACsC,CAAC;MAAA,OAAKJ,cAAc,CAACI,CAAC,EAAEF,WAAW,CAAC;IAAA,EAAC;EACtD,CAAC,MAAM,IACN,IAAAG,QAAA,CAAArE,OAAA,EAAOiE,GAAG,MAAK,QAAQ,IACvBA,GAAG,KAAK,IAAI,IACZ,OAAOA,GAAG,KAAK,WAAW,EACzB;IACD,OAAO/E,MAAM,CAACC,IAAI,CAAC8E,GAAG,CAAC,CAAC/B,MAAM,CAAC,UAACoC,GAAG,EAAElC,GAAG,EAAK;MAC5C,OAAAzC,aAAA,CAAAA,aAAA,KAAY2E,GAAG,WAAAvE,gBAAA,CAAAC,OAAA,MAAGoC,GAAG,EAAG4B,cAAc,CAACC,GAAG,CAAC7B,GAAG,CAAC,EAAE8B,WAAW,CAAC;IAC9D,CAAC,EAAE,CAAC,CAAC,CAAC;EACP,CAAC,MAAM,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;IACnC,IAAMM,EAAE,GAAG,gDAAgD;IAC3D,IAAIA,EAAE,CAACC,IAAI,CAACP,GAAG,CAAC,IAAIC,WAAW,CAACD,GAAG,CAAC,EAAE;MACrC,OAAO,EAAE;IACV;EACD;EACA,OAAOA,GAAG;AACX","ignoreList":[]}
|
package/cjs/utils.spec.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _utils = require("./utils.js");
|
|
4
|
-
|
|
5
4
|
describe("getShortURL()", function () {
|
|
6
5
|
test("shorten a full url to a short one", function () {
|
|
7
6
|
var url = "http://client.salespreso.com/api/users/1/";
|
|
@@ -31,7 +30,6 @@ describe("getHostname()", function () {
|
|
|
31
30
|
var actual = function actual() {
|
|
32
31
|
return (0, _utils.getHostname)(null);
|
|
33
32
|
};
|
|
34
|
-
|
|
35
33
|
expect(actual).toThrow();
|
|
36
34
|
});
|
|
37
35
|
it("returns a hostname from a full URL", function () {
|
|
@@ -52,14 +50,12 @@ describe("replaceHostname()", function () {
|
|
|
52
50
|
var actual = function actual() {
|
|
53
51
|
return (0, _utils.replaceHostname)("foo", null, "brand.new.com");
|
|
54
52
|
};
|
|
55
|
-
|
|
56
53
|
expect(actual).toThrow();
|
|
57
54
|
});
|
|
58
55
|
it("throws an error if not to hostname", function () {
|
|
59
56
|
var actual = function actual() {
|
|
60
57
|
return (0, _utils.replaceHostname)("foo", "old.url.com", null);
|
|
61
58
|
};
|
|
62
|
-
|
|
63
59
|
expect(actual).toThrow();
|
|
64
60
|
});
|
|
65
61
|
it("replaces hostname of a string", function () {
|
package/cjs/utils.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.spec.js","names":["_utils","require","describe","test","url","expect","getShortURL","toEqual","testString","removeMultiByteChars","testString2","testString3","it","actual","getHostname","toThrow","replaceHostname","data","expected","beforeURL","afterURL","first","anArray","nestedObject","second"],"sources":["../src/utils.spec.js"],"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"],"mappings":"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","ignoreList":[]}
|
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.49.1",
|
|
5
5
|
"description": "Everything to do with talking to the SalePreso API",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"module": "esm/index.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@babel/cli": "^7.7.4",
|
|
32
|
-
"@babel/core": "~7.
|
|
32
|
+
"@babel/core": "~7.26.0",
|
|
33
33
|
"@babel/helper-validator-identifier": "^7.10.4",
|
|
34
34
|
"@babel/plugin-transform-modules-commonjs": "^7.7.4",
|
|
35
35
|
"@babel/plugin-transform-runtime": "^7.7.4",
|
|
@@ -50,14 +50,14 @@
|
|
|
50
50
|
"sinon": "^2.1.0",
|
|
51
51
|
"source-map-support": "^0.4.14",
|
|
52
52
|
"sp-get-port-by-name": "^0.0.1",
|
|
53
|
-
"sp-test": "0.2.0",
|
|
54
53
|
"testdouble": "^2.1.1",
|
|
55
|
-
"
|
|
56
|
-
"@
|
|
57
|
-
"@babel/preset-react": "~7.14.5",
|
|
54
|
+
"eslint": "~9.15.0",
|
|
55
|
+
"@babel/preset-react": "~7.25.9",
|
|
58
56
|
"jest-fixed-default-reporter": "~2.0.1",
|
|
59
57
|
"rosie": "~2.1.0",
|
|
60
|
-
"@faker-js/faker": "~7.5.0"
|
|
58
|
+
"@faker-js/faker": "~7.5.0",
|
|
59
|
+
"sp-test": "0.2.0",
|
|
60
|
+
"@livepreso/eslint-config": "1.0.0"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"test:debug": "node --inspect node_modules/.bin/jest --watch --runInBand",
|
|
@@ -65,6 +65,5 @@
|
|
|
65
65
|
"build:cjs": "BABEL_ENV=cjs babel --delete-dir-on-start src/ --out-dir=cjs/ -s",
|
|
66
66
|
"build": "run-p build:*",
|
|
67
67
|
"prepublish": "npm run build"
|
|
68
|
-
}
|
|
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"
|
|
68
|
+
}
|
|
70
69
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This project does not define the caching behavior of the "build" command, so caching has been disabled.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This project does not define the caching behavior of the "test" command, so caching has been disabled.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Invoking: jest --coverage --coverageReporters=json
|
|
@@ -14,7 +14,7 @@ export const ActivityCollection = BaseCollection.extend(
|
|
|
14
14
|
/** @lends collections.ActivityCollection# */ {
|
|
15
15
|
model: "ActivityItemModel",
|
|
16
16
|
|
|
17
|
-
constructor(data, options = {}) {
|
|
17
|
+
constructor: function (data, options = {}) {
|
|
18
18
|
this.registerStates();
|
|
19
19
|
|
|
20
20
|
if (!options || !options.type) {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../models/adjunct-section.js";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DuplicateIdCollection } from "./base.js";
|
|
4
4
|
import { register } from "../state-register.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @constructor
|
|
8
8
|
* @alias collections.AdjunctSectionCollection
|
|
9
|
-
* @extends collections.
|
|
9
|
+
* @extends collections.DuplicateIdCollection
|
|
10
10
|
* @see models.AdjunctSectionModel
|
|
11
11
|
*/
|
|
12
|
-
export const AdjunctSectionCollection =
|
|
12
|
+
export const AdjunctSectionCollection = DuplicateIdCollection.extend(
|
|
13
13
|
/** @lends collections.AdjunctSectionCollection# */ {
|
|
14
14
|
comparator: "sequence",
|
|
15
15
|
model: "AdjunctSectionModel",
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../models/adjunct-slide.js";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DuplicateIdCollection } from "./base.js";
|
|
4
4
|
import { register } from "../state-register.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @constructor
|
|
8
8
|
* @alias collections.AdjunctSlideCollection
|
|
9
|
-
* @extends collections.
|
|
9
|
+
* @extends collections.DuplicateIdCollection
|
|
10
10
|
* @see models.AdjunctSlideModel
|
|
11
11
|
*/
|
|
12
|
-
export const AdjunctSlideCollection =
|
|
12
|
+
export const AdjunctSlideCollection = DuplicateIdCollection.extend(
|
|
13
13
|
/** @lends collections.AdjunctSlideCollection# */ {
|
|
14
14
|
comparator: "sequence",
|
|
15
15
|
model: "AdjunctSlideModel",
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../models/adjunct-sub-slide.js";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DuplicateIdCollection } from "./base.js";
|
|
4
4
|
import { register } from "../state-register.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @constructor
|
|
8
8
|
* @alias collections.AdjunctSubSlideCollection
|
|
9
|
-
* @extends collections.
|
|
9
|
+
* @extends collections.DuplicateIdCollection
|
|
10
10
|
* @see models.AdjunctSubSlideModel
|
|
11
11
|
*/
|
|
12
|
-
export const AdjunctSubSlideCollection =
|
|
12
|
+
export const AdjunctSubSlideCollection = DuplicateIdCollection.extend(
|
|
13
13
|
/** @lends collections.AdjunctSubSlideCollection# */ {
|
|
14
14
|
comparator: "sequence",
|
|
15
15
|
model: "AdjunctSubSlideModel",
|
package/src/collections/base.js
CHANGED
|
@@ -387,3 +387,17 @@ export const BaseCollection = Collection.extend(
|
|
|
387
387
|
BaseCollection.matchesURL = function (url) {
|
|
388
388
|
return this.prototype.matchesURL(url);
|
|
389
389
|
};
|
|
390
|
+
|
|
391
|
+
// Use this instead of BaseCollection if you want to allow for saving a collection
|
|
392
|
+
// with multiple versions of the same model (the same ID).
|
|
393
|
+
export const DuplicateIdCollection = BaseCollection.extend({
|
|
394
|
+
_reset() {
|
|
395
|
+
// This function is the first thing called before the models are added
|
|
396
|
+
// to the collection. There's no earlier/easier place to do this - we
|
|
397
|
+
// want to be able to add the same model multiple times with the same ID
|
|
398
|
+
// which is what ampersand doesn't want us to do by default. We set this
|
|
399
|
+
// to something nonsense to prevent it doing that.
|
|
400
|
+
this.mainIndex = "__disabled__";
|
|
401
|
+
BaseCollection.prototype._reset.apply(this, arguments);
|
|
402
|
+
},
|
|
403
|
+
});
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../models/section-selection.js";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DuplicateIdCollection } from "./base.js";
|
|
4
4
|
import { register } from "../state-register.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @constructor
|
|
8
8
|
* @alias collections.SectionSelectionCollection
|
|
9
|
-
* @extends collections.
|
|
9
|
+
* @extends collections.DuplicateIdCollection
|
|
10
10
|
* @see models.SectionSelectionModel
|
|
11
11
|
*/
|
|
12
|
-
export const SectionSelectionCollection =
|
|
12
|
+
export const SectionSelectionCollection = DuplicateIdCollection.extend(
|
|
13
13
|
/** @lends collections.SectionSelectionCollection# */ {
|
|
14
14
|
model: "SectionSelectionModel",
|
|
15
15
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../models/slide-selection.js";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { DuplicateIdCollection } from "./base.js";
|
|
4
4
|
import { register } from "../state-register.js";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @constructor
|
|
8
8
|
* @alias collections.SlideSelectionCollection
|
|
9
|
-
* @extends collections.
|
|
9
|
+
* @extends collections.DuplicateIdCollection
|
|
10
10
|
* @see models.SlideSelectionModel
|
|
11
11
|
*/
|
|
12
|
-
export const SlideSelectionCollection =
|
|
12
|
+
export const SlideSelectionCollection = DuplicateIdCollection.extend(
|
|
13
13
|
/** @lends collections.SlideSelectionCollection# */ {
|
|
14
14
|
model: "SlideSelectionModel",
|
|
15
15
|
|
package/src/fixtures.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as models from "./models.js";
|
|
|
3
3
|
import * as presentation from "./presentation.js";
|
|
4
4
|
|
|
5
5
|
import { Factory } from "rosie";
|
|
6
|
+
import Model from "ampersand-model";
|
|
6
7
|
import { faker } from "@faker-js/faker";
|
|
7
8
|
|
|
8
9
|
const presentationModels = {
|
|
@@ -87,7 +88,9 @@ export function C(collectionName, data) {
|
|
|
87
88
|
|
|
88
89
|
const modelName = Collection.prototype.model;
|
|
89
90
|
|
|
90
|
-
return new Collection(
|
|
91
|
+
return new Collection(
|
|
92
|
+
data.map((d) => (d instanceof Model ? d : M(modelName, d))),
|
|
93
|
+
);
|
|
91
94
|
}
|
|
92
95
|
|
|
93
96
|
factories.AppointmentModel.attr("latest_snapshot", null)
|
|
@@ -101,8 +104,12 @@ factories.AppointmentModel.attr("latest_snapshot", null)
|
|
|
101
104
|
appt.latest_snapshot = M("SnapshotModel", {
|
|
102
105
|
appointment: appt,
|
|
103
106
|
});
|
|
107
|
+
} else {
|
|
108
|
+
appt.latest_snapshot.appointment = appt;
|
|
104
109
|
}
|
|
105
110
|
|
|
111
|
+
appt.latest_snapshot.appointment = appt;
|
|
112
|
+
|
|
106
113
|
if (!appt.latest_feed_data) {
|
|
107
114
|
appt.latest_feed_data = M("FeedDataModel", {
|
|
108
115
|
snapshot: appt.latest_snapshot,
|
|
@@ -24,6 +24,7 @@ export const AdjunctSectionModel = BaseModel.extend(
|
|
|
24
24
|
* @property {string} image_original
|
|
25
25
|
* @property {string} html_content
|
|
26
26
|
* @property {date} created_date
|
|
27
|
+
* @property {date} selection_date
|
|
27
28
|
* @property {date} modified_date
|
|
28
29
|
* @property {string} title
|
|
29
30
|
* @property {number} sequence
|
|
@@ -39,6 +40,7 @@ export const AdjunctSectionModel = BaseModel.extend(
|
|
|
39
40
|
image_original: "string",
|
|
40
41
|
html_content: "string",
|
|
41
42
|
created_date: "date",
|
|
43
|
+
selection_date: "date",
|
|
42
44
|
modified_date: "date",
|
|
43
45
|
title: "string",
|
|
44
46
|
sequence: "number",
|
|
@@ -93,6 +95,10 @@ export const AdjunctSectionModel = BaseModel.extend(
|
|
|
93
95
|
data.url = this.url();
|
|
94
96
|
}
|
|
95
97
|
|
|
98
|
+
if (this.selection_date) {
|
|
99
|
+
data.selection_date = this.selection_date;
|
|
100
|
+
}
|
|
101
|
+
|
|
96
102
|
return data;
|
|
97
103
|
},
|
|
98
104
|
},
|
|
@@ -24,6 +24,7 @@ export const AdjunctSlideModel = BaseModel.extend(
|
|
|
24
24
|
* @property {string} image_original
|
|
25
25
|
* @property {string} html_content
|
|
26
26
|
* @property {date} created_date
|
|
27
|
+
* @property {date} selection_date
|
|
27
28
|
* @property {date} modified_date
|
|
28
29
|
* @property {string} title
|
|
29
30
|
* @property {boolean} deleted
|
|
@@ -39,6 +40,7 @@ export const AdjunctSlideModel = BaseModel.extend(
|
|
|
39
40
|
image_original: "string",
|
|
40
41
|
html_content: "string",
|
|
41
42
|
created_date: "date",
|
|
43
|
+
selection_date: "date",
|
|
42
44
|
deleted: "boolean",
|
|
43
45
|
modified_date: "date",
|
|
44
46
|
title: "string",
|
|
@@ -88,6 +90,10 @@ export const AdjunctSlideModel = BaseModel.extend(
|
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
|
|
93
|
+
if (this.selection_date) {
|
|
94
|
+
data.selection_date = this.selection_date;
|
|
95
|
+
}
|
|
96
|
+
|
|
91
97
|
if (this.id) {
|
|
92
98
|
data.id = this.id;
|
|
93
99
|
data.url = this.url();
|
|
@@ -29,6 +29,7 @@ export const AdjunctSubSlideModel = BaseModel.extend(
|
|
|
29
29
|
enabled: "boolean",
|
|
30
30
|
html_content: "string",
|
|
31
31
|
modified_date: "date",
|
|
32
|
+
selection_date: "date",
|
|
32
33
|
sequence: "number",
|
|
33
34
|
title: "string",
|
|
34
35
|
visible: "boolean",
|
|
@@ -63,6 +64,10 @@ export const AdjunctSubSlideModel = BaseModel.extend(
|
|
|
63
64
|
data.html_content = this.html_content;
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
if (this.selection_date) {
|
|
68
|
+
data.selection_date = this.selection_date;
|
|
69
|
+
}
|
|
70
|
+
|
|
66
71
|
if (this.id) {
|
|
67
72
|
data.id = this.id;
|
|
68
73
|
data.url = this.url();
|
package/src/models/adjunct.js
CHANGED
package/src/models/base.js
CHANGED
|
@@ -116,7 +116,7 @@ export const BaseModel = Model.extend(
|
|
|
116
116
|
|
|
117
117
|
this._convertToValues();
|
|
118
118
|
|
|
119
|
-
const id = this.
|
|
119
|
+
const id = this.getIDFromURL(this._url);
|
|
120
120
|
|
|
121
121
|
if (!dataCopy.id && id) {
|
|
122
122
|
dataCopy.id = id;
|
|
@@ -239,7 +239,7 @@ export const BaseModel = Model.extend(
|
|
|
239
239
|
// and we want to ignore the hostname (https://staging-demo.salespreso.com)
|
|
240
240
|
// and strip out the '/api' from both the resource url and the variable url
|
|
241
241
|
// so that we can use the remaining part to isolate the id
|
|
242
|
-
|
|
242
|
+
getIDFromURL(url, resource = "") {
|
|
243
243
|
const resourceURL = resource || this.getResourceURL();
|
|
244
244
|
|
|
245
245
|
if (!url || !resourceURL) {
|
|
@@ -866,3 +866,7 @@ function replacePropertyDefinition(object, name) {
|
|
|
866
866
|
BaseModel.matchesURL = function (url) {
|
|
867
867
|
return this.prototype.matchesURL(url);
|
|
868
868
|
};
|
|
869
|
+
|
|
870
|
+
BaseModel.getIDFromURL = function (...args) {
|
|
871
|
+
return this.prototype.getIDFromURL(...args);
|
|
872
|
+
};
|
|
@@ -121,13 +121,17 @@ export const DeckVersionModel = BaseModel.extend(
|
|
|
121
121
|
},
|
|
122
122
|
},
|
|
123
123
|
|
|
124
|
-
getHooksPath() {
|
|
124
|
+
getHooksPath({ rootAssetPath = null } = {}) {
|
|
125
125
|
if (this.isNew()) {
|
|
126
126
|
throw new Error(
|
|
127
127
|
"Can only get hooks from a fetched deckversion or at least have an ID",
|
|
128
128
|
);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
if (rootAssetPath) {
|
|
132
|
+
return Promise.resolve(`${rootAssetPath}${this.manifest_json.hooks}`);
|
|
133
|
+
}
|
|
134
|
+
|
|
131
135
|
return Promise.resolve()
|
|
132
136
|
.then(() => {
|
|
133
137
|
if (
|
|
@@ -157,8 +161,8 @@ export const DeckVersionModel = BaseModel.extend(
|
|
|
157
161
|
* @todo This should eventually return a hooks interface
|
|
158
162
|
* @returns {object}
|
|
159
163
|
*/
|
|
160
|
-
getHooks() {
|
|
161
|
-
return this.getHooksPath()
|
|
164
|
+
getHooks({ rootAssetPath = null } = {}) {
|
|
165
|
+
return this.getHooksPath({ rootAssetPath })
|
|
162
166
|
.then((hooksPath) => {
|
|
163
167
|
return SystemJS.import(hooksPath);
|
|
164
168
|
})
|
|
@@ -135,7 +135,7 @@ export const ManifestJSONModel = BaseModel.extend(
|
|
|
135
135
|
getDimensionsByName(name) {
|
|
136
136
|
if (Array.isArray(this.dimensions)) {
|
|
137
137
|
const dimension = this.dimensions.find(
|
|
138
|
-
(d) => d.name
|
|
138
|
+
(d) => d.name?.toLowerCase() === name?.toLowerCase(),
|
|
139
139
|
);
|
|
140
140
|
if (!dimension) {
|
|
141
141
|
return { width: 1024, height: 767 };
|
|
@@ -20,10 +20,12 @@ export const SectionSelectionModel = BaseModel.extend(
|
|
|
20
20
|
/**
|
|
21
21
|
* @property {number} sequence
|
|
22
22
|
* @property {boolean} visible
|
|
23
|
+
* @property {date} selection_date
|
|
23
24
|
*/
|
|
24
25
|
props: {
|
|
25
26
|
sequence: "number",
|
|
26
27
|
visible: "boolean",
|
|
28
|
+
selection_date: "date",
|
|
27
29
|
},
|
|
28
30
|
|
|
29
31
|
/**
|
|
@@ -43,6 +45,10 @@ export const SectionSelectionModel = BaseModel.extend(
|
|
|
43
45
|
visible: this.visible,
|
|
44
46
|
};
|
|
45
47
|
|
|
48
|
+
if (this.selection_date) {
|
|
49
|
+
data.selection_date = this.selection_date;
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
if (this.id) {
|
|
47
53
|
data.id = this.id;
|
|
48
54
|
data.url = this.url();
|
|
@@ -20,10 +20,12 @@ export const SlideSelectionModel = BaseModel.extend(
|
|
|
20
20
|
/**
|
|
21
21
|
* @property {number} sequence
|
|
22
22
|
* @property {boolean} visible
|
|
23
|
+
* @property {date} selection_date
|
|
23
24
|
*/
|
|
24
25
|
props: {
|
|
25
26
|
sequence: "number",
|
|
26
27
|
visible: "boolean",
|
|
28
|
+
selection_date: "date",
|
|
27
29
|
},
|
|
28
30
|
|
|
29
31
|
/**
|
|
@@ -43,6 +45,10 @@ export const SlideSelectionModel = BaseModel.extend(
|
|
|
43
45
|
visible: this.visible,
|
|
44
46
|
};
|
|
45
47
|
|
|
48
|
+
if (this.selection_date) {
|
|
49
|
+
data.selection_date = this.selection_date;
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
if (this.id) {
|
|
47
53
|
data.id = this.id;
|
|
48
54
|
data.url = this.url();
|
|
@@ -72,6 +72,7 @@ export const PresentationSlide = BasePresentationModel.extend(
|
|
|
72
72
|
visible: "boolean",
|
|
73
73
|
title: "string",
|
|
74
74
|
section: "number",
|
|
75
|
+
sectionKey: "string",
|
|
75
76
|
image: "string",
|
|
76
77
|
_orig_image: "string",
|
|
77
78
|
thumbnail: "string",
|
|
@@ -106,6 +107,10 @@ export const PresentationSlide = BasePresentationModel.extend(
|
|
|
106
107
|
}
|
|
107
108
|
return this._url;
|
|
108
109
|
},
|
|
110
|
+
|
|
111
|
+
toString() {
|
|
112
|
+
return `Slide: ${this.key} (${this.id})`;
|
|
113
|
+
},
|
|
109
114
|
},
|
|
110
115
|
);
|
|
111
116
|
|
|
@@ -165,6 +170,7 @@ PresentationSlide.createFromSlide = function (slideModel, options = {}) {
|
|
|
165
170
|
editable: tags.indexOf("editable") > -1,
|
|
166
171
|
title: slideModel.title,
|
|
167
172
|
section: slideModel.section.id,
|
|
173
|
+
sectionKey: slideModel.section.key,
|
|
168
174
|
tags,
|
|
169
175
|
index: config.sequence,
|
|
170
176
|
sequence: config.sequence,
|
|
@@ -410,6 +416,7 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {
|
|
|
410
416
|
visible: true,
|
|
411
417
|
index: -1,
|
|
412
418
|
deckversionID: -1,
|
|
419
|
+
sectionKey: "",
|
|
413
420
|
sequence: opts.index,
|
|
414
421
|
impostor: false,
|
|
415
422
|
screenshots: new collections.DeckVersionScreenshotCollection(),
|
|
@@ -448,6 +455,7 @@ PresentationSlide.createFromAutoAdjunct = function (model, opts = {}) {
|
|
|
448
455
|
allowConvert: options.allowConvert,
|
|
449
456
|
deckversion: options.deckversionID,
|
|
450
457
|
impostor: options.impostor,
|
|
458
|
+
sectionKey: options.sectionKey,
|
|
451
459
|
tags,
|
|
452
460
|
cmsvalkey_set: autoAdjunct.cmsvalkey_set,
|
|
453
461
|
});
|