@livepreso/api 6.44.0 → 6.46.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/.eslintrc.js +3 -0
- package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
- package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
- package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
- package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
- package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
- package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
- package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
- package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
- package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
- package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
- package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
- package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
- package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
- package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
- package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
- package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
- package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
- package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
- package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
- package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
- package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
- package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
- package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
- package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
- package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
- package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
- package/.rush/temp/operation/test/all.log +19 -0
- package/.rush/temp/operation/test/state.json +3 -0
- package/.rush/temp/{package-deps_test.json → package-deps_build.json} +11 -11
- package/.rush/temp/shrinkwrap-deps.json +605 -597
- package/CHANGELOG.json +29 -0
- package/CHANGELOG.md +15 -1
- package/README.md +4 -4
- package/api.build.log +1 -1
- package/api.test.cache.log +1 -0
- package/api.test.log +19 -0
- package/bin/test.sh +0 -1
- package/cjs/api.js +18 -17
- 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 +35 -36
- package/cjs/auth.js.map +1 -1
- package/cjs/auth.spec.js +52 -71
- 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 +16 -56
- package/cjs/collections/activity.js.map +1 -1
- package/cjs/collections/adjunct-sections.js +1 -10
- package/cjs/collections/adjunct-sections.js.map +1 -1
- package/cjs/collections/adjunct-slides.js +1 -10
- package/cjs/collections/adjunct-slides.js.map +1 -1
- package/cjs/collections/adjunct-sub-slides.js +1 -9
- 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-duplicates.js +1 -9
- package/cjs/collections/appointment-duplicates.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 +66 -103
- package/cjs/collections/appointment-tags.js.map +1 -1
- package/cjs/collections/appointment-templates.js +27 -0
- package/cjs/collections/appointment-templates.js.map +1 -0
- 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 +46 -112
- package/cjs/collections/base.js.map +1 -1
- package/cjs/collections/base.spec.js +204 -233
- package/cjs/collections/base.spec.js.map +1 -1
- package/cjs/collections/cms-vals.js +9 -16
- package/cjs/collections/cms-vals.js.map +1 -1
- package/cjs/collections/contact-phones.js +20 -0
- package/cjs/collections/contact-phones.js.map +1 -0
- 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 +49 -0
- package/cjs/collections/deck-version-screenshots.js.map +1 -0
- 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 +1 -9
- 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/slide-selections.js +1 -9
- 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 +33 -86
- package/cjs/collections.js.map +1 -1
- package/cjs/fixtures.js +187 -0
- package/cjs/fixtures.js.map +1 -0
- package/cjs/index.js +0 -10
- 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 +1 -17
- package/cjs/middlewares/auth.js.map +1 -1
- package/cjs/middlewares/base.js +3 -9
- package/cjs/middlewares/base.js.map +1 -1
- package/cjs/middlewares/json.js +1 -19
- package/cjs/middlewares/json.js.map +1 -1
- package/cjs/middlewares/redirect.js +5 -21
- package/cjs/middlewares/redirect.js.map +1 -1
- package/cjs/models/activity-item.js +6 -20
- package/cjs/models/activity-item.js.map +1 -1
- package/cjs/models/adjunct-section.js +8 -21
- package/cjs/models/adjunct-section.js.map +1 -1
- package/cjs/models/adjunct-slide.js +8 -21
- package/cjs/models/adjunct-slide.js.map +1 -1
- package/cjs/models/adjunct-sub-slide.js +1 -16
- package/cjs/models/adjunct-sub-slide.js.map +1 -1
- package/cjs/models/adjunct.js +34 -10
- 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-duplicate.js +3 -25
- package/cjs/models/appointment-duplicate.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 +23 -0
- package/cjs/models/appointment-template.js.map +1 -0
- package/cjs/models/appointment-viewing.js +1 -8
- package/cjs/models/appointment-viewing.js.map +1 -1
- package/cjs/models/appointment.js +94 -69
- package/cjs/models/appointment.js.map +1 -1
- package/cjs/models/asset.js +12 -11
- 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 +5 -14
- package/cjs/models/auto-adjunct.js.map +1 -1
- package/cjs/models/base.js +89 -173
- package/cjs/models/base.js.map +1 -1
- package/cjs/models/base.spec.js +8 -30
- 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 +28 -15
- package/cjs/models/cms-val.js.map +1 -1
- package/cjs/models/cms-val.spec.js +25 -0
- package/cjs/models/cms-val.spec.js.map +1 -0
- package/cjs/models/contact-phone.js +54 -0
- package/cjs/models/contact-phone.js.map +1 -0
- package/cjs/models/contact.js +1 -18
- package/cjs/models/contact.js.map +1 -1
- package/cjs/models/customer.js +5 -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 +47 -0
- package/cjs/models/deck-version-screenshot.js.map +1 -0
- package/cjs/models/deck-version.js +54 -47
- 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 -23
- 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 +6 -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 +30 -11
- 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 +75 -74
- 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 +4 -20
- package/cjs/models/preset.js.map +1 -1
- package/cjs/models/refresh-request.js +17 -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 +1 -14
- package/cjs/models/section-selection.js.map +1 -1
- package/cjs/models/section.js +4 -15
- package/cjs/models/section.js.map +1 -1
- package/cjs/models/slide-selection.js +1 -14
- package/cjs/models/slide-selection.js.map +1 -1
- package/cjs/models/slide.js +4 -15
- package/cjs/models/slide.js.map +1 -1
- package/cjs/models/snapshot.js +13 -15
- package/cjs/models/snapshot.js.map +1 -1
- package/cjs/models/snapshot.spec.js +44 -0
- package/cjs/models/snapshot.spec.js.map +1 -0
- 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 +14 -13
- package/cjs/models/team.js.map +1 -1
- package/cjs/models/template.js +89 -15
- package/cjs/models/template.js.map +1 -1
- package/cjs/models/tenancy.js +4 -11
- package/cjs/models/tenancy.js.map +1 -1
- package/cjs/models/timing-log.js +21 -78
- package/cjs/models/timing-log.js.map +1 -1
- package/cjs/models/timing-log.spec.js +24 -37
- package/cjs/models/timing-log.spec.js.map +1 -1
- package/cjs/models/token.js +46 -0
- package/cjs/models/token.js.map +1 -0
- 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 +11 -28
- package/cjs/models/user.js.map +1 -1
- package/cjs/models/user.spec.js +20 -30
- package/cjs/models/user.spec.js.map +1 -1
- package/cjs/models.js +44 -128
- package/cjs/models.js.map +1 -1
- package/cjs/presentation/appointment-presentation.js +14 -36
- 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 +108 -33
- package/cjs/presentation/base-presentation-model.js.map +1 -1
- package/cjs/presentation/base-presentation-model.spec.js +58 -23
- package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
- package/cjs/presentation/presentation-deck.js +73 -83
- package/cjs/presentation/presentation-deck.js.map +1 -1
- package/cjs/presentation/presentation-deck.spec.js +118 -88
- 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 +70 -84
- package/cjs/presentation/presentation-section.js.map +1 -1
- package/cjs/presentation/presentation-section.spec.js +296 -238
- 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 +74 -84
- package/cjs/presentation/presentation-slide.js.map +1 -1
- package/cjs/presentation/presentation-slide.spec.js +211 -166
- 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 +101 -125
- 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 +87 -32
- 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 +81 -0
- package/cjs/selections.js.map +1 -0
- 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 +51 -42
- package/cjs/utils.js.map +1 -1
- package/cjs/utils.spec.js +0 -4
- package/cjs/utils.spec.js.map +1 -1
- package/jest.config.js +5 -3
- package/package.json +11 -8
- package/src/api.js +17 -2
- package/src/auth.js +45 -9
- package/src/auth.spec.js +2 -0
- package/src/collections/activity.js +4 -4
- package/src/collections/adjunct-sections.js +1 -1
- package/src/collections/adjunct-slides.js +1 -1
- package/src/collections/adjunct-sub-slides.js +1 -1
- package/src/collections/appointment-adjunct-tags.js +1 -1
- package/src/collections/appointment-deckversion-tags.js +2 -2
- package/src/collections/appointment-duplicates.js +1 -1
- package/src/collections/appointment-editors.js +1 -1
- package/src/collections/appointment-section-tags.js +1 -1
- package/src/collections/appointment-slide-tags.js +1 -1
- package/src/collections/appointment-tags.js +20 -18
- package/src/collections/appointment-templates.js +26 -0
- package/src/collections/appointments.js +9 -9
- package/src/collections/assets.js +1 -1
- package/src/collections/auto-adjuncts.js +1 -1
- package/src/collections/base.js +20 -10
- package/src/collections/base.spec.js +19 -5
- package/src/collections/cms-vals.js +5 -1
- package/src/collections/contact-phones.js +18 -0
- package/src/collections/contacts.js +1 -1
- package/src/collections/created-assets.js +1 -1
- package/src/collections/customers.js +1 -1
- package/src/collections/deck-notes.js +1 -1
- package/src/collections/deck-version-screenshots.js +48 -0
- package/src/collections/deck-versions.js +1 -1
- package/src/collections/decks.js +1 -1
- package/src/collections/deleted-assets.js +1 -1
- package/src/collections/dispatches.js +2 -2
- package/src/collections/event-objects.js +1 -1
- package/src/collections/events.js +1 -1
- package/src/collections/groups.js +1 -1
- package/src/collections/images.js +1 -1
- package/src/collections/locations.js +1 -1
- package/src/collections/opportunities.js +1 -1
- package/src/collections/pack-diffs.js +1 -1
- package/src/collections/packs.js +1 -1
- package/src/collections/presets.js +1 -1
- package/src/collections/section-selections.js +1 -1
- package/src/collections/sections.js +1 -1
- package/src/collections/slide-selections.js +1 -1
- package/src/collections/slides.js +1 -1
- package/src/collections/snapshots.js +1 -1
- package/src/collections/sub-slides.js +1 -1
- package/src/collections/tags.js +1 -1
- package/src/collections/teams.js +1 -1
- package/src/collections/templates.js +1 -1
- package/src/collections/uploads.js +1 -1
- package/src/collections/users.js +1 -1
- package/src/collections.js +3 -0
- package/src/fixtures.js +193 -0
- package/src/models/activity-item.js +3 -1
- package/src/models/adjunct-section.js +7 -2
- package/src/models/adjunct-slide.js +7 -2
- package/src/models/adjunct-sub-slide.js +1 -1
- package/src/models/adjunct.js +39 -1
- package/src/models/appointment-adjunct-tags.js +1 -1
- package/src/models/appointment-deckversion-tags.js +1 -1
- package/src/models/appointment-duplicate.js +1 -1
- package/src/models/appointment-editor.js +1 -1
- package/src/models/appointment-section-tags.js +1 -1
- package/src/models/appointment-slide-tags.js +1 -1
- package/src/models/appointment-stats.js +1 -1
- package/src/models/appointment-tags.js +1 -1
- package/src/models/appointment-template.js +19 -0
- package/src/models/appointment-viewing.js +1 -1
- package/src/models/appointment.js +112 -37
- package/src/models/asset.js +15 -1
- package/src/models/auto-adjunct-key-check.js +1 -1
- package/src/models/auto-adjunct.js +4 -1
- package/src/models/base.js +55 -22
- package/src/models/base.spec.js +34 -27
- package/src/models/choicelist.js +1 -1
- package/src/models/cms-val.js +24 -1
- package/src/models/cms-val.spec.js +14 -0
- package/src/models/contact-phone.js +57 -0
- package/src/models/contact.js +1 -1
- package/src/models/customer.js +3 -3
- package/src/models/deck-note.js +1 -1
- package/src/models/deck-tags.js +1 -1
- package/src/models/deck-version-screenshot.js +48 -0
- package/src/models/deck-version.js +60 -9
- package/src/models/deck.js +1 -1
- package/src/models/dispatch-preview.js +1 -1
- package/src/models/dispatch.js +1 -1
- package/src/models/event-object.js +1 -1
- package/src/models/event.js +1 -1
- package/src/models/feed-data.js +3 -1
- package/src/models/file.js +1 -1
- package/src/models/group.js +1 -1
- package/src/models/handover.js +1 -1
- package/src/models/hosted-preso.js +1 -1
- package/src/models/image.js +33 -1
- package/src/models/location.js +1 -1
- package/src/models/manifest-json.js +57 -6
- package/src/models/onshare.js +1 -1
- package/src/models/opportunity.js +1 -1
- package/src/models/pack-diff.js +1 -1
- package/src/models/pack.js +1 -1
- package/src/models/preset.js +3 -1
- package/src/models/refresh-request.js +15 -1
- package/src/models/room.js +1 -1
- package/src/models/salesforce-lookup.js +1 -1
- package/src/models/section-selection.js +1 -1
- package/src/models/section.js +3 -1
- package/src/models/slide-selection.js +1 -1
- package/src/models/slide.js +3 -1
- package/src/models/snapshot.js +11 -2
- package/src/models/snapshot.spec.js +31 -0
- package/src/models/sub-slide.js +1 -1
- package/src/models/support-ticket.js +1 -1
- package/src/models/tag.js +1 -1
- package/src/models/team.js +14 -3
- package/src/models/template.js +74 -2
- package/src/models/tenancy.js +4 -1
- package/src/models/timing-log.js +2 -2
- package/src/models/timing-log.spec.js +1 -1
- package/src/models/token.js +47 -0
- package/src/models/transcribe-socket.js +1 -1
- package/src/models/user.js +15 -2
- package/src/models.js +4 -0
- package/src/presentation/appointment-presentation.js +13 -5
- package/src/presentation/base-presentation-collection.js +1 -1
- package/src/presentation/base-presentation-model.js +88 -3
- package/src/presentation/base-presentation-model.spec.js +80 -3
- package/src/presentation/presentation-deck.js +65 -22
- package/src/presentation/presentation-deck.spec.js +55 -2
- package/src/presentation/presentation-decks.js +1 -1
- package/src/presentation/presentation-section.js +91 -31
- package/src/presentation/presentation-section.spec.js +142 -10
- package/src/presentation/presentation-sections.js +1 -1
- package/src/presentation/presentation-slide.js +69 -23
- package/src/presentation/presentation-slide.spec.js +105 -9
- package/src/presentation/presentation-slides.js +1 -1
- package/src/presentation/presentation-subslide.js +5 -5
- package/src/presentation/presentation-subslide.spec.js +3 -3
- package/src/presentation/presentation-subslides.js +1 -1
- package/src/presentation/presentation.js +27 -8
- package/src/selections.js +71 -0
- package/src/sync.js +1 -1
- package/src/utils.js +31 -8
- package/src/utils.spec.js +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"tenancy.js","names":["require","_base","_stateRegister","TenancyModel","exports","BaseModel","extend","modelName","detailType","props","name","brand_color","brand_colour","logo_original","logo_cropped","logo_128","logo_256","logo_512","colour_palette_key","tint_type","logo_background_colour","billing_frequency","is_default","eula_key","eula_url","status_set","type","default","_default","children","administrator","register"],"sources":["../../src/models/tenancy.js"],"sourcesContent":["import \"./user.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TenancyModel\n * @extends models.BaseModel\n */\nexport const TenancyModel = BaseModel.extend(\n\t/** @lends models.TenancyModel# */ {\n\t\tmodelName: \"tenancies\",\n\t\tdetailType: \"uuid\",\n\n\t\t/**\n\t\t * @property {string[]} eventtag_set\n\t\t * @property {date} timestamp\n\t\t */\n\t\tprops: {\n\t\t\tname: \"string\",\n\t\t\t// FIXME: This will eventually be removed!\n\t\t\tbrand_color: \"string\",\n\t\t\tbrand_colour: \"string\",\n\t\t\tlogo_original: \"string\",\n\t\t\tlogo_cropped: \"string\",\n\t\t\tlogo_128: \"string\",\n\t\t\tlogo_256: \"string\",\n\t\t\tlogo_512: \"string\",\n\t\t\tcolour_palette_key: \"string\",\n\t\t\ttint_type: \"string\",\n\t\t\tlogo_background_colour: \"string\",\n\t\t\tbilling_frequency: \"string\",\n\t\t\tis_default: \"boolean\",\n\t\t\teula_key: \"string\",\n\t\t\teula_url: \"string\",\n\t\t\tstatus_set: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tdefault: () => [],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tadministrator: \"UserModel\",\n\t\t},\n\t},\n);\n\nregister(\"TenancyModel\", TenancyModel);\n"],"mappings":";;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMG,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,eAAS,CAACC,MAAM,EAC3C,kCAAmC;EAClCC,SAAS,EAAE,WAAW;EACtBC,UAAU,EAAE,MAAM;EAElB;AACF;AACA;AACA;EACEC,KAAK,EAAE;IACNC,IAAI,EAAE,QAAQ;IACd;IACAC,WAAW,EAAE,QAAQ;IACrBC,YAAY,EAAE,QAAQ;IACtBC,aAAa,EAAE,QAAQ;IACvBC,YAAY,EAAE,QAAQ;IACtBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,QAAQ;IAClBC,kBAAkB,EAAE,QAAQ;IAC5BC,SAAS,EAAE,QAAQ;IACnBC,sBAAsB,EAAE,QAAQ;IAChCC,iBAAiB,EAAE,QAAQ;IAC3BC,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,QAAQ;IAClBC,QAAQ,EAAE,QAAQ;IAClBC,UAAU,EAAE;MACXC,IAAI,EAAE,OAAO;MACbC,OAAO,EAAE,SAAAC,SAAA;QAAA,OAAM,EAAE;MAAA;IAClB;EACD,CAAC;EAED;AACF;AACA;EACEC,QAAQ,EAAE;IACTC,aAAa,EAAE;EAChB;AACD,CACD,CAAC;AAED,IAAAC,uBAAQ,EAAC,cAAc,EAAE5B,YAAY,CAAC"}
|
package/cjs/models/timing-log.js
CHANGED
|
@@ -1,48 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.TimingLogModel = void 0;
|
|
9
|
-
|
|
10
8
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
-
|
|
12
9
|
require("./appointment.js");
|
|
13
|
-
|
|
14
10
|
require("./hosted-preso.js");
|
|
15
|
-
|
|
16
11
|
require("./user.js");
|
|
17
|
-
|
|
18
12
|
require("../collections/users.js");
|
|
19
|
-
|
|
20
13
|
var _utils = require("../utils.js");
|
|
21
|
-
|
|
22
14
|
var _auth = require("../auth.js");
|
|
23
|
-
|
|
24
15
|
var _base = require("./base.js");
|
|
25
|
-
|
|
26
16
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
27
|
-
|
|
28
17
|
var _dedentJs = _interopRequireDefault(require("dedent-js"));
|
|
29
|
-
|
|
30
18
|
var _log = _interopRequireDefault(require("../log.js"));
|
|
31
|
-
|
|
32
19
|
var _moment = _interopRequireDefault(require("moment"));
|
|
33
|
-
|
|
34
20
|
var _stateRegister = require("../state-register.js");
|
|
35
|
-
|
|
36
21
|
var _superagent = _interopRequireDefault(require("superagent"));
|
|
37
|
-
|
|
38
22
|
var _templateObject, _templateObject2;
|
|
39
|
-
|
|
40
23
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
41
|
-
|
|
42
24
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
43
|
-
|
|
44
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
45
|
-
|
|
25
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
46
26
|
/**
|
|
47
27
|
* @typedef Event
|
|
48
28
|
* @type {object}
|
|
@@ -79,11 +59,8 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
|
|
|
79
59
|
* @alias models.TimingLogModel
|
|
80
60
|
* @extends models.BaseModel
|
|
81
61
|
*/
|
|
82
|
-
var TimingLogModel = _base.BaseModel.extend(
|
|
83
|
-
/** @lends models.TimingLogModel# */
|
|
84
|
-
{
|
|
62
|
+
var TimingLogModel = exports.TimingLogModel = _base.BaseModel.extend( /** @lends models.TimingLogModel# */{
|
|
85
63
|
modelName: "timinglogs",
|
|
86
|
-
|
|
87
64
|
/**
|
|
88
65
|
* @property {date} begin
|
|
89
66
|
* @property {date} end
|
|
@@ -116,14 +93,17 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
116
93
|
default: function _default() {
|
|
117
94
|
return "view";
|
|
118
95
|
},
|
|
119
|
-
values: [
|
|
120
|
-
|
|
121
|
-
"
|
|
122
|
-
|
|
96
|
+
values: [
|
|
97
|
+
// A salesperson has presented a preso
|
|
98
|
+
"present",
|
|
99
|
+
// A customer has viewed an online preso
|
|
100
|
+
"view",
|
|
101
|
+
// A prep user or salesperson as prepared a preso
|
|
102
|
+
"prep",
|
|
103
|
+
// A salesperson has reviewed an old preso
|
|
123
104
|
"review"]
|
|
124
105
|
}
|
|
125
106
|
},
|
|
126
|
-
|
|
127
107
|
/**
|
|
128
108
|
* @property {models.AppointmentModel} appointment
|
|
129
109
|
* @property {models.UserModel} user
|
|
@@ -133,7 +113,6 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
133
113
|
hostedPreso: "HostedPresoModel",
|
|
134
114
|
user: "UserModel"
|
|
135
115
|
},
|
|
136
|
-
|
|
137
116
|
/**
|
|
138
117
|
* @property {collections.UserCollection} attendee_set
|
|
139
118
|
* @property {collections.UserCollection} remote_attendee_set
|
|
@@ -142,7 +121,6 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
142
121
|
attendee_set: "UserCollection",
|
|
143
122
|
remote_attendee_set: "UserCollection"
|
|
144
123
|
},
|
|
145
|
-
|
|
146
124
|
/**
|
|
147
125
|
* Returns the current timing log model in expected compact format.
|
|
148
126
|
* @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation
|
|
@@ -150,17 +128,15 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
150
128
|
*/
|
|
151
129
|
toCompactFormat: function toCompactFormat() {
|
|
152
130
|
var _this = this;
|
|
153
|
-
|
|
154
131
|
var user = (0, _utils.getShortURL)(this.user.url());
|
|
155
|
-
var url = (0, _utils.getShortURL)(this.hostedPreso ? this.hostedPreso.url() : this.appointment.url());
|
|
132
|
+
var url = (0, _utils.getShortURL)(this.hostedPreso ? this.hostedPreso.url() : this.appointment.url());
|
|
133
|
+
// At this point, the expected output should have a space instead of a T in this
|
|
156
134
|
// date format.
|
|
135
|
+
var begin = _moment.default.utc(this.begin).format(_utils.DATE_FORMAT);
|
|
157
136
|
|
|
158
|
-
|
|
137
|
+
// Strip out all unfocused events from the start (including any that are
|
|
159
138
|
// in a row), as these will throw errors server side.
|
|
160
|
-
|
|
161
|
-
|
|
162
139
|
var startIndex = 0;
|
|
163
|
-
|
|
164
140
|
for (var i = 0; i < this.events.length; i++) {
|
|
165
141
|
if (this.events[i].is_unfocused) {
|
|
166
142
|
startIndex = i + 1;
|
|
@@ -168,19 +144,15 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
168
144
|
break;
|
|
169
145
|
}
|
|
170
146
|
}
|
|
171
|
-
|
|
172
147
|
var events = this.events.slice(startIndex).map(function (_ref) {
|
|
173
148
|
var timestamp = _ref.timestamp,
|
|
174
|
-
|
|
175
|
-
|
|
149
|
+
path = _ref.path,
|
|
150
|
+
isUnfocused = _ref.is_unfocused;
|
|
176
151
|
var millis = (0, _moment.default)(timestamp).diff((0, _moment.default)(_this.begin), "millis");
|
|
177
|
-
|
|
178
152
|
if (isUnfocused) {
|
|
179
153
|
var duration = _moment.default.utc(timestamp).diff(_moment.default.utc(begin), "milliseconds");
|
|
180
|
-
|
|
181
154
|
return "".concat(duration, "ms unfocused");
|
|
182
155
|
}
|
|
183
|
-
|
|
184
156
|
return "".concat(millis, "ms ").concat((0, _utils.getShortURL)(path));
|
|
185
157
|
});
|
|
186
158
|
var attendeeSet = this.attendee_set && this.attendee_set.length ? "\n".concat(this.attendee_set.map(function (attendee) {
|
|
@@ -195,26 +167,21 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
195
167
|
prep: "preparing",
|
|
196
168
|
review: "reviewing"
|
|
197
169
|
};
|
|
198
|
-
var modeType = modeTypeMap[this.mode];
|
|
199
|
-
// to understand this
|
|
170
|
+
var modeType = modeTypeMap[this.mode];
|
|
200
171
|
|
|
172
|
+
// Note the newline is required at the end for the parser
|
|
173
|
+
// to understand this
|
|
201
174
|
var compact = (0, _dedentJs.default)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t", " ", " ", "", "", "\n\t\t\t", "\n\t\t\t", "\n\n\t\t"], ["\n\t\t\t", " ", " ", "", "", "\n\t\t\t", "\n\t\t\t", "\\n\n\t\t"])), user, modeType, url, attendeeSet, remoteAttendeeSet, begin, events.join("\n"));
|
|
202
|
-
|
|
203
175
|
if (this.end) {
|
|
204
176
|
var end = _moment.default.utc(this.end).format(_utils.DATE_FORMAT);
|
|
205
|
-
|
|
206
177
|
compact += end;
|
|
207
|
-
|
|
208
178
|
if (this.provisional) {
|
|
209
179
|
compact += " provisional";
|
|
210
180
|
}
|
|
211
|
-
|
|
212
181
|
compact += "\n";
|
|
213
182
|
}
|
|
214
|
-
|
|
215
183
|
return compact;
|
|
216
184
|
},
|
|
217
|
-
|
|
218
185
|
/**
|
|
219
186
|
* Add a new event to the log
|
|
220
187
|
* @param {string} path - URL path. Matches a deck related endpoint (deckversion, section, slide. etc.)
|
|
@@ -228,20 +195,15 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
228
195
|
if (!path) {
|
|
229
196
|
throw new Error("A path is required");
|
|
230
197
|
}
|
|
231
|
-
|
|
232
198
|
if (!timestamp) {
|
|
233
199
|
throw new Error("A timestamp is required");
|
|
234
200
|
}
|
|
235
|
-
|
|
236
201
|
var time = _moment.default.utc(timestamp);
|
|
237
|
-
|
|
238
202
|
var isUnfocused = path === "unfocused";
|
|
239
|
-
|
|
240
203
|
if (isUnfocused) {
|
|
241
204
|
if (!this.events.length) {
|
|
242
205
|
return;
|
|
243
206
|
}
|
|
244
|
-
|
|
245
207
|
for (var i = this.events.length - 1; i >= 0; i--) {
|
|
246
208
|
if (!this.events[i].is_unfocused) {
|
|
247
209
|
path = this.events[i].path;
|
|
@@ -249,7 +211,6 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
249
211
|
}
|
|
250
212
|
}
|
|
251
213
|
}
|
|
252
|
-
|
|
253
214
|
this.events.push({
|
|
254
215
|
timestamp: time.format(_utils.DATE_FORMAT_T),
|
|
255
216
|
path: path,
|
|
@@ -259,19 +220,15 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
259
220
|
checkEventsAscending: function checkEventsAscending() {
|
|
260
221
|
var lastDate = null;
|
|
261
222
|
var sortEvents = false;
|
|
262
|
-
|
|
263
223
|
var _iterator = _createForOfIteratorHelper(this.events),
|
|
264
|
-
|
|
265
|
-
|
|
224
|
+
_step;
|
|
266
225
|
try {
|
|
267
226
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
268
227
|
var event = _step.value;
|
|
269
228
|
var timestamp = (0, _moment.default)(event.timestamp);
|
|
270
|
-
|
|
271
229
|
if (lastDate && lastDate.isAfter(timestamp)) {
|
|
272
230
|
sortEvents = true;
|
|
273
231
|
}
|
|
274
|
-
|
|
275
232
|
lastDate = timestamp;
|
|
276
233
|
}
|
|
277
234
|
} catch (err) {
|
|
@@ -279,16 +236,13 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
279
236
|
} finally {
|
|
280
237
|
_iterator.f();
|
|
281
238
|
}
|
|
282
|
-
|
|
283
239
|
if (sortEvents) {
|
|
284
240
|
var events = this.events.map(function (_ref2) {
|
|
285
241
|
var timestamp = _ref2.timestamp,
|
|
286
|
-
|
|
242
|
+
path = _ref2.path;
|
|
287
243
|
return "".concat(timestamp, " ").concat((0, _utils.getShortURL)(path));
|
|
288
244
|
});
|
|
289
|
-
|
|
290
245
|
_log.default.warn((0, _dedentJs.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\tEvents must be in ascending order. Instead we found:\n\n\t\t\t\t\t", " - begin\n\t\t\t\t\t", "\n\t\t\t\t\t", " - end\n\t\t\t\t"])), this.begin, events.join("\n"), this.end));
|
|
291
|
-
|
|
292
246
|
this.sortEvents();
|
|
293
247
|
}
|
|
294
248
|
},
|
|
@@ -297,50 +251,39 @@ var TimingLogModel = _base.BaseModel.extend(
|
|
|
297
251
|
sortEvents: function sortEvents() {
|
|
298
252
|
this.events.sort(function (event1, event2) {
|
|
299
253
|
var diff = (0, _moment.default)(event2.timestamp).diff((0, _moment.default)(event1.timestamp));
|
|
300
|
-
|
|
301
254
|
if (diff > 0) {
|
|
302
255
|
return -1;
|
|
303
256
|
} else if (diff < 0) {
|
|
304
257
|
return 1;
|
|
305
258
|
}
|
|
306
|
-
|
|
307
259
|
return 0;
|
|
308
260
|
});
|
|
309
261
|
},
|
|
310
262
|
save: function save(data, options) {
|
|
311
263
|
var _this2 = this;
|
|
312
|
-
|
|
313
264
|
if (!this.events.length) {
|
|
314
265
|
return Promise.resolve(this.toJSON());
|
|
315
266
|
}
|
|
316
|
-
|
|
317
267
|
if (options && options.patch) {
|
|
318
268
|
return _base.BaseModel.prototype.save.call(this, data, options);
|
|
319
269
|
}
|
|
320
|
-
|
|
321
270
|
this.checkEventsAscending();
|
|
322
271
|
var method = this.isNew() ? "post" : "put";
|
|
323
272
|
return _superagent.default[method](this.url()).set(_auth.Auth.headers).type("application/vnd.salespreso+timinglog").send(this.toCompactFormat()).then(function (_ref3) {
|
|
324
273
|
var body = _ref3.body;
|
|
325
|
-
|
|
326
274
|
_this2.set(_lodash.default.omit(body, ["events"]));
|
|
327
|
-
|
|
328
275
|
return body;
|
|
329
276
|
}).catch(_superagent.default.SuperagentPromiseError, function (e) {
|
|
330
277
|
if (e.status === 405 && e.res.body.detail.indexOf("end") > -1) {
|
|
331
278
|
// Don't send timing log events if the tracking is ended.
|
|
332
279
|
throw e;
|
|
333
280
|
}
|
|
334
|
-
|
|
335
281
|
if (e.status >= 400 && e.status <= 499 || e.status === 503) {
|
|
336
282
|
e.message += "\nBody: ".concat(JSON.stringify(e.res.body));
|
|
337
283
|
}
|
|
338
|
-
|
|
339
284
|
throw e;
|
|
340
285
|
});
|
|
341
286
|
}
|
|
342
287
|
});
|
|
343
|
-
|
|
344
|
-
exports.TimingLogModel = TimingLogModel;
|
|
345
288
|
(0, _stateRegister.register)("TimingLogModel", TimingLogModel);
|
|
346
289
|
//# sourceMappingURL=timing-log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/timing-log.js"],"names":["TimingLogModel","BaseModel","extend","modelName","props","begin","type","required","end","events","default","created_date","modified_date","provisional","mode","values","children","appointment","hostedPreso","user","collections","attendee_set","remote_attendee_set","toCompactFormat","url","moment","utc","format","DATE_FORMAT","startIndex","i","length","is_unfocused","slice","map","timestamp","path","isUnfocused","millis","diff","duration","attendeeSet","attendee","join","remoteAttendeeSet","modeTypeMap","present","view","prep","review","modeType","compact","dedent","addEvent","Error","time","push","DATE_FORMAT_T","checkEventsAscending","lastDate","sortEvents","event","isAfter","log","warn","sort","event1","event2","save","data","options","Promise","resolve","toJSON","patch","prototype","call","method","isNew","superagent","set","Auth","headers","send","then","body","_","omit","catch","SuperagentPromiseError","e","status","res","detail","indexOf","message","JSON","stringify"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMA,cAAc,GAAGC,gBAAUC,MAAV;AAC7B;AAAqC;AACpCC,EAAAA,SAAS,EAAE,YADyB;;AAGpC;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,KAAK,EAAE;AACNC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,IAAI,EAAE,MAAR;AAAgBC,MAAAA,QAAQ,EAAE;AAA1B,KADD;AAENC,IAAAA,GAAG,EAAE,MAFC;AAGNC,IAAAA,MAAM,EAAE;AAAEH,MAAAA,IAAI,EAAE,OAAR;AAAiBI,MAAAA,OAAO,EAAE;AAAA,eAAM,EAAN;AAAA;AAA1B,KAHF;AAINC,IAAAA,YAAY,EAAE,MAJR;AAKNC,IAAAA,aAAa,EAAE,MALT;AAMNC,IAAAA,WAAW,EAAE;AAAEP,MAAAA,IAAI,EAAE,SAAR;AAAmBI,MAAAA,OAAO,EAAE;AAAA,eAAM,IAAN;AAAA;AAA5B,KANP;AAONI,IAAAA,IAAI,EAAE;AACLR,MAAAA,IAAI,EAAE,QADD;AAELI,MAAAA,OAAO,EAAE;AAAA,eAAM,MAAN;AAAA,OAFJ;AAGLK,MAAAA,MAAM,EAAE,CACP;AACA,eAFO,EAGP;AACA,YAJO,EAKP;AACA,YANO,EAOP;AACA,cARO;AAHH;AAPA,GAV6B;;AAiCpC;AACF;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE;AACTC,IAAAA,WAAW,EAAE,kBADJ;AAETC,IAAAA,WAAW,EAAE,kBAFJ;AAGTC,IAAAA,IAAI,EAAE;AAHG,GArC0B;;AA2CpC;AACF;AACA;AACA;AACEC,EAAAA,WAAW,EAAE;AACZC,IAAAA,YAAY,EAAE,gBADF;AAEZC,IAAAA,mBAAmB,EAAE;AAFT,GA/CuB;;AAoDpC;AACF;AACA;AACA;AACA;AACEC,EAAAA,eAzDoC,6BAyDlB;AAAA;;AACjB,QAAMJ,IAAI,GAAG,wBAAY,KAAKA,IAAL,CAAUK,GAAV,EAAZ,CAAb;AAEA,QAAMA,GAAG,GAAG,wBACX,KAAKN,WAAL,GAAmB,KAAKA,WAAL,CAAiBM,GAAjB,EAAnB,GAA4C,KAAKP,WAAL,CAAiBO,GAAjB,EADjC,CAAZ,CAHiB,CAMjB;AACA;;AACA,QAAMnB,KAAK,GAAGoB,gBAAOC,GAAP,CAAW,KAAKrB,KAAhB,EAAuBsB,MAAvB,CAA8BC,kBAA9B,CAAd,CARiB,CAUjB;AACA;;;AACA,QAAIC,UAAU,GAAG,CAAjB;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKrB,MAAL,CAAYsB,MAAhC,EAAwCD,CAAC,EAAzC,EAA6C;AAC5C,UAAI,KAAKrB,MAAL,CAAYqB,CAAZ,EAAeE,YAAnB,EAAiC;AAChCH,QAAAA,UAAU,GAAGC,CAAC,GAAG,CAAjB;AACA,OAFD,MAEO;AACN;AACA;AACD;;AAED,QAAMrB,MAAM,GAAG,KAAKA,MAAL,CACbwB,KADa,CACPJ,UADO,EAEbK,GAFa,CAET,gBAAoD;AAAA,UAAjDC,SAAiD,QAAjDA,SAAiD;AAAA,UAAtCC,IAAsC,QAAtCA,IAAsC;AAAA,UAAlBC,WAAkB,QAAhCL,YAAgC;AACxD,UAAMM,MAAM,GAAG,qBAAOH,SAAP,EAAkBI,IAAlB,CAAuB,qBAAO,KAAI,CAAClC,KAAZ,CAAvB,EAA2C,QAA3C,CAAf;;AAEA,UAAIgC,WAAJ,EAAiB;AAChB,YAAMG,QAAQ,GAAGf,gBACfC,GADe,CACXS,SADW,EAEfI,IAFe,CAEVd,gBAAOC,GAAP,CAAWrB,KAAX,CAFU,EAES,cAFT,CAAjB;;AAIA,yBAAUmC,QAAV;AACA;;AAED,uBAAUF,MAAV,gBAAsB,wBAAYF,IAAZ,CAAtB;AACA,KAda,CAAf;AAgBA,QAAMK,WAAW,GAChB,KAAKpB,YAAL,IAAqB,KAAKA,YAAL,CAAkBU,MAAvC,eACQ,KAAKV,YAAL,CACJa,GADI,CACA,UAACQ,QAAD;AAAA,aAAc,wBAAYA,QAAQ,CAAClB,GAAT,EAAZ,CAAd;AAAA,KADA,EAEJmB,IAFI,CAEC,GAFD,CADR,kBAIG,EALJ;AAOA,QAAMC,iBAAiB,GACtB,KAAKtB,mBAAL,IAA4B,KAAKA,mBAAL,CAAyBS,MAArD,eACQ,KAAKT,mBAAL,CACJY,GADI,CACA,UAACQ,QAAD;AAAA,aAAc,wBAAYA,QAAQ,CAAClB,GAAT,EAAZ,CAAd;AAAA,KADA,EAEJmB,IAFI,CAEC,GAFD,CADR,2BAIG,EALJ;AAOA,QAAME,WAAW,GAAG;AACnBC,MAAAA,OAAO,EAAE,SADU;AAEnBC,MAAAA,IAAI,EAAE,SAFa;AAGnBC,MAAAA,IAAI,EAAE,WAHa;AAInBC,MAAAA,MAAM,EAAE;AAJW,KAApB;AAOA,QAAMC,QAAQ,GAAGL,WAAW,CAAC,KAAK/B,IAAN,CAA5B,CA1DiB,CA4DjB;AACA;;AACA,QAAIqC,OAAO,OAAGC,iBAAH,wNACTjC,IADS,EACD+B,QADC,EACW1B,GADX,EACiBiB,WADjB,EAC+BG,iBAD/B,EAETvC,KAFS,EAGTI,MAAM,CAACkC,IAAP,CAAY,IAAZ,CAHS,CAAX;;AAMA,QAAI,KAAKnC,GAAT,EAAc;AACb,UAAMA,GAAG,GAAGiB,gBAAOC,GAAP,CAAW,KAAKlB,GAAhB,EAAqBmB,MAArB,CAA4BC,kBAA5B,CAAZ;;AACAuB,MAAAA,OAAO,IAAI3C,GAAX;;AACA,UAAI,KAAKK,WAAT,EAAsB;AACrBsC,QAAAA,OAAO,IAAI,cAAX;AACA;;AACDA,MAAAA,OAAO,IAAI,IAAX;AACA;;AAED,WAAOA,OAAP;AACA,GAvImC;;AAyIpC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,QAlJoC,oBAkJ3BjB,IAlJ2B,EAkJrBD,SAlJqB,EAkJV;AACzB,QAAI,CAACC,IAAL,EAAW;AACV,YAAM,IAAIkB,KAAJ,CAAU,oBAAV,CAAN;AACA;;AACD,QAAI,CAACnB,SAAL,EAAgB;AACf,YAAM,IAAImB,KAAJ,CAAU,yBAAV,CAAN;AACA;;AAED,QAAMC,IAAI,GAAG9B,gBAAOC,GAAP,CAAWS,SAAX,CAAb;;AACA,QAAME,WAAW,GAAGD,IAAI,KAAK,WAA7B;;AAEA,QAAIC,WAAJ,EAAiB;AAChB,UAAI,CAAC,KAAK5B,MAAL,CAAYsB,MAAjB,EAAyB;AACxB;AACA;;AAED,WAAK,IAAID,CAAC,GAAG,KAAKrB,MAAL,CAAYsB,MAAZ,GAAqB,CAAlC,EAAqCD,CAAC,IAAI,CAA1C,EAA6CA,CAAC,EAA9C,EAAkD;AACjD,YAAI,CAAC,KAAKrB,MAAL,CAAYqB,CAAZ,EAAeE,YAApB,EAAkC;AACjCI,UAAAA,IAAI,GAAG,KAAK3B,MAAL,CAAYqB,CAAZ,EAAeM,IAAtB;AACA;AACA;AACD;AACD;;AAED,SAAK3B,MAAL,CAAY+C,IAAZ,CAAiB;AAChBrB,MAAAA,SAAS,EAAEoB,IAAI,CAAC5B,MAAL,CAAY8B,oBAAZ,CADK;AAEhBrB,MAAAA,IAAI,EAAJA,IAFgB;AAGhBJ,MAAAA,YAAY,EAAEK;AAHE,KAAjB;AAKA,GA/KmC;AAiLpCqB,EAAAA,oBAjLoC,kCAiLb;AACtB,QAAIC,QAAQ,GAAG,IAAf;AACA,QAAIC,UAAU,GAAG,KAAjB;;AAFsB,+CAIF,KAAKnD,MAJH;AAAA;;AAAA;AAItB,0DAAiC;AAAA,YAAtBoD,KAAsB;AAChC,YAAM1B,SAAS,GAAG,qBAAO0B,KAAK,CAAC1B,SAAb,CAAlB;;AAEA,YAAIwB,QAAQ,IAAIA,QAAQ,CAACG,OAAT,CAAiB3B,SAAjB,CAAhB,EAA6C;AAC5CyB,UAAAA,UAAU,GAAG,IAAb;AACA;;AAEDD,QAAAA,QAAQ,GAAGxB,SAAX;AACA;AAZqB;AAAA;AAAA;AAAA;AAAA;;AActB,QAAIyB,UAAJ,EAAgB;AACf,UAAMnD,MAAM,GAAG,KAAKA,MAAL,CAAYyB,GAAZ,CAAgB,iBAAyB;AAAA,YAAtBC,SAAsB,SAAtBA,SAAsB;AAAA,YAAXC,IAAW,SAAXA,IAAW;AACvD,yBAAUD,SAAV,cAAuB,wBAAYC,IAAZ,CAAvB;AACA,OAFc,CAAf;;AAGA2B,mBAAIC,IAAJ,KAASZ,iBAAT,iOAGG,KAAK/C,KAHR,EAIGI,MAAM,CAACkC,IAAP,CAAY,IAAZ,CAJH,EAKG,KAAKnC,GALR;;AAQA,WAAKoD,UAAL;AACA;AACD,GA7MmC;AA+MpC;AACA;AACAA,EAAAA,UAjNoC,wBAiNvB;AACZ,SAAKnD,MAAL,CAAYwD,IAAZ,CAAiB,UAACC,MAAD,EAASC,MAAT,EAAoB;AACpC,UAAM5B,IAAI,GAAG,qBAAO4B,MAAM,CAAChC,SAAd,EAAyBI,IAAzB,CAA8B,qBAAO2B,MAAM,CAAC/B,SAAd,CAA9B,CAAb;;AAEA,UAAII,IAAI,GAAG,CAAX,EAAc;AACb,eAAO,CAAC,CAAR;AACA,OAFD,MAEO,IAAIA,IAAI,GAAG,CAAX,EAAc;AACpB,eAAO,CAAP;AACA;;AAED,aAAO,CAAP;AACA,KAVD;AAWA,GA7NmC;AA+NpC6B,EAAAA,IA/NoC,gBA+N/BC,IA/N+B,EA+NzBC,OA/NyB,EA+NhB;AAAA;;AACnB,QAAI,CAAC,KAAK7D,MAAL,CAAYsB,MAAjB,EAAyB;AACxB,aAAOwC,OAAO,CAACC,OAAR,CAAgB,KAAKC,MAAL,EAAhB,CAAP;AACA;;AAED,QAAIH,OAAO,IAAIA,OAAO,CAACI,KAAvB,EAA8B;AAC7B,aAAOzE,gBAAU0E,SAAV,CAAoBP,IAApB,CAAyBQ,IAAzB,CAA8B,IAA9B,EAAoCP,IAApC,EAA0CC,OAA1C,CAAP;AACA;;AAED,SAAKZ,oBAAL;AAEA,QAAMmB,MAAM,GAAG,KAAKC,KAAL,KAAe,MAAf,GAAwB,KAAvC;AAEA,WAAOC,oBAAWF,MAAX,EAAmB,KAAKrD,GAAL,EAAnB,EACLwD,GADK,CACDC,WAAKC,OADJ,EAEL5E,IAFK,CAEA,sCAFA,EAGL6E,IAHK,CAGA,KAAK5D,eAAL,EAHA,EAIL6D,IAJK,CAIA,iBAAc;AAAA,UAAXC,IAAW,SAAXA,IAAW;;AACnB,MAAA,MAAI,CAACL,GAAL,CAASM,gBAAEC,IAAF,CAAOF,IAAP,EAAa,CAAC,QAAD,CAAb,CAAT;;AACA,aAAOA,IAAP;AACA,KAPK,EAQLG,KARK,CAQCT,oBAAWU,sBARZ,EAQoC,UAACC,CAAD,EAAO;AAChD,UAAIA,CAAC,CAACC,MAAF,KAAa,GAAb,IAAoBD,CAAC,CAACE,GAAF,CAAMP,IAAN,CAAWQ,MAAX,CAAkBC,OAAlB,CAA0B,KAA1B,IAAmC,CAAC,CAA5D,EAA+D;AAC9D;AACA,cAAMJ,CAAN;AACA;;AAED,UAAKA,CAAC,CAACC,MAAF,IAAY,GAAZ,IAAmBD,CAAC,CAACC,MAAF,IAAY,GAAhC,IAAwCD,CAAC,CAACC,MAAF,KAAa,GAAzD,EAA8D;AAC7DD,QAAAA,CAAC,CAACK,OAAF,sBAAwBC,IAAI,CAACC,SAAL,CAAeP,CAAC,CAACE,GAAF,CAAMP,IAArB,CAAxB;AACA;;AACD,YAAMK,CAAN;AACA,KAlBK,CAAP;AAmBA;AA/PmC,CADR,CAAvB;;;AAoQP,6BAAS,gBAAT,EAA2B1F,cAA3B","sourcesContent":["import \"./appointment.js\";\nimport \"./hosted-preso.js\";\nimport \"./user.js\";\nimport \"../collections/users.js\";\n\nimport { DATE_FORMAT, DATE_FORMAT_T } from \"../utils.js\";\n\nimport { Auth } from \"../auth.js\";\nimport { BaseModel } from \"./base.js\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport { getShortURL } from \"../utils.js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\nimport superagent from \"superagent\";\n\n/**\n * @typedef Event\n * @type {object}\n * @property {string} path\n * @property {date} timestamp\n * @example\n * {\n *\t\"path\": \"https://client.salespreso.com/api/deckversions/4/\",\n *\t\"timestamp\": \"2016-10-27T00:42:47.045186Z\",\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/sections/28/\",\n * \t\"timestamp\": \"2016-10-27T00:43:59.430102Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/380/\",\n * \t\"timestamp\": \"2016-10-27T00:45:01.038661Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/378/\",\n * \t\"timestamp\": \"2016-10-27T00:45:13.495713Z\"\n *\t\"is_unfocused\": false,\n * }\n */\n\n/**\n * @constructor\n * @alias models.TimingLogModel\n * @extends models.BaseModel\n */\nexport const TimingLogModel = BaseModel.extend(\n\t/** @lends models.TimingLogModel# */ {\n\t\tmodelName: \"timinglogs\",\n\n\t\t/**\n\t\t * @property {date} begin\n\t\t * @property {date} end\n\t\t * @property {Event[]} events\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t */\n\t\tprops: {\n\t\t\tbegin: { type: \"date\", required: true },\n\t\t\tend: \"date\",\n\t\t\tevents: { type: \"array\", default: () => [] },\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tprovisional: { type: \"boolean\", default: () => true },\n\t\t\tmode: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: () => \"view\",\n\t\t\t\tvalues: [\n\t\t\t\t\t// A salesperson has presented a preso\n\t\t\t\t\t\"present\",\n\t\t\t\t\t// A customer has viewed an online preso\n\t\t\t\t\t\"view\",\n\t\t\t\t\t// A prep user or salesperson as prepared a preso\n\t\t\t\t\t\"prep\",\n\t\t\t\t\t// A salesperson has reviewed an old preso\n\t\t\t\t\t\"review\",\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AppointmentModel} appointment\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tappointment: \"AppointmentModel\",\n\t\t\thostedPreso: \"HostedPresoModel\",\n\t\t\tuser: \"UserModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.UserCollection} attendee_set\n\t\t * @property {collections.UserCollection} remote_attendee_set\n\t\t */\n\t\tcollections: {\n\t\t\tattendee_set: \"UserCollection\",\n\t\t\tremote_attendee_set: \"UserCollection\",\n\t\t},\n\n\t\t/**\n\t\t * Returns the current timing log model in expected compact format.\n\t\t * @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation\n\t\t * @returns {string}\n\t\t */\n\t\ttoCompactFormat() {\n\t\t\tconst user = getShortURL(this.user.url());\n\n\t\t\tconst url = getShortURL(\n\t\t\t\tthis.hostedPreso ? this.hostedPreso.url() : this.appointment.url()\n\t\t\t);\n\t\t\t// At this point, the expected output should have a space instead of a T in this\n\t\t\t// date format.\n\t\t\tconst begin = moment.utc(this.begin).format(DATE_FORMAT);\n\n\t\t\t// Strip out all unfocused events from the start (including any that are\n\t\t\t// in a row), as these will throw errors server side.\n\t\t\tlet startIndex = 0;\n\t\t\tfor (let i = 0; i < this.events.length; i++) {\n\t\t\t\tif (this.events[i].is_unfocused) {\n\t\t\t\t\tstartIndex = i + 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst events = this.events\n\t\t\t\t.slice(startIndex)\n\t\t\t\t.map(({ timestamp, path, is_unfocused: isUnfocused }) => {\n\t\t\t\t\tconst millis = moment(timestamp).diff(moment(this.begin), \"millis\");\n\n\t\t\t\t\tif (isUnfocused) {\n\t\t\t\t\t\tconst duration = moment\n\t\t\t\t\t\t\t.utc(timestamp)\n\t\t\t\t\t\t\t.diff(moment.utc(begin), \"milliseconds\");\n\n\t\t\t\t\t\treturn `${duration}ms unfocused`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `${millis}ms ${getShortURL(path)}`;\n\t\t\t\t});\n\n\t\t\tconst attendeeSet =\n\t\t\t\tthis.attendee_set && this.attendee_set.length\n\t\t\t\t\t? `\\n${this.attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst remoteAttendeeSet =\n\t\t\t\tthis.remote_attendee_set && this.remote_attendee_set.length\n\t\t\t\t\t? `\\n${this.remote_attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending remotely`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst modeTypeMap = {\n\t\t\t\tpresent: \"viewing\",\n\t\t\t\tview: \"viewing\",\n\t\t\t\tprep: \"preparing\",\n\t\t\t\treview: \"reviewing\",\n\t\t\t};\n\n\t\t\tconst modeType = modeTypeMap[this.mode];\n\n\t\t\t// Note the newline is required at the end for the parser\n\t\t\t// to understand this\n\t\t\tlet compact = dedent`\n\t\t\t${user} ${modeType} ${url}${attendeeSet}${remoteAttendeeSet}\n\t\t\t${begin}\n\t\t\t${events.join(\"\\n\")}\\n\n\t\t`;\n\n\t\t\tif (this.end) {\n\t\t\t\tconst end = moment.utc(this.end).format(DATE_FORMAT);\n\t\t\t\tcompact += end;\n\t\t\t\tif (this.provisional) {\n\t\t\t\t\tcompact += \" provisional\";\n\t\t\t\t}\n\t\t\t\tcompact += \"\\n\";\n\t\t\t}\n\n\t\t\treturn compact;\n\t\t},\n\n\t\t/**\n\t\t * Add a new event to the log\n\t\t * @param {string} path - URL path. Matches a deck related endpoint (deckversion, section, slide. etc.)\n\t\t * @param {any} timestamp - A timestamp for the event - note that it can be anything that can be passed to moment\n\t\t * @example\n\t\t * const timingLog = new TimingLogModel();\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/sections/28/\", moment());\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/slides/100/\", \"2016-10-27T00:42:47.045186Z\");\n\t\t */\n\t\taddEvent(path, timestamp) {\n\t\t\tif (!path) {\n\t\t\t\tthrow new Error(\"A path is required\");\n\t\t\t}\n\t\t\tif (!timestamp) {\n\t\t\t\tthrow new Error(\"A timestamp is required\");\n\t\t\t}\n\n\t\t\tconst time = moment.utc(timestamp);\n\t\t\tconst isUnfocused = path === \"unfocused\";\n\n\t\t\tif (isUnfocused) {\n\t\t\t\tif (!this.events.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = this.events.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!this.events[i].is_unfocused) {\n\t\t\t\t\t\tpath = this.events[i].path;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.events.push({\n\t\t\t\ttimestamp: time.format(DATE_FORMAT_T),\n\t\t\t\tpath,\n\t\t\t\tis_unfocused: isUnfocused,\n\t\t\t});\n\t\t},\n\n\t\tcheckEventsAscending() {\n\t\t\tlet lastDate = null;\n\t\t\tlet sortEvents = false;\n\n\t\t\tfor (const event of this.events) {\n\t\t\t\tconst timestamp = moment(event.timestamp);\n\n\t\t\t\tif (lastDate && lastDate.isAfter(timestamp)) {\n\t\t\t\t\tsortEvents = true;\n\t\t\t\t}\n\n\t\t\t\tlastDate = timestamp;\n\t\t\t}\n\n\t\t\tif (sortEvents) {\n\t\t\t\tconst events = this.events.map(({ timestamp, path }) => {\n\t\t\t\t\treturn `${timestamp} ${getShortURL(path)}`;\n\t\t\t\t});\n\t\t\t\tlog.warn(dedent`\n\t\t\t\t\tEvents must be in ascending order. Instead we found:\n\n\t\t\t\t\t${this.begin} - begin\n\t\t\t\t\t${events.join(\"\\n\")}\n\t\t\t\t\t${this.end} - end\n\t\t\t\t`);\n\n\t\t\t\tthis.sortEvents();\n\t\t\t}\n\t\t},\n\n\t\t// We can't trust the server to give us events in the\n\t\t// correct order, so we sort them when necessary\n\t\tsortEvents() {\n\t\t\tthis.events.sort((event1, event2) => {\n\t\t\t\tconst diff = moment(event2.timestamp).diff(moment(event1.timestamp));\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (diff < 0) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t},\n\n\t\tsave(data, options) {\n\t\t\tif (!this.events.length) {\n\t\t\t\treturn Promise.resolve(this.toJSON());\n\t\t\t}\n\n\t\t\tif (options && options.patch) {\n\t\t\t\treturn BaseModel.prototype.save.call(this, data, options);\n\t\t\t}\n\n\t\t\tthis.checkEventsAscending();\n\n\t\t\tconst method = this.isNew() ? \"post\" : \"put\";\n\n\t\t\treturn superagent[method](this.url())\n\t\t\t\t.set(Auth.headers)\n\t\t\t\t.type(\"application/vnd.salespreso+timinglog\")\n\t\t\t\t.send(this.toCompactFormat())\n\t\t\t\t.then(({ body }) => {\n\t\t\t\t\tthis.set(_.omit(body, [\"events\"]));\n\t\t\t\t\treturn body;\n\t\t\t\t})\n\t\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\t\tif (e.status === 405 && e.res.body.detail.indexOf(\"end\") > -1) {\n\t\t\t\t\t\t// Don't send timing log events if the tracking is ended.\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((e.status >= 400 && e.status <= 499) || e.status === 503) {\n\t\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t},\n\t}\n);\n\nregister(\"TimingLogModel\", TimingLogModel);\n"],"file":"timing-log.js"}
|
|
1
|
+
{"version":3,"file":"timing-log.js","names":["require","_utils","_auth","_base","_lodash","_interopRequireDefault","_dedentJs","_log","_moment","_stateRegister","_superagent","_templateObject","_templateObject2","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","TimingLogModel","exports","BaseModel","extend","modelName","props","begin","type","required","end","events","default","_default","created_date","modified_date","provisional","mode","values","children","appointment","hostedPreso","user","collections","attendee_set","remote_attendee_set","toCompactFormat","_this","getShortURL","url","moment","utc","format","DATE_FORMAT","startIndex","is_unfocused","map","_ref","timestamp","path","isUnfocused","millis","diff","duration","concat","attendeeSet","attendee","join","remoteAttendeeSet","modeTypeMap","present","view","prep","review","modeType","compact","dedent","_taggedTemplateLiteral2","addEvent","Error","time","push","DATE_FORMAT_T","checkEventsAscending","lastDate","sortEvents","_iterator","_step","event","isAfter","_ref2","log","warn","sort","event1","event2","save","data","options","_this2","Promise","resolve","toJSON","patch","method","isNew","superagent","set","Auth","headers","send","then","_ref3","body","_","omit","catch","SuperagentPromiseError","status","res","detail","indexOf","message","JSON","stringify","register"],"sources":["../../src/models/timing-log.js"],"sourcesContent":["import \"./appointment.js\";\nimport \"./hosted-preso.js\";\nimport \"./user.js\";\nimport \"../collections/users.js\";\n\nimport { DATE_FORMAT, DATE_FORMAT_T } from \"../utils.js\";\n\nimport { Auth } from \"../auth.js\";\nimport { BaseModel } from \"./base.js\";\nimport _ from \"lodash\";\nimport dedent from \"dedent-js\";\nimport { getShortURL } from \"../utils.js\";\nimport log from \"../log.js\";\nimport moment from \"moment\";\nimport { register } from \"../state-register.js\";\nimport superagent from \"superagent\";\n\n/**\n * @typedef Event\n * @type {object}\n * @property {string} path\n * @property {date} timestamp\n * @example\n * {\n *\t\"path\": \"https://client.salespreso.com/api/deckversions/4/\",\n *\t\"timestamp\": \"2016-10-27T00:42:47.045186Z\",\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/sections/28/\",\n * \t\"timestamp\": \"2016-10-27T00:43:59.430102Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/380/\",\n * \t\"timestamp\": \"2016-10-27T00:45:01.038661Z\"\n *\t\"is_unfocused\": false,\n * }\n * @example\n * {\n * \t\"path\": \"https://client.salespreso.com/api/slides/378/\",\n * \t\"timestamp\": \"2016-10-27T00:45:13.495713Z\"\n *\t\"is_unfocused\": false,\n * }\n */\n\n/**\n * @constructor\n * @alias models.TimingLogModel\n * @extends models.BaseModel\n */\nexport const TimingLogModel = BaseModel.extend(\n\t/** @lends models.TimingLogModel# */ {\n\t\tmodelName: \"timinglogs\",\n\n\t\t/**\n\t\t * @property {date} begin\n\t\t * @property {date} end\n\t\t * @property {Event[]} events\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t */\n\t\tprops: {\n\t\t\tbegin: { type: \"date\", required: true },\n\t\t\tend: \"date\",\n\t\t\tevents: { type: \"array\", default: () => [] },\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tprovisional: { type: \"boolean\", default: () => true },\n\t\t\tmode: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: () => \"view\",\n\t\t\t\tvalues: [\n\t\t\t\t\t// A salesperson has presented a preso\n\t\t\t\t\t\"present\",\n\t\t\t\t\t// A customer has viewed an online preso\n\t\t\t\t\t\"view\",\n\t\t\t\t\t// A prep user or salesperson as prepared a preso\n\t\t\t\t\t\"prep\",\n\t\t\t\t\t// A salesperson has reviewed an old preso\n\t\t\t\t\t\"review\",\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AppointmentModel} appointment\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tappointment: \"AppointmentModel\",\n\t\t\thostedPreso: \"HostedPresoModel\",\n\t\t\tuser: \"UserModel\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.UserCollection} attendee_set\n\t\t * @property {collections.UserCollection} remote_attendee_set\n\t\t */\n\t\tcollections: {\n\t\t\tattendee_set: \"UserCollection\",\n\t\t\tremote_attendee_set: \"UserCollection\",\n\t\t},\n\n\t\t/**\n\t\t * Returns the current timing log model in expected compact format.\n\t\t * @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation\n\t\t * @returns {string}\n\t\t */\n\t\ttoCompactFormat() {\n\t\t\tconst user = getShortURL(this.user.url());\n\n\t\t\tconst url = getShortURL(\n\t\t\t\tthis.hostedPreso ? this.hostedPreso.url() : this.appointment.url(),\n\t\t\t);\n\t\t\t// At this point, the expected output should have a space instead of a T in this\n\t\t\t// date format.\n\t\t\tconst begin = moment.utc(this.begin).format(DATE_FORMAT);\n\n\t\t\t// Strip out all unfocused events from the start (including any that are\n\t\t\t// in a row), as these will throw errors server side.\n\t\t\tlet startIndex = 0;\n\t\t\tfor (let i = 0; i < this.events.length; i++) {\n\t\t\t\tif (this.events[i].is_unfocused) {\n\t\t\t\t\tstartIndex = i + 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst events = this.events\n\t\t\t\t.slice(startIndex)\n\t\t\t\t.map(({ timestamp, path, is_unfocused: isUnfocused }) => {\n\t\t\t\t\tconst millis = moment(timestamp).diff(moment(this.begin), \"millis\");\n\n\t\t\t\t\tif (isUnfocused) {\n\t\t\t\t\t\tconst duration = moment\n\t\t\t\t\t\t\t.utc(timestamp)\n\t\t\t\t\t\t\t.diff(moment.utc(begin), \"milliseconds\");\n\n\t\t\t\t\t\treturn `${duration}ms unfocused`;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn `${millis}ms ${getShortURL(path)}`;\n\t\t\t\t});\n\n\t\t\tconst attendeeSet =\n\t\t\t\tthis.attendee_set && this.attendee_set.length\n\t\t\t\t\t? `\\n${this.attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst remoteAttendeeSet =\n\t\t\t\tthis.remote_attendee_set && this.remote_attendee_set.length\n\t\t\t\t\t? `\\n${this.remote_attendee_set\n\t\t\t\t\t\t\t.map((attendee) => getShortURL(attendee.url()))\n\t\t\t\t\t\t\t.join(\" \")} attending remotely`\n\t\t\t\t\t: \"\";\n\n\t\t\tconst modeTypeMap = {\n\t\t\t\tpresent: \"viewing\",\n\t\t\t\tview: \"viewing\",\n\t\t\t\tprep: \"preparing\",\n\t\t\t\treview: \"reviewing\",\n\t\t\t};\n\n\t\t\tconst modeType = modeTypeMap[this.mode];\n\n\t\t\t// Note the newline is required at the end for the parser\n\t\t\t// to understand this\n\t\t\tlet compact = dedent`\n\t\t\t${user} ${modeType} ${url}${attendeeSet}${remoteAttendeeSet}\n\t\t\t${begin}\n\t\t\t${events.join(\"\\n\")}\\n\n\t\t`;\n\n\t\t\tif (this.end) {\n\t\t\t\tconst end = moment.utc(this.end).format(DATE_FORMAT);\n\t\t\t\tcompact += end;\n\t\t\t\tif (this.provisional) {\n\t\t\t\t\tcompact += \" provisional\";\n\t\t\t\t}\n\t\t\t\tcompact += \"\\n\";\n\t\t\t}\n\n\t\t\treturn compact;\n\t\t},\n\n\t\t/**\n\t\t * Add a new event to the log\n\t\t * @param {string} path - URL path. Matches a deck related endpoint (deckversion, section, slide. etc.)\n\t\t * @param {any} timestamp - A timestamp for the event - note that it can be anything that can be passed to moment\n\t\t * @example\n\t\t * const timingLog = new TimingLogModel();\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/sections/28/\", moment());\n\t\t * timingLog.addEvent(\"http://client.salespreso.com/api/slides/100/\", \"2016-10-27T00:42:47.045186Z\");\n\t\t */\n\t\taddEvent(path, timestamp) {\n\t\t\tif (!path) {\n\t\t\t\tthrow new Error(\"A path is required\");\n\t\t\t}\n\t\t\tif (!timestamp) {\n\t\t\t\tthrow new Error(\"A timestamp is required\");\n\t\t\t}\n\n\t\t\tconst time = moment.utc(timestamp);\n\t\t\tconst isUnfocused = path === \"unfocused\";\n\n\t\t\tif (isUnfocused) {\n\t\t\t\tif (!this.events.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (let i = this.events.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!this.events[i].is_unfocused) {\n\t\t\t\t\t\tpath = this.events[i].path;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.events.push({\n\t\t\t\ttimestamp: time.format(DATE_FORMAT_T),\n\t\t\t\tpath,\n\t\t\t\tis_unfocused: isUnfocused,\n\t\t\t});\n\t\t},\n\n\t\tcheckEventsAscending() {\n\t\t\tlet lastDate = null;\n\t\t\tlet sortEvents = false;\n\n\t\t\tfor (const event of this.events) {\n\t\t\t\tconst timestamp = moment(event.timestamp);\n\n\t\t\t\tif (lastDate && lastDate.isAfter(timestamp)) {\n\t\t\t\t\tsortEvents = true;\n\t\t\t\t}\n\n\t\t\t\tlastDate = timestamp;\n\t\t\t}\n\n\t\t\tif (sortEvents) {\n\t\t\t\tconst events = this.events.map(({ timestamp, path }) => {\n\t\t\t\t\treturn `${timestamp} ${getShortURL(path)}`;\n\t\t\t\t});\n\t\t\t\tlog.warn(dedent`\n\t\t\t\t\tEvents must be in ascending order. Instead we found:\n\n\t\t\t\t\t${this.begin} - begin\n\t\t\t\t\t${events.join(\"\\n\")}\n\t\t\t\t\t${this.end} - end\n\t\t\t\t`);\n\n\t\t\t\tthis.sortEvents();\n\t\t\t}\n\t\t},\n\n\t\t// We can't trust the server to give us events in the\n\t\t// correct order, so we sort them when necessary\n\t\tsortEvents() {\n\t\t\tthis.events.sort((event1, event2) => {\n\t\t\t\tconst diff = moment(event2.timestamp).diff(moment(event1.timestamp));\n\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (diff < 0) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t},\n\n\t\tsave(data, options) {\n\t\t\tif (!this.events.length) {\n\t\t\t\treturn Promise.resolve(this.toJSON());\n\t\t\t}\n\n\t\t\tif (options && options.patch) {\n\t\t\t\treturn BaseModel.prototype.save.call(this, data, options);\n\t\t\t}\n\n\t\t\tthis.checkEventsAscending();\n\n\t\t\tconst method = this.isNew() ? \"post\" : \"put\";\n\n\t\t\treturn superagent[method](this.url())\n\t\t\t\t.set(Auth.headers)\n\t\t\t\t.type(\"application/vnd.salespreso+timinglog\")\n\t\t\t\t.send(this.toCompactFormat())\n\t\t\t\t.then(({ body }) => {\n\t\t\t\t\tthis.set(_.omit(body, [\"events\"]));\n\t\t\t\t\treturn body;\n\t\t\t\t})\n\t\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\t\tif (e.status === 405 && e.res.body.detail.indexOf(\"end\") > -1) {\n\t\t\t\t\t\t// Don't send timing log events if the tracking is ended.\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ((e.status >= 400 && e.status <= 499) || e.status === 503) {\n\t\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t\t}\n\t\t\t\t\tthrow e;\n\t\t\t\t});\n\t\t},\n\t},\n);\n\nregister(\"TimingLogModel\", TimingLogModel);\n"],"mappings":"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"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
6
|
-
|
|
7
5
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
8
|
-
|
|
9
6
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
10
|
-
|
|
11
7
|
var _api = require("sp-test/api");
|
|
12
|
-
|
|
13
8
|
var _timingLog = require("./timing-log.js");
|
|
14
|
-
|
|
15
9
|
var _dedentJs = _interopRequireDefault(require("dedent-js"));
|
|
16
|
-
|
|
17
10
|
var _moment = _interopRequireDefault(require("moment"));
|
|
18
|
-
|
|
19
11
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
|
|
20
|
-
|
|
21
12
|
describe("TimingLogModel", function () {
|
|
22
13
|
var events = [{
|
|
23
14
|
path: "/api/deckversions/4/",
|
|
@@ -40,8 +31,9 @@ describe("TimingLogModel", function () {
|
|
|
40
31
|
var TimingLogModel = (0, _api.G)("TimingLogModel");
|
|
41
32
|
var timingLog = new TimingLogModel();
|
|
42
33
|
var currentTime = "2016-10-27T00:42:47.044135Z";
|
|
43
|
-
timingLog.addEvent("/api/sections/1/", currentTime);
|
|
34
|
+
timingLog.addEvent("/api/sections/1/", currentTime);
|
|
44
35
|
|
|
36
|
+
// Some precision in milliseconds is lost here
|
|
45
37
|
expect(timingLog.events[0].timestamp).toEqual("2016-10-27T00:42:47.044000Z");
|
|
46
38
|
expect(timingLog.events[0].path).toEqual("/api/sections/1/");
|
|
47
39
|
});
|
|
@@ -65,33 +57,28 @@ describe("TimingLogModel", function () {
|
|
|
65
57
|
it("should show '".concat(modeType, "' when mode is ").concat(mode), /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
66
58
|
var TimingLogModel, timingLog, actual, expected;
|
|
67
59
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
68
|
-
while (1) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
case 6:
|
|
92
|
-
case "end":
|
|
93
|
-
return _context.stop();
|
|
94
|
-
}
|
|
60
|
+
while (1) switch (_context.prev = _context.next) {
|
|
61
|
+
case 0:
|
|
62
|
+
TimingLogModel = (0, _api.G)("TimingLogModel");
|
|
63
|
+
timingLog = new TimingLogModel({
|
|
64
|
+
appointment: {
|
|
65
|
+
id: 20
|
|
66
|
+
},
|
|
67
|
+
user: {
|
|
68
|
+
id: 9
|
|
69
|
+
},
|
|
70
|
+
begin: "2016-10-27T00:42:47.044135Z"
|
|
71
|
+
}); // First test is checking the default value, so we just
|
|
72
|
+
// don't add anything in that one case.
|
|
73
|
+
if (mode) {
|
|
74
|
+
timingLog.mode = mode;
|
|
75
|
+
}
|
|
76
|
+
actual = timingLog.toCompactFormat();
|
|
77
|
+
expected = (0, _dedentJs.default)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n\t\t\t\t\t\t/api/users/9/ ", " /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\n\n\n\t\t\t\t"], ["\n\t\t\t\t\t\t/api/users/9/ ", " /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t"])), modeType);
|
|
78
|
+
expect(actual).toEqual(expected);
|
|
79
|
+
case 6:
|
|
80
|
+
case "end":
|
|
81
|
+
return _context.stop();
|
|
95
82
|
}
|
|
96
83
|
}, _callee);
|
|
97
84
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/models/timing-log.spec.js"],"names":["describe","events","path","timestamp","is_unfocused","it","TimingLogModel","timingLog","currentTime","addEvent","expect","toEqual","appointment","id","user","begin","code","toCompactFormat","assumedCode","dedent","each","undefined","mode","modeType","actual","expected","end","provisional","attendee_set","remote_attendee_set","modifiedEvents"],"mappings":"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","sourcesContent":["import { G } from \"sp-test/api\";\nimport { TimingLogModel } from \"./timing-log.js\";\nimport dedent from \"dedent-js\";\nimport moment from \"moment\";\n\ndescribe(\"TimingLogModel\", () => {\n\tconst events = [\n\t\t{\n\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/sections/28/\",\n\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/378/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:13.495713Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t];\n\n\tit(\"should create logs with a timestamp right now\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\t\tconst timingLog = new TimingLogModel();\n\t\tconst currentTime = \"2016-10-27T00:42:47.044135Z\";\n\t\ttimingLog.addEvent(\"/api/sections/1/\", currentTime);\n\n\t\t// Some precision in milliseconds is lost here\n\t\texpect(timingLog.events[0].timestamp).toEqual(\n\t\t\t\"2016-10-27T00:42:47.044000Z\"\n\t\t);\n\t\texpect(timingLog.events[0].path).toEqual(\"/api/sections/1/\");\n\t});\n\n\tit(\"should generate a timinglog compact format string\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t\t1ms /api/deckversions/4/\n\t\t\t\t72386ms /api/sections/28/\n\t\t\t\t133994ms /api/slides/380/\n\t\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tdescribe.each([\n\t\t[undefined, \"viewing\"],\n\t\t[\"present\", \"viewing\"],\n\t\t[\"view\", \"viewing\"],\n\t\t[\"prep\", \"preparing\"],\n\t\t[\"review\", \"reviewing\"],\n\t])(`{ mode: \"%s\" }`, (mode, modeType) => {\n\t\tit(`should show '${modeType}' when mode is ${mode}`, async () => {\n\t\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\t\tconst timingLog = new TimingLogModel({\n\t\t\t\tappointment: { id: 20 },\n\t\t\t\tuser: { id: 9 },\n\t\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\t});\n\n\t\t\t// First test is checking the default value, so we just\n\t\t\t// don't add anything in that one case.\n\t\t\tif (mode) {\n\t\t\t\ttimingLog.mode = mode;\n\t\t\t}\n\n\t\t\tconst actual = timingLog.toCompactFormat();\n\t\t\tconst expected = dedent`\n\t\t\t\t\t\t/api/users/9/ ${modeType} /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t`;\n\n\t\t\texpect(actual).toEqual(expected);\n\t\t});\n\t});\n\n\tit(\"should add an end date if specified\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: false,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should use provisional if flag is set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: true,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z provisional\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should show attendees if set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should add unfocused time\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\tconst modifiedEvents = [...events];\n\t\tmodifiedEvents[2].path = \"/api/sections/28/\";\n\t\tmodifiedEvents[2].is_unfocused = true;\n\n\t\ttimingLog.events = modifiedEvents;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms unfocused\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should remove an unfocused events if they are first\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = [\n\t\t\t{\n\t\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/sections/28/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/slides/380/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\t\tis_unfocused: false,\n\t\t\t},\n\t\t];\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t133994ms /api/slides/380/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n});\n\ndescribe(\".addEvent\", () => {\n\tit(\"should strip unfocused event if no previous event\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"unfocused\", moment());\n\n\t\texpect(timingLog.events).toEqual([]);\n\t});\n\n\tit(\"unfocused event path should match previous real content\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"/api/slides/380/\", \"2016-10-27T00:42:47.044135Z\");\n\t\ttimingLog.addEvent(\"unfocused\", \"2016-10-27T00:42:47.044135Z\");\n\n\t\texpect(timingLog.events[1]).toEqual({\n\t\t\tis_unfocused: true,\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.044000Z\",\n\t\t});\n\t});\n});\n"],"file":"timing-log.spec.js"}
|
|
1
|
+
{"version":3,"file":"timing-log.spec.js","names":["_api","require","_timingLog","_dedentJs","_interopRequireDefault","_moment","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","describe","events","path","timestamp","is_unfocused","it","TimingLogModel","G","timingLog","currentTime","addEvent","expect","toEqual","appointment","id","user","begin","code","toCompactFormat","assumedCode","dedent","_taggedTemplateLiteral2","default","each","undefined","mode","modeType","concat","_asyncToGenerator2","_regenerator","mark","_callee","actual","expected","wrap","_callee$","_context","prev","next","stop","end","provisional","attendee_set","remote_attendee_set","modifiedEvents","moment"],"sources":["../../src/models/timing-log.spec.js"],"sourcesContent":["import { G } from \"sp-test/api\";\nimport { TimingLogModel } from \"./timing-log.js\";\nimport dedent from \"dedent-js\";\nimport moment from \"moment\";\n\ndescribe(\"TimingLogModel\", () => {\n\tconst events = [\n\t\t{\n\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/sections/28/\",\n\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t\t{\n\t\t\tpath: \"/api/slides/378/\",\n\t\t\ttimestamp: \"2016-10-27T00:45:13.495713Z\",\n\t\t\tis_unfocused: false,\n\t\t},\n\t];\n\n\tit(\"should create logs with a timestamp right now\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\t\tconst timingLog = new TimingLogModel();\n\t\tconst currentTime = \"2016-10-27T00:42:47.044135Z\";\n\t\ttimingLog.addEvent(\"/api/sections/1/\", currentTime);\n\n\t\t// Some precision in milliseconds is lost here\n\t\texpect(timingLog.events[0].timestamp).toEqual(\n\t\t\t\"2016-10-27T00:42:47.044000Z\",\n\t\t);\n\t\texpect(timingLog.events[0].path).toEqual(\"/api/sections/1/\");\n\t});\n\n\tit(\"should generate a timinglog compact format string\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t\t1ms /api/deckversions/4/\n\t\t\t\t72386ms /api/sections/28/\n\t\t\t\t133994ms /api/slides/380/\n\t\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tdescribe.each([\n\t\t[undefined, \"viewing\"],\n\t\t[\"present\", \"viewing\"],\n\t\t[\"view\", \"viewing\"],\n\t\t[\"prep\", \"preparing\"],\n\t\t[\"review\", \"reviewing\"],\n\t])(`{ mode: \"%s\" }`, (mode, modeType) => {\n\t\tit(`should show '${modeType}' when mode is ${mode}`, async () => {\n\t\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\t\tconst timingLog = new TimingLogModel({\n\t\t\t\tappointment: { id: 20 },\n\t\t\t\tuser: { id: 9 },\n\t\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\t});\n\n\t\t\t// First test is checking the default value, so we just\n\t\t\t// don't add anything in that one case.\n\t\t\tif (mode) {\n\t\t\t\ttimingLog.mode = mode;\n\t\t\t}\n\n\t\t\tconst actual = timingLog.toCompactFormat();\n\t\t\tconst expected = dedent`\n\t\t\t\t\t\t/api/users/9/ ${modeType} /api/appointments/20/\n\t\t\t\t\t\t2016-10-27 00:42:47.044000Z\\n\\n\n\t\t\t\t`;\n\n\t\t\texpect(actual).toEqual(expected);\n\t\t});\n\t});\n\n\tit(\"should add an end date if specified\", function () {\n\t\tconst TimingLogModel = G(\"TimingLogModel\");\n\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: false,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should use provisional if flag is set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t\tend: \"2016-10-27T00:48:13.495713Z\",\n\t\t\tprovisional: true,\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\n\t\t\t2016-10-27 00:48:13.495000Z provisional\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should show attendees if set\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = events;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms /api/slides/380/\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should add unfocused time\", function () {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\tconst modifiedEvents = [...events];\n\t\tmodifiedEvents[2].path = \"/api/sections/28/\";\n\t\tmodifiedEvents[2].is_unfocused = true;\n\n\t\ttimingLog.events = modifiedEvents;\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t1ms /api/deckversions/4/\n\t\t\t72386ms /api/sections/28/\n\t\t\t133994ms unfocused\n\t\t\t146451ms /api/slides/378/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n\n\tit(\"should remove an unfocused events if they are first\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.events = [\n\t\t\t{\n\t\t\t\tpath: \"/api/deckversions/4/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:42:47.045186Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/sections/28/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:43:59.430102Z\",\n\t\t\t\tis_unfocused: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: \"/api/slides/380/\",\n\t\t\t\ttimestamp: \"2016-10-27T00:45:01.038661Z\",\n\t\t\t\tis_unfocused: false,\n\t\t\t},\n\t\t];\n\n\t\tconst code = timingLog.toCompactFormat();\n\t\tconst assumedCode = dedent`\n\t\t\t/api/users/9/ viewing /api/appointments/20/\n\t\t\t/api/users/10/ attending\n\t\t\t/api/users/11/ attending remotely\n\t\t\t2016-10-27 00:42:47.044000Z\n\t\t\t133994ms /api/slides/380/\\n\n\t\t`;\n\n\t\texpect(code).toEqual(assumedCode);\n\t});\n});\n\ndescribe(\".addEvent\", () => {\n\tit(\"should strip unfocused event if no previous event\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"unfocused\", moment());\n\n\t\texpect(timingLog.events).toEqual([]);\n\t});\n\n\tit(\"unfocused event path should match previous real content\", () => {\n\t\tconst timingLog = new TimingLogModel({\n\t\t\tappointment: { id: 20 },\n\t\t\tuser: { id: 9 },\n\t\t\tattendee_set: [{ id: 10 }],\n\t\t\tremote_attendee_set: [{ id: 11 }],\n\t\t\tbegin: \"2016-10-27T00:42:47.044135Z\",\n\t\t});\n\n\t\ttimingLog.addEvent(\"/api/slides/380/\", \"2016-10-27T00:42:47.044135Z\");\n\t\ttimingLog.addEvent(\"unfocused\", \"2016-10-27T00:42:47.044135Z\");\n\n\t\texpect(timingLog.events[1]).toEqual({\n\t\t\tis_unfocused: true,\n\t\t\tpath: \"/api/slides/380/\",\n\t\t\ttimestamp: \"2016-10-27T00:42:47.044000Z\",\n\t\t});\n\t});\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TokenModel = void 0;
|
|
7
|
+
require("./user.js");
|
|
8
|
+
var _base = require("./base.js");
|
|
9
|
+
var _stateRegister = require("../state-register.js");
|
|
10
|
+
/**
|
|
11
|
+
* @constructor
|
|
12
|
+
* @alias models.TokenModel
|
|
13
|
+
* @extends models.BaseModel
|
|
14
|
+
*/
|
|
15
|
+
var TokenModel = exports.TokenModel = _base.BaseModel.extend( /** @lends models.TokenModel# */{
|
|
16
|
+
modelName: "tokens",
|
|
17
|
+
/**
|
|
18
|
+
* @property {date} created_date
|
|
19
|
+
* @property {boolean} expired
|
|
20
|
+
* @property {date} expires_at
|
|
21
|
+
* @property {string} key
|
|
22
|
+
* @property {number} seconds_to_expiry
|
|
23
|
+
* @property {string} agent
|
|
24
|
+
* @property {string} agent_version
|
|
25
|
+
*/
|
|
26
|
+
props: {
|
|
27
|
+
created_date: "date",
|
|
28
|
+
expired: "boolean",
|
|
29
|
+
expires_at: "date",
|
|
30
|
+
key: "string",
|
|
31
|
+
seconds_to_expiry: "number",
|
|
32
|
+
agent: "string",
|
|
33
|
+
agent_version: "string"
|
|
34
|
+
},
|
|
35
|
+
/**
|
|
36
|
+
* @property {models.UserModel} user
|
|
37
|
+
*/
|
|
38
|
+
children: {
|
|
39
|
+
user: "UserModel"
|
|
40
|
+
},
|
|
41
|
+
url: function url() {
|
|
42
|
+
return "".concat(this.urlRoot()).concat(this.key, "/");
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
(0, _stateRegister.register)("TokenModel", TokenModel);
|
|
46
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","names":["require","_base","_stateRegister","TokenModel","exports","BaseModel","extend","modelName","props","created_date","expired","expires_at","key","seconds_to_expiry","agent","agent_version","children","user","url","concat","urlRoot","register"],"sources":["../../src/models/token.js"],"sourcesContent":["import \"./user.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TokenModel\n * @extends models.BaseModel\n */\nexport const TokenModel = BaseModel.extend(\n\t/** @lends models.TokenModel# */ {\n\t\tmodelName: \"tokens\",\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {boolean} expired\n\t\t * @property {date} expires_at\n\t\t * @property {string} key\n\t\t * @property {number} seconds_to_expiry\n\t\t * @property {string} agent\n\t\t * @property {string} agent_version\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\texpired: \"boolean\",\n\t\t\texpires_at: \"date\",\n\t\t\tkey: \"string\",\n\t\t\tseconds_to_expiry: \"number\",\n\t\t\tagent: \"string\",\n\t\t\tagent_version: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * @property {models.UserModel} user\n\t\t */\n\t\tchildren: {\n\t\t\tuser: \"UserModel\",\n\t\t},\n\n\t\turl() {\n\t\t\treturn `${this.urlRoot()}${this.key}/`;\n\t\t},\n\t},\n);\n\nregister(\"TokenModel\", TokenModel);\n"],"mappings":";;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMG,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGE,eAAS,CAACC,MAAM,EACzC,gCAAiC;EAChCC,SAAS,EAAE,QAAQ;EAEnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,KAAK,EAAE;IACNC,YAAY,EAAE,MAAM;IACpBC,OAAO,EAAE,SAAS;IAClBC,UAAU,EAAE,MAAM;IAClBC,GAAG,EAAE,QAAQ;IACbC,iBAAiB,EAAE,QAAQ;IAC3BC,KAAK,EAAE,QAAQ;IACfC,aAAa,EAAE;EAChB,CAAC;EAED;AACF;AACA;EACEC,QAAQ,EAAE;IACTC,IAAI,EAAE;EACP,CAAC;EAEDC,GAAG,WAAAA,IAAA,EAAG;IACL,UAAAC,MAAA,CAAU,IAAI,CAACC,OAAO,CAAC,CAAC,EAAAD,MAAA,CAAG,IAAI,CAACP,GAAG;EACpC;AACD,CACD,CAAC;AAED,IAAAS,uBAAQ,EAAC,YAAY,EAAElB,UAAU,CAAC"}
|