botframework-webchat-core 4.13.0 → 4.14.2

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 (107) hide show
  1. package/lib/createPromiseQueue.js +1 -1
  2. package/lib/createStore.d.ts +3 -2
  3. package/lib/createStore.d.ts.map +1 -0
  4. package/lib/createStore.js +1 -1
  5. package/lib/index.d.ts +49 -0
  6. package/lib/index.d.ts.map +1 -0
  7. package/lib/index.js +26 -6
  8. package/lib/reducer.d.ts +1 -0
  9. package/lib/reducer.d.ts.map +1 -0
  10. package/lib/reducers/activities.js +1 -1
  11. package/lib/reducers/clockSkewAdjustment.js +1 -1
  12. package/lib/reducers/lastTypingAt.js +1 -1
  13. package/lib/reducers/notifications.js +1 -1
  14. package/lib/reducers/typing.js +1 -1
  15. package/lib/sagas/connectSaga.js +14 -8
  16. package/lib/sagas/connectionStatusToNotificationSaga.js +1 -1
  17. package/lib/sagas/effects/forkPut.js +1 -1
  18. package/lib/sagas/markAllAsSpokenOnStopSpeakActivitySaga.js +1 -1
  19. package/lib/sagas/observeActivitySaga.js +1 -1
  20. package/lib/sagas/postActivitySaga.js +39 -32
  21. package/lib/sagas/queueIncomingActivitySaga.js +7 -3
  22. package/lib/sagas/sendMessageBackToPostActivitySaga.js +4 -4
  23. package/lib/sagas/sendPostBackToPostActivitySaga.js +4 -4
  24. package/lib/selectors/combineSelectors.js +1 -1
  25. package/lib/types/OneOrMany.d.ts +3 -0
  26. package/lib/types/OneOrMany.d.ts.map +1 -0
  27. package/lib/types/OneOrMany.js +2 -0
  28. package/lib/types/external/DirectLineActivity.d.ts +3 -0
  29. package/lib/types/external/DirectLineActivity.d.ts.map +1 -0
  30. package/lib/types/external/DirectLineActivity.js +2 -0
  31. package/lib/types/external/DirectLineAnimationCard.d.ts +3 -0
  32. package/lib/types/external/DirectLineAnimationCard.d.ts.map +1 -0
  33. package/lib/types/external/DirectLineAnimationCard.js +2 -0
  34. package/lib/types/external/DirectLineAttachment.d.ts +3 -0
  35. package/lib/types/external/DirectLineAttachment.d.ts.map +1 -0
  36. package/lib/types/external/DirectLineAttachment.js +2 -0
  37. package/lib/types/external/DirectLineAudioCard.d.ts +3 -0
  38. package/lib/types/external/DirectLineAudioCard.d.ts.map +1 -0
  39. package/lib/types/external/DirectLineAudioCard.js +2 -0
  40. package/lib/types/external/DirectLineCardAction.d.ts +110 -0
  41. package/lib/types/external/DirectLineCardAction.d.ts.map +1 -0
  42. package/lib/types/external/DirectLineCardAction.js +2 -0
  43. package/lib/types/external/DirectLineHeroCard.d.ts +3 -0
  44. package/lib/types/external/DirectLineHeroCard.d.ts.map +1 -0
  45. package/lib/types/external/DirectLineHeroCard.js +2 -0
  46. package/lib/types/external/DirectLineJSBotConnection.d.ts +3 -0
  47. package/lib/types/external/DirectLineJSBotConnection.d.ts.map +1 -0
  48. package/lib/types/external/DirectLineJSBotConnection.js +2 -0
  49. package/lib/types/external/DirectLineOAuthCard.d.ts +3 -0
  50. package/lib/types/external/DirectLineOAuthCard.d.ts.map +1 -0
  51. package/lib/types/external/DirectLineOAuthCard.js +2 -0
  52. package/lib/types/external/DirectLineReceiptCard.d.ts +3 -0
  53. package/lib/types/external/DirectLineReceiptCard.d.ts.map +1 -0
  54. package/lib/types/external/DirectLineReceiptCard.js +2 -0
  55. package/lib/types/external/DirectLineSignInCard.d.ts +3 -0
  56. package/lib/types/external/DirectLineSignInCard.d.ts.map +1 -0
  57. package/lib/types/external/DirectLineSignInCard.js +2 -0
  58. package/lib/types/external/DirectLineSuggestedAction.d.ts +3 -0
  59. package/lib/types/external/DirectLineSuggestedAction.d.ts.map +1 -0
  60. package/lib/types/external/DirectLineSuggestedAction.js +2 -0
  61. package/lib/types/external/DirectLineThumbnailCard.d.ts +3 -0
  62. package/lib/types/external/DirectLineThumbnailCard.d.ts.map +1 -0
  63. package/lib/types/external/DirectLineThumbnailCard.js +2 -0
  64. package/lib/types/external/DirectLineVideoCard.d.ts +3 -0
  65. package/lib/types/external/DirectLineVideoCard.d.ts.map +1 -0
  66. package/lib/types/external/DirectLineVideoCard.js +2 -0
  67. package/lib/utils/dateToLocaleISOString.js +37 -0
  68. package/lib/utils/deleteKey.js +1 -1
  69. package/lib/utils/once.d.ts +2 -0
  70. package/lib/utils/once.d.ts.map +1 -0
  71. package/lib/utils/once.js +17 -0
  72. package/lib/utils/singleToArray.d.ts +2 -0
  73. package/lib/utils/singleToArray.d.ts.map +1 -0
  74. package/lib/utils/singleToArray.js +11 -0
  75. package/lib/utils/warnOnce.d.ts +2 -0
  76. package/lib/utils/warnOnce.d.ts.map +1 -0
  77. package/lib/utils/warnOnce.js +17 -0
  78. package/package.json +25 -21
  79. package/src/createStore.ts +2 -2
  80. package/src/{index.js → index.ts} +38 -4
  81. package/src/sagas/connectSaga.js +9 -2
  82. package/src/sagas/postActivitySaga.js +11 -4
  83. package/src/sagas/sendMessageBackToPostActivitySaga.js +3 -3
  84. package/src/sagas/sendPostBackToPostActivitySaga.js +2 -3
  85. package/src/tsconfig.json +7 -3
  86. package/src/types/OneOrMany.ts +3 -0
  87. package/src/types/external/DirectLineActivity.ts +6 -0
  88. package/src/types/external/DirectLineAnimationCard.ts +6 -0
  89. package/src/types/external/DirectLineAttachment.ts +6 -0
  90. package/src/types/external/DirectLineAudioCard.ts +6 -0
  91. package/src/types/external/DirectLineCardAction.ts +128 -0
  92. package/src/types/external/DirectLineHeroCard.ts +6 -0
  93. package/src/types/external/DirectLineJSBotConnection.ts +6 -0
  94. package/src/types/external/DirectLineOAuthCard.ts +6 -0
  95. package/src/types/external/DirectLineReceiptCard.ts +6 -0
  96. package/src/types/external/DirectLineSignInCard.ts +6 -0
  97. package/src/types/external/DirectLineSuggestedAction.ts +6 -0
  98. package/src/types/external/DirectLineThumbnailCard.ts +6 -0
  99. package/src/types/external/DirectLineVideoCard.ts +6 -0
  100. package/src/utils/dateToLocaleISOString.chatham.spec.js +13 -0
  101. package/src/utils/dateToLocaleISOString.japan.spec.js +13 -0
  102. package/src/utils/dateToLocaleISOString.js +34 -0
  103. package/src/utils/dateToLocaleISOString.pacific.spec.js +13 -0
  104. package/src/utils/dateToLocaleISOString.utc.spec.js +20 -0
  105. package/src/utils/once.ts +10 -0
  106. package/src/utils/singleToArray.ts +3 -0
  107. package/src/utils/warnOnce.ts +5 -0
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineHeroCard = any;
2
+ export default DirectLineHeroCard;
3
+ //# sourceMappingURL=DirectLineHeroCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineHeroCard.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineHeroCard.ts"],"names":[],"mappings":"AAGA,aAAK,kBAAkB,GAAG,GAAG,CAAC;AAE9B,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineJSBotConnection = any;
2
+ export default DirectLineJSBotConnection;
3
+ //# sourceMappingURL=DirectLineJSBotConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineJSBotConnection.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineJSBotConnection.ts"],"names":[],"mappings":"AAGA,aAAK,yBAAyB,GAAG,GAAG,CAAC;AAErC,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineOAuthCard = any;
2
+ export default DirectLineOAuthCard;
3
+ //# sourceMappingURL=DirectLineOAuthCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineOAuthCard.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineOAuthCard.ts"],"names":[],"mappings":"AAGA,aAAK,mBAAmB,GAAG,GAAG,CAAC;AAE/B,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineReceiptCard = any;
2
+ export default DirectLineReceiptCard;
3
+ //# sourceMappingURL=DirectLineReceiptCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineReceiptCard.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineReceiptCard.ts"],"names":[],"mappings":"AAGA,aAAK,qBAAqB,GAAG,GAAG,CAAC;AAEjC,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineSignInCard = any;
2
+ export default DirectLineSignInCard;
3
+ //# sourceMappingURL=DirectLineSignInCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineSignInCard.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineSignInCard.ts"],"names":[],"mappings":"AAGA,aAAK,oBAAoB,GAAG,GAAG,CAAC;AAEhC,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineSuggestedAction = any;
2
+ export default DirectLineSuggestedAction;
3
+ //# sourceMappingURL=DirectLineSuggestedAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineSuggestedAction.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineSuggestedAction.ts"],"names":[],"mappings":"AAGA,aAAK,yBAAyB,GAAG,GAAG,CAAC;AAErC,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineThumbnailCard = any;
2
+ export default DirectLineThumbnailCard;
3
+ //# sourceMappingURL=DirectLineThumbnailCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineThumbnailCard.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineThumbnailCard.ts"],"names":[],"mappings":"AAGA,aAAK,uBAAuB,GAAG,GAAG,CAAC;AAEnC,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,3 @@
1
+ declare type DirectLineVideoCard = any;
2
+ export default DirectLineVideoCard;
3
+ //# sourceMappingURL=DirectLineVideoCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectLineVideoCard.d.ts","sourceRoot":"","sources":["../../../src/types/external/DirectLineVideoCard.ts"],"names":[],"mappings":"AAGA,aAAK,mBAAmB,GAAG,GAAG,CAAC;AAE/B,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbXX0=
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = dateToLocaleISOString;
7
+
8
+ /* eslint no-magic-numbers: ["off", { "ignore": [1, 2, 3, 60] }] */
9
+ function pad(value) {
10
+ var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
11
+
12
+ if (typeof value !== 'number') {
13
+ throw new Error('First argument must be a number');
14
+ }
15
+
16
+ value += '';
17
+
18
+ while (value.length < count) {
19
+ value = '0' + value;
20
+ }
21
+
22
+ return value;
23
+ } // Adopted from https://stackoverflow.com/questions/17415579/how-to-iso-8601-format-a-date-with-timezone-offset-in-javascript.
24
+
25
+
26
+ function dateToLocaleISOString(date) {
27
+ if (!(date instanceof Date)) {
28
+ throw new Error('First argument must be a Date object');
29
+ }
30
+
31
+ var timezoneOffset = -date.getTimezoneOffset();
32
+ var timezoneSign = timezoneOffset < 0 ? '-' : '+'; // "yyyy-MM-DDTHH:mm:ss.fff+08:00" for GMT+08
33
+ // "yyyy-MM-DDTHH:mm:ss.fffZ" for UTC
34
+
35
+ return "".concat(date.getFullYear(), "-").concat(pad(date.getMonth() + 1), "-").concat(pad(date.getDate()), "T").concat(pad(date.getHours()), ":").concat(pad(date.getMinutes()), ":").concat(pad(date.getSeconds()), ".").concat(pad(date.getMilliseconds(), 3)).concat(timezoneOffset ? "".concat(timezoneSign).concat(pad(~~(Math.abs(timezoneOffset) / 60)), ":").concat(pad(timezoneOffset % 60)) : 'Z');
36
+ }
37
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kYXRlVG9Mb2NhbGVJU09TdHJpbmcuanMiXSwibmFtZXMiOlsicGFkIiwidmFsdWUiLCJjb3VudCIsIkVycm9yIiwibGVuZ3RoIiwiZGF0ZVRvTG9jYWxlSVNPU3RyaW5nIiwiZGF0ZSIsIkRhdGUiLCJ0aW1lem9uZU9mZnNldCIsImdldFRpbWV6b25lT2Zmc2V0IiwidGltZXpvbmVTaWduIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0TWlsbGlzZWNvbmRzIiwiTWF0aCIsImFicyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBRUEsU0FBU0EsR0FBVCxDQUFhQyxLQUFiLEVBQStCO0FBQUEsTUFBWEMsS0FBVyx1RUFBSCxDQUFHOztBQUM3QixNQUFJLE9BQU9ELEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDN0IsVUFBTSxJQUFJRSxLQUFKLENBQVUsaUNBQVYsQ0FBTjtBQUNEOztBQUVERixFQUFBQSxLQUFLLElBQUksRUFBVDs7QUFFQSxTQUFPQSxLQUFLLENBQUNHLE1BQU4sR0FBZUYsS0FBdEIsRUFBNkI7QUFDM0JELElBQUFBLEtBQUssR0FBRyxNQUFNQSxLQUFkO0FBQ0Q7O0FBRUQsU0FBT0EsS0FBUDtBQUNELEMsQ0FFRDs7O0FBQ2UsU0FBU0kscUJBQVQsQ0FBK0JDLElBQS9CLEVBQXFDO0FBQ2xELE1BQUksRUFBRUEsSUFBSSxZQUFZQyxJQUFsQixDQUFKLEVBQTZCO0FBQzNCLFVBQU0sSUFBSUosS0FBSixDQUFVLHNDQUFWLENBQU47QUFDRDs7QUFFRCxNQUFNSyxjQUFjLEdBQUcsQ0FBQ0YsSUFBSSxDQUFDRyxpQkFBTCxFQUF4QjtBQUNBLE1BQU1DLFlBQVksR0FBR0YsY0FBYyxHQUFHLENBQWpCLEdBQXFCLEdBQXJCLEdBQTJCLEdBQWhELENBTmtELENBUWxEO0FBQ0E7O0FBRUEsbUJBQVVGLElBQUksQ0FBQ0ssV0FBTCxFQUFWLGNBQWdDWCxHQUFHLENBQUNNLElBQUksQ0FBQ00sUUFBTCxLQUFrQixDQUFuQixDQUFuQyxjQUE0RFosR0FBRyxDQUFDTSxJQUFJLENBQUNPLE9BQUwsRUFBRCxDQUEvRCxjQUFtRmIsR0FBRyxDQUFDTSxJQUFJLENBQUNRLFFBQUwsRUFBRCxDQUF0RixjQUEyR2QsR0FBRyxDQUM1R00sSUFBSSxDQUFDUyxVQUFMLEVBRDRHLENBQTlHLGNBRUtmLEdBQUcsQ0FBQ00sSUFBSSxDQUFDVSxVQUFMLEVBQUQsQ0FGUixjQUUrQmhCLEdBQUcsQ0FBQ00sSUFBSSxDQUFDVyxlQUFMLEVBQUQsRUFBeUIsQ0FBekIsQ0FGbEMsU0FHRVQsY0FBYyxhQUFNRSxZQUFOLFNBQXFCVixHQUFHLENBQUMsQ0FBQyxFQUFFa0IsSUFBSSxDQUFDQyxHQUFMLENBQVNYLGNBQVQsSUFBMkIsRUFBN0IsQ0FBRixDQUF4QixjQUErRFIsR0FBRyxDQUFDUSxjQUFjLEdBQUcsRUFBbEIsQ0FBbEUsSUFBNEYsR0FINUc7QUFLRCIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJvZmZcIiwgeyBcImlnbm9yZVwiOiBbMSwgMiwgMywgNjBdIH1dICovXG5cbmZ1bmN0aW9uIHBhZCh2YWx1ZSwgY291bnQgPSAyKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gIH1cblxuICB2YWx1ZSArPSAnJztcblxuICB3aGlsZSAodmFsdWUubGVuZ3RoIDwgY291bnQpIHtcbiAgICB2YWx1ZSA9ICcwJyArIHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBBZG9wdGVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTc0MTU1NzkvaG93LXRvLWlzby04NjAxLWZvcm1hdC1hLWRhdGUtd2l0aC10aW1lem9uZS1vZmZzZXQtaW4tamF2YXNjcmlwdC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRhdGVUb0xvY2FsZUlTT1N0cmluZyhkYXRlKSB7XG4gIGlmICghKGRhdGUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIERhdGUgb2JqZWN0Jyk7XG4gIH1cblxuICBjb25zdCB0aW1lem9uZU9mZnNldCA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gIGNvbnN0IHRpbWV6b25lU2lnbiA9IHRpbWV6b25lT2Zmc2V0IDwgMCA/ICctJyA6ICcrJztcblxuICAvLyBcInl5eXktTU0tRERUSEg6bW06c3MuZmZmKzA4OjAwXCIgZm9yIEdNVCswOFxuICAvLyBcInl5eXktTU0tRERUSEg6bW06c3MuZmZmWlwiIGZvciBVVENcblxuICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3BhZChkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHtwYWQoZGF0ZS5nZXREYXRlKCkpfVQke3BhZChkYXRlLmdldEhvdXJzKCkpfToke3BhZChcbiAgICBkYXRlLmdldE1pbnV0ZXMoKVxuICApfToke3BhZChkYXRlLmdldFNlY29uZHMoKSl9LiR7cGFkKGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpfSR7XG4gICAgdGltZXpvbmVPZmZzZXQgPyBgJHt0aW1lem9uZVNpZ259JHtwYWQofn4oTWF0aC5hYnModGltZXpvbmVPZmZzZXQpIC8gNjApKX06JHtwYWQodGltZXpvbmVPZmZzZXQgJSA2MCl9YCA6ICdaJ1xuICB9YDtcbn1cbiJdfQ==
@@ -27,4 +27,4 @@ function deleteKey(map, key) {
27
27
  nextMap = (0, _objectWithoutProperties2["default"])(map, [key].map(_toPropertyKey));
28
28
  return nextMap;
29
29
  }
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWxldGVLZXkuanMiXSwibmFtZXMiOlsiZGVsZXRlS2V5IiwibWFwIiwia2V5IiwiZGVsZXRlZCIsIm5leHRNYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVlLFNBQVNBLFNBQVQsQ0FBbUJDLEdBQW5CLEVBQXdCQyxHQUF4QixFQUE2QjtBQUMxQyxNQUFJLENBQUNELEdBQUwsRUFBVTtBQUNSLFdBQU9BLEdBQVA7QUFDRDs7QUFIeUMsTUFLM0JFLE9BTDJCLEdBS0hGLEdBTEcsQ0FLakNDLEdBTGlDO0FBQUEsTUFLZkUsT0FMZSw2Q0FLSEgsR0FMRyxHQUtqQ0MsR0FMaUM7QUFPMUMsU0FBT0UsT0FBUDtBQUNEIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBbXCJlcnJvclwiLCB7IFwidmFyc0lnbm9yZVBhdHRlcm5cIjogXCJeZGVsZXRlZCRcIiB9XSAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWxldGVLZXkobWFwLCBrZXkpIHtcbiAgaWYgKCFtYXApIHtcbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgY29uc3QgeyBba2V5XTogZGVsZXRlZCwgLi4ubmV4dE1hcCB9ID0gbWFwO1xuXG4gIHJldHVybiBuZXh0TWFwO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWxldGVLZXkuanMiXSwibmFtZXMiOlsiZGVsZXRlS2V5IiwibWFwIiwia2V5IiwiZGVsZXRlZCIsIm5leHRNYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVlLFNBQVNBLFNBQVQsQ0FBbUJDLEdBQW5CLEVBQXdCQyxHQUF4QixFQUE2QjtBQUMxQyxNQUFJLENBQUNELEdBQUwsRUFBVTtBQUNSLFdBQU9BLEdBQVA7QUFDRDs7QUFFRCxNQUFlRSxPQUFmLEdBQXVDRixHQUF2QyxDQUFTQyxHQUFUO0FBQUEsTUFBMkJFLE9BQTNCLDZDQUF1Q0gsR0FBdkMsR0FBU0MsR0FBVDtBQUVBLFNBQU9FLE9BQVA7QUFDRCIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby11bnVzZWQtdmFyczogW1wiZXJyb3JcIiwgeyBcInZhcnNJZ25vcmVQYXR0ZXJuXCI6IFwiXmRlbGV0ZWQkXCIgfV0gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVsZXRlS2V5KG1hcCwga2V5KSB7XG4gIGlmICghbWFwKSB7XG4gICAgcmV0dXJuIG1hcDtcbiAgfVxuXG4gIGNvbnN0IHsgW2tleV06IGRlbGV0ZWQsIC4uLm5leHRNYXAgfSA9IG1hcDtcblxuICByZXR1cm4gbmV4dE1hcDtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export default function once(fn: () => void): () => void;
2
+ //# sourceMappingURL=once.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../src/utils/once.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CASvD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = once;
7
+
8
+ function once(fn) {
9
+ var done;
10
+ return function () {
11
+ if (!done) {
12
+ fn();
13
+ done = 1;
14
+ }
15
+ };
16
+ }
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9vbmNlLnRzIl0sIm5hbWVzIjpbIm9uY2UiLCJmbiIsImRvbmUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBZSxTQUFTQSxJQUFULENBQWNDLEVBQWQsRUFBMEM7QUFDdkQsTUFBSUMsSUFBSjtBQUVBLFNBQU8sWUFBTTtBQUNYLFFBQUksQ0FBQ0EsSUFBTCxFQUFXO0FBQ1RELE1BQUFBLEVBQUU7QUFDRkMsTUFBQUEsSUFBSSxHQUFHLENBQVA7QUFDRDtBQUNGLEdBTEQ7QUFNRCIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9uY2UoZm46ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgbGV0IGRvbmU7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAoIWRvbmUpIHtcbiAgICAgIGZuKCk7XG4gICAgICBkb25lID0gMTtcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export default function singleToArray<T>(singleOrArray: T | T[]): T[];
2
+ //# sourceMappingURL=singleToArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleToArray.d.ts","sourceRoot":"","sources":["../../src/utils/singleToArray.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEpE"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = singleToArray;
7
+
8
+ function singleToArray(singleOrArray) {
9
+ return singleOrArray ? Array.isArray(singleOrArray) ? singleOrArray : [singleOrArray] : [];
10
+ }
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zaW5nbGVUb0FycmF5LnRzIl0sIm5hbWVzIjpbInNpbmdsZVRvQXJyYXkiLCJzaW5nbGVPckFycmF5IiwiQXJyYXkiLCJpc0FycmF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWUsU0FBU0EsYUFBVCxDQUEwQkMsYUFBMUIsRUFBdUQ7QUFDcEUsU0FBT0EsYUFBYSxHQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsYUFBZCxJQUErQkEsYUFBL0IsR0FBK0MsQ0FBQ0EsYUFBRCxDQUFuRCxHQUFzRSxFQUExRjtBQUNEIiwic291cmNlUm9vdCI6ImNvcmU6Ly8vIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2luZ2xlVG9BcnJheTxUPihzaW5nbGVPckFycmF5OiBUIHwgVFtdKTogVFtdIHtcbiAgcmV0dXJuIHNpbmdsZU9yQXJyYXkgPyAoQXJyYXkuaXNBcnJheShzaW5nbGVPckFycmF5KSA/IHNpbmdsZU9yQXJyYXkgOiBbc2luZ2xlT3JBcnJheV0pIDogW107XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export default function warnOnce(message: string): () => void;
2
+ //# sourceMappingURL=warnOnce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnOnce.d.ts","sourceRoot":"","sources":["../../src/utils/warnOnce.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,IAAI,CAE5D"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = warnOnce;
9
+
10
+ var _once = _interopRequireDefault(require("./once"));
11
+
12
+ function warnOnce(message) {
13
+ return (0, _once["default"])(function () {
14
+ return console.warn("botframework-webchat: ".concat(message, "."));
15
+ });
16
+ }
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy93YXJuT25jZS50cyJdLCJuYW1lcyI6WyJ3YXJuT25jZSIsIm1lc3NhZ2UiLCJjb25zb2xlIiwid2FybiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRWUsU0FBU0EsUUFBVCxDQUFrQkMsT0FBbEIsRUFBK0M7QUFDNUQsU0FBTyxzQkFBSztBQUFBLFdBQU1DLE9BQU8sQ0FBQ0MsSUFBUixpQ0FBc0NGLE9BQXRDLE9BQU47QUFBQSxHQUFMLENBQVA7QUFDRCIsInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBvbmNlIGZyb20gJy4vb25jZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdhcm5PbmNlKG1lc3NhZ2U6IHN0cmluZyk6ICgpID0+IHZvaWQge1xuICByZXR1cm4gb25jZSgoKSA9PiBjb25zb2xlLndhcm4oYGJvdGZyYW1ld29yay13ZWJjaGF0OiAke21lc3NhZ2V9LmApKTtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botframework-webchat-core",
3
- "version": "4.13.0",
3
+ "version": "4.14.2",
4
4
  "description": "Core of botframework-webchat",
5
5
  "main": "lib/index.js",
6
6
  "publishConfig": {
@@ -20,40 +20,44 @@
20
20
  "build": "npm run build:typescript && npm run build:babel",
21
21
  "build:babel": "babel src --extensions .js,.ts,.tsx --ignore **/*.spec.js,**/*.spec.ts,**/*.spec.tsx,**/*.test.js,**/*.test.ts,**/*.test.tsx,__tests__/**/*.js,__tests__/**/*.ts,__tests__/**/*.tsx --out-dir lib --verbose",
22
22
  "build:typescript": "tsc --project src/tsconfig.json",
23
- "eslint": "eslint src/**/*.js src/**/*.ts --fix",
23
+ "eslint": "npm run precommit",
24
+ "precommit": "npm run precommit:eslint -- src && npm run precommit:typecheck",
25
+ "precommit:eslint": "eslint",
26
+ "precommit:typecheck": "tsc --project ./src --emitDeclarationOnly false --esModuleInterop true --noEmit --pretty false",
27
+ "prettier": "prettier --check src/**/*.{js,ts,tsx}",
24
28
  "prestart": "npm run build:babel",
25
29
  "start": "concurrently --kill-others --names \"babel,tsc\" \"npm run start:babel\" \"npm run start:typescript\"",
26
30
  "start:babel": "npm run build:babel -- --skip-initial-build --watch",
27
31
  "start:typescript": "npm run build:typescript -- --watch"
28
32
  },
29
33
  "devDependencies": {
30
- "@babel/cli": "^7.13.10",
31
- "@babel/core": "^7.13.10",
32
- "@babel/plugin-transform-runtime": "^7.13.10",
33
- "@babel/preset-env": "^7.13.10",
34
- "@babel/preset-typescript": "^7.13.0",
35
- "@types/node": "^14.14.35",
36
- "@typescript-eslint/eslint-plugin": "^4.19.0",
37
- "@typescript-eslint/parser": "^4.19.0",
34
+ "@babel/cli": "^7.14.5",
35
+ "@babel/core": "^7.14.6",
36
+ "@babel/plugin-transform-runtime": "^7.14.5",
37
+ "@babel/preset-env": "^7.14.7",
38
+ "@babel/preset-typescript": "^7.14.5",
39
+ "@types/node": "^16.3.1",
40
+ "@typescript-eslint/eslint-plugin": "^4.28.3",
41
+ "@typescript-eslint/parser": "^4.28.3",
38
42
  "babel-plugin-istanbul": "^6.0.0",
39
43
  "babel-plugin-transform-inline-environment-variables": "^0.4.3",
40
- "botframework-directlinejs": "^0.14.1",
41
- "concurrently": "^6.0.0",
42
- "eslint": "^7.22.0",
44
+ "botframework-directlinejs": "0.15.0",
45
+ "concurrently": "^6.2.0",
46
+ "eslint": "^7.30.0",
43
47
  "eslint-plugin-node": "^11.1.0",
44
- "eslint-plugin-prettier": "^3.3.1",
45
- "prettier": "^2.2.1",
46
- "typescript": "^4.2.3"
48
+ "eslint-plugin-prettier": "^3.4.0",
49
+ "prettier": "^2.3.2",
50
+ "typescript": "^4.3.5"
47
51
  },
48
52
  "dependencies": {
49
- "@babel/runtime": "7.13.10",
50
- "jsonwebtoken": "8.5.1",
53
+ "@babel/runtime": "7.14.6",
54
+ "jwt-decode": "3.1.2",
51
55
  "math-random": "2.0.1",
52
56
  "mime": "2.5.2",
53
- "p-defer": "3.0.0",
54
- "p-defer-es5": "1.2.1",
57
+ "p-defer": "4.0.0",
58
+ "p-defer-es5": "2.0.0",
55
59
  "redux": "4.0.5",
56
- "redux-devtools-extension": "2.13.8",
60
+ "redux-devtools-extension": "2.13.9",
57
61
  "redux-saga": "1.1.3",
58
62
  "simple-update-in": "2.2.0"
59
63
  },
@@ -29,7 +29,7 @@ function createEnhancerAndSagaMiddleware(getStore, ...middlewares) {
29
29
  };
30
30
  }
31
31
 
32
- export default function createStore(initialState, ...middlewares): Store {
32
+ export default function createStore(initialState?, ...middlewares): Store {
33
33
  const { enhancer, sagaMiddleware } = createEnhancerAndSagaMiddleware(() => store, ...middlewares);
34
34
  const store = createReduxStore(reducer, initialState || {}, enhancer);
35
35
 
@@ -38,7 +38,7 @@ export default function createStore(initialState, ...middlewares): Store {
38
38
  return store;
39
39
  }
40
40
 
41
- export function withDevTools(initialState, ...middlewares): Store {
41
+ export function withDevTools(initialState?, ...middlewares): Store {
42
42
  const { enhancer, sagaMiddleware } = createEnhancerAndSagaMiddleware(() => store, ...middlewares);
43
43
  const store = createReduxStore(reducer, initialState || {}, composeWithDevTools(enhancer));
44
44
 
@@ -1,10 +1,26 @@
1
+ import * as ActivityClientState from './constants/ActivityClientState';
2
+ import * as DictateState from './constants/DictateState';
1
3
  import clearSuggestedActions from './actions/clearSuggestedActions';
2
4
  import connect from './actions/connect';
3
5
  import createStore, { withDevTools as createStoreWithDevTools } from './createStore';
6
+ import DirectLineActivity from './types/external/DirectLineActivity';
7
+ import DirectLineAnimationCard from './types/external/DirectLineAnimationCard';
8
+ import DirectLineAttachment from './types/external/DirectLineAttachment';
9
+ import DirectLineAudioCard from './types/external/DirectLineAudioCard';
10
+ import DirectLineCardAction from './types/external/DirectLineCardAction';
11
+ import DirectLineHeroCard from './types/external/DirectLineHeroCard';
12
+ import DirectLineJSBotConnection from './types/external/DirectLineJSBotConnection';
13
+ import DirectLineOAuthCard from './types/external/DirectLineOAuthCard';
14
+ import DirectLineReceiptCard from './types/external/DirectLineReceiptCard';
15
+ import DirectLineSignInCard from './types/external/DirectLineSignInCard';
16
+ import DirectLineSuggestedAction from './types/external/DirectLineSuggestedAction';
17
+ import DirectLineThumbnailCard from './types/external/DirectLineThumbnailCard';
18
+ import DirectLineVideoCard from './types/external/DirectLineVideoCard';
4
19
  import disconnect from './actions/disconnect';
5
20
  import dismissNotification from './actions/dismissNotification';
6
21
  import emitTypingIndicator from './actions/emitTypingIndicator';
7
22
  import markActivity from './actions/markActivity';
23
+ import OneOrMany from './types/OneOrMany';
8
24
  import postActivity from './actions/postActivity';
9
25
  import sendEvent from './actions/sendEvent';
10
26
  import sendFiles from './actions/sendFiles';
@@ -18,14 +34,13 @@ import setNotification from './actions/setNotification';
18
34
  import setSendBox from './actions/setSendBox';
19
35
  import setSendTimeout from './actions/setSendTimeout';
20
36
  import setSendTypingIndicator from './actions/setSendTypingIndicator';
37
+ import singleToArray from './utils/singleToArray';
21
38
  import startDictate from './actions/startDictate';
22
39
  import startSpeakingActivity from './actions/startSpeakingActivity';
23
40
  import stopDictate from './actions/stopDictate';
24
41
  import stopSpeakingActivity from './actions/stopSpeakingActivity';
25
42
  import submitSendBox from './actions/submitSendBox';
26
-
27
- import * as ActivityClientState from './constants/ActivityClientState';
28
- import * as DictateState from './constants/DictateState';
43
+ import warnOnce from './utils/warnOnce';
29
44
 
30
45
  const Constants = { ActivityClientState, DictateState };
31
46
  const version = process.env.npm_package_version;
@@ -53,10 +68,29 @@ export {
53
68
  setSendBox,
54
69
  setSendTimeout,
55
70
  setSendTypingIndicator,
71
+ singleToArray,
56
72
  startDictate,
57
73
  startSpeakingActivity,
58
74
  stopDictate,
59
75
  stopSpeakingActivity,
60
76
  submitSendBox,
61
- version
77
+ version,
78
+ warnOnce
79
+ };
80
+
81
+ export type {
82
+ DirectLineActivity,
83
+ DirectLineAnimationCard,
84
+ DirectLineAttachment,
85
+ DirectLineAudioCard,
86
+ DirectLineCardAction,
87
+ DirectLineHeroCard,
88
+ DirectLineOAuthCard,
89
+ DirectLineJSBotConnection,
90
+ DirectLineReceiptCard,
91
+ DirectLineSignInCard,
92
+ DirectLineSuggestedAction,
93
+ DirectLineThumbnailCard,
94
+ DirectLineVideoCard,
95
+ OneOrMany
62
96
  };
@@ -3,7 +3,7 @@
3
3
  import { call, cancel, cancelled, fork, put, race, take } from 'redux-saga/effects';
4
4
 
5
5
  import { ConnectionStatus } from 'botframework-directlinejs';
6
- import { decode } from 'jsonwebtoken';
6
+ import decode from 'jwt-decode';
7
7
 
8
8
  import { CONNECT } from '../actions/connect';
9
9
  import createPromiseQueue from '../createPromiseQueue';
@@ -39,7 +39,14 @@ function* observeAndPutConnectionStatusUpdate(directLine) {
39
39
  // TODO: [P2] We should move this check and rectification to DirectLineJS.
40
40
  function rectifyUserID(directLine, userIDFromAction) {
41
41
  const { token } = directLine;
42
- const { user: userIDFromToken } = decode(token) || {};
42
+
43
+ let userIDFromToken;
44
+
45
+ // TODO: Add test to make sure "jwt-decode" work as expected.
46
+ try {
47
+ userIDFromToken = (decode(token) || {}).user;
48
+ // eslint-disable-next-line no-empty
49
+ } catch (err) {}
43
50
 
44
51
  const result = {
45
52
  fromAction: userIDFromAction,
@@ -5,6 +5,7 @@ import whileConnected from './effects/whileConnected';
5
5
 
6
6
  import clockSkewAdjustmentSelector from '../selectors/clockSkewAdjustment';
7
7
  import combineSelectors from '../selectors/combineSelectors';
8
+ import dateToLocaleISOString from '../utils/dateToLocaleISOString';
8
9
  import languageSelector from '../selectors/language';
9
10
  import sendTimeoutSelector from '../selectors/sendTimeout';
10
11
 
@@ -21,8 +22,9 @@ import {
21
22
 
22
23
  import { INCOMING_ACTIVITY } from '../actions/incomingActivity';
23
24
 
24
- function getTimestamp(clockSkewAdjustment = 0) {
25
- return new Date(Date.now() + clockSkewAdjustment).toISOString();
25
+ function getTimestamp(date, clockSkewAdjustment = 0) {
26
+ // "+date" will return epoch time in milliseconds, same as Date.getTime().
27
+ return new Date(+date + clockSkewAdjustment).toISOString();
26
28
  }
27
29
 
28
30
  function* postActivity(directLine, userID, username, numActivitiesPosted, { meta: { method }, payload: { activity } }) {
@@ -31,6 +33,9 @@ function* postActivity(directLine, userID, username, numActivitiesPosted, { meta
31
33
  );
32
34
  const { attachments } = activity;
33
35
  const clientActivityID = uniqueID();
36
+ const now = new Date();
37
+ const localTimeZone =
38
+ typeof window.Intl === 'undefined' ? undefined : new Intl.DateTimeFormat().resolvedOptions().timeZone;
34
39
 
35
40
  activity = {
36
41
  ...deleteKey(activity, 'id'),
@@ -46,7 +51,7 @@ function* postActivity(directLine, userID, username, numActivitiesPosted, { meta
46
51
  ...deleteKey(activity.channelData, 'state'),
47
52
  clientActivityID,
48
53
  // This is unskewed local timestamp for estimating clock skew.
49
- clientTimestamp: getTimestamp()
54
+ clientTimestamp: getTimestamp(now)
50
55
  },
51
56
  channelId: 'webchat',
52
57
  from: {
@@ -55,9 +60,11 @@ function* postActivity(directLine, userID, username, numActivitiesPosted, { meta
55
60
  role: 'user'
56
61
  },
57
62
  locale,
63
+ localTimestamp: dateToLocaleISOString(now),
64
+ localTimezone: localTimeZone,
58
65
  // This timestamp will be replaced by Direct Line Channel in echoback.
59
66
  // We are temporarily adding this timestamp for sorting.
60
- timestamp: getTimestamp(clockSkewAdjustment)
67
+ timestamp: getTimestamp(now, clockSkewAdjustment)
61
68
  };
62
69
 
63
70
  if (!numActivitiesPosted) {
@@ -1,10 +1,10 @@
1
1
  import { put, takeEvery } from 'redux-saga/effects';
2
-
3
- import { SEND_MESSAGE_BACK } from '../actions/sendMessageBack';
4
2
  import postActivity from '../actions/postActivity';
3
+ import { SEND_MESSAGE_BACK } from '../actions/sendMessageBack';
5
4
  import whileConnected from './effects/whileConnected';
6
5
 
7
- // https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-activity.md#message-back
6
+
7
+ // https://github.com/microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md#message-back
8
8
  function* postActivityWithMessageBack({ payload: { displayText, text, value } }) {
9
9
  yield put(
10
10
  postActivity({
@@ -2,12 +2,11 @@
2
2
  /* eslint no-undefined: "off" */
3
3
 
4
4
  import { put, takeEvery } from 'redux-saga/effects';
5
-
6
- import { SEND_POST_BACK } from '../actions/sendPostBack';
7
5
  import postActivity from '../actions/postActivity';
6
+ import { SEND_POST_BACK } from '../actions/sendPostBack';
8
7
  import whileConnected from './effects/whileConnected';
9
8
 
10
- // https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-activity.md#post-back
9
+ // https://github.com/microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md#post-back
11
10
  function* postActivityWithPostBack({ payload: { value } }) {
12
11
  yield put(
13
12
  postActivity({
package/src/tsconfig.json CHANGED
@@ -3,11 +3,15 @@
3
3
  "allowSyntheticDefaultImports": true,
4
4
  "declaration": true,
5
5
  "declarationDir": "../lib",
6
+ "declarationMap": true,
7
+ "downlevelIteration": true,
6
8
  "emitDeclarationOnly": true,
7
- "isolatedModules": true,
8
9
  "jsx": "react",
9
10
  "preserveWatchOutput": true,
10
11
  "pretty": true,
11
- "skipLibCheck": true
12
- }
12
+ "resolveJsonModule": true, // Required for localization files
13
+ "skipLibCheck": true,
14
+ "sourceMap": true
15
+ },
16
+ "files": ["index.ts"]
13
17
  }
@@ -0,0 +1,3 @@
1
+ type OneOrMany<T> = T | T[];
2
+
3
+ export default OneOrMany;
@@ -0,0 +1,6 @@
1
+ // TODO: [P1] #3953 We should fully type it out.
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ type DirectLineActivity = any;
5
+
6
+ export default DirectLineActivity;
@@ -0,0 +1,6 @@
1
+ // TODO: [P1] #3953 We should fully type it out.
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ type DirectLineAnimationCard = any;
5
+
6
+ export default DirectLineAnimationCard;
@@ -0,0 +1,6 @@
1
+ // TODO: [P1] #3953 We should fully type it out.
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ type DirectLineAttachment = any;
5
+
6
+ export default DirectLineAttachment;
@@ -0,0 +1,6 @@
1
+ // TODO: [P1] #3953 We should fully type it out.
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ type DirectLineAudioCard = any;
5
+
6
+ export default DirectLineAudioCard;