@livepreso/api 6.55.2 → 6.56.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  2. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  3. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  4. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  5. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  6. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  7. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  8. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  9. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  10. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  11. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  12. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  13. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  14. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  15. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  16. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  17. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  18. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  19. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  20. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  21. package/.rush/temp/build-cache-tar.log +7 -0
  22. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  23. package/.rush/temp/chunked-rush-logs/api.build.chunks.jsonl +15 -5
  24. package/.rush/temp/chunked-rush-logs/api.test.chunks.jsonl +1 -0
  25. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  26. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  27. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  28. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  29. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  30. package/.rush/temp/operation/build/all.log +15 -5
  31. package/.rush/temp/operation/build/error.log +13 -3
  32. package/.rush/temp/operation/build/log-chunks.jsonl +15 -5
  33. package/.rush/temp/operation/build/state.json +1 -1
  34. package/.rush/temp/operation/test/all.log +21 -0
  35. package/.rush/temp/operation/test/log-chunks.jsonl +21 -0
  36. package/.rush/temp/operation/test/state.json +3 -0
  37. package/.rush/temp/package-deps_build.json +185 -0
  38. package/.rush/temp/shrinkwrap-deps.json +1013 -1191
  39. package/CHANGELOG.json +29 -0
  40. package/CHANGELOG.md +19 -1
  41. package/api.build.log +9 -0
  42. package/api.test.cache.log +1 -0
  43. package/api.test.log +19 -0
  44. package/cjs/api.js +3 -5
  45. package/cjs/api.js.map +1 -1
  46. package/cjs/auth.spec.js +11 -11
  47. package/cjs/auth.spec.js.map +1 -1
  48. package/cjs/collections/appointment-tags.js +14 -15
  49. package/cjs/collections/appointment-tags.js.map +1 -1
  50. package/cjs/collections/base.spec.js +30 -30
  51. package/cjs/collections/base.spec.js.map +1 -1
  52. package/cjs/fixtures.js +1 -2
  53. package/cjs/fixtures.js.map +1 -1
  54. package/cjs/models/appointment.js +7 -7
  55. package/cjs/models/appointment.js.map +1 -1
  56. package/cjs/models/base.js +30 -12
  57. package/cjs/models/base.js.map +1 -1
  58. package/cjs/models/cms-val.spec.js +2 -2
  59. package/cjs/models/cms-val.spec.js.map +1 -1
  60. package/cjs/models/deck-version.js +14 -34
  61. package/cjs/models/deck-version.js.map +1 -1
  62. package/cjs/models/manifest-json.js +41 -5
  63. package/cjs/models/manifest-json.js.map +1 -1
  64. package/cjs/models/pack.js +2 -1
  65. package/cjs/models/pack.js.map +1 -1
  66. package/cjs/models/snapshot.spec.js +2 -2
  67. package/cjs/models/snapshot.spec.js.map +1 -1
  68. package/cjs/models/template.js +10 -10
  69. package/cjs/models/template.js.map +1 -1
  70. package/cjs/models/timing-log.js +17 -17
  71. package/cjs/models/timing-log.js.map +1 -1
  72. package/cjs/models/timing-log.spec.js +2 -2
  73. package/cjs/models/timing-log.spec.js.map +1 -1
  74. package/cjs/models/user.spec.js +4 -4
  75. package/cjs/models/user.spec.js.map +1 -1
  76. package/cjs/presentation/presentation-deck.js +19 -9
  77. package/cjs/presentation/presentation-deck.js.map +1 -1
  78. package/cjs/presentation/presentation-deck.spec.js +6 -6
  79. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  80. package/cjs/presentation/presentation-section.js +30 -9
  81. package/cjs/presentation/presentation-section.js.map +1 -1
  82. package/cjs/presentation/presentation-section.spec.js +24 -16
  83. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  84. package/cjs/presentation/presentation-slide.js +18 -7
  85. package/cjs/presentation/presentation-slide.js.map +1 -1
  86. package/cjs/presentation/presentation-slide.spec.js +21 -12
  87. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  88. package/cjs/presentation/presentation-subslide.spec.js +10 -10
  89. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  90. package/cjs/presentation/presentation.js +26 -26
  91. package/cjs/presentation/presentation.js.map +1 -1
  92. package/cjs/sync.js +15 -5
  93. package/cjs/sync.js.map +1 -1
  94. package/cjs/utils.js +33 -3
  95. package/cjs/utils.js.map +1 -1
  96. package/package.json +3 -3
  97. package/rush-logs/api.build.error.log +13 -3
  98. package/rush-logs/api.build.log +15 -5
  99. package/rush-logs/api.test.cache.log +1 -0
  100. package/rush-logs/api.test.log +1 -0
  101. package/src/api.js +3 -5
  102. package/src/models/base.js +27 -9
  103. package/src/models/deck-version.js +5 -31
  104. package/src/models/manifest-json.js +33 -5
  105. package/src/models/pack.js +1 -0
  106. package/src/models/timing-log.js +24 -28
  107. package/src/presentation/presentation-deck.js +9 -9
  108. package/src/presentation/presentation-section.js +31 -11
  109. package/src/presentation/presentation-section.spec.js +8 -0
  110. package/src/presentation/presentation-slide.js +7 -4
  111. package/src/presentation/presentation-slide.spec.js +9 -0
  112. package/src/sync.js +15 -5
  113. package/src/utils.js +31 -2
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-json.js","names":["require","_base","_stateRegister","_url","_interopRequireDefault","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","ownKeys","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","ManifestJSONModel","exports","BaseModel","extend","props","key","maintainer","common","feeds","hooks","fixtures","limits","ordering","tags","titles","templates","content_editors","persistentcontext","type","screenshotpreferences","vector","dimensions","width","height","pdfpreferences","quality_level","has_editable_share_support","has_signing_support","point_in_time_share_policy","notify_salesperson_after_feeds_fetched","require_verification","companywide_editable","app_settings","appointment","show_visible_default","fieldsets","enforce_required","requires_user_connectivity","derived","screenDimensions","deps","fn","getScreenDimensions","getDimensionsByName","dimension","find","d","_d$name","toLowerCase","getPDFDimensions","_this$pdfpreferences","defaultPDFDimensions","defaultDimensions","getAssetPath","undefined","_key$split","split","_key$split2","_slicedToArray2","sectionKey","_key$split2$","slideKey","sectionKeyPath","url2","resolve","url","concat","getTemplateAssetPath","parent","modelName","getPlainURL","prototype","createFromProject","projectFile","impostor","maxAdjunctSlides","sections","reduce","num","section","title","slides","newSection","_toConsumableArray2","_iterator","_step","slide","err","template","index","adjunctslide","slideIndex","_iterator2","_step2","_iterator3","_step3","welcome","manifest","screen","Error","canBeEmpty","register"],"sources":["../../src/models/manifest-json.js"],"sourcesContent":["import \"./pack.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\nimport url2 from \"url\";\n\n/**\n * @constructor\n * @alias models.ManifestJSONModel\n * @extends models.BaseModel\n */\nexport const ManifestJSONModel = BaseModel.extend(\n\t/** @lends models.ManifestJSONModel# */ {\n\t\t/**\n\t\t * @property {string} key\n\t\t * @property {string} maintainer\n\t\t * @property {object} common\n\t\t * @property {object} feeds\n\t\t * @property {object} hooks\n\t\t * @property {object} limits\n\t\t * @property {object} ordering\n\t\t * @property {object} tags\n\t\t * @property {object} titles\n\t\t * @property {object} templates\n\t\t * @property {object} screenshotpreferences\n\t\t * @property {object} dimensions\n\t\t * @property {object} pdfpreferences\n\t\t * @property {boolean} has_editable_share_support\n\t\t * @property {boolean} has_signing_support\n\t\t * @property {boolean} notify_salesperson_after_feeds_fetched\n\t\t * @property {boolean} require_verification\n\t\t * @property {boolean} companywide_editable\n\t\t * @property {object} content_editors\n\t\t */\n\t\tprops: {\n\t\t\tkey: \"string\",\n\t\t\tmaintainer: \"string\",\n\t\t\tcommon: \"object\",\n\t\t\tfeeds: \"object\",\n\t\t\thooks: \"string\",\n\t\t\tfixtures: \"object\",\n\t\t\tlimits: \"object\",\n\t\t\tordering: \"object\",\n\t\t\ttags: \"object\",\n\t\t\ttitles: \"object\",\n\t\t\ttemplates: \"object\",\n\t\t\tcontent_editors: \"object\",\n\t\t\tpersistentcontext: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tscreenshotpreferences: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvector: false,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t// This could be a list or an object\n\t\t\t\ttype: \"any\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\twidth: 1024,\n\t\t\t\t\t\theight: 768,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\tpdfpreferences: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tquality_level: \"prepress\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\thas_editable_share_support: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\thas_signing_support: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tpoint_in_time_share_policy: {\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\tnotify_salesperson_after_feeds_fetched: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\trequire_verification: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tcompanywide_editable: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tapp_settings: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tappointment: {\n\t\t\t\t\t\t\tshow_visible_default: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfieldsets: {\n\t\t\t\t\t\t\tenforce_required: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\trequires_user_connectivity: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tdefault: () => {\n\t\t\t\t\treturn [];\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tderived: {\n\t\t\t// Most places just need this value, and making it derived\n\t\t\t// gives us lower overhead (when we convert with .toJSON() it will\n\t\t\t// also include this value, and means we don't have to convert back to\n\t\t\t// a model just to get this again.)\n\t\t\tscreenDimensions: {\n\t\t\t\tdeps: [\"dimensions\"],\n\t\t\t\tfn: function () {\n\t\t\t\t\treturn this.getScreenDimensions();\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tgetDimensionsByName(name) {\n\t\t\tif (Array.isArray(this.dimensions)) {\n\t\t\t\tconst dimension = this.dimensions.find(\n\t\t\t\t\t(d) => d.name?.toLowerCase() === name?.toLowerCase(),\n\t\t\t\t);\n\t\t\t\tif (!dimension) {\n\t\t\t\t\treturn { width: 1024, height: 767 };\n\t\t\t\t}\n\t\t\t\treturn { width: dimension.width, height: dimension.height };\n\t\t\t}\n\t\t\treturn this.dimensions;\n\t\t},\n\n\t\tgetScreenDimensions() {\n\t\t\treturn this.getDimensionsByName(\"screen\");\n\t\t},\n\n\t\tgetPDFDimensions() {\n\t\t\tif (Array.isArray(this.dimensions)) {\n\t\t\t\tconst defaultPDFDimensions =\n\t\t\t\t\tthis.pdfpreferences?.defaultDimensions || \"screen\";\n\t\t\t\treturn this.getDimensionsByName(defaultPDFDimensions);\n\t\t\t}\n\t\t\treturn this.dimensions;\n\t\t},\n\n\t\t/**\n\t\t * Returns the path to a manifest asset, using its url as the base.\n\t\t * @param {?string} key\n\t\t * @returns {?string}\n\t\t */\n\t\tgetAssetPath(key = null) {\n\t\t\tif (key) {\n\t\t\t\tconst [sectionKey, slideKey = null] = key.split(\"/\");\n\t\t\t\tconst sectionKeyPath = url2.resolve(\n\t\t\t\t\tthis.url(),\n\t\t\t\t\t`sections/${sectionKey}/`,\n\t\t\t\t);\n\t\t\t\tif (slideKey) {\n\t\t\t\t\treturn url2.resolve(sectionKeyPath, `slides/${slideKey}/`);\n\t\t\t\t}\n\t\t\t\treturn sectionKeyPath;\n\t\t\t}\n\n\t\t\treturn this.url();\n\t\t},\n\n\t\t/**\n\t\t Returns path to template assets, which are exceptional to regular slide assets\n\t\t * @param {?string} key\n\t\t * @returns {?string}\n\t\t */\n\t\tgetTemplateAssetPath(key) {\n\t\t\treturn url2.resolve(this.getAssetPath(), `templates/${key}/`);\n\t\t},\n\n\t\turl() {\n\t\t\tif (this.parent && this.parent.modelName === \"deckversions\") {\n\t\t\t\treturn `${this.parent.getPlainURL()}manifest/`;\n\t\t\t}\n\n\t\t\treturn BaseModel.prototype.url.call(this);\n\t\t},\n\t},\n);\n\n/**\n * Converts a project file into a manifest json object. This expected\n * the project.yaml file to have been already read into a javascript\n * object.\n */\nManifestJSONModel.createFromProject = function (projectFile) {\n\t// If the deck is an impostor deck, we have to update some things for\n\t// them to make sense in the impostor format\n\tif (projectFile.impostor) {\n\t\t// There is only one real section; all of the \"sections\" defined in the\n\t\t// project.yaml are actually slides, and slides can't have a maxAdjunctSlides\n\t\t// value. We get around this by totalling up all of the maxAdjunctSlides values\n\t\t// across the sections and give that number to the real section. Later e.g. in the\n\t\t// app, that number will be taken and divided by the number of impostor sections\n\t\t// to get the maxAdjunctSlides value for each impostor section\n\t\tconst maxAdjunctSlides = projectFile.sections.reduce((num, section) => {\n\t\t\treturn num + (section.maxAdjunctSlides || 0);\n\t\t}, 0);\n\n\t\t// Create a \"real\" section (that will never be seen by the user) and give\n\t\t// it all of the sections & slides. Impostor sections (which are technically\n\t\t// slides) are given the \"section-header\" tag to mark them as sections\n\t\tprojectFile.sections = [\n\t\t\t{\n\t\t\t\tmaxAdjunctSlides,\n\t\t\t\tkey: projectFile.key,\n\t\t\t\ttitle: projectFile.name,\n\t\t\t\tslides: projectFile.sections.reduce((sections, section) => {\n\t\t\t\t\tconst newSection = {\n\t\t\t\t\t\t...section,\n\t\t\t\t\t\tslides: [],\n\t\t\t\t\t};\n\t\t\t\t\tnewSection.tags = [\"section-header\"].concat(newSection.tags || []);\n\n\t\t\t\t\tsections.push(newSection, ...(section.slides || []));\n\t\t\t\t\treturn sections;\n\t\t\t\t}, []),\n\t\t\t},\n\t\t];\n\t}\n\n\tconst titles = projectFile.sections.reduce((titles, section) => {\n\t\ttitles[section.key] = section.title;\n\t\tfor (const slide of section.slides || []) {\n\t\t\ttitles[`${section.key}/${slide.key}`] = slide.title;\n\t\t}\n\t\treturn titles;\n\t}, {});\n\n\tconst templates = (projectFile.templates || []).reduce(\n\t\t(templates, template, index) => {\n\t\t\ttemplates[template.key] = {\n\t\t\t\ttitle: template.title,\n\t\t\t\tordering: index + 1,\n\t\t\t};\n\t\t\treturn templates;\n\t\t},\n\t\t{},\n\t);\n\n\tconst limits = {\n\t\tadjunctslide: projectFile.sections.reduce((limits, section) => {\n\t\t\tif (typeof section.maxAdjunctSlides === \"number\") {\n\t\t\t\tlimits[section.key] = section.maxAdjunctSlides;\n\t\t\t}\n\t\t\treturn limits;\n\t\t}, {}),\n\t};\n\n\tconst ordering = projectFile.sections.reduce((ordering, section, index) => {\n\t\tordering[section.key] = index + 1;\n\t\tlet slideIndex = 0;\n\t\tfor (const slide of section.slides || []) {\n\t\t\tslideIndex++;\n\t\t\tordering[`${section.key}/${slide.key}`] = slideIndex;\n\t\t}\n\t\treturn ordering;\n\t}, {});\n\n\tconst tags = projectFile.sections.reduce((tags, section) => {\n\t\ttags[section.key] = section.tags || [];\n\t\tfor (const slide of section.slides || []) {\n\t\t\ttags[`${section.key}/${slide.key}`] = slide.tags || [];\n\t\t}\n\t\treturn tags;\n\t}, {});\n\n\t// Add config for the Welcome slide here - it's namespaced in\n\t// the project.yaml under the \"welcome\" key\n\tif (projectFile.welcome) {\n\t\tif (projectFile.welcome.tags) {\n\t\t\t// It's convention to use an empty string for the\n\t\t\t// Welcome slide's key\n\t\t\ttags[\"\"] = projectFile.welcome.tags || [];\n\t\t}\n\t}\n\n\tconst manifest = new ManifestJSONModel({\n\t\tcommon: projectFile.common,\n\t\tfeeds: projectFile.feeds,\n\t\thooks: projectFile.hooks,\n\t\tfixtures: projectFile.fixtures,\n\t\ttitles,\n\t\ttemplates,\n\t\tordering,\n\t\tlimits,\n\t\ttags,\n\t\tkey: projectFile.key,\n\t});\n\n\tif (projectFile.content_editors) {\n\t\tmanifest.content_editors = projectFile.content_editors;\n\t}\n\n\tif (projectFile.screenshotpreferences) {\n\t\tmanifest.screenshotpreferences = projectFile.screenshotpreferences;\n\t}\n\n\tif (projectFile.pdfpreferences) {\n\t\tmanifest.pdfpreferences = projectFile.pdfpreferences;\n\t}\n\n\tif (projectFile.persistentcontext) {\n\t\tmanifest.persistentcontext = projectFile.persistentcontext;\n\t}\n\n\tif (projectFile.maintainer) {\n\t\tmanifest.maintainer = projectFile.maintainer;\n\t}\n\n\tif (projectFile.dimensions) {\n\t\tconst { dimensions } = projectFile;\n\n\t\tif (Array.isArray(dimensions)) {\n\t\t\tconst screen = dimensions.filter((d) => d.name === \"Screen\");\n\t\t\tif (!screen.length || screen.length > 1) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Dimensions must contain one value named 'Screen' in project.yaml\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tmanifest.dimensions = dimensions;\n\t}\n\n\tif (projectFile.has_editable_share_support) {\n\t\tmanifest.has_editable_share_support =\n\t\t\tprojectFile.has_editable_share_support;\n\t}\n\n\tif (projectFile.has_signing_support) {\n\t\tmanifest.has_signing_support = projectFile.has_signing_support;\n\t}\n\n\tif (projectFile.point_in_time_share_policy) {\n\t\tmanifest.point_in_time_share_policy =\n\t\t\tprojectFile.point_in_time_share_policy;\n\t}\n\n\tif (projectFile.notify_salesperson_after_feeds_fetched) {\n\t\tmanifest.notify_salesperson_after_feeds_fetched =\n\t\t\tprojectFile.notify_salesperson_after_feeds_fetched;\n\t}\n\n\tif (projectFile.require_verification) {\n\t\tmanifest.require_verification = projectFile.require_verification;\n\t}\n\n\tif (projectFile.app_settings) {\n\t\tmanifest.app_settings = {\n\t\t\t...manifest.app_settings,\n\t\t\t...projectFile.app_settings,\n\t\t};\n\t}\n\n\tif (projectFile.requires_user_connectivity) {\n\t\tmanifest.requires_user_connectivity =\n\t\t\tprojectFile.requires_user_connectivity;\n\t}\n\n\t// For all new decks going forward, this should be set to true.\n\t// This means we validate that a fieldset field has a value. Before\n\t// this change, it was possible to save with a required field unfilled.\n\t// This just keeps backwards compatability.\n\tmanifest.app_settings.fieldsets.enforce_required = false;\n\n\treturn manifest;\n};\n\nManifestJSONModel.canBeEmpty = true;\n\nregister(\"ManifestJSONModel\", ManifestJSONModel);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"manifest-json.js","names":["_lodash","_interopRequireDefault","require","_superagent","_base","_stateRegister","_utils","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","ownKeys","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","ManifestJSONModel","exports","BaseModel","extend","props","key","maintainer","common","feeds","hooks","fixtures","limits","ordering","tags","titles","templates","content_editors","persistentcontext","type","screenshotpreferences","vector","dimensions","width","height","pdfpreferences","quality_level","has_editable_share_support","has_signing_support","point_in_time_share_policy","notify_salesperson_after_feeds_fetched","require_verification","companywide_editable","app_settings","appointment","show_visible_default","fieldsets","enforce_required","requires_user_connectivity","derived","screenDimensions","deps","fn","getScreenDimensions","getDimensionsByName","dimension","find","d","_d$name","toLowerCase","getPDFDimensions","_this$pdfpreferences","defaultPDFDimensions","defaultDimensions","getAssetPath","undefined","_key$split","split","_key$split2","_slicedToArray2","sectionKey","_key$split2$","slideKey","sectionKeyPath","resolveURL","url","concat","getTemplateAssetPath","getFixtures","rootAssetUrl","_this","_asyncToGenerator2","_regenerator","mark","_callee","fixturePaths","imports","wrap","_context","prev","_","map","fixture","path","superagent","get","then","response","text","JSON","parse","body","catch","SuperagentPromiseError","Promise","all","abrupt","stop","parent","modelName","getPlainURL","prototype","createFromProject","projectFile","impostor","maxAdjunctSlides","sections","reduce","num","section","title","slides","newSection","_toConsumableArray2","_iterator","_step","slide","err","template","index","adjunctslide","slideIndex","_iterator2","_step2","_iterator3","_step3","welcome","manifest","screen","Error","canBeEmpty","register"],"sources":["../../src/models/manifest-json.js"],"sourcesContent":["import _ from \"lodash\";\nimport \"./pack.js\";\n\nimport superagent from \"superagent\";\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\nimport { resolveURL } from \"../utils.js\";\n\n/**\n * @constructor\n * @alias models.ManifestJSONModel\n * @extends models.BaseModel\n */\nexport const ManifestJSONModel = BaseModel.extend(\n\t/** @lends models.ManifestJSONModel# */ {\n\t\t/**\n\t\t * @property {string} key\n\t\t * @property {string} maintainer\n\t\t * @property {object} common\n\t\t * @property {object} feeds\n\t\t * @property {object} hooks\n\t\t * @property {object} limits\n\t\t * @property {object} ordering\n\t\t * @property {object} tags\n\t\t * @property {object} titles\n\t\t * @property {object} templates\n\t\t * @property {object} screenshotpreferences\n\t\t * @property {object} dimensions\n\t\t * @property {object} pdfpreferences\n\t\t * @property {boolean} has_editable_share_support\n\t\t * @property {boolean} has_signing_support\n\t\t * @property {boolean} notify_salesperson_after_feeds_fetched\n\t\t * @property {boolean} require_verification\n\t\t * @property {boolean} companywide_editable\n\t\t * @property {object} content_editors\n\t\t */\n\t\tprops: {\n\t\t\tkey: \"string\",\n\t\t\tmaintainer: \"string\",\n\t\t\tcommon: \"object\",\n\t\t\tfeeds: \"object\",\n\t\t\thooks: \"string\",\n\t\t\tfixtures: \"object\",\n\t\t\tlimits: \"object\",\n\t\t\tordering: \"object\",\n\t\t\ttags: \"object\",\n\t\t\ttitles: \"object\",\n\t\t\ttemplates: \"object\",\n\t\t\tcontent_editors: \"object\",\n\t\t\tpersistentcontext: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tscreenshotpreferences: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tvector: false,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\tdimensions: {\n\t\t\t\t// This could be a list or an object\n\t\t\t\ttype: \"any\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\twidth: 1024,\n\t\t\t\t\t\theight: 768,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\tpdfpreferences: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tquality_level: \"prepress\",\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\thas_editable_share_support: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\thas_signing_support: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tpoint_in_time_share_policy: {\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t\tnotify_salesperson_after_feeds_fetched: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\trequire_verification: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tcompanywide_editable: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: false,\n\t\t\t},\n\t\t\tapp_settings: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: function () {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tappointment: {\n\t\t\t\t\t\t\tshow_visible_default: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfieldsets: {\n\t\t\t\t\t\t\tenforce_required: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t\trequires_user_connectivity: {\n\t\t\t\ttype: \"array\",\n\t\t\t\tdefault: () => {\n\t\t\t\t\treturn [];\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tderived: {\n\t\t\t// Most places just need this value, and making it derived\n\t\t\t// gives us lower overhead (when we convert with .toJSON() it will\n\t\t\t// also include this value, and means we don't have to convert back to\n\t\t\t// a model just to get this again.)\n\t\t\tscreenDimensions: {\n\t\t\t\tdeps: [\"dimensions\"],\n\t\t\t\tfn: function () {\n\t\t\t\t\treturn this.getScreenDimensions();\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\tgetDimensionsByName(name) {\n\t\t\tif (Array.isArray(this.dimensions)) {\n\t\t\t\tconst dimension = this.dimensions.find(\n\t\t\t\t\t(d) => d.name?.toLowerCase() === name.toLowerCase(),\n\t\t\t\t);\n\t\t\t\tif (!dimension) {\n\t\t\t\t\treturn { width: 1024, height: 767 };\n\t\t\t\t}\n\t\t\t\treturn { width: dimension.width, height: dimension.height };\n\t\t\t}\n\t\t\treturn this.dimensions;\n\t\t},\n\n\t\tgetScreenDimensions() {\n\t\t\treturn this.getDimensionsByName(\"screen\");\n\t\t},\n\n\t\tgetPDFDimensions() {\n\t\t\tif (Array.isArray(this.dimensions)) {\n\t\t\t\tconst defaultPDFDimensions =\n\t\t\t\t\tthis.pdfpreferences?.defaultDimensions || \"screen\";\n\t\t\t\treturn this.getDimensionsByName(defaultPDFDimensions);\n\t\t\t}\n\t\t\treturn this.dimensions;\n\t\t},\n\n\t\t/**\n\t\t * Returns the path to a manifest asset, using its url as the base.\n\t\t * @param {?string} key\n\t\t * @returns {?string}\n\t\t */\n\t\tgetAssetPath(key = null) {\n\t\t\tif (key) {\n\t\t\t\tconst [sectionKey, slideKey = null] = key.split(\"/\");\n\t\t\t\tconst sectionKeyPath = resolveURL(\n\t\t\t\t\tthis.url(),\n\t\t\t\t\t`sections/${sectionKey}/`,\n\t\t\t\t);\n\t\t\t\tif (slideKey) {\n\t\t\t\t\treturn resolveURL(sectionKeyPath, `slides/${slideKey}/`);\n\t\t\t\t}\n\t\t\t\treturn sectionKeyPath;\n\t\t\t}\n\n\t\t\treturn this.url();\n\t\t},\n\n\t\t/**\n\t\t Returns path to template assets, which are exceptional to regular slide assets\n\t\t * @param {?string} key\n\t\t * @returns {?string}\n\t\t */\n\t\tgetTemplateAssetPath(key) {\n\t\t\treturn resolveURL(this.getAssetPath(), `templates/${key}/`);\n\t\t},\n\n\t\tasync getFixtures(rootAssetUrl) {\n\t\t\tconst fixturePaths = this.fixtures || {};\n\t\t\tconst fixtures = {};\n\n\t\t\tconst imports = _.map(fixturePaths, (fixture, key) => {\n\t\t\t\tconst path = `${rootAssetUrl}${fixture}`;\n\n\t\t\t\treturn superagent\n\t\t\t\t\t.get(path)\n\t\t\t\t\t.then((response) => {\n\t\t\t\t\t\tif (response.text) {\n\t\t\t\t\t\t\tfixtures[key] = JSON.parse(response.text);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfixtures[key] = response.body || {};\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t});\n\t\t\t});\n\n\t\t\tawait Promise.all(imports);\n\n\t\t\treturn fixtures;\n\t\t},\n\n\t\turl() {\n\t\t\tif (this.parent && this.parent.modelName === \"deckversions\") {\n\t\t\t\treturn `${this.parent.getPlainURL()}manifest/`;\n\t\t\t}\n\n\t\t\treturn BaseModel.prototype.url.call(this);\n\t\t},\n\t},\n);\n\n/**\n * Converts a project file into a manifest json object. This expected\n * the project.yaml file to have been already read into a javascript\n * object.\n */\nManifestJSONModel.createFromProject = function (projectFile) {\n\t// If the deck is an impostor deck, we have to update some things for\n\t// them to make sense in the impostor format\n\tif (projectFile.impostor) {\n\t\t// There is only one real section; all of the \"sections\" defined in the\n\t\t// project.yaml are actually slides, and slides can't have a maxAdjunctSlides\n\t\t// value. We get around this by totalling up all of the maxAdjunctSlides values\n\t\t// across the sections and give that number to the real section. Later e.g. in the\n\t\t// app, that number will be taken and divided by the number of impostor sections\n\t\t// to get the maxAdjunctSlides value for each impostor section\n\t\tconst maxAdjunctSlides = projectFile.sections.reduce((num, section) => {\n\t\t\treturn num + (section.maxAdjunctSlides || 0);\n\t\t}, 0);\n\n\t\t// Create a \"real\" section (that will never be seen by the user) and give\n\t\t// it all of the sections & slides. Impostor sections (which are technically\n\t\t// slides) are given the \"section-header\" tag to mark them as sections\n\t\tprojectFile.sections = [\n\t\t\t{\n\t\t\t\tmaxAdjunctSlides,\n\t\t\t\tkey: projectFile.key,\n\t\t\t\ttitle: projectFile.name,\n\t\t\t\tslides: projectFile.sections.reduce((sections, section) => {\n\t\t\t\t\tconst newSection = {\n\t\t\t\t\t\t...section,\n\t\t\t\t\t\tslides: [],\n\t\t\t\t\t};\n\t\t\t\t\tnewSection.tags = [\"section-header\"].concat(newSection.tags || []);\n\n\t\t\t\t\tsections.push(newSection, ...(section.slides || []));\n\t\t\t\t\treturn sections;\n\t\t\t\t}, []),\n\t\t\t},\n\t\t];\n\t}\n\n\tconst titles = projectFile.sections.reduce((titles, section) => {\n\t\ttitles[section.key] = section.title;\n\t\tfor (const slide of section.slides || []) {\n\t\t\ttitles[`${section.key}/${slide.key}`] = slide.title;\n\t\t}\n\t\treturn titles;\n\t}, {});\n\n\tconst templates = (projectFile.templates || []).reduce(\n\t\t(templates, template, index) => {\n\t\t\ttemplates[template.key] = {\n\t\t\t\ttitle: template.title,\n\t\t\t\tordering: index + 1,\n\t\t\t};\n\t\t\treturn templates;\n\t\t},\n\t\t{},\n\t);\n\n\tconst limits = {\n\t\tadjunctslide: projectFile.sections.reduce((limits, section) => {\n\t\t\tif (typeof section.maxAdjunctSlides === \"number\") {\n\t\t\t\tlimits[section.key] = section.maxAdjunctSlides;\n\t\t\t}\n\t\t\treturn limits;\n\t\t}, {}),\n\t};\n\n\tconst ordering = projectFile.sections.reduce((ordering, section, index) => {\n\t\tordering[section.key] = index + 1;\n\t\tlet slideIndex = 0;\n\t\tfor (const slide of section.slides || []) {\n\t\t\tslideIndex++;\n\t\t\tordering[`${section.key}/${slide.key}`] = slideIndex;\n\t\t}\n\t\treturn ordering;\n\t}, {});\n\n\tconst tags = projectFile.sections.reduce((tags, section) => {\n\t\ttags[section.key] = section.tags || [];\n\t\tfor (const slide of section.slides || []) {\n\t\t\ttags[`${section.key}/${slide.key}`] = slide.tags || [];\n\t\t}\n\t\treturn tags;\n\t}, {});\n\n\t// Add config for the Welcome slide here - it's namespaced in\n\t// the project.yaml under the \"welcome\" key\n\tif (projectFile.welcome) {\n\t\tif (projectFile.welcome.tags) {\n\t\t\t// It's convention to use an empty string for the\n\t\t\t// Welcome slide's key\n\t\t\ttags[\"\"] = projectFile.welcome.tags || [];\n\t\t}\n\t}\n\n\tconst manifest = new ManifestJSONModel({\n\t\tcommon: projectFile.common,\n\t\tfeeds: projectFile.feeds,\n\t\thooks: projectFile.hooks,\n\t\tfixtures: projectFile.fixtures,\n\t\ttitles,\n\t\ttemplates,\n\t\tordering,\n\t\tlimits,\n\t\ttags,\n\t\tkey: projectFile.key,\n\t});\n\n\tif (projectFile.content_editors) {\n\t\tmanifest.content_editors = projectFile.content_editors;\n\t}\n\n\tif (projectFile.screenshotpreferences) {\n\t\tmanifest.screenshotpreferences = projectFile.screenshotpreferences;\n\t}\n\n\tif (projectFile.pdfpreferences) {\n\t\tmanifest.pdfpreferences = projectFile.pdfpreferences;\n\t}\n\n\tif (projectFile.persistentcontext) {\n\t\tmanifest.persistentcontext = projectFile.persistentcontext;\n\t}\n\n\tif (projectFile.maintainer) {\n\t\tmanifest.maintainer = projectFile.maintainer;\n\t}\n\n\tif (projectFile.dimensions) {\n\t\tconst { dimensions } = projectFile;\n\n\t\tif (Array.isArray(dimensions)) {\n\t\t\tconst screen = dimensions.filter((d) => d.name === \"Screen\");\n\t\t\tif (!screen.length || screen.length > 1) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Dimensions must contain one value named 'Screen' in project.yaml\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tmanifest.dimensions = dimensions;\n\t}\n\n\tif (projectFile.has_editable_share_support) {\n\t\tmanifest.has_editable_share_support =\n\t\t\tprojectFile.has_editable_share_support;\n\t}\n\n\tif (projectFile.has_signing_support) {\n\t\tmanifest.has_signing_support = projectFile.has_signing_support;\n\t}\n\n\tif (projectFile.point_in_time_share_policy) {\n\t\tmanifest.point_in_time_share_policy =\n\t\t\tprojectFile.point_in_time_share_policy;\n\t}\n\n\tif (projectFile.notify_salesperson_after_feeds_fetched) {\n\t\tmanifest.notify_salesperson_after_feeds_fetched =\n\t\t\tprojectFile.notify_salesperson_after_feeds_fetched;\n\t}\n\n\tif (projectFile.require_verification) {\n\t\tmanifest.require_verification = projectFile.require_verification;\n\t}\n\n\tif (projectFile.app_settings) {\n\t\tmanifest.app_settings = {\n\t\t\t...manifest.app_settings,\n\t\t\t...projectFile.app_settings,\n\t\t};\n\t}\n\n\tif (projectFile.requires_user_connectivity) {\n\t\tmanifest.requires_user_connectivity =\n\t\t\tprojectFile.requires_user_connectivity;\n\t}\n\n\t// For all new decks going forward, this should be set to true.\n\t// This means we validate that a fieldset field has a value. Before\n\t// this change, it was possible to save with a required field unfilled.\n\t// This just keeps backwards compatability.\n\tmanifest.app_settings.fieldsets.enforce_required = false;\n\n\treturn manifest;\n};\n\nManifestJSONModel.canBeEmpty = true;\n\nregister(\"ManifestJSONModel\", ManifestJSONModel);\n"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,8 @@ var PackModel = exports.PackModel = _base.BaseModel.extend(/** @lends models.Pac
24
24
  created_date: "date",
25
25
  modified_date: "date",
26
26
  hash_digest: "string",
27
- hash_algorithm: "string"
27
+ hash_algorithm: "string",
28
+ root_url: "string"
28
29
  },
29
30
  /**
30
31
  * @property {collections.AssetCollection} asset_set
@@ -1 +1 @@
1
- {"version":3,"file":"pack.js","names":["require","_base","_stateRegister","PackModel","exports","BaseModel","extend","modelName","props","created_date","modified_date","hash_digest","hash_algorithm","collections","asset_set","url","get","_url","prototype","call","concat","urlRoot","register"],"sources":["../../src/models/pack.js"],"sourcesContent":["import \"../collections/assets.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.PackModel\n * @extends models.BaseModel\n */\nexport const PackModel = BaseModel.extend(\n\t/** @lends models.PackModel# */ {\n\t\tmodelName: \"packs\",\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t * @property {string} hash_digest\n\t\t * @property {string} hash_algorithm\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\thash_digest: \"string\",\n\t\t\thash_algorithm: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.AssetCollection} asset_set\n\t\t */\n\t\tcollections: {\n\t\t\tasset_set: \"AssetCollection\",\n\t\t},\n\n\t\turl() {\n\t\t\tif (this.get(\"id\") || this._url) {\n\t\t\t\treturn BaseModel.prototype.url.call(this);\n\t\t\t}\n\t\t\treturn `${this.urlRoot()}empty/`;\n\t\t},\n\t},\n);\n\nregister(\"PackModel\", PackModel);\n"],"mappings":";;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,eAAS,CAACC,MAAM,CACxC,+BAAgC;EAC/BC,SAAS,EAAE,OAAO;EAElB;AACF;AACA;AACA;AACA;AACA;EACEC,KAAK,EAAE;IACNC,YAAY,EAAE,MAAM;IACpBC,aAAa,EAAE,MAAM;IACrBC,WAAW,EAAE,QAAQ;IACrBC,cAAc,EAAE;EACjB,CAAC;EAED;AACF;AACA;EACEC,WAAW,EAAE;IACZC,SAAS,EAAE;EACZ,CAAC;EAEDC,GAAG,WAAHA,GAAGA,CAAA,EAAG;IACL,IAAI,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAACC,IAAI,EAAE;MAChC,OAAOZ,eAAS,CAACa,SAAS,CAACH,GAAG,CAACI,IAAI,CAAC,IAAI,CAAC;IAC1C;IACA,UAAAC,MAAA,CAAU,IAAI,CAACC,OAAO,CAAC,CAAC;EACzB;AACD,CACD,CAAC;AAED,IAAAC,uBAAQ,EAAC,WAAW,EAAEnB,SAAS,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"pack.js","names":["require","_base","_stateRegister","PackModel","exports","BaseModel","extend","modelName","props","created_date","modified_date","hash_digest","hash_algorithm","root_url","collections","asset_set","url","get","_url","prototype","call","concat","urlRoot","register"],"sources":["../../src/models/pack.js"],"sourcesContent":["import \"../collections/assets.js\";\n\nimport { BaseModel } from \"./base.js\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.PackModel\n * @extends models.BaseModel\n */\nexport const PackModel = BaseModel.extend(\n\t/** @lends models.PackModel# */ {\n\t\tmodelName: \"packs\",\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t * @property {string} hash_digest\n\t\t * @property {string} hash_algorithm\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\thash_digest: \"string\",\n\t\t\thash_algorithm: \"string\",\n\t\t\troot_url: \"string\",\n\t\t},\n\n\t\t/**\n\t\t * @property {collections.AssetCollection} asset_set\n\t\t */\n\t\tcollections: {\n\t\t\tasset_set: \"AssetCollection\",\n\t\t},\n\n\t\turl() {\n\t\t\tif (this.get(\"id\") || this._url) {\n\t\t\t\treturn BaseModel.prototype.url.call(this);\n\t\t\t}\n\t\t\treturn `${this.urlRoot()}empty/`;\n\t\t},\n\t},\n);\n\nregister(\"PackModel\", PackModel);\n"],"mappings":";;;;;;AAAAA,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,IAAMG,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,eAAS,CAACC,MAAM,CACxC,+BAAgC;EAC/BC,SAAS,EAAE,OAAO;EAElB;AACF;AACA;AACA;AACA;AACA;EACEC,KAAK,EAAE;IACNC,YAAY,EAAE,MAAM;IACpBC,aAAa,EAAE,MAAM;IACrBC,WAAW,EAAE,QAAQ;IACrBC,cAAc,EAAE,QAAQ;IACxBC,QAAQ,EAAE;EACX,CAAC;EAED;AACF;AACA;EACEC,WAAW,EAAE;IACZC,SAAS,EAAE;EACZ,CAAC;EAEDC,GAAG,WAAHA,GAAGA,CAAA,EAAG;IACL,IAAI,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAACC,IAAI,EAAE;MAChC,OAAOb,eAAS,CAACc,SAAS,CAACH,GAAG,CAACI,IAAI,CAAC,IAAI,CAAC;IAC1C;IACA,UAAAC,MAAA,CAAU,IAAI,CAACC,OAAO,CAAC,CAAC;EACzB;AACD,CACD,CAAC;AAED,IAAAC,uBAAQ,EAAC,WAAW,EAAEpB,SAAS,CAAC","ignoreList":[]}
@@ -6,7 +6,7 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
6
6
  var _api = require("sp-test/api");
7
7
  it("should remove large base64 strings from context when saving", /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
8
8
  var SnapshotModel, smallBase64, largeBase64, snapshot;
9
- return _regenerator.default.wrap(function _callee$(_context) {
9
+ return _regenerator.default.wrap(function (_context) {
10
10
  while (1) switch (_context.prev = _context.next) {
11
11
  case 0:
12
12
  SnapshotModel = (0, _api.G)("SnapshotModel");
@@ -35,7 +35,7 @@ it("should remove large base64 strings from context when saving", /*#__PURE__*/(
35
35
  arr: [smallBase64, "", 1, "foo"]
36
36
  }
37
37
  });
38
- case 5:
38
+ case 1:
39
39
  case "end":
40
40
  return _context.stop();
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.spec.js","names":["_api","require","it","_asyncToGenerator2","default","_regenerator","mark","_callee","SnapshotModel","smallBase64","largeBase64","snapshot","wrap","_callee$","_context","prev","next","G","Array","fill","join","context","number","nested","skip","normal","small","large","arr","expect","JSON","parse","toServer","toEqual","stop"],"sources":["../../src/models/snapshot.spec.js"],"sourcesContent":["import { G } from \"sp-test/api\";\n\nit(\"should remove large base64 strings from context when saving\", async () => {\n\tconst SnapshotModel = G(\"SnapshotModel\");\n\tconst smallBase64 = \"data:image/gif;base64,abcdefghhikl\";\n\tconst largeBase64 = smallBase64 + new Array(50_000).fill(\"a\").join(\"\");\n\n\tconst snapshot = new SnapshotModel({\n\t\tcontext: {\n\t\t\tnumber: 1,\n\t\t\tnested: {\n\t\t\t\tskip: null,\n\t\t\t\tnormal: \"hello\",\n\t\t\t\tsmall: smallBase64,\n\t\t\t\tlarge: largeBase64,\n\t\t\t\tarr: [smallBase64, largeBase64, 1, \"foo\"],\n\t\t\t},\n\t\t},\n\t});\n\n\texpect(JSON.parse(snapshot.toServer().context)).toEqual({\n\t\tnumber: 1,\n\t\tnested: {\n\t\t\tskip: null,\n\t\t\tnormal: \"hello\",\n\t\t\tsmall: smallBase64, // Small ones are ok\n\t\t\tlarge: \"\",\n\t\t\tarr: [smallBase64, \"\", 1, \"foo\"],\n\t\t},\n\t});\n});\n"],"mappings":";;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEAC,EAAE,CAAC,6DAA6D,mBAAAC,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAA;EAAA,IAAAC,aAAA,EAAAC,WAAA,EAAAC,WAAA,EAAAC,QAAA;EAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;IAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;MAAA;QAC3DR,aAAa,GAAG,IAAAS,MAAC,EAAC,eAAe,CAAC;QAClCR,WAAW,GAAG,oCAAoC;QAClDC,WAAW,GAAGD,WAAW,GAAG,IAAIS,KAAK,CAAC,KAAM,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;QAEhET,QAAQ,GAAG,IAAIH,aAAa,CAAC;UAClCa,OAAO,EAAE;YACRC,MAAM,EAAE,CAAC;YACTC,MAAM,EAAE;cACPC,IAAI,EAAE,IAAI;cACVC,MAAM,EAAE,OAAO;cACfC,KAAK,EAAEjB,WAAW;cAClBkB,KAAK,EAAEjB,WAAW;cAClBkB,GAAG,EAAE,CAACnB,WAAW,EAAEC,WAAW,EAAE,CAAC,EAAE,KAAK;YACzC;UACD;QACD,CAAC,CAAC;QAEFmB,MAAM,CAACC,IAAI,CAACC,KAAK,CAACpB,QAAQ,CAACqB,QAAQ,CAAC,CAAC,CAACX,OAAO,CAAC,CAAC,CAACY,OAAO,CAAC;UACvDX,MAAM,EAAE,CAAC;UACTC,MAAM,EAAE;YACPC,IAAI,EAAE,IAAI;YACVC,MAAM,EAAE,OAAO;YACfC,KAAK,EAAEjB,WAAW;YAAE;YACpBkB,KAAK,EAAE,EAAE;YACTC,GAAG,EAAE,CAACnB,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK;UAChC;QACD,CAAC,CAAC;MAAC;MAAA;QAAA,OAAAK,QAAA,CAAAoB,IAAA;IAAA;EAAA,GAAA3B,OAAA;AAAA,CACH,GAAC","ignoreList":[]}
1
+ {"version":3,"file":"snapshot.spec.js","names":["_api","require","it","_asyncToGenerator2","default","_regenerator","mark","_callee","SnapshotModel","smallBase64","largeBase64","snapshot","wrap","_context","prev","next","G","Array","fill","join","context","number","nested","skip","normal","small","large","arr","expect","JSON","parse","toServer","toEqual","stop"],"sources":["../../src/models/snapshot.spec.js"],"sourcesContent":["import { G } from \"sp-test/api\";\n\nit(\"should remove large base64 strings from context when saving\", async () => {\n\tconst SnapshotModel = G(\"SnapshotModel\");\n\tconst smallBase64 = \"data:image/gif;base64,abcdefghhikl\";\n\tconst largeBase64 = smallBase64 + new Array(50_000).fill(\"a\").join(\"\");\n\n\tconst snapshot = new SnapshotModel({\n\t\tcontext: {\n\t\t\tnumber: 1,\n\t\t\tnested: {\n\t\t\t\tskip: null,\n\t\t\t\tnormal: \"hello\",\n\t\t\t\tsmall: smallBase64,\n\t\t\t\tlarge: largeBase64,\n\t\t\t\tarr: [smallBase64, largeBase64, 1, \"foo\"],\n\t\t\t},\n\t\t},\n\t});\n\n\texpect(JSON.parse(snapshot.toServer().context)).toEqual({\n\t\tnumber: 1,\n\t\tnested: {\n\t\t\tskip: null,\n\t\t\tnormal: \"hello\",\n\t\t\tsmall: smallBase64, // Small ones are ok\n\t\t\tlarge: \"\",\n\t\t\tarr: [smallBase64, \"\", 1, \"foo\"],\n\t\t},\n\t});\n});\n"],"mappings":";;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAEAC,EAAE,CAAC,6DAA6D,mBAAAC,kBAAA,CAAAC,OAAA,eAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAA;EAAA,IAAAC,aAAA,EAAAC,WAAA,EAAAC,WAAA,EAAAC,QAAA;EAAA,OAAAN,YAAA,CAAAD,OAAA,CAAAQ,IAAA,WAAAC,QAAA;IAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;MAAA;QAC3DP,aAAa,GAAG,IAAAQ,MAAC,EAAC,eAAe,CAAC;QAClCP,WAAW,GAAG,oCAAoC;QAClDC,WAAW,GAAGD,WAAW,GAAG,IAAIQ,KAAK,CAAC,KAAM,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;QAEhER,QAAQ,GAAG,IAAIH,aAAa,CAAC;UAClCY,OAAO,EAAE;YACRC,MAAM,EAAE,CAAC;YACTC,MAAM,EAAE;cACPC,IAAI,EAAE,IAAI;cACVC,MAAM,EAAE,OAAO;cACfC,KAAK,EAAEhB,WAAW;cAClBiB,KAAK,EAAEhB,WAAW;cAClBiB,GAAG,EAAE,CAAClB,WAAW,EAAEC,WAAW,EAAE,CAAC,EAAE,KAAK;YACzC;UACD;QACD,CAAC,CAAC;QAEFkB,MAAM,CAACC,IAAI,CAACC,KAAK,CAACnB,QAAQ,CAACoB,QAAQ,CAAC,CAAC,CAACX,OAAO,CAAC,CAAC,CAACY,OAAO,CAAC;UACvDX,MAAM,EAAE,CAAC;UACTC,MAAM,EAAE;YACPC,IAAI,EAAE,IAAI;YACVC,MAAM,EAAE,OAAO;YACfC,KAAK,EAAEhB,WAAW;YAAE;YACpBiB,KAAK,EAAE,EAAE;YACTC,GAAG,EAAE,CAAClB,WAAW,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK;UAChC;QACD,CAAC,CAAC;MAAC;MAAA;QAAA,OAAAI,QAAA,CAAAoB,IAAA;IAAA;EAAA,GAAA1B,OAAA;AAAA,CACH,GAAC","ignoreList":[]}
@@ -76,20 +76,20 @@ var TemplateModel = exports.TemplateModel = _base.BaseModel.extend(/** @lends mo
76
76
  var _this = this;
77
77
  return (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
78
78
  var formData, image, _i, _arr, field, _i2, _arr2, _field, cmsvalkeys, context;
79
- return _regenerator.default.wrap(function _callee$(_context) {
79
+ return _regenerator.default.wrap(function (_context) {
80
80
  while (1) switch (_context.prev = _context.next) {
81
81
  case 0:
82
82
  formData = new FormData();
83
83
  if (!_this.image_original) {
84
- _context.next = 6;
84
+ _context.next = 2;
85
85
  break;
86
86
  }
87
- _context.next = 4;
87
+ _context.next = 1;
88
88
  return _superagentBluebirdPromise.default.get(_this.image_original).responseType("blob");
89
- case 4:
89
+ case 1:
90
90
  image = _context.sent;
91
91
  formData.append("image_original", image.body, "image.png");
92
- case 6:
92
+ case 2:
93
93
  for (_i = 0, _arr = ["title", "key", "scope", "sequence"]; _i < _arr.length; _i++) {
94
94
  field = _arr[_i];
95
95
  if (_this[field]) {
@@ -107,24 +107,24 @@ var TemplateModel = exports.TemplateModel = _base.BaseModel.extend(/** @lends mo
107
107
  // is in the next request.
108
108
  cmsvalkeys = _this.cmsvalkey_set;
109
109
  context = _this.context;
110
- _context.next = 12;
110
+ _context.next = 3;
111
111
  return _superagentBluebirdPromise.default.post(_this.url()).send(formData).set(_auth.Auth.headers).then(function (response) {
112
112
  Object.keys(response.body).forEach(function (key) {
113
113
  _this.set(key, response.body[key]);
114
114
  });
115
115
  return response;
116
116
  });
117
- case 12:
118
- _context.next = 14;
117
+ case 3:
118
+ _context.next = 4;
119
119
  return _this.save({
120
120
  cmsvalkey_set: cmsvalkeys,
121
121
  context: context
122
122
  }, {
123
123
  patch: true
124
124
  });
125
- case 14:
125
+ case 4:
126
126
  return _context.abrupt("return", _context.sent);
127
- case 15:
127
+ case 5:
128
128
  case "end":
129
129
  return _context.stop();
130
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","names":["require","_auth","_base","_superagentBluebirdPromise","_interopRequireDefault","_stateRegister","TemplateModel","exports","BaseModel","extend","modelName","props","created_date","modified_date","namespaced_key","title","key","scope","type","default","values","sequence","context","image_original","image_128","image_256","image_512","cmsvalkey_set","available_in_presos","children","index_asset","deckversion","original_template","saveWithImage","_this","_asyncToGenerator2","_regenerator","mark","_callee","formData","image","_i","_arr","field","_i2","_arr2","_field","cmsvalkeys","wrap","_callee$","_context","prev","next","FormData","SuperAgentRequest","get","responseType","sent","append","body","length","url","post","send","set","Auth","headers","then","response","Object","keys","forEach","save","patch","abrupt","stop","register"],"sources":["../../src/models/template.js"],"sourcesContent":["import \"./deck-version.js\";\nimport \"./asset.js\";\n\nimport { Auth } from \"../auth.js\";\nimport { BaseModel } from \"./base.js\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TemplateModel\n * @extends models.BaseModel\n */\nexport const TemplateModel = BaseModel.extend(\n\t/** @lends models.TemplateModel# */ {\n\t\tmodelName: \"templates\",\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t * @property {string} namespaced_key\n\t\t * @property {string} title\n\t\t * @property {string} key\n\t\t * @property {scope} scope\n\t\t * @property {number} sequence\n\t\t * @property {object} context\n\t\t * @property {string} image_original\n\t\t * @property {string} image_128\n\t\t * @property {string} image_256\n\t\t * @property {string} image_512\n\t\t * @property {string[]} cmsvalkey_set\n\t\t * @property {boolean} available_in_presos\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnamespaced_key: \"string\",\n\t\t\ttitle: \"string\",\n\t\t\tkey: \"string\",\n\t\t\tscope: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: \"global\",\n\t\t\t\tvalues: [\"global\", \"team\", \"user\"],\n\t\t\t},\n\t\t\tsequence: \"number\",\n\t\t\tcontext: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: () => {},\n\t\t\t},\n\t\t\timage_original: \"string\",\n\t\t\timage_128: \"string\",\n\t\t\timage_256: \"string\",\n\t\t\timage_512: \"string\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t\tavailable_in_presos: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: true,\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AssetModel} index_asset\n\t\t * @property {models.DeckVersionModel} deckversion\n\t\t * @property {models.Template} original_template\n\t\t */\n\t\tchildren: {\n\t\t\tindex_asset: \"AssetModel\",\n\t\t\tdeckversion: \"DeckVersionModel\",\n\t\t\toriginal_template: \"TemplateModel\",\n\t\t},\n\n\t\tasync saveWithImage() {\n\t\t\tconst formData = new FormData();\n\n\t\t\tif (this.image_original) {\n\t\t\t\tconst image = await SuperAgentRequest.get(\n\t\t\t\t\tthis.image_original,\n\t\t\t\t).responseType(\"blob\");\n\n\t\t\t\tformData.append(\"image_original\", image.body, \"image.png\");\n\t\t\t}\n\n\t\t\tfor (const field of [\"title\", \"key\", \"scope\", \"sequence\"]) {\n\t\t\t\tif (this[field]) {\n\t\t\t\t\tformData.append(field, this[field]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const field of [\"original_template\", \"deckversion\"]) {\n\t\t\t\tif (this[field]) {\n\t\t\t\t\tformData.append(field, this[field].url());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set these here, because after the save these will be set to whatever the return value\n\t\t\t// is in the next request.\n\t\t\tconst cmsvalkeys = this.cmsvalkey_set;\n\t\t\tconst context = this.context;\n\n\t\t\tawait SuperAgentRequest.post(this.url())\n\t\t\t\t.send(formData)\n\t\t\t\t.set(Auth.headers)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tObject.keys(response.body).forEach((key) => {\n\t\t\t\t\t\tthis.set(key, response.body[key]);\n\t\t\t\t\t});\n\t\t\t\t\treturn response;\n\t\t\t\t});\n\n\t\t\t// HACK: Can't send an array (or can't figure out how to do it!) to django,\n\t\t\t// so we send it in a seperate patch.\n\t\t\treturn await this.save(\n\t\t\t\t{\n\t\t\t\t\tcmsvalkey_set: cmsvalkeys,\n\t\t\t\t\tcontext,\n\t\t\t\t},\n\t\t\t\t{ patch: true },\n\t\t\t);\n\t\t},\n\t},\n);\n\nregister(\"TemplateModel\", TemplateModel);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"template.js","names":["require","_auth","_base","_superagentBluebirdPromise","_interopRequireDefault","_stateRegister","TemplateModel","exports","BaseModel","extend","modelName","props","created_date","modified_date","namespaced_key","title","key","scope","type","default","values","sequence","context","image_original","image_128","image_256","image_512","cmsvalkey_set","available_in_presos","children","index_asset","deckversion","original_template","saveWithImage","_this","_asyncToGenerator2","_regenerator","mark","_callee","formData","image","_i","_arr","field","_i2","_arr2","_field","cmsvalkeys","wrap","_context","prev","next","FormData","SuperAgentRequest","get","responseType","sent","append","body","length","url","post","send","set","Auth","headers","then","response","Object","keys","forEach","save","patch","abrupt","stop","register"],"sources":["../../src/models/template.js"],"sourcesContent":["import \"./deck-version.js\";\nimport \"./asset.js\";\n\nimport { Auth } from \"../auth.js\";\nimport { BaseModel } from \"./base.js\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport { register } from \"../state-register.js\";\n\n/**\n * @constructor\n * @alias models.TemplateModel\n * @extends models.BaseModel\n */\nexport const TemplateModel = BaseModel.extend(\n\t/** @lends models.TemplateModel# */ {\n\t\tmodelName: \"templates\",\n\n\t\t/**\n\t\t * @property {date} created_date\n\t\t * @property {date} modified_date\n\t\t * @property {string} namespaced_key\n\t\t * @property {string} title\n\t\t * @property {string} key\n\t\t * @property {scope} scope\n\t\t * @property {number} sequence\n\t\t * @property {object} context\n\t\t * @property {string} image_original\n\t\t * @property {string} image_128\n\t\t * @property {string} image_256\n\t\t * @property {string} image_512\n\t\t * @property {string[]} cmsvalkey_set\n\t\t * @property {boolean} available_in_presos\n\t\t */\n\t\tprops: {\n\t\t\tcreated_date: \"date\",\n\t\t\tmodified_date: \"date\",\n\t\t\tnamespaced_key: \"string\",\n\t\t\ttitle: \"string\",\n\t\t\tkey: \"string\",\n\t\t\tscope: {\n\t\t\t\ttype: \"string\",\n\t\t\t\tdefault: \"global\",\n\t\t\t\tvalues: [\"global\", \"team\", \"user\"],\n\t\t\t},\n\t\t\tsequence: \"number\",\n\t\t\tcontext: {\n\t\t\t\ttype: \"object\",\n\t\t\t\tdefault: () => {},\n\t\t\t},\n\t\t\timage_original: \"string\",\n\t\t\timage_128: \"string\",\n\t\t\timage_256: \"string\",\n\t\t\timage_512: \"string\",\n\t\t\tcmsvalkey_set: \"array\",\n\t\t\tavailable_in_presos: {\n\t\t\t\ttype: \"boolean\",\n\t\t\t\tdefault: true,\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * @property {models.AssetModel} index_asset\n\t\t * @property {models.DeckVersionModel} deckversion\n\t\t * @property {models.Template} original_template\n\t\t */\n\t\tchildren: {\n\t\t\tindex_asset: \"AssetModel\",\n\t\t\tdeckversion: \"DeckVersionModel\",\n\t\t\toriginal_template: \"TemplateModel\",\n\t\t},\n\n\t\tasync saveWithImage() {\n\t\t\tconst formData = new FormData();\n\n\t\t\tif (this.image_original) {\n\t\t\t\tconst image = await SuperAgentRequest.get(\n\t\t\t\t\tthis.image_original,\n\t\t\t\t).responseType(\"blob\");\n\n\t\t\t\tformData.append(\"image_original\", image.body, \"image.png\");\n\t\t\t}\n\n\t\t\tfor (const field of [\"title\", \"key\", \"scope\", \"sequence\"]) {\n\t\t\t\tif (this[field]) {\n\t\t\t\t\tformData.append(field, this[field]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const field of [\"original_template\", \"deckversion\"]) {\n\t\t\t\tif (this[field]) {\n\t\t\t\t\tformData.append(field, this[field].url());\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set these here, because after the save these will be set to whatever the return value\n\t\t\t// is in the next request.\n\t\t\tconst cmsvalkeys = this.cmsvalkey_set;\n\t\t\tconst context = this.context;\n\n\t\t\tawait SuperAgentRequest.post(this.url())\n\t\t\t\t.send(formData)\n\t\t\t\t.set(Auth.headers)\n\t\t\t\t.then((response) => {\n\t\t\t\t\tObject.keys(response.body).forEach((key) => {\n\t\t\t\t\t\tthis.set(key, response.body[key]);\n\t\t\t\t\t});\n\t\t\t\t\treturn response;\n\t\t\t\t});\n\n\t\t\t// HACK: Can't send an array (or can't figure out how to do it!) to django,\n\t\t\t// so we send it in a seperate patch.\n\t\t\treturn await this.save(\n\t\t\t\t{\n\t\t\t\t\tcmsvalkey_set: cmsvalkeys,\n\t\t\t\t\tcontext,\n\t\t\t\t},\n\t\t\t\t{ patch: true },\n\t\t\t);\n\t\t},\n\t},\n);\n\nregister(\"TemplateModel\", TemplateModel);\n"],"mappings":"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","ignoreList":[]}
@@ -11,14 +11,11 @@ require("./hosted-preso.js");
11
11
  require("./user.js");
12
12
  require("../collections/users.js");
13
13
  var _utils = require("../utils.js");
14
- var _auth = require("../auth.js");
15
14
  var _base = require("./base.js");
16
- var _lodash = _interopRequireDefault(require("lodash"));
17
15
  var _dedentJs = _interopRequireDefault(require("dedent-js"));
18
16
  var _log = _interopRequireDefault(require("../log.js"));
19
17
  var _moment = _interopRequireDefault(require("moment"));
20
18
  var _stateRegister = require("../state-register.js");
21
- var _superagent = _interopRequireDefault(require("superagent"));
22
19
  var _templateObject, _templateObject2;
23
20
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
24
21
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
@@ -121,6 +118,16 @@ var TimingLogModel = exports.TimingLogModel = _base.BaseModel.extend(/** @lends
121
118
  attendee_set: "UserCollection",
122
119
  remote_attendee_set: "UserCollection"
123
120
  },
121
+ ajaxConfig: function ajaxConfig() {
122
+ return {
123
+ headers: {
124
+ "content-type": "application/vnd.salespreso+timinglog"
125
+ }
126
+ };
127
+ },
128
+ toServer: function toServer() {
129
+ return this.toCompactFormat();
130
+ },
124
131
  /**
125
132
  * Returns the current timing log model in expected compact format.
126
133
  * @see http://doc.dev.salespreso.com/api/tracking.html#compact-representation
@@ -191,7 +198,8 @@ var TimingLogModel = exports.TimingLogModel = _base.BaseModel.extend(/** @lends
191
198
  * timingLog.addEvent("http://client.salespreso.com/api/sections/28/", moment());
192
199
  * timingLog.addEvent("http://client.salespreso.com/api/slides/100/", "2016-10-27T00:42:47.045186Z");
193
200
  */
194
- addEvent: function addEvent(path, timestamp) {
201
+ addEvent: function addEvent(_path, timestamp) {
202
+ var path = _path;
195
203
  if (!path) {
196
204
  throw new Error("A path is required");
197
205
  }
@@ -260,26 +268,18 @@ var TimingLogModel = exports.TimingLogModel = _base.BaseModel.extend(/** @lends
260
268
  });
261
269
  },
262
270
  save: function save(data, options) {
263
- var _this2 = this;
264
271
  if (!this.events.length) {
265
272
  return Promise.resolve(this.toJSON());
266
273
  }
267
- if (options && options.patch) {
268
- return _base.BaseModel.prototype.save.call(this, data, options);
269
- }
270
274
  this.checkEventsAscending();
271
- var method = this.isNew() ? "post" : "put";
272
- return _superagent.default[method](this.url()).set(_auth.Auth.headers).type("application/vnd.salespreso+timinglog").send(this.toCompactFormat()).then(function (_ref3) {
273
- var body = _ref3.body;
274
- _this2.set(_lodash.default.omit(body, ["events"]));
275
- return body;
276
- }).catch(_superagent.default.SuperagentPromiseError, function (e) {
277
- if (e.status === 405 && e.res.body.detail.indexOf("end") > -1) {
278
- // Don't send timing log events if the tracking is ended.
275
+ return _base.BaseModel.prototype.save.call(this, data, options).catch(function (e) {
276
+ var _e$response, _e$response$body, _e$response$body$deta;
277
+ if (e.status === 405 && ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$body = _e$response.body) === null || _e$response$body === void 0 ? void 0 : (_e$response$body$deta = _e$response$body.detail) === null || _e$response$body$deta === void 0 ? void 0 : _e$response$body$deta.indexOf("end")) > -1) {
279
278
  throw e;
280
279
  }
281
280
  if (e.status >= 400 && e.status <= 499 || e.status === 503) {
282
- e.message += "\nBody: ".concat(JSON.stringify(e.res.body));
281
+ var _e$response2;
282
+ e.message += "\nBody: ".concat(JSON.stringify((_e$response2 = e.response) === null || _e$response2 === void 0 ? void 0 : _e$response2.body));
283
283
  }
284
284
  throw e;
285
285
  });
@@ -1 +1 @@
1
- {"version":3,"file":"timing-log.js","names":["require","_utils","_auth","_base","_lodash","_interopRequireDefault","_dedentJs","_log","_moment","_stateRegister","_superagent","_templateObject","_templateObject2","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","TimingLogModel","exports","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","_this","getShortURL","url","moment","utc","format","DATE_FORMAT","startIndex","i","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","err","_ref2","log","warn","sort","event1","event2","save","data","options","_this2","Promise","resolve","toJSON","patch","prototype","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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","ignoreList":[]}
1
+ {"version":3,"file":"timing-log.js","names":["require","_utils","_base","_dedentJs","_interopRequireDefault","_log","_moment","_stateRegister","_templateObject","_templateObject2","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","TimingLogModel","exports","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","ajaxConfig","headers","toServer","toCompactFormat","_this","getShortURL","url","moment","utc","format","DATE_FORMAT","startIndex","i","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","_path","Error","time","push","DATE_FORMAT_T","checkEventsAscending","lastDate","sortEvents","_iterator","_step","event","isAfter","err","_ref2","log","warn","sort","event1","event2","save","data","options","Promise","resolve","toJSON","prototype","catch","_e$response","_e$response$body","_e$response$body$deta","status","response","body","detail","indexOf","_e$response2","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 { BaseModel } from \"./base.js\";\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\";\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\tajaxConfig() {\n\t\t\treturn {\n\t\t\t\theaders: {\n\t\t\t\t\t\"content-type\": \"application/vnd.salespreso+timinglog\",\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\n\t\ttoServer() {\n\t\t\treturn this.toCompactFormat();\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\tlet path = _path;\n\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\tthis.checkEventsAscending();\n\n\t\t\treturn BaseModel.prototype.save.call(this, data, options).catch((e) => {\n\t\t\t\tif (e.status === 405 && e.response?.body?.detail?.indexOf(\"end\") > -1) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\tif ((e.status >= 400 && e.status <= 499) || e.status === 503) {\n\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.response?.body)}`;\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t});\n\t\t},\n\t},\n);\n\nregister(\"TimingLogModel\", TimingLogModel);\n"],"mappings":"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","ignoreList":[]}
@@ -56,7 +56,7 @@ describe("TimingLogModel", function () {
56
56
  describe.each([[undefined, "viewing"], ["present", "viewing"], ["view", "viewing"], ["prep", "preparing"], ["review", "reviewing"]])("{ mode: \"%s\" }", function (mode, modeType) {
57
57
  it("should show '".concat(modeType, "' when mode is ").concat(mode), /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
58
58
  var TimingLogModel, timingLog, actual, expected;
59
- return _regenerator.default.wrap(function _callee$(_context) {
59
+ return _regenerator.default.wrap(function (_context) {
60
60
  while (1) switch (_context.prev = _context.next) {
61
61
  case 0:
62
62
  TimingLogModel = (0, _api.G)("TimingLogModel");
@@ -76,7 +76,7 @@ describe("TimingLogModel", function () {
76
76
  actual = timingLog.toCompactFormat();
77
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
78
  expect(actual).toEqual(expected);
79
- case 6:
79
+ case 1:
80
80
  case "end":
81
81
  return _context.stop();
82
82
  }
@@ -1 +1 @@
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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","ignoreList":[]}
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","_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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","ignoreList":[]}