@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
@@ -40,16 +40,16 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
40
40
  return deckversion.fetch().then(function () {
41
41
  return _bluebird.default.all([deckversion.manifest_json.fetch(), deckversion.deck.fetch()]);
42
42
  }).then(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee() {
43
- var templates, _iterator, _step, _loop;
44
- return _regenerator.default.wrap(function _callee$(_context2) {
43
+ var templates, _iterator, _step, _loop, _t;
44
+ return _regenerator.default.wrap(function (_context2) {
45
45
  while (1) switch (_context2.prev = _context2.next) {
46
46
  case 0:
47
47
  templates = (0, _toConsumableArray2.default)(deckversion.template_set.models);
48
48
  _iterator = _createForOfIteratorHelper(opts.autoAdjuncts.models);
49
- _context2.prev = 2;
49
+ _context2.prev = 1;
50
50
  _loop = /*#__PURE__*/_regenerator.default.mark(function _loop() {
51
51
  var auto, dvTemplate;
52
- return _regenerator.default.wrap(function _loop$(_context) {
52
+ return _regenerator.default.wrap(function (_context) {
53
53
  while (1) switch (_context.prev = _context.next) {
54
54
  case 0:
55
55
  auto = _step.value;
@@ -57,49 +57,49 @@ Presentation.createFromDeckversion = function (deckversionURL, options) {
57
57
  return t.url() === auto.template.url();
58
58
  });
59
59
  if (!dvTemplate) {
60
- _context.next = 6;
60
+ _context.next = 1;
61
61
  break;
62
62
  }
63
63
  auto.template = dvTemplate;
64
- _context.next = 9;
64
+ _context.next = 3;
65
65
  break;
66
- case 6:
67
- _context.next = 8;
66
+ case 1:
67
+ _context.next = 2;
68
68
  return auto.template.fetch();
69
- case 8:
69
+ case 2:
70
70
  templates.push(auto.template);
71
- case 9:
71
+ case 3:
72
72
  case "end":
73
73
  return _context.stop();
74
74
  }
75
75
  }, _loop);
76
76
  });
77
77
  _iterator.s();
78
- case 5:
78
+ case 2:
79
79
  if ((_step = _iterator.n()).done) {
80
- _context2.next = 9;
80
+ _context2.next = 4;
81
81
  break;
82
82
  }
83
- return _context2.delegateYield(_loop(), "t0", 7);
84
- case 7:
85
- _context2.next = 5;
83
+ return _context2.delegateYield(_loop(), "t0", 3);
84
+ case 3:
85
+ _context2.next = 2;
86
86
  break;
87
- case 9:
88
- _context2.next = 14;
87
+ case 4:
88
+ _context2.next = 6;
89
89
  break;
90
- case 11:
91
- _context2.prev = 11;
92
- _context2.t1 = _context2["catch"](2);
93
- _iterator.e(_context2.t1);
94
- case 14:
95
- _context2.prev = 14;
90
+ case 5:
91
+ _context2.prev = 5;
92
+ _t = _context2["catch"](1);
93
+ _iterator.e(_t);
94
+ case 6:
95
+ _context2.prev = 6;
96
96
  _iterator.f();
97
- return _context2.finish(14);
98
- case 17:
97
+ return _context2.finish(6);
98
+ case 7:
99
99
  case "end":
100
100
  return _context2.stop();
101
101
  }
102
- }, _callee, null, [[2, 11, 14, 17]]);
102
+ }, _callee, null, [[1, 5, 6, 7]]);
103
103
  }))).then(function () {
104
104
  return deckversion.deck.tags.fetch();
105
105
  }).then(function () {
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.js","names":["require","_models","_autoAdjuncts","_basePresentationModel","_presentationDeck","_bluebird","_interopRequireDefault","_lodash","_log","_stateRegister","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","_n","F","s","n","done","value","f","TypeError","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","Presentation","exports","BasePresentationModel","extend","collections","decks","createFromDeckversion","deckversionURL","options","deckversion","DeckVersionModel","opts","_","defaults","includeTemplates","choicelist","autoAdjuncts","AutoAdjunctCollection","fetch","then","Promise","all","manifest_json","deck","_asyncToGenerator2","_regenerator","mark","_callee","templates","_iterator","_step","_loop","wrap","_callee$","_context2","prev","_toConsumableArray2","template_set","models","auto","dvTemplate","_loop$","_context","find","url","template","stop","delegateYield","t1","finish","tags","deckTags","items","reduce","tagObj","tagItem","namespaced_key","presentation","otherOpts","_objectWithoutProperties2","toJSON","add","PresentationDeck","createFromDeckVersion","catch","log","error","createFromManifestJSON","manifestJSON","project","manifestModel","ManifestJSONModel","_url","register"],"sources":["../../src/presentation/presentation.js"],"sourcesContent":["import \"./presentation-decks.js\";\n\nimport { DeckVersionModel, ManifestJSONModel } from \"../models.js\";\n\nimport { AutoAdjunctCollection } from \"../collections/auto-adjuncts.js\";\nimport { BasePresentationModel } from \"./base-presentation-model.js\";\nimport { PresentationDeck } from \"./presentation-deck.js\";\nimport Promise from \"bluebird\";\nimport _ from \"lodash\";\nimport log from \"../log.js\";\nimport { register } from \"../state-register.js\";\n\nexport const Presentation = BasePresentationModel.extend({\n\tcollections: {\n\t\tdecks: \"PresentationDeckCollection\",\n\t},\n});\n\nPresentation.createFromDeckversion = function (deckversionURL, options) {\n\tconst deckversion = new DeckVersionModel(deckversionURL);\n\tconst opts = _.defaults(options, {\n\t\tincludeTemplates: false,\n\t\tchoicelist: null,\n\t\tautoAdjuncts: new AutoAdjunctCollection(),\n\t});\n\n\treturn deckversion\n\t\t.fetch()\n\t\t.then(() => {\n\t\t\treturn Promise.all([\n\t\t\t\tdeckversion.manifest_json.fetch(),\n\t\t\t\tdeckversion.deck.fetch(),\n\t\t\t]);\n\t\t})\n\t\t.then(async () => {\n\t\t\tconst templates = [...deckversion.template_set.models];\n\n\t\t\tfor (const auto of opts.autoAdjuncts.models) {\n\t\t\t\tconst dvTemplate = templates.find(\n\t\t\t\t\t(t) => t.url() === auto.template.url(),\n\t\t\t\t);\n\t\t\t\tif (dvTemplate) {\n\t\t\t\t\tauto.template = dvTemplate;\n\t\t\t\t} else {\n\t\t\t\t\tawait auto.template.fetch();\n\t\t\t\t\ttemplates.push(auto.template);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\treturn deckversion.deck.tags.fetch();\n\t\t})\n\t\t.then(() => {\n\t\t\tconst deckTags = deckversion.deck.tags.items.reduce((tagObj, tagItem) => {\n\t\t\t\ttagObj[tagItem.namespaced_key] = tagItem.tags;\n\t\t\t\treturn tagObj;\n\t\t\t}, {});\n\n\t\t\tconst presentation = new Presentation();\n\n\t\t\tconst { includeTemplates, ...otherOpts } = opts;\n\n\t\t\tif (includeTemplates) {\n\t\t\t\totherOpts.templates = deckversion.template_set.toJSON();\n\t\t\t}\n\n\t\t\tpresentation.decks.add([\n\t\t\t\tPresentationDeck.createFromDeckVersion(deckversion, {\n\t\t\t\t\t...otherOpts,\n\t\t\t\t\tdeckTags,\n\t\t\t\t}),\n\t\t\t]);\n\n\t\t\treturn presentation;\n\t\t})\n\t\t.catch((e) => {\n\t\t\tlog.error(e);\n\t\t\tthrow e;\n\t\t});\n};\n\nPresentation.createFromManifestJSON = function (manifestJSON, project, url) {\n\tconst manifestModel = new ManifestJSONModel(manifestJSON.toJSON());\n\n\t// Let's use the model to transport the base url for the deck assets\n\tmanifestModel._url = url;\n\n\tconst deck = PresentationDeck.createFromManifestJSON(manifestModel, project);\n\tconst presentation = new Presentation();\n\tpresentation.decks.add(deck);\n\treturn presentation;\n};\n\nregister(\"Presentation\", Presentation);\n"],"mappings":";;;;;;;;;;;;AAAAA,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,sBAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,OAAA,GAAAD,sBAAA,CAAAN,OAAA;AACA,IAAAQ,IAAA,GAAAF,sBAAA,CAAAN,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA;AAAgD,IAAAU,SAAA;AAAA,SAAAC,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAnB,CAAA,EAAAG,MAAA,CAAAe,yBAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAiB,cAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAqB,2BAAApB,CAAA,EAAAD,CAAA,QAAAE,CAAA,yBAAAoB,MAAA,IAAArB,CAAA,CAAAqB,MAAA,CAAAC,QAAA,KAAAtB,CAAA,qBAAAC,CAAA,QAAAsB,KAAA,CAAAC,OAAA,CAAAxB,CAAA,MAAAC,CAAA,GAAAwB,2BAAA,CAAAzB,CAAA,MAAAD,CAAA,IAAAC,CAAA,uBAAAA,CAAA,CAAAa,MAAA,IAAAZ,CAAA,KAAAD,CAAA,GAAAC,CAAA,OAAAyB,EAAA,MAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,WAAAH,EAAA,IAAA1B,CAAA,CAAAa,MAAA,KAAAiB,IAAA,WAAAA,IAAA,MAAAC,KAAA,EAAA/B,CAAA,CAAA0B,EAAA,UAAA3B,CAAA,WAAAA,EAAAC,CAAA,UAAAA,CAAA,KAAAgC,CAAA,EAAAL,CAAA,gBAAAM,SAAA,iJAAA5B,CAAA,EAAA6B,CAAA,OAAAC,CAAA,gBAAAP,CAAA,WAAAA,EAAA,IAAA3B,CAAA,GAAAA,CAAA,CAAAmC,IAAA,CAAApC,CAAA,MAAA6B,CAAA,WAAAA,EAAA,QAAA7B,CAAA,GAAAC,CAAA,CAAAoC,IAAA,WAAAH,CAAA,GAAAlC,CAAA,CAAA8B,IAAA,EAAA9B,CAAA,KAAAD,CAAA,WAAAA,EAAAC,CAAA,IAAAmC,CAAA,OAAA9B,CAAA,GAAAL,CAAA,KAAAgC,CAAA,WAAAA,EAAA,UAAAE,CAAA,YAAAjC,CAAA,CAAAqC,MAAA,IAAArC,CAAA,CAAAqC,MAAA,oBAAAH,CAAA,QAAA9B,CAAA;AAAA,SAAAoB,4BAAAzB,CAAA,EAAAkC,CAAA,QAAAlC,CAAA,2BAAAA,CAAA,SAAAuC,iBAAA,CAAAvC,CAAA,EAAAkC,CAAA,OAAAjC,CAAA,MAAAuC,QAAA,CAAAJ,IAAA,CAAApC,CAAA,EAAAyC,KAAA,6BAAAxC,CAAA,IAAAD,CAAA,CAAA0C,WAAA,KAAAzC,CAAA,GAAAD,CAAA,CAAA0C,WAAA,CAAAC,IAAA,aAAA1C,CAAA,cAAAA,CAAA,GAAAsB,KAAA,CAAAqB,IAAA,CAAA5C,CAAA,oBAAAC,CAAA,+CAAA4C,IAAA,CAAA5C,CAAA,IAAAsC,iBAAA,CAAAvC,CAAA,EAAAkC,CAAA;AAAA,SAAAK,kBAAAvC,CAAA,EAAAkC,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAAlC,CAAA,CAAAa,MAAA,MAAAqB,CAAA,GAAAlC,CAAA,CAAAa,MAAA,YAAAd,CAAA,MAAA8B,CAAA,GAAAN,KAAA,CAAAW,CAAA,GAAAnC,CAAA,GAAAmC,CAAA,EAAAnC,CAAA,IAAA8B,CAAA,CAAA9B,CAAA,IAAAC,CAAA,CAAAD,CAAA,UAAA8B,CAAA;AAEzC,IAAMiB,YAAY,GAAAC,OAAA,CAAAD,YAAA,GAAGE,4CAAqB,CAACC,MAAM,CAAC;EACxDC,WAAW,EAAE;IACZC,KAAK,EAAE;EACR;AACD,CAAC,CAAC;AAEFL,YAAY,CAACM,qBAAqB,GAAG,UAAUC,cAAc,EAAEC,OAAO,EAAE;EACvE,IAAMC,WAAW,GAAG,IAAIC,wBAAgB,CAACH,cAAc,CAAC;EACxD,IAAMI,IAAI,GAAGC,eAAC,CAACC,QAAQ,CAACL,OAAO,EAAE;IAChCM,gBAAgB,EAAE,KAAK;IACvBC,UAAU,EAAE,IAAI;IAChBC,YAAY,EAAE,IAAIC,mCAAqB,CAAC;EACzC,CAAC,CAAC;EAEF,OAAOR,WAAW,CAChBS,KAAK,CAAC,CAAC,CACPC,IAAI,CAAC,YAAM;IACX,OAAOC,iBAAO,CAACC,GAAG,CAAC,CAClBZ,WAAW,CAACa,aAAa,CAACJ,KAAK,CAAC,CAAC,EACjCT,WAAW,CAACc,IAAI,CAACL,KAAK,CAAC,CAAC,CACxB,CAAC;EACH,CAAC,CAAC,CACDC,IAAI,kBAAAK,kBAAA,CAAAtD,OAAA,eAAAuD,YAAA,CAAAvD,OAAA,CAAAwD,IAAA,CAAC,SAAAC,QAAA;IAAA,IAAAC,SAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,KAAA;IAAA,OAAAN,YAAA,CAAAvD,OAAA,CAAA8D,IAAA,UAAAC,SAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAC,IAAA,GAAAD,SAAA,CAAA3C,IAAA;QAAA;UACCqC,SAAS,OAAAQ,mBAAA,CAAAlE,OAAA,EAAOuC,WAAW,CAAC4B,YAAY,CAACC,MAAM;UAAAT,SAAA,GAAAvD,0BAAA,CAElCqC,IAAI,CAACK,YAAY,CAACsB,MAAM;UAAAJ,SAAA,CAAAC,IAAA;UAAAJ,KAAA,gBAAAN,YAAA,CAAAvD,OAAA,CAAAwD,IAAA,UAAAK,MAAA;YAAA,IAAAQ,IAAA,EAAAC,UAAA;YAAA,OAAAf,YAAA,CAAAvD,OAAA,CAAA8D,IAAA,UAAAS,OAAAC,QAAA;cAAA,kBAAAA,QAAA,CAAAP,IAAA,GAAAO,QAAA,CAAAnD,IAAA;gBAAA;kBAAhCgD,IAAI,GAAAT,KAAA,CAAA7C,KAAA;kBACRuD,UAAU,GAAGZ,SAAS,CAACe,IAAI,CAChC,UAACxF,CAAC;oBAAA,OAAKA,CAAC,CAACyF,GAAG,CAAC,CAAC,KAAKL,IAAI,CAACM,QAAQ,CAACD,GAAG,CAAC,CAAC;kBAAA,CACvC,CAAC;kBAAA,KACGJ,UAAU;oBAAAE,QAAA,CAAAnD,IAAA;oBAAA;kBAAA;kBACbgD,IAAI,CAACM,QAAQ,GAAGL,UAAU;kBAACE,QAAA,CAAAnD,IAAA;kBAAA;gBAAA;kBAAAmD,QAAA,CAAAnD,IAAA;kBAAA,OAErBgD,IAAI,CAACM,QAAQ,CAAC3B,KAAK,CAAC,CAAC;gBAAA;kBAC3BU,SAAS,CAACjE,IAAI,CAAC4E,IAAI,CAACM,QAAQ,CAAC;gBAAC;gBAAA;kBAAA,OAAAH,QAAA,CAAAI,IAAA;cAAA;YAAA,GAAAf,KAAA;UAAA;UAAAF,SAAA,CAAA/C,CAAA;QAAA;UAAA,KAAAgD,KAAA,GAAAD,SAAA,CAAA9C,CAAA,IAAAC,IAAA;YAAAkD,SAAA,CAAA3C,IAAA;YAAA;UAAA;UAAA,OAAA2C,SAAA,CAAAa,aAAA,CAAAhB,KAAA;QAAA;UAAAG,SAAA,CAAA3C,IAAA;UAAA;QAAA;UAAA2C,SAAA,CAAA3C,IAAA;UAAA;QAAA;UAAA2C,SAAA,CAAAC,IAAA;UAAAD,SAAA,CAAAc,EAAA,GAAAd,SAAA;UAAAL,SAAA,CAAA5E,CAAA,CAAAiF,SAAA,CAAAc,EAAA;QAAA;UAAAd,SAAA,CAAAC,IAAA;UAAAN,SAAA,CAAA3C,CAAA;UAAA,OAAAgD,SAAA,CAAAe,MAAA;QAAA;QAAA;UAAA,OAAAf,SAAA,CAAAY,IAAA;MAAA;IAAA,GAAAnB,OAAA;EAAA,CAGhC,GAAC,CACDR,IAAI,CAAC,YAAM;IACX,OAAOV,WAAW,CAACc,IAAI,CAAC2B,IAAI,CAAChC,KAAK,CAAC,CAAC;EACrC,CAAC,CAAC,CACDC,IAAI,CAAC,YAAM;IACX,IAAMgC,QAAQ,GAAG1C,WAAW,CAACc,IAAI,CAAC2B,IAAI,CAACE,KAAK,CAACC,MAAM,CAAC,UAACC,MAAM,EAAEC,OAAO,EAAK;MACxED,MAAM,CAACC,OAAO,CAACC,cAAc,CAAC,GAAGD,OAAO,CAACL,IAAI;MAC7C,OAAOI,MAAM;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,IAAMG,YAAY,GAAG,IAAIzD,YAAY,CAAC,CAAC;IAEvC,IAAQc,gBAAgB,GAAmBH,IAAI,CAAvCG,gBAAgB;MAAK4C,SAAS,OAAAC,yBAAA,CAAAzF,OAAA,EAAKyC,IAAI,EAAA5D,SAAA;IAE/C,IAAI+D,gBAAgB,EAAE;MACrB4C,SAAS,CAAC9B,SAAS,GAAGnB,WAAW,CAAC4B,YAAY,CAACuB,MAAM,CAAC,CAAC;IACxD;IAEAH,YAAY,CAACpD,KAAK,CAACwD,GAAG,CAAC,CACtBC,kCAAgB,CAACC,qBAAqB,CAACtD,WAAW,EAAA5C,aAAA,CAAAA,aAAA,KAC9C6F,SAAS;MACZP,QAAQ,EAARA;IAAQ,EACR,CAAC,CACF,CAAC;IAEF,OAAOM,YAAY;EACpB,CAAC,CAAC,CACDO,KAAK,CAAC,UAAC/G,CAAC,EAAK;IACbgH,YAAG,CAACC,KAAK,CAACjH,CAAC,CAAC;IACZ,MAAMA,CAAC;EACR,CAAC,CAAC;AACJ,CAAC;AAED+C,YAAY,CAACmE,sBAAsB,GAAG,UAAUC,YAAY,EAAEC,OAAO,EAAEzB,GAAG,EAAE;EAC3E,IAAM0B,aAAa,GAAG,IAAIC,yBAAiB,CAACH,YAAY,CAACR,MAAM,CAAC,CAAC,CAAC;;EAElE;EACAU,aAAa,CAACE,IAAI,GAAG5B,GAAG;EAExB,IAAMrB,IAAI,GAAGuC,kCAAgB,CAACK,sBAAsB,CAACG,aAAa,EAAED,OAAO,CAAC;EAC5E,IAAMZ,YAAY,GAAG,IAAIzD,YAAY,CAAC,CAAC;EACvCyD,YAAY,CAACpD,KAAK,CAACwD,GAAG,CAACtC,IAAI,CAAC;EAC5B,OAAOkC,YAAY;AACpB,CAAC;AAED,IAAAgB,uBAAQ,EAAC,cAAc,EAAEzE,YAAY,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"presentation.js","names":["require","_models","_autoAdjuncts","_basePresentationModel","_presentationDeck","_bluebird","_interopRequireDefault","_lodash","_log","_stateRegister","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","_n","F","s","n","done","value","f","TypeError","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","from","test","Presentation","exports","BasePresentationModel","extend","collections","decks","createFromDeckversion","deckversionURL","options","deckversion","DeckVersionModel","opts","_","defaults","includeTemplates","choicelist","autoAdjuncts","AutoAdjunctCollection","fetch","then","Promise","all","manifest_json","deck","_asyncToGenerator2","_regenerator","mark","_callee","templates","_iterator","_step","_loop","_t","wrap","_context2","prev","_toConsumableArray2","template_set","models","auto","dvTemplate","_context","find","url","template","stop","delegateYield","finish","tags","deckTags","items","reduce","tagObj","tagItem","namespaced_key","presentation","otherOpts","_objectWithoutProperties2","toJSON","add","PresentationDeck","createFromDeckVersion","catch","log","error","createFromManifestJSON","manifestJSON","project","manifestModel","ManifestJSONModel","_url","register"],"sources":["../../src/presentation/presentation.js"],"sourcesContent":["import \"./presentation-decks.js\";\n\nimport { DeckVersionModel, ManifestJSONModel } from \"../models.js\";\n\nimport { AutoAdjunctCollection } from \"../collections/auto-adjuncts.js\";\nimport { BasePresentationModel } from \"./base-presentation-model.js\";\nimport { PresentationDeck } from \"./presentation-deck.js\";\nimport Promise from \"bluebird\";\nimport _ from \"lodash\";\nimport log from \"../log.js\";\nimport { register } from \"../state-register.js\";\n\nexport const Presentation = BasePresentationModel.extend({\n\tcollections: {\n\t\tdecks: \"PresentationDeckCollection\",\n\t},\n});\n\nPresentation.createFromDeckversion = function (deckversionURL, options) {\n\tconst deckversion = new DeckVersionModel(deckversionURL);\n\tconst opts = _.defaults(options, {\n\t\tincludeTemplates: false,\n\t\tchoicelist: null,\n\t\tautoAdjuncts: new AutoAdjunctCollection(),\n\t});\n\n\treturn deckversion\n\t\t.fetch()\n\t\t.then(() => {\n\t\t\treturn Promise.all([\n\t\t\t\tdeckversion.manifest_json.fetch(),\n\t\t\t\tdeckversion.deck.fetch(),\n\t\t\t]);\n\t\t})\n\t\t.then(async () => {\n\t\t\tconst templates = [...deckversion.template_set.models];\n\n\t\t\tfor (const auto of opts.autoAdjuncts.models) {\n\t\t\t\tconst dvTemplate = templates.find(\n\t\t\t\t\t(t) => t.url() === auto.template.url(),\n\t\t\t\t);\n\t\t\t\tif (dvTemplate) {\n\t\t\t\t\tauto.template = dvTemplate;\n\t\t\t\t} else {\n\t\t\t\t\tawait auto.template.fetch();\n\t\t\t\t\ttemplates.push(auto.template);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.then(() => {\n\t\t\treturn deckversion.deck.tags.fetch();\n\t\t})\n\t\t.then(() => {\n\t\t\tconst deckTags = deckversion.deck.tags.items.reduce((tagObj, tagItem) => {\n\t\t\t\ttagObj[tagItem.namespaced_key] = tagItem.tags;\n\t\t\t\treturn tagObj;\n\t\t\t}, {});\n\n\t\t\tconst presentation = new Presentation();\n\n\t\t\tconst { includeTemplates, ...otherOpts } = opts;\n\n\t\t\tif (includeTemplates) {\n\t\t\t\totherOpts.templates = deckversion.template_set.toJSON();\n\t\t\t}\n\n\t\t\tpresentation.decks.add([\n\t\t\t\tPresentationDeck.createFromDeckVersion(deckversion, {\n\t\t\t\t\t...otherOpts,\n\t\t\t\t\tdeckTags,\n\t\t\t\t}),\n\t\t\t]);\n\n\t\t\treturn presentation;\n\t\t})\n\t\t.catch((e) => {\n\t\t\tlog.error(e);\n\t\t\tthrow e;\n\t\t});\n};\n\nPresentation.createFromManifestJSON = function (manifestJSON, project, url) {\n\tconst manifestModel = new ManifestJSONModel(manifestJSON.toJSON());\n\n\t// Let's use the model to transport the base url for the deck assets\n\tmanifestModel._url = url;\n\n\tconst deck = PresentationDeck.createFromManifestJSON(manifestModel, project);\n\tconst presentation = new Presentation();\n\tpresentation.decks.add(deck);\n\treturn presentation;\n};\n\nregister(\"Presentation\", Presentation);\n"],"mappings":"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","ignoreList":[]}
package/cjs/sync.js CHANGED
@@ -12,7 +12,6 @@ var _lodash = _interopRequireDefault(require("lodash"));
12
12
  var _log = _interopRequireDefault(require("./log.js"));
13
13
  var _middleware = require("./middleware.js");
14
14
  var _superagent = _interopRequireDefault(require("superagent"));
15
- var _url = _interopRequireDefault(require("url"));
16
15
  var defaults = _lodash.default.defaults;
17
16
  var assign = _lodash.default.assign;
18
17
 
@@ -38,11 +37,10 @@ var buildURL = exports.buildURL = function buildURL(_ref2) {
38
37
  var method = _ref2.method,
39
38
  model = _ref2.model;
40
39
  var url = model.url();
41
- var urlParse = _url.default.parse(url);
42
40
 
43
41
  // If not a GET request, strip the query params from the url
44
42
  if (method !== "read") {
45
- return url.replace(urlParse.search, "");
43
+ return url.split("?")[0];
46
44
  }
47
45
  return url;
48
46
  };
@@ -133,12 +131,24 @@ var ajaxSync = exports.ajaxSync = function ajaxSync(method, model, options) {
133
131
  // Combine generated headers with user's headers.
134
132
  if (ajaxConfig.headers) {
135
133
  for (var key in ajaxConfig.headers) {
136
- request.header[key.toLowerCase()] = ajaxConfig.headers[key];
134
+ var lowerKey = key.toLowerCase();
135
+ // Use superagent's .type() method to explicitly set content-type
136
+ // This ensures superagent respects the content-type and doesn't override it
137
+ if (lowerKey === "content-type") {
138
+ request.type(ajaxConfig.headers[key].split(";")[0]);
139
+ } else {
140
+ request.header[lowerKey] = ajaxConfig.headers[key];
141
+ }
137
142
  }
138
143
  }
139
144
  if (options.headers) {
140
145
  for (var _key2 in options.headers) {
141
- request.header[_key2.toLowerCase()] = options.headers[_key2];
146
+ var _lowerKey = _key2.toLowerCase();
147
+ if (_lowerKey === "content-type") {
148
+ request.type(options.headers[_key2].split(";")[0]);
149
+ } else {
150
+ request.header[_lowerKey] = options.headers[_key2];
151
+ }
142
152
  }
143
153
  }
144
154
 
package/cjs/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","names":["_bluebird","_interopRequireDefault","require","_superagentBluebirdPromise","_lodash","_log","_middleware","_superagent","_url","defaults","_","assign","urlError","Error","methodMap","exports","create","update","patch","delete","read","defaultFetchURL","_ref","model","log","warn","url","buildURL","_ref2","method","urlParse","url2","parse","replace","search","sync","defaultOpts","_this","syncArguments","arguments","syncActions","middlewares","forEach","middleware","push","apply","Promise","all","then","_len","length","newOpts","Array","_key","joinedOpts","merge","concat","_toConsumableArray2","default","flat","ajaxSync","call","options","type","emulateHTTP","emulateJSON","params","result","data","batch","json","attrs","toJSON","requestSettings","request","SuperAgentRequest","toServer","isArray","FormData","pick","Object","keys","send","xhr","preflight","mc","getNextMiddleware","middlewareInterceptor","response","intercept","resolve","trigger","ajaxConfig","headers","key","header","toLowerCase","cachedResponse","JSON","text","each","success","catch","error","message","timeout","e","set","emit","superagent","SuperagentPromiseError","res","body","status","stringify","originalError","code"],"sources":["../src/sync.js"],"sourcesContent":["import Promise from \"bluebird\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport log from \"./log.js\";\nimport { middlewares } from \"./middleware.js\";\nimport superagent from \"superagent\";\nimport url2 from \"url\";\n\nconst defaults = _.defaults;\nconst assign = _.assign;\n\n// Throw an error when a URL is needed, and none is supplied.\nconst urlError = function () {\n\tthrow new Error(`A \"url\" property or function must be specified`);\n};\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport const methodMap = {\n\tcreate: \"POST\",\n\tupdate: \"PUT\",\n\tpatch: \"PATCH\",\n\tdelete: \"DELETE\",\n\tread: \"GET\",\n};\n\nexport const defaultFetchURL = function ({ model }) {\n\tlog.warn(\"Deprecation: defaultFetchURL is deprecated. Just use .url()\");\n\treturn model.url();\n};\n\nexport const buildURL = function ({ method, model }) {\n\tconst url = model.url();\n\tconst urlParse = url2.parse(url);\n\n\t// If not a GET request, strip the query params from the url\n\tif (method !== \"read\") {\n\t\treturn url.replace(urlParse.search, \"\");\n\t}\n\n\treturn url;\n};\n\nexport const sync = function (method, model, defaultOpts) {\n\tconst syncArguments = arguments;\n\n\tif (method === \"read\") {\n\t\t// look for sync methods\n\t\tconst syncActions = [];\n\t\tmiddlewares.forEach((middleware) => {\n\t\t\tif (middleware.sync) {\n\t\t\t\tsyncActions.push(middleware.sync.apply(this, syncArguments));\n\t\t\t}\n\t\t});\n\n\t\treturn Promise.all(syncActions).then((...newOpts) => {\n\t\t\tconst joinedOpts = _.merge({}, defaultOpts, ...newOpts.flat());\n\t\t\treturn ajaxSync.call(this, method, model, joinedOpts);\n\t\t});\n\t}\n\treturn ajaxSync.call(this, method, model, defaultOpts);\n};\n\nexport const ajaxSync = function (method, model, options) {\n\tconst type = methodMap[method];\n\n\t// Default options, unless specified.\n\tdefaults(options || {}, {\n\t\temulateHTTP: false,\n\t\temulateJSON: false,\n\t});\n\n\t// Default request options.\n\tconst params = { type: type };\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\toptions.url = _.result(model, \"url\") || urlError();\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (\n\t\toptions.data === null &&\n\t\tmodel &&\n\t\t(method === \"create\" ||\n\t\t\tmethod === \"update\" ||\n\t\t\tmethod === \"patch\" ||\n\t\t\t(method === \"delete\" && options.batch))\n\t) {\n\t\tparams.json = options.attrs || model.toJSON(options);\n\t}\n\n\tconst url = buildURL({ method, model, options });\n\n\tconst requestSettings = assign(params, options);\n\trequestSettings.method = type;\n\n\tconst request = SuperAgentRequest(type, url);\n\n\tif (\n\t\ttype === \"PATCH\" ||\n\t\ttype === \"POST\" ||\n\t\ttype === \"PUT\" ||\n\t\t(type === \"DELETE\" && options.batch)\n\t) {\n\t\tlet data = model.toServer();\n\n\t\t// Note we can use formdata to override the way a patch works - if we\n\t\t// are doing this it's for a particular patch with an image or file,\n\t\t// probably.\n\t\tif (type === \"PATCH\" && !_.isArray(data) && !(data instanceof FormData)) {\n\t\t\t// Make sure we're only updating data actually passed to the save\n\t\t\t// function, rather than automatically generated stuff\n\t\t\tdata = _.pick(options.attrs, Object.keys(data));\n\t\t}\n\t\trequest.send(data);\n\t}\n\n\toptions.xhr = request;\n\n\tmiddlewares.forEach((middleware) => {\n\t\tif (middleware.preflight) {\n\t\t\tmiddleware.preflight(request, model, options);\n\t\t}\n\t});\n\n\tlet mc = 0;\n\n\tfunction getNextMiddleware(request) {\n\t\treturn function middlewareInterceptor(response) {\n\t\t\tif (mc < middlewares.length) {\n\t\t\t\treturn middlewares[mc++]\n\t\t\t\t\t.intercept(request, response, model)\n\t\t\t\t\t.then(getNextMiddleware(request));\n\t\t\t}\n\t\t\treturn Promise.resolve(response);\n\t\t};\n\t}\n\n\tmodel.trigger(\"request\", model, request, options, requestSettings);\n\trequest.requestSettings = requestSettings;\n\n\tconst ajaxConfig = _.result(model, \"ajaxConfig\") || {};\n\n\t// Combine generated headers with user's headers.\n\tif (ajaxConfig.headers) {\n\t\tfor (const key in ajaxConfig.headers) {\n\t\t\trequest.header[key.toLowerCase()] = ajaxConfig.headers[key];\n\t\t}\n\t}\n\n\tif (options.headers) {\n\t\tfor (const key in options.headers) {\n\t\t\trequest.header[key.toLowerCase()] = options.headers[key];\n\t\t}\n\t}\n\n\t// TODO: Remove me when this can be moved... for now this removal is quite a complex\n\t// process.\n\tif (options.cachedResponse) {\n\t\treturn Promise.resolve(options.cachedResponse)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then((response) => {\n\t\t\t\tif (!response.data) {\n\t\t\t\t\tresponse.data = JSON.parse(response.text);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, true);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(response.data, \"success\", response);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response.data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((response) => {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response, model);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\treturn (\n\t\trequest\n\t\t\t// Force a timeout on every request. Intermittent connections\n\t\t\t// can have the request continue trying for minutes otherwise.\n\t\t\t// 60 seconds is the timeout the server has, so we go for 65 seconds,\n\t\t\t// so we give the chance to the server to time out first - helps with\n\t\t\t// debugging.\n\t\t\t.timeout(65 * 1000)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then((response) => {\n\t\t\t\tlet data;\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(response.text);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tdata = response;\n\t\t\t\t}\n\n\t\t\t\tif (type !== \"DELETE\") {\n\t\t\t\t\tmodel.set(data);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, false);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(data, \"success\", response);\n\t\t\t\t\t}\n\t\t\t\t\trequest.emit(\"success\", response);\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\tif (\n\t\t\t\t\te.res &&\n\t\t\t\t\te.res.body &&\n\t\t\t\t\t((e.status >= 400 && e.status < 500) || e.status === 503)\n\t\t\t\t) {\n\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t})\n\t\t\t.catch((response) => {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Provide a more explanatory error message on timeout\n\t\t\t\t\tif (\n\t\t\t\t\t\tresponse &&\n\t\t\t\t\t\tresponse.originalError &&\n\t\t\t\t\t\tresponse.originalError.code === \"ECONNABORTED\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Failed ${type} request on url: ${url}. ${response.message}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t})\n\t);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"sync.js","names":["_bluebird","_interopRequireDefault","require","_superagentBluebirdPromise","_lodash","_log","_middleware","_superagent","defaults","_","assign","urlError","Error","methodMap","exports","create","update","patch","delete","read","defaultFetchURL","_ref","model","log","warn","url","buildURL","_ref2","method","split","sync","defaultOpts","_this","syncArguments","arguments","syncActions","middlewares","forEach","middleware","push","apply","Promise","all","then","_len","length","newOpts","Array","_key","joinedOpts","merge","concat","_toConsumableArray2","default","flat","ajaxSync","call","options","type","emulateHTTP","emulateJSON","params","result","data","batch","json","attrs","toJSON","requestSettings","request","SuperAgentRequest","toServer","isArray","FormData","pick","Object","keys","send","xhr","preflight","mc","getNextMiddleware","middlewareInterceptor","response","intercept","resolve","trigger","ajaxConfig","headers","key","lowerKey","toLowerCase","header","cachedResponse","JSON","parse","text","each","success","catch","error","message","timeout","e","set","emit","superagent","SuperagentPromiseError","res","body","status","stringify","originalError","code"],"sources":["../src/sync.js"],"sourcesContent":["import Promise from \"bluebird\";\nimport SuperAgentRequest from \"superagent-bluebird-promise\";\nimport _ from \"lodash\";\nimport log from \"./log.js\";\nimport { middlewares } from \"./middleware.js\";\nimport superagent from \"superagent\";\n\nconst defaults = _.defaults;\nconst assign = _.assign;\n\n// Throw an error when a URL is needed, and none is supplied.\nconst urlError = function () {\n\tthrow new Error(`A \"url\" property or function must be specified`);\n};\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport const methodMap = {\n\tcreate: \"POST\",\n\tupdate: \"PUT\",\n\tpatch: \"PATCH\",\n\tdelete: \"DELETE\",\n\tread: \"GET\",\n};\n\nexport const defaultFetchURL = function ({ model }) {\n\tlog.warn(\"Deprecation: defaultFetchURL is deprecated. Just use .url()\");\n\treturn model.url();\n};\n\nexport const buildURL = function ({ method, model }) {\n\tconst url = model.url();\n\n\t// If not a GET request, strip the query params from the url\n\tif (method !== \"read\") {\n\t\treturn url.split(\"?\")[0];\n\t}\n\n\treturn url;\n};\n\nexport const sync = function (method, model, defaultOpts) {\n\tconst syncArguments = arguments;\n\n\tif (method === \"read\") {\n\t\t// look for sync methods\n\t\tconst syncActions = [];\n\t\tmiddlewares.forEach((middleware) => {\n\t\t\tif (middleware.sync) {\n\t\t\t\tsyncActions.push(middleware.sync.apply(this, syncArguments));\n\t\t\t}\n\t\t});\n\n\t\treturn Promise.all(syncActions).then((...newOpts) => {\n\t\t\tconst joinedOpts = _.merge({}, defaultOpts, ...newOpts.flat());\n\t\t\treturn ajaxSync.call(this, method, model, joinedOpts);\n\t\t});\n\t}\n\treturn ajaxSync.call(this, method, model, defaultOpts);\n};\n\nexport const ajaxSync = function (method, model, options) {\n\tconst type = methodMap[method];\n\n\t// Default options, unless specified.\n\tdefaults(options || {}, {\n\t\temulateHTTP: false,\n\t\temulateJSON: false,\n\t});\n\n\t// Default request options.\n\tconst params = { type: type };\n\n\t// Ensure that we have a URL.\n\tif (!options.url) {\n\t\toptions.url = _.result(model, \"url\") || urlError();\n\t}\n\n\t// Ensure that we have the appropriate request data.\n\tif (\n\t\toptions.data === null &&\n\t\tmodel &&\n\t\t(method === \"create\" ||\n\t\t\tmethod === \"update\" ||\n\t\t\tmethod === \"patch\" ||\n\t\t\t(method === \"delete\" && options.batch))\n\t) {\n\t\tparams.json = options.attrs || model.toJSON(options);\n\t}\n\n\tconst url = buildURL({ method, model, options });\n\n\tconst requestSettings = assign(params, options);\n\trequestSettings.method = type;\n\n\tconst request = SuperAgentRequest(type, url);\n\n\tif (\n\t\ttype === \"PATCH\" ||\n\t\ttype === \"POST\" ||\n\t\ttype === \"PUT\" ||\n\t\t(type === \"DELETE\" && options.batch)\n\t) {\n\t\tlet data = model.toServer();\n\n\t\t// Note we can use formdata to override the way a patch works - if we\n\t\t// are doing this it's for a particular patch with an image or file,\n\t\t// probably.\n\t\tif (type === \"PATCH\" && !_.isArray(data) && !(data instanceof FormData)) {\n\t\t\t// Make sure we're only updating data actually passed to the save\n\t\t\t// function, rather than automatically generated stuff\n\t\t\tdata = _.pick(options.attrs, Object.keys(data));\n\t\t}\n\t\trequest.send(data);\n\t}\n\n\toptions.xhr = request;\n\n\tmiddlewares.forEach((middleware) => {\n\t\tif (middleware.preflight) {\n\t\t\tmiddleware.preflight(request, model, options);\n\t\t}\n\t});\n\n\tlet mc = 0;\n\n\tfunction getNextMiddleware(request) {\n\t\treturn function middlewareInterceptor(response) {\n\t\t\tif (mc < middlewares.length) {\n\t\t\t\treturn middlewares[mc++]\n\t\t\t\t\t.intercept(request, response, model)\n\t\t\t\t\t.then(getNextMiddleware(request));\n\t\t\t}\n\t\t\treturn Promise.resolve(response);\n\t\t};\n\t}\n\n\tmodel.trigger(\"request\", model, request, options, requestSettings);\n\trequest.requestSettings = requestSettings;\n\n\tconst ajaxConfig = _.result(model, \"ajaxConfig\") || {};\n\n\t// Combine generated headers with user's headers.\n\tif (ajaxConfig.headers) {\n\t\tfor (const key in ajaxConfig.headers) {\n\t\t\tconst lowerKey = key.toLowerCase();\n\t\t\t// Use superagent's .type() method to explicitly set content-type\n\t\t\t// This ensures superagent respects the content-type and doesn't override it\n\t\t\tif (lowerKey === \"content-type\") {\n\t\t\t\trequest.type(ajaxConfig.headers[key].split(\";\")[0]);\n\t\t\t} else {\n\t\t\t\trequest.header[lowerKey] = ajaxConfig.headers[key];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (options.headers) {\n\t\tfor (const key in options.headers) {\n\t\t\tconst lowerKey = key.toLowerCase();\n\t\t\tif (lowerKey === \"content-type\") {\n\t\t\t\trequest.type(options.headers[key].split(\";\")[0]);\n\t\t\t} else {\n\t\t\t\trequest.header[lowerKey] = options.headers[key];\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: Remove me when this can be moved... for now this removal is quite a complex\n\t// process.\n\tif (options.cachedResponse) {\n\t\treturn Promise.resolve(options.cachedResponse)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then((response) => {\n\t\t\t\tif (!response.data) {\n\t\t\t\t\tresponse.data = JSON.parse(response.text);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, true);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(response.data, \"success\", response);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn response.data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((response) => {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response, model);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\treturn (\n\t\trequest\n\t\t\t// Force a timeout on every request. Intermittent connections\n\t\t\t// can have the request continue trying for minutes otherwise.\n\t\t\t// 60 seconds is the timeout the server has, so we go for 65 seconds,\n\t\t\t// so we give the chance to the server to time out first - helps with\n\t\t\t// debugging.\n\t\t\t.timeout(65 * 1000)\n\t\t\t.then(getNextMiddleware(request))\n\t\t\t.then((response) => {\n\t\t\t\tlet data;\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(response.text);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tdata = response;\n\t\t\t\t}\n\n\t\t\t\tif (type !== \"DELETE\") {\n\t\t\t\t\tmodel.set(data);\n\t\t\t\t}\n\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.success(request, response, model, false);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.success) {\n\t\t\t\t\t\toptions.success(data, \"success\", response);\n\t\t\t\t\t}\n\t\t\t\t\trequest.emit(\"success\", response);\n\t\t\t\t\treturn data;\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(superagent.SuperagentPromiseError, (e) => {\n\t\t\t\tif (\n\t\t\t\t\te.res &&\n\t\t\t\t\te.res.body &&\n\t\t\t\t\t((e.status >= 400 && e.status < 500) || e.status === 503)\n\t\t\t\t) {\n\t\t\t\t\te.message += `\\nBody: ${JSON.stringify(e.res.body)}`;\n\t\t\t\t}\n\t\t\t\tthrow e;\n\t\t\t})\n\t\t\t.catch((response) => {\n\t\t\t\treturn Promise.each(middlewares, (middleware) => {\n\t\t\t\t\treturn middleware.error(response);\n\t\t\t\t}).then(() => {\n\t\t\t\t\tif (options.error) {\n\t\t\t\t\t\toptions.error(response, \"error\", response.message);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Provide a more explanatory error message on timeout\n\t\t\t\t\tif (\n\t\t\t\t\t\tresponse &&\n\t\t\t\t\t\tresponse.originalError &&\n\t\t\t\t\t\tresponse.originalError.code === \"ECONNABORTED\"\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Failed ${type} request on url: ${url}. ${response.message}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow response;\n\t\t\t\t});\n\t\t\t})\n\t);\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,IAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAN,sBAAA,CAAAC,OAAA;AAEA,IAAMM,QAAQ,GAAGC,eAAC,CAACD,QAAQ;AAC3B,IAAME,MAAM,GAAGD,eAAC,CAACC,MAAM;;AAEvB;AACA,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAA,EAAe;EAC5B,MAAM,IAAIC,KAAK,mDAAiD,CAAC;AAClE,CAAC;;AAED;AACO,IAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EACxBE,MAAM,EAAE,MAAM;EACdC,MAAM,EAAE,KAAK;EACbC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE,QAAQ;EAChBC,IAAI,EAAE;AACP,CAAC;AAEM,IAAMC,eAAe,GAAAN,OAAA,CAAAM,eAAA,GAAG,SAAlBA,eAAeA,CAAAC,IAAA,EAAwB;EAAA,IAATC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAC/CC,YAAG,CAACC,IAAI,CAAC,6DAA6D,CAAC;EACvE,OAAOF,KAAK,CAACG,GAAG,CAAC,CAAC;AACnB,CAAC;AAEM,IAAMC,QAAQ,GAAAZ,OAAA,CAAAY,QAAA,GAAG,SAAXA,QAAQA,CAAAC,KAAA,EAAgC;EAAA,IAAjBC,MAAM,GAAAD,KAAA,CAANC,MAAM;IAAEN,KAAK,GAAAK,KAAA,CAALL,KAAK;EAChD,IAAMG,GAAG,GAAGH,KAAK,CAACG,GAAG,CAAC,CAAC;;EAEvB;EACA,IAAIG,MAAM,KAAK,MAAM,EAAE;IACtB,OAAOH,GAAG,CAACI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACzB;EAEA,OAAOJ,GAAG;AACX,CAAC;AAEM,IAAMK,IAAI,GAAAhB,OAAA,CAAAgB,IAAA,GAAG,SAAPA,IAAIA,CAAaF,MAAM,EAAEN,KAAK,EAAES,WAAW,EAAE;EAAA,IAAAC,KAAA;EACzD,IAAMC,aAAa,GAAGC,SAAS;EAE/B,IAAIN,MAAM,KAAK,MAAM,EAAE;IACtB;IACA,IAAMO,WAAW,GAAG,EAAE;IACtBC,uBAAW,CAACC,OAAO,CAAC,UAACC,UAAU,EAAK;MACnC,IAAIA,UAAU,CAACR,IAAI,EAAE;QACpBK,WAAW,CAACI,IAAI,CAACD,UAAU,CAACR,IAAI,CAACU,KAAK,CAACR,KAAI,EAAEC,aAAa,CAAC,CAAC;MAC7D;IACD,CAAC,CAAC;IAEF,OAAOQ,iBAAO,CAACC,GAAG,CAACP,WAAW,CAAC,CAACQ,IAAI,CAAC,YAAgB;MAAA,SAAAC,IAAA,GAAAV,SAAA,CAAAW,MAAA,EAAZC,OAAO,OAAAC,KAAA,CAAAH,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;QAAPF,OAAO,CAAAE,IAAA,IAAAd,SAAA,CAAAc,IAAA;MAAA;MAC/C,IAAMC,UAAU,GAAGxC,eAAC,CAACyC,KAAK,CAAAV,KAAA,CAAP/B,eAAC,GAAO,CAAC,CAAC,EAAEsB,WAAW,EAAAoB,MAAA,KAAAC,mBAAA,CAAAC,OAAA,EAAKP,OAAO,CAACQ,IAAI,CAAC,CAAC,GAAC;MAC9D,OAAOC,QAAQ,CAACC,IAAI,CAACxB,KAAI,EAAEJ,MAAM,EAAEN,KAAK,EAAE2B,UAAU,CAAC;IACtD,CAAC,CAAC;EACH;EACA,OAAOM,QAAQ,CAACC,IAAI,CAAC,IAAI,EAAE5B,MAAM,EAAEN,KAAK,EAAES,WAAW,CAAC;AACvD,CAAC;AAEM,IAAMwB,QAAQ,GAAAzC,OAAA,CAAAyC,QAAA,GAAG,SAAXA,QAAQA,CAAa3B,MAAM,EAAEN,KAAK,EAAEmC,OAAO,EAAE;EACzD,IAAMC,IAAI,GAAG7C,SAAS,CAACe,MAAM,CAAC;;EAE9B;EACApB,QAAQ,CAACiD,OAAO,IAAI,CAAC,CAAC,EAAE;IACvBE,WAAW,EAAE,KAAK;IAClBC,WAAW,EAAE;EACd,CAAC,CAAC;;EAEF;EACA,IAAMC,MAAM,GAAG;IAAEH,IAAI,EAAEA;EAAK,CAAC;;EAE7B;EACA,IAAI,CAACD,OAAO,CAAChC,GAAG,EAAE;IACjBgC,OAAO,CAAChC,GAAG,GAAGhB,eAAC,CAACqD,MAAM,CAACxC,KAAK,EAAE,KAAK,CAAC,IAAIX,QAAQ,CAAC,CAAC;EACnD;;EAEA;EACA,IACC8C,OAAO,CAACM,IAAI,KAAK,IAAI,IACrBzC,KAAK,KACJM,MAAM,KAAK,QAAQ,IACnBA,MAAM,KAAK,QAAQ,IACnBA,MAAM,KAAK,OAAO,IACjBA,MAAM,KAAK,QAAQ,IAAI6B,OAAO,CAACO,KAAM,CAAC,EACvC;IACDH,MAAM,CAACI,IAAI,GAAGR,OAAO,CAACS,KAAK,IAAI5C,KAAK,CAAC6C,MAAM,CAACV,OAAO,CAAC;EACrD;EAEA,IAAMhC,GAAG,GAAGC,QAAQ,CAAC;IAAEE,MAAM,EAANA,MAAM;IAAEN,KAAK,EAALA,KAAK;IAAEmC,OAAO,EAAPA;EAAQ,CAAC,CAAC;EAEhD,IAAMW,eAAe,GAAG1D,MAAM,CAACmD,MAAM,EAAEJ,OAAO,CAAC;EAC/CW,eAAe,CAACxC,MAAM,GAAG8B,IAAI;EAE7B,IAAMW,OAAO,GAAG,IAAAC,kCAAiB,EAACZ,IAAI,EAAEjC,GAAG,CAAC;EAE5C,IACCiC,IAAI,KAAK,OAAO,IAChBA,IAAI,KAAK,MAAM,IACfA,IAAI,KAAK,KAAK,IACbA,IAAI,KAAK,QAAQ,IAAID,OAAO,CAACO,KAAM,EACnC;IACD,IAAID,IAAI,GAAGzC,KAAK,CAACiD,QAAQ,CAAC,CAAC;;IAE3B;IACA;IACA;IACA,IAAIb,IAAI,KAAK,OAAO,IAAI,CAACjD,eAAC,CAAC+D,OAAO,CAACT,IAAI,CAAC,IAAI,EAAEA,IAAI,YAAYU,QAAQ,CAAC,EAAE;MACxE;MACA;MACAV,IAAI,GAAGtD,eAAC,CAACiE,IAAI,CAACjB,OAAO,CAACS,KAAK,EAAES,MAAM,CAACC,IAAI,CAACb,IAAI,CAAC,CAAC;IAChD;IACAM,OAAO,CAACQ,IAAI,CAACd,IAAI,CAAC;EACnB;EAEAN,OAAO,CAACqB,GAAG,GAAGT,OAAO;EAErBjC,uBAAW,CAACC,OAAO,CAAC,UAACC,UAAU,EAAK;IACnC,IAAIA,UAAU,CAACyC,SAAS,EAAE;MACzBzC,UAAU,CAACyC,SAAS,CAACV,OAAO,EAAE/C,KAAK,EAAEmC,OAAO,CAAC;IAC9C;EACD,CAAC,CAAC;EAEF,IAAIuB,EAAE,GAAG,CAAC;EAEV,SAASC,iBAAiBA,CAACZ,OAAO,EAAE;IACnC,OAAO,SAASa,qBAAqBA,CAACC,QAAQ,EAAE;MAC/C,IAAIH,EAAE,GAAG5C,uBAAW,CAACS,MAAM,EAAE;QAC5B,OAAOT,uBAAW,CAAC4C,EAAE,EAAE,CAAC,CACtBI,SAAS,CAACf,OAAO,EAAEc,QAAQ,EAAE7D,KAAK,CAAC,CACnCqB,IAAI,CAACsC,iBAAiB,CAACZ,OAAO,CAAC,CAAC;MACnC;MACA,OAAO5B,iBAAO,CAAC4C,OAAO,CAACF,QAAQ,CAAC;IACjC,CAAC;EACF;EAEA7D,KAAK,CAACgE,OAAO,CAAC,SAAS,EAAEhE,KAAK,EAAE+C,OAAO,EAAEZ,OAAO,EAAEW,eAAe,CAAC;EAClEC,OAAO,CAACD,eAAe,GAAGA,eAAe;EAEzC,IAAMmB,UAAU,GAAG9E,eAAC,CAACqD,MAAM,CAACxC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;;EAEtD;EACA,IAAIiE,UAAU,CAACC,OAAO,EAAE;IACvB,KAAK,IAAMC,GAAG,IAAIF,UAAU,CAACC,OAAO,EAAE;MACrC,IAAME,QAAQ,GAAGD,GAAG,CAACE,WAAW,CAAC,CAAC;MAClC;MACA;MACA,IAAID,QAAQ,KAAK,cAAc,EAAE;QAChCrB,OAAO,CAACX,IAAI,CAAC6B,UAAU,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,CAAC,MAAM;QACNwC,OAAO,CAACuB,MAAM,CAACF,QAAQ,CAAC,GAAGH,UAAU,CAACC,OAAO,CAACC,GAAG,CAAC;MACnD;IACD;EACD;EAEA,IAAIhC,OAAO,CAAC+B,OAAO,EAAE;IACpB,KAAK,IAAMC,KAAG,IAAIhC,OAAO,CAAC+B,OAAO,EAAE;MAClC,IAAME,SAAQ,GAAGD,KAAG,CAACE,WAAW,CAAC,CAAC;MAClC,IAAID,SAAQ,KAAK,cAAc,EAAE;QAChCrB,OAAO,CAACX,IAAI,CAACD,OAAO,CAAC+B,OAAO,CAACC,KAAG,CAAC,CAAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACjD,CAAC,MAAM;QACNwC,OAAO,CAACuB,MAAM,CAACF,SAAQ,CAAC,GAAGjC,OAAO,CAAC+B,OAAO,CAACC,KAAG,CAAC;MAChD;IACD;EACD;;EAEA;EACA;EACA,IAAIhC,OAAO,CAACoC,cAAc,EAAE;IAC3B,OAAOpD,iBAAO,CAAC4C,OAAO,CAAC5B,OAAO,CAACoC,cAAc,CAAC,CAC5ClD,IAAI,CAACsC,iBAAiB,CAACZ,OAAO,CAAC,CAAC,CAChC1B,IAAI,CAAC,UAACwC,QAAQ,EAAK;MACnB,IAAI,CAACA,QAAQ,CAACpB,IAAI,EAAE;QACnBoB,QAAQ,CAACpB,IAAI,GAAG+B,IAAI,CAACC,KAAK,CAACZ,QAAQ,CAACa,IAAI,CAAC;MAC1C;MAEA,OAAOvD,iBAAO,CAACwD,IAAI,CAAC7D,uBAAW,EAAE,UAACE,UAAU,EAAK;QAChD,OAAOA,UAAU,CAAC4D,OAAO,CAAC7B,OAAO,EAAEc,QAAQ,EAAE7D,KAAK,EAAE,IAAI,CAAC;MAC1D,CAAC,CAAC,CAACqB,IAAI,CAAC,YAAM;QACb,IAAIc,OAAO,CAACyC,OAAO,EAAE;UACpBzC,OAAO,CAACyC,OAAO,CAACf,QAAQ,CAACpB,IAAI,EAAE,SAAS,EAAEoB,QAAQ,CAAC;QACpD;QAEA,OAAOA,QAAQ,CAACpB,IAAI;MACrB,CAAC,CAAC;IACH,CAAC,CAAC,CACDoC,KAAK,CAAC,UAAChB,QAAQ,EAAK;MACpB,OAAO1C,iBAAO,CAACwD,IAAI,CAAC7D,uBAAW,EAAE,UAACE,UAAU,EAAK;QAChD,OAAOA,UAAU,CAAC8D,KAAK,CAACjB,QAAQ,EAAE7D,KAAK,CAAC;MACzC,CAAC,CAAC,CAACqB,IAAI,CAAC,YAAM;QACb,IAAIc,OAAO,CAAC2C,KAAK,EAAE;UAClB3C,OAAO,CAAC2C,KAAK,CAACjB,QAAQ,EAAE,OAAO,EAAEA,QAAQ,CAACkB,OAAO,CAAC;QACnD;QACA,MAAMlB,QAAQ;MACf,CAAC,CAAC;IACH,CAAC,CAAC;EACJ;EAEA,OACCd;EACC;EACA;EACA;EACA;EACA;EAAA,CACCiC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAClB3D,IAAI,CAACsC,iBAAiB,CAACZ,OAAO,CAAC,CAAC,CAChC1B,IAAI,CAAC,UAACwC,QAAQ,EAAK;IACnB,IAAIpB,IAAI;IACR,IAAI;MACHA,IAAI,GAAG+B,IAAI,CAACC,KAAK,CAACZ,QAAQ,CAACa,IAAI,CAAC;IACjC,CAAC,CAAC,OAAOO,CAAC,EAAE;MACXxC,IAAI,GAAGoB,QAAQ;IAChB;IAEA,IAAIzB,IAAI,KAAK,QAAQ,EAAE;MACtBpC,KAAK,CAACkF,GAAG,CAACzC,IAAI,CAAC;IAChB;IAEA,OAAOtB,iBAAO,CAACwD,IAAI,CAAC7D,uBAAW,EAAE,UAACE,UAAU,EAAK;MAChD,OAAOA,UAAU,CAAC4D,OAAO,CAAC7B,OAAO,EAAEc,QAAQ,EAAE7D,KAAK,EAAE,KAAK,CAAC;IAC3D,CAAC,CAAC,CAACqB,IAAI,CAAC,YAAM;MACb,IAAIc,OAAO,CAACyC,OAAO,EAAE;QACpBzC,OAAO,CAACyC,OAAO,CAACnC,IAAI,EAAE,SAAS,EAAEoB,QAAQ,CAAC;MAC3C;MACAd,OAAO,CAACoC,IAAI,CAAC,SAAS,EAAEtB,QAAQ,CAAC;MACjC,OAAOpB,IAAI;IACZ,CAAC,CAAC;EACH,CAAC,CAAC,CACDoC,KAAK,CAACO,mBAAU,CAACC,sBAAsB,EAAE,UAACJ,CAAC,EAAK;IAChD,IACCA,CAAC,CAACK,GAAG,IACLL,CAAC,CAACK,GAAG,CAACC,IAAI,KACRN,CAAC,CAACO,MAAM,IAAI,GAAG,IAAIP,CAAC,CAACO,MAAM,GAAG,GAAG,IAAKP,CAAC,CAACO,MAAM,KAAK,GAAG,CAAC,EACxD;MACDP,CAAC,CAACF,OAAO,eAAAlD,MAAA,CAAe2C,IAAI,CAACiB,SAAS,CAACR,CAAC,CAACK,GAAG,CAACC,IAAI,CAAC,CAAE;IACrD;IACA,MAAMN,CAAC;EACR,CAAC,CAAC,CACDJ,KAAK,CAAC,UAAChB,QAAQ,EAAK;IACpB,OAAO1C,iBAAO,CAACwD,IAAI,CAAC7D,uBAAW,EAAE,UAACE,UAAU,EAAK;MAChD,OAAOA,UAAU,CAAC8D,KAAK,CAACjB,QAAQ,CAAC;IAClC,CAAC,CAAC,CAACxC,IAAI,CAAC,YAAM;MACb,IAAIc,OAAO,CAAC2C,KAAK,EAAE;QAClB3C,OAAO,CAAC2C,KAAK,CAACjB,QAAQ,EAAE,OAAO,EAAEA,QAAQ,CAACkB,OAAO,CAAC;MACnD;;MAEA;MACA,IACClB,QAAQ,IACRA,QAAQ,CAAC6B,aAAa,IACtB7B,QAAQ,CAAC6B,aAAa,CAACC,IAAI,KAAK,cAAc,EAC7C;QACD,MAAM,IAAIrG,KAAK,WAAAuC,MAAA,CACJO,IAAI,uBAAAP,MAAA,CAAoB1B,GAAG,QAAA0B,MAAA,CAAKgC,QAAQ,CAACkB,OAAO,CAC3D,CAAC;MACF;MAEA,MAAMlB,QAAQ;IACf,CAAC,CAAC;EACH,CAAC,CAAC;AAEL,CAAC","ignoreList":[]}
package/cjs/utils.js CHANGED
@@ -12,19 +12,49 @@ exports.isImpostor = isImpostor;
12
12
  exports.isImpostorDeck = isImpostorDeck;
13
13
  exports.removeMultiByteChars = removeMultiByteChars;
14
14
  exports.replaceHostname = replaceHostname;
15
+ exports.resolveURL = resolveURL;
15
16
  exports.sanitizeBase64 = sanitizeBase64;
16
17
  exports.setSequentialSequences = setSequentialSequences;
17
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
19
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
19
20
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
20
21
  var _lodash = _interopRequireDefault(require("lodash"));
21
- var _url = _interopRequireDefault(require("url"));
22
22
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
23
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /* eslint-disable no-control-regex */
23
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24
+ /* eslint-disable no-control-regex */
25
+
24
26
  var DATE_FORMAT = exports.DATE_FORMAT = "YYYY-MM-DD HH:mm:ss.SSSSSS[Z]";
25
27
  var DATE_FORMAT_T = exports.DATE_FORMAT_T = "YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]";
26
28
  function getShortURL(url) {
27
- return _url.default.parse(url).path;
29
+ if (!url) return url;
30
+ if (typeof url !== "string") return url;
31
+ try {
32
+ return new URL(url, "http://a.b").pathname;
33
+ } catch (e) {
34
+ return url;
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Resolves a target URL relative to a base URL in a manner similar to a Web browser resolving an anchor tag.
40
+ * Matches url.resolve() behavior but handles relative bases.
41
+ */
42
+ function resolveURL(base, relative) {
43
+ if (!base) return relative;
44
+ if (!relative) return base;
45
+ var dummyBase = "http://a.b";
46
+ try {
47
+ // Try resolving normally (if base is absolute)
48
+ return new URL(relative, base).href;
49
+ } catch (e) {
50
+ try {
51
+ // If base is relative, resolve it against a dummy base, then strip it
52
+ var resolved = new URL(relative, new URL(base, dummyBase));
53
+ return resolved.href.replace(dummyBase, "");
54
+ } catch (e2) {
55
+ return relative;
56
+ }
57
+ }
28
58
  }
29
59
 
30
60
  /**
package/cjs/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["_lodash","_interopRequireDefault","require","_url","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DATE_FORMAT","exports","DATE_FORMAT_T","getShortURL","url","url2","parse","path","removeMultiByteChars","_txt","txt","replace","HOSTNAME_RE","getHostname","data","Error","concat","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","_toConsumableArray2","flatten","max","setSequentialSequences","deck","sections","index","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find","sanitizeBase64","obj","conditionFn","undefined","v","_typeof2","acc","re","test","_conditionFn","process","env","NODE_ENV","window","Cypress"],"sources":["../src/utils.js"],"sourcesContent":["import _ from \"lodash\";\n/* eslint-disable no-control-regex */\nimport url2 from \"url\";\n\nexport const DATE_FORMAT = \"YYYY-MM-DD HH:mm:ss.SSSSSS[Z]\";\nexport const DATE_FORMAT_T = \"YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]\";\n\nexport function getShortURL(url) {\n\treturn url2.parse(url).path;\n}\n\n/**\n * Sometimes a string(especially from another platform) has characters encoded using another method.\n * In these circumstances those characters, when encoded with utf-8, look like errors.\n * see http://i18nqa.com/debug/utf8-debug.html for examples\n */\nexport function removeMultiByteChars(_txt) {\n\t// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space\n\tconst txt = _txt.replace(/(\\xA0|\\x20|\\x07| )/gmu, \" \");\n\n\t// remove every other cursed character entirely.\n\treturn txt.replace(\n\t\t/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}|[\\x80-\\xBF][\\xC0-\\xFF]/gmu,\n\t\t\"\",\n\t);\n}\n\nconst HOSTNAME_RE = /^(?:https?:\\/\\/)?([\\w-\\._]*)/;\n\nexport function getHostname(data) {\n\tif (typeof data !== \"string\") {\n\t\tthrow new Error(\n\t\t\t`Arg must contain a hostname, ie: \"test.livepreso.com\". Found \"${data}\"`,\n\t\t);\n\t}\n\n\treturn data.match(HOSTNAME_RE)[1];\n}\n\n/**\n * Replaces the hostname in some data (regardless of it being a string, array or object),\n * it will recursively update it all.\n *\n * Eg:\n *\n * replaceHostname(\"https://test.com/api/cool/1/\", \"test.com\", \"real.com\")\n * > \"https://real.com/api/cool/1/\"\n *\n */\nexport function replaceHostname(data, before, after) {\n\t// Don't do anything if they're the same!\n\tif (before === after) {\n\t\treturn data;\n\t}\n\n\tconst hostnameBefore = getHostname(before, \"Before\");\n\tconst hostnameAfter = getHostname(after, \"After\");\n\n\tif (typeof data === \"string\" && data.indexOf(\"http\") === 0) {\n\t\treturn data.replace(hostnameBefore, hostnameAfter);\n\t} else if (Array.isArray(data)) {\n\t\treturn data.map((item) => replaceHostname(item, before, after));\n\t} else if (_.isObject(data)) {\n\t\treturn Object.keys(data).reduce((newObj, key) => {\n\t\t\tnewObj[key] = replaceHostname(data[key], before, after);\n\t\t\treturn newObj;\n\t\t}, {});\n\t}\n\treturn data;\n}\n\n// Takes the deckversion model and retrieves the highest id between all of\n// the sections, slides and subslides\nexport function getMaxID(deckVersionModel) {\n\tconst ids = deckVersionModel.section_set.map((section) => {\n\t\tlet slides = [];\n\t\tif (section.slide_set) {\n\t\t\tslides = section.slide_set.map((slide) => {\n\t\t\t\tlet subslides = [];\n\n\t\t\t\tif (slide.subslide_set) {\n\t\t\t\t\tsubslides = slide.subslide_set.map((subslide) => subslide.id);\n\t\t\t\t}\n\n\t\t\t\treturn [slide.id, ...subslides];\n\t\t\t});\n\t\t}\n\n\t\treturn [section.id, ..._.flatten(slides)];\n\t});\n\n\treturn _.max(_.flatten(ids));\n}\n\n// The sections, slides and subslides are currently ordered by sequence\n// but the sequence is not necessarily 0-based and sequential (e.g. in the\n// case of impostor decks). We fix that here.\nexport function setSequentialSequences(deck) {\n\tdeck.sections.forEach((section, index) => {\n\t\tsection.sequence = index;\n\t\tsection.index = index;\n\n\t\tsection.slides.forEach((slide, index) => {\n\t\t\tslide.sequence = index;\n\t\t\tslide.index = index;\n\n\t\t\tslide.subslides.forEach((subslide, index) => {\n\t\t\t\tsubslide.sequence = index;\n\t\t\t\tsubslide.index = index;\n\t\t\t});\n\t\t});\n\t});\n}\n\n// A simple function to check the tags of a model - if it has the \"section-header\"\n// tag then it's an impostor slide\nexport function isImpostor(model) {\n\tconst tags = model.tags || [];\n\n\treturn tags.indexOf(\"section-header\") !== -1;\n}\n\n// An impostor deck will have impostor slides - checking for these is the\n// most reliable method of determining whether a deck is an impostor deck,\n// and is also the same method that the server uses.\nexport function isImpostorDeck(deckVersionModel) {\n\tconst section = deckVersionModel.section_set.first();\n\n\treturn Boolean(\n\t\tsection && section.slide_set.find((slide) => isImpostor(slide)),\n\t);\n}\n\n/**\n * Strips base64 strings recursively.\n *\n * Optionally accepts a condition function, which you can use you add any extra\n * checks to test whether you want to clear the string.\n */\nexport function sanitizeBase64(obj, conditionFn = () => true) {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((v) => sanitizeBase64(v, conditionFn));\n\t} else if (\n\t\ttypeof obj === \"object\" &&\n\t\tobj !== null &&\n\t\ttypeof obj !== \"undefined\"\n\t) {\n\t\treturn Object.keys(obj).reduce((acc, key) => {\n\t\t\treturn { ...acc, [key]: sanitizeBase64(obj[key], conditionFn) };\n\t\t}, {});\n\t} else if (typeof obj === \"string\") {\n\t\t// Catch anything that looks like base64, or base64%2C (which is the encoded version)\n\t\t// and strip it. This is a last resort, we'd prefer not to be in this position!\n\t\tconst re = /base64(,|(%2C))/;\n\n\t\tif (re.test(obj)) {\n\t\t\t// If you're a developer, let's throw an error.\n\t\t\tif (process.env.NODE_ENV === \"development\" && !window.Cypress) {\n\t\t\t\tthrow new Error(\"Tried to save a base64 string. Figure out why!\");\n\t\t\t}\n\n\t\t\tif (conditionFn?.(obj) ?? true) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn obj;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"utils.js","names":["_lodash","_interopRequireDefault","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DATE_FORMAT","exports","DATE_FORMAT_T","getShortURL","url","URL","pathname","resolveURL","base","relative","dummyBase","href","resolved","replace","e2","removeMultiByteChars","_txt","txt","HOSTNAME_RE","getHostname","data","Error","concat","match","replaceHostname","before","after","hostnameBefore","hostnameAfter","indexOf","Array","isArray","map","item","_","isObject","reduce","newObj","key","getMaxID","deckVersionModel","ids","section_set","section","slides","slide_set","slide","subslides","subslide_set","subslide","id","_toConsumableArray2","flatten","max","setSequentialSequences","deck","sections","index","sequence","isImpostor","model","tags","isImpostorDeck","first","Boolean","find","sanitizeBase64","obj","conditionFn","undefined","v","_typeof2","acc","re","test","_conditionFn","process","env","NODE_ENV","window","Cypress"],"sources":["../src/utils.js"],"sourcesContent":["import _ from \"lodash\";\n/* eslint-disable no-control-regex */\n\nexport const DATE_FORMAT = \"YYYY-MM-DD HH:mm:ss.SSSSSS[Z]\";\nexport const DATE_FORMAT_T = \"YYYY-MM-DDTHH:mm:ss.SSSSSS[Z]\";\n\nexport function getShortURL(url) {\n\tif (!url) return url;\n\tif (typeof url !== \"string\") return url;\n\n\ttry {\n\t\treturn new URL(url, \"http://a.b\").pathname;\n\t} catch (e) {\n\t\treturn url;\n\t}\n}\n\n/**\n * Resolves a target URL relative to a base URL in a manner similar to a Web browser resolving an anchor tag.\n * Matches url.resolve() behavior but handles relative bases.\n */\nexport function resolveURL(base, relative) {\n\tif (!base) return relative;\n\tif (!relative) return base;\n\n\tconst dummyBase = \"http://a.b\";\n\ttry {\n\t\t// Try resolving normally (if base is absolute)\n\t\treturn new URL(relative, base).href;\n\t} catch (e) {\n\t\ttry {\n\t\t\t// If base is relative, resolve it against a dummy base, then strip it\n\t\t\tconst resolved = new URL(relative, new URL(base, dummyBase));\n\t\t\treturn resolved.href.replace(dummyBase, \"\");\n\t\t} catch (e2) {\n\t\t\treturn relative;\n\t\t}\n\t}\n}\n\n/**\n * Sometimes a string(especially from another platform) has characters encoded using another method.\n * In these circumstances those characters, when encoded with utf-8, look like errors.\n * see http://i18nqa.com/debug/utf8-debug.html for examples\n */\nexport function removeMultiByteChars(_txt) {\n\t// replace possible whitespace characters (non-breaking space, thin space etc.) with a normal space\n\tconst txt = _txt.replace(/(\\xA0|\\x20|\\x07| )/gmu, \" \");\n\n\t// remove every other cursed character entirely.\n\treturn txt.replace(\n\t\t/[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}|[\\x80-\\xBF][\\xC0-\\xFF]/gmu,\n\t\t\"\",\n\t);\n}\n\nconst HOSTNAME_RE = /^(?:https?:\\/\\/)?([\\w-\\._]*)/;\n\nexport function getHostname(data) {\n\tif (typeof data !== \"string\") {\n\t\tthrow new Error(\n\t\t\t`Arg must contain a hostname, ie: \"test.livepreso.com\". Found \"${data}\"`,\n\t\t);\n\t}\n\n\treturn data.match(HOSTNAME_RE)[1];\n}\n\n/**\n * Replaces the hostname in some data (regardless of it being a string, array or object),\n * it will recursively update it all.\n *\n * Eg:\n *\n * replaceHostname(\"https://test.com/api/cool/1/\", \"test.com\", \"real.com\")\n * > \"https://real.com/api/cool/1/\"\n *\n */\nexport function replaceHostname(data, before, after) {\n\t// Don't do anything if they're the same!\n\tif (before === after) {\n\t\treturn data;\n\t}\n\n\tconst hostnameBefore = getHostname(before, \"Before\");\n\tconst hostnameAfter = getHostname(after, \"After\");\n\n\tif (typeof data === \"string\" && data.indexOf(\"http\") === 0) {\n\t\treturn data.replace(hostnameBefore, hostnameAfter);\n\t} else if (Array.isArray(data)) {\n\t\treturn data.map((item) => replaceHostname(item, before, after));\n\t} else if (_.isObject(data)) {\n\t\treturn Object.keys(data).reduce((newObj, key) => {\n\t\t\tnewObj[key] = replaceHostname(data[key], before, after);\n\t\t\treturn newObj;\n\t\t}, {});\n\t}\n\treturn data;\n}\n\n// Takes the deckversion model and retrieves the highest id between all of\n// the sections, slides and subslides\nexport function getMaxID(deckVersionModel) {\n\tconst ids = deckVersionModel.section_set.map((section) => {\n\t\tlet slides = [];\n\t\tif (section.slide_set) {\n\t\t\tslides = section.slide_set.map((slide) => {\n\t\t\t\tlet subslides = [];\n\n\t\t\t\tif (slide.subslide_set) {\n\t\t\t\t\tsubslides = slide.subslide_set.map((subslide) => subslide.id);\n\t\t\t\t}\n\n\t\t\t\treturn [slide.id, ...subslides];\n\t\t\t});\n\t\t}\n\n\t\treturn [section.id, ..._.flatten(slides)];\n\t});\n\n\treturn _.max(_.flatten(ids));\n}\n\n// The sections, slides and subslides are currently ordered by sequence\n// but the sequence is not necessarily 0-based and sequential (e.g. in the\n// case of impostor decks). We fix that here.\nexport function setSequentialSequences(deck) {\n\tdeck.sections.forEach((section, index) => {\n\t\tsection.sequence = index;\n\t\tsection.index = index;\n\n\t\tsection.slides.forEach((slide, index) => {\n\t\t\tslide.sequence = index;\n\t\t\tslide.index = index;\n\n\t\t\tslide.subslides.forEach((subslide, index) => {\n\t\t\t\tsubslide.sequence = index;\n\t\t\t\tsubslide.index = index;\n\t\t\t});\n\t\t});\n\t});\n}\n\n// A simple function to check the tags of a model - if it has the \"section-header\"\n// tag then it's an impostor slide\nexport function isImpostor(model) {\n\tconst tags = model.tags || [];\n\n\treturn tags.indexOf(\"section-header\") !== -1;\n}\n\n// An impostor deck will have impostor slides - checking for these is the\n// most reliable method of determining whether a deck is an impostor deck,\n// and is also the same method that the server uses.\nexport function isImpostorDeck(deckVersionModel) {\n\tconst section = deckVersionModel.section_set.first();\n\n\treturn Boolean(\n\t\tsection && section.slide_set.find((slide) => isImpostor(slide)),\n\t);\n}\n\n/**\n * Strips base64 strings recursively.\n *\n * Optionally accepts a condition function, which you can use you add any extra\n * checks to test whether you want to clear the string.\n */\nexport function sanitizeBase64(obj, conditionFn = () => true) {\n\tif (Array.isArray(obj)) {\n\t\treturn obj.map((v) => sanitizeBase64(v, conditionFn));\n\t} else if (\n\t\ttypeof obj === \"object\" &&\n\t\tobj !== null &&\n\t\ttypeof obj !== \"undefined\"\n\t) {\n\t\treturn Object.keys(obj).reduce((acc, key) => {\n\t\t\treturn { ...acc, [key]: sanitizeBase64(obj[key], conditionFn) };\n\t\t}, {});\n\t} else if (typeof obj === \"string\") {\n\t\t// Catch anything that looks like base64, or base64%2C (which is the encoded version)\n\t\t// and strip it. This is a last resort, we'd prefer not to be in this position!\n\t\tconst re = /base64(,|(%2C))/;\n\n\t\tif (re.test(obj)) {\n\t\t\t// If you're a developer, let's throw an error.\n\t\t\tif (process.env.NODE_ENV === \"development\" && !window.Cypress) {\n\t\t\t\tthrow new Error(\"Tried to save a base64 string. Figure out why!\");\n\t\t\t}\n\n\t\t\tif (conditionFn?.(obj) ?? true) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn obj;\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@livepreso/api",
3
3
  "license": "UNLICENSED",
4
- "version": "6.55.2",
4
+ "version": "6.56.1",
5
5
  "description": "Everything to do with talking to the SalePreso API",
6
6
  "main": "index.js",
7
7
  "module": "esm/index.js",
@@ -56,8 +56,8 @@
56
56
  "jest-fixed-default-reporter": "~2.0.1",
57
57
  "rosie": "~2.1.0",
58
58
  "@faker-js/faker": "~7.5.0",
59
- "@livepreso/eslint-config": "1.0.0",
60
- "sp-test": "0.2.0"
59
+ "sp-test": "0.2.0",
60
+ "@livepreso/eslint-config": "1.0.0"
61
61
  },
62
62
  "scripts": {
63
63
  "test:debug": "node --inspect node_modules/.bin/jest --watch --runInBand",
@@ -1,3 +1,13 @@
1
- Browserslist: browsers data (caniuse-lite) is 9 months old. Please run:
2
- npx update-browserslist-db@latest
3
- Why you should do it regularly: https://github.com/browserslist/update-db#readme
1
+ npm verbose cli /home/adam/.nvm/versions/node/v24.12.0/bin/node /home/adam/.nvm/versions/node/v24.12.0/bin/npm
2
+ npm info using npm@11.6.2
3
+ npm info using node@v24.12.0
4
+ npm verbose title npm run build:cjs
5
+ npm verbose argv "run" "build:cjs"
6
+ npm verbose logfile logs-max:10 dir:/home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-
7
+ npm verbose logfile /home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-debug-0.log
8
+ npm verbose cwd /home/adam/Programming/work/livepreso/modules/api
9
+ npm verbose os Linux 6.14.0-29-generic
10
+ npm verbose node v24.12.0
11
+ npm verbose npm v11.6.2
12
+ npm verbose exit 0
13
+ npm info ok
@@ -1,9 +1,19 @@
1
1
  Invoking: run-p build:*
2
+ npm verbose cli /home/adam/.nvm/versions/node/v24.12.0/bin/node /home/adam/.nvm/versions/node/v24.12.0/bin/npm
3
+ npm info using npm@11.6.2
4
+ npm info using node@v24.12.0
5
+ npm verbose title npm run build:cjs
6
+ npm verbose argv "run" "build:cjs"
7
+ npm verbose logfile logs-max:10 dir:/home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-
8
+ npm verbose logfile /home/adam/.npm/_logs/2026-02-17T02_45_57_253Z-debug-0.log
2
9
 
3
- > @livepreso/api@6.53.0 build:cjs
10
+ > @livepreso/api@6.55.2 build:cjs
4
11
  > BABEL_ENV=cjs babel --delete-dir-on-start src/ --out-dir=cjs/ -s
5
12
 
6
- Browserslist: browsers data (caniuse-lite) is 9 months old. Please run:
7
- npx update-browserslist-db@latest
8
- Why you should do it regularly: https://github.com/browserslist/update-db#readme
9
- Successfully compiled 163 files with Babel (17903ms).
13
+ Successfully compiled 165 files with Babel (6718ms).
14
+ npm verbose cwd /home/adam/Programming/work/livepreso/modules/api
15
+ npm verbose os Linux 6.14.0-29-generic
16
+ npm verbose node v24.12.0
17
+ npm verbose npm v11.6.2
18
+ npm verbose exit 0
19
+ npm info ok
@@ -0,0 +1 @@
1
+ This project does not define the caching behavior of the "test" command, so caching has been disabled.
@@ -0,0 +1 @@
1
+ Invoking: jest --coverage --coverageReporters=json
package/src/api.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import Promise from "bluebird";
2
- import url2 from "url";
2
+ import { resolveURL } from "./utils.js";
3
3
 
4
4
  /**
5
5
  * @namespace api
@@ -72,10 +72,8 @@ export const Api = {
72
72
  * @returns {string}
73
73
  */
74
74
  getRootURL() {
75
- const urlObj = url2.parse(Api._apiURL);
76
- urlObj.pathname = "";
77
- urlObj.search = "";
78
- return url2.format(urlObj);
75
+ const url = resolveURL(Api._apiURL, "/");
76
+ return url;
79
77
  },
80
78
 
81
79
  /**
@@ -1,4 +1,4 @@
1
- import { DATE_FORMAT_T, removeMultiByteChars } from "../utils.js";
1
+ import { getShortURL, removeMultiByteChars } from "../utils.js";
2
2
 
3
3
  import { Api } from "../api.js";
4
4
  import Collection from "ampersand-rest-collection";
@@ -8,11 +8,9 @@ import SuperAgentRequest from "superagent-bluebird-promise";
8
8
  import _ from "lodash";
9
9
  import dedent from "dedent-js";
10
10
  import log from "../log.js";
11
- import moment from "moment";
12
11
  import qs from "qs";
13
12
  import { registeredStates } from "../state-register.js";
14
13
  import { sync } from "../sync.js";
15
- import url2 from "url";
16
14
 
17
15
  /**
18
16
  * @constructor
@@ -246,8 +244,8 @@ export const BaseModel = Model.extend(
246
244
  return null;
247
245
  }
248
246
 
249
- const urlPath = url2.parse(url).path;
250
- const resourceURLPath = url2.parse(resourceURL).path;
247
+ const urlPath = getShortURL(url);
248
+ const resourceURLPath = getShortURL(resourceURL);
251
249
 
252
250
  // Remove the '/api' if present
253
251
  const resourceEnd = resourceURLPath.split("/api").join("");
@@ -276,20 +274,40 @@ export const BaseModel = Model.extend(
276
274
  dataTypes: {
277
275
  date: {
278
276
  set: (newVal) => {
277
+ let val = null;
278
+ if (newVal) {
279
+ try {
280
+ const date = new Date(newVal);
281
+ if (!isNaN(date.getTime())) {
282
+ val = date.toISOString().replace("Z", "000Z");
283
+ }
284
+ } catch (_e) {
285
+ // fallback to null if invalid
286
+ }
287
+ }
279
288
  return {
280
- val: newVal ? moment.utc(newVal).format(DATE_FORMAT_T) : null,
289
+ val,
281
290
  type: "date",
282
291
  };
283
292
  },
284
293
  compare: (currentVal, newVal) => {
285
- if (typeof currentVal === "undefined") {
294
+ if (currentVal === undefined) {
286
295
  return false;
287
296
  }
288
297
 
289
298
  if (currentVal || newVal) {
290
- return moment(currentVal).isSame(moment(newVal));
299
+ if (currentVal === newVal) {
300
+ return true;
301
+ }
302
+ try {
303
+ const d1 = new Date(currentVal);
304
+ const d2 = new Date(newVal);
305
+ return d1.getTime() === d2.getTime();
306
+ } catch (_e) {
307
+ return false;
308
+ }
291
309
  }
292
- return currentVal !== newVal;
310
+ return currentVal === newVal;
293
311
  },
294
312
  },
295
313
  stringSanitized: {