@amityco/ts-sdk 7.1.0 → 7.1.1-15835b61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/.env +26 -26
  2. package/dist/@types/core/events.d.ts +4 -0
  3. package/dist/@types/core/events.d.ts.map +1 -1
  4. package/dist/@types/core/model.d.ts +4 -0
  5. package/dist/@types/core/model.d.ts.map +1 -1
  6. package/dist/@types/core/payload.d.ts +18 -0
  7. package/dist/@types/core/payload.d.ts.map +1 -1
  8. package/dist/@types/domains/notification.d.ts +74 -0
  9. package/dist/@types/domains/notification.d.ts.map +1 -0
  10. package/dist/core/events.d.ts +3 -3
  11. package/dist/core/events.d.ts.map +1 -1
  12. package/dist/core/model/idResolvers.d.ts.map +1 -1
  13. package/dist/core/model/index.d.ts.map +1 -1
  14. package/dist/index.cjs.js +415 -45
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.esm.js +398 -29
  18. package/dist/index.umd.js +4 -4
  19. package/dist/notificationTrayRepository/api/index.d.ts +3 -0
  20. package/dist/notificationTrayRepository/api/index.d.ts.map +1 -0
  21. package/dist/notificationTrayRepository/api/markNotificationItemsSeen.d.ts +16 -0
  22. package/dist/notificationTrayRepository/api/markNotificationItemsSeen.d.ts.map +1 -0
  23. package/dist/notificationTrayRepository/api/markNotificationTraySeen.d.ts +19 -0
  24. package/dist/notificationTrayRepository/api/markNotificationTraySeen.d.ts.map +1 -0
  25. package/dist/notificationTrayRepository/events/index.d.ts +2 -0
  26. package/dist/notificationTrayRepository/events/index.d.ts.map +1 -0
  27. package/dist/notificationTrayRepository/events/onNotificationTraySeenUpdated.d.ts +17 -0
  28. package/dist/notificationTrayRepository/events/onNotificationTraySeenUpdated.d.ts.map +1 -0
  29. package/dist/notificationTrayRepository/index.d.ts +4 -0
  30. package/dist/notificationTrayRepository/index.d.ts.map +1 -0
  31. package/dist/notificationTrayRepository/internalApi/getNotificationTraySeen.d.ts +30 -0
  32. package/dist/notificationTrayRepository/internalApi/getNotificationTraySeen.d.ts.map +1 -0
  33. package/dist/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsLiveCollectionController.d.ts +13 -0
  34. package/dist/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsLiveCollectionController.d.ts.map +1 -0
  35. package/dist/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsPaginationController.d.ts +9 -0
  36. package/dist/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsPaginationController.d.ts.map +1 -0
  37. package/dist/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsQuerystreamController.d.ts +9 -0
  38. package/dist/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsQuerystreamController.d.ts.map +1 -0
  39. package/dist/notificationTrayRepository/observers/getNotificationTrayItems.d.ts +12 -0
  40. package/dist/notificationTrayRepository/observers/getNotificationTrayItems.d.ts.map +1 -0
  41. package/dist/notificationTrayRepository/observers/getNotificationTraySeen.d.ts +21 -0
  42. package/dist/notificationTrayRepository/observers/getNotificationTraySeen.d.ts.map +1 -0
  43. package/dist/notificationTrayRepository/observers/index.d.ts +3 -0
  44. package/dist/notificationTrayRepository/observers/index.d.ts.map +1 -0
  45. package/dist/notificationTrayRepository/utils/prepareNotificationTrayItemsPayload.d.ts +2 -0
  46. package/dist/notificationTrayRepository/utils/prepareNotificationTrayItemsPayload.d.ts.map +1 -0
  47. package/dist/utils/linkedObject/index.d.ts +1 -0
  48. package/dist/utils/linkedObject/index.d.ts.map +1 -1
  49. package/dist/utils/linkedObject/notificationTrayLinkedObject.d.ts +2 -0
  50. package/dist/utils/linkedObject/notificationTrayLinkedObject.d.ts.map +1 -0
  51. package/package.json +1 -1
  52. package/src/@types/core/events.ts +5 -0
  53. package/src/@types/core/model.ts +6 -0
  54. package/src/@types/core/payload.ts +25 -0
  55. package/src/@types/domains/notification.ts +83 -0
  56. package/src/core/model/idResolvers.ts +3 -0
  57. package/src/core/model/index.ts +2 -0
  58. package/src/index.ts +2 -0
  59. package/src/notificationTrayRepository/api/index.ts +2 -0
  60. package/src/notificationTrayRepository/api/markNotificationItemsSeen.ts +59 -0
  61. package/src/notificationTrayRepository/api/markNotificationTraySeen.ts +65 -0
  62. package/src/notificationTrayRepository/events/index.ts +1 -0
  63. package/src/notificationTrayRepository/events/onNotificationTraySeenUpdated.ts +36 -0
  64. package/src/notificationTrayRepository/index.ts +3 -0
  65. package/src/notificationTrayRepository/internalApi/getNotificationTraySeen.ts +80 -0
  66. package/src/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsLiveCollectionController.ts +94 -0
  67. package/src/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsPaginationController.ts +31 -0
  68. package/src/notificationTrayRepository/observers/getNotificationTrayItems/NotificationTrayItemsQuerystreamController.ts +68 -0
  69. package/src/notificationTrayRepository/observers/getNotificationTrayItems.ts +44 -0
  70. package/src/notificationTrayRepository/observers/getNotificationTraySeen.ts +43 -0
  71. package/src/notificationTrayRepository/observers/index.ts +2 -0
  72. package/src/notificationTrayRepository/utils/prepareNotificationTrayItemsPayload.ts +12 -0
  73. package/src/utils/linkedObject/index.ts +2 -0
  74. package/src/utils/linkedObject/notificationTrayLinkedObject.ts +18 -0
package/dist/index.cjs.js CHANGED
@@ -542,6 +542,8 @@ const idResolvers = {
542
542
  advertiser: ({ advertiserId }) => advertiserId,
543
543
  pin: ({ placement, referenceId }) => `${placement}#${referenceId}`,
544
544
  pinTarget: ({ targetId }) => targetId,
545
+ notificationTrayItem: ({ _id }) => _id,
546
+ notificationTraySeen: ({ userId }) => userId,
545
547
  };
546
548
  /**
547
549
  * Retrieve the id resolver matching a domain name
@@ -593,6 +595,7 @@ const PAYLOAD2MODEL = {
593
595
  advertisers: 'advertiser',
594
596
  pinTargets: 'pinTarget',
595
597
  pins: 'pin',
598
+ notificationTrayItems: 'notificationTrayItem',
596
599
  };
597
600
  /** hidden */
598
601
  const isOutdated = (prevData, nextData) => {
@@ -5993,6 +5996,62 @@ const pinnedPostLinkedObject = (pinnedPost) => {
5993
5996
  } });
5994
5997
  };
5995
5998
 
5999
+ /* begin_public_function
6000
+ id: notificationTrayItem.markSeen
6001
+ */
6002
+ /**
6003
+ * ```js
6004
+ * import { NotificationTrayRepository } from '@amityco/ts-sdk'
6005
+ * const updated = await NotificationTrayRepository.markNotificationItemsSeen()
6006
+ * ```
6007
+ *
6008
+ * Updates an {@link Amity.NotificationItemSeen}
6009
+ *
6010
+ * @param trayItems[] that include id and lastTraySeenAt, The ID of the {@link Amity.NotificationItemSeen} to edit
6011
+ * @returns the updated {@link Amity.NotificationItemSeen} object
6012
+ *
6013
+ * @category NotificationItemSeen API
6014
+ * @async
6015
+ */
6016
+ const markNotificationItemsSeen = async (patch) => {
6017
+ const client = getActiveClient();
6018
+ client.log('notificationTray/markNotificationItemsSeen', {});
6019
+ const { data: payload } = await client.http.put(`api/v1/notification-tray/items/seen`, {
6020
+ patch,
6021
+ });
6022
+ const updatedData = patch.trayItems
6023
+ .map(patchItem => {
6024
+ var _a;
6025
+ const cacheData = (_a = pullFromCache([
6026
+ 'notificationTraySeen',
6027
+ 'get',
6028
+ patchItem.id,
6029
+ ])) === null || _a === void 0 ? void 0 : _a.data;
6030
+ if (!cacheData)
6031
+ return;
6032
+ const data = Object.assign(Object.assign({}, cacheData), payload);
6033
+ if (client.cache) {
6034
+ const cachedAt = Date.now();
6035
+ pushToCache(['notificationTrayItem', 'get'], data, { cachedAt });
6036
+ }
6037
+ return data;
6038
+ })
6039
+ .filter(Boolean);
6040
+ fireEvent('local.notificationTrayItem.updated', { notificationTrayItems: updatedData });
6041
+ };
6042
+ /* end_public_function */
6043
+
6044
+ const notificationTrayLinkedObject = (noti) => {
6045
+ return Object.assign(Object.assign({}, noti), { markRead: () => markNotificationItemsSeen({
6046
+ trayItems: [
6047
+ {
6048
+ id: noti._id,
6049
+ lastSeenAt: noti.lastSeenAt,
6050
+ },
6051
+ ],
6052
+ }) });
6053
+ };
6054
+
5996
6055
  const LinkedObject = {
5997
6056
  ad: adLinkedObject,
5998
6057
  comment: commentLinkedObject,
@@ -6006,6 +6065,7 @@ const LinkedObject = {
6006
6065
  reactor: reactorLinkedObject,
6007
6066
  channel: channelLinkedObject,
6008
6067
  pinnedPost: pinnedPostLinkedObject,
6068
+ notificationTray: notificationTrayLinkedObject,
6009
6069
  };
6010
6070
 
6011
6071
  const getChannelMessagePreviewWithUser = (channel) => {
@@ -9776,7 +9836,7 @@ const getUserUnread = (callback) => {
9776
9836
  };
9777
9837
  };
9778
9838
 
9779
- var index$l = /*#__PURE__*/Object.freeze({
9839
+ var index$m = /*#__PURE__*/Object.freeze({
9780
9840
  __proto__: null,
9781
9841
  getActiveClient: getActiveClient,
9782
9842
  getActiveUser: getActiveUser,
@@ -10983,7 +11043,7 @@ const getMyFollowInfo = (callback) => {
10983
11043
  };
10984
11044
  /* end_public_function */
10985
11045
 
10986
- var index$k = /*#__PURE__*/Object.freeze({
11046
+ var index$l = /*#__PURE__*/Object.freeze({
10987
11047
  __proto__: null,
10988
11048
  blockUser: blockUser,
10989
11049
  unBlockUser: unBlockUser,
@@ -11998,9 +12058,9 @@ var AmityUserSearchMatchType;
11998
12058
  AmityUserSearchMatchType["PARTIAL"] = "partial";
11999
12059
  })(AmityUserSearchMatchType || (AmityUserSearchMatchType = {}));
12000
12060
 
12001
- var index$j = /*#__PURE__*/Object.freeze({
12061
+ var index$k = /*#__PURE__*/Object.freeze({
12002
12062
  __proto__: null,
12003
- Relationship: index$k,
12063
+ Relationship: index$l,
12004
12064
  getUserByIds: getUserByIds,
12005
12065
  updateUser: updateUser,
12006
12066
  flagUser: flagUser,
@@ -12264,7 +12324,7 @@ const uploadImage = async (formData, onProgress) => {
12264
12324
  };
12265
12325
  /* end_public_function */
12266
12326
 
12267
- var index$i = /*#__PURE__*/Object.freeze({
12327
+ var index$j = /*#__PURE__*/Object.freeze({
12268
12328
  __proto__: null,
12269
12329
  getFile: getFile,
12270
12330
  uploadFile: uploadFile,
@@ -14076,7 +14136,7 @@ const getReactions = (params, callback, config) => {
14076
14136
  };
14077
14137
  /* end_public_function */
14078
14138
 
14079
- var index$h = /*#__PURE__*/Object.freeze({
14139
+ var index$i = /*#__PURE__*/Object.freeze({
14080
14140
  __proto__: null,
14081
14141
  addReaction: addReaction,
14082
14142
  removeReaction: removeReaction,
@@ -15892,7 +15952,7 @@ const getMessages = (params, callback, config) => {
15892
15952
  };
15893
15953
  /* end_public_function */
15894
15954
 
15895
- var index$g = /*#__PURE__*/Object.freeze({
15955
+ var index$h = /*#__PURE__*/Object.freeze({
15896
15956
  __proto__: null,
15897
15957
  createMessage: createMessage,
15898
15958
  updateMessage: updateMessage,
@@ -16418,7 +16478,7 @@ const stopMessageReceiptSync = (subChannelId) => {
16418
16478
  };
16419
16479
  /* end_public_function */
16420
16480
 
16421
- var index$f = /*#__PURE__*/Object.freeze({
16481
+ var index$g = /*#__PURE__*/Object.freeze({
16422
16482
  __proto__: null,
16423
16483
  getSubChannelByIds: getSubChannels$1,
16424
16484
  createSubChannel: createSubChannel,
@@ -17595,7 +17655,7 @@ const searchMembers$1 = (params, callback, config) => {
17595
17655
  };
17596
17656
  /* end_public_function */
17597
17657
 
17598
- var index$e = /*#__PURE__*/Object.freeze({
17658
+ var index$f = /*#__PURE__*/Object.freeze({
17599
17659
  __proto__: null,
17600
17660
  addMembers: addMembers$1,
17601
17661
  removeMembers: removeMembers$1,
@@ -17798,7 +17858,7 @@ const unmuteMembers = async (channelId, userIds) => {
17798
17858
  };
17799
17859
  /* end_public_function */
17800
17860
 
17801
- var index$d = /*#__PURE__*/Object.freeze({
17861
+ var index$e = /*#__PURE__*/Object.freeze({
17802
17862
  __proto__: null,
17803
17863
  addRole: addRole,
17804
17864
  removeRole: removeRole,
@@ -17808,10 +17868,10 @@ var index$d = /*#__PURE__*/Object.freeze({
17808
17868
  unmuteMembers: unmuteMembers
17809
17869
  });
17810
17870
 
17811
- var index$c = /*#__PURE__*/Object.freeze({
17871
+ var index$d = /*#__PURE__*/Object.freeze({
17812
17872
  __proto__: null,
17813
- Membership: index$e,
17814
- Moderation: index$d,
17873
+ Membership: index$f,
17874
+ Moderation: index$e,
17815
17875
  getChannelByIds: getChannelByIds$1,
17816
17876
  createChannel: createChannel,
17817
17877
  updateChannel: updateChannel,
@@ -19190,7 +19250,7 @@ const searchMembers = (params, callback, config) => {
19190
19250
  };
19191
19251
  /* end_public_function */
19192
19252
 
19193
- var index$b = /*#__PURE__*/Object.freeze({
19253
+ var index$c = /*#__PURE__*/Object.freeze({
19194
19254
  __proto__: null,
19195
19255
  addMembers: addMembers,
19196
19256
  removeMembers: removeMembers,
@@ -20215,7 +20275,7 @@ const unbanMembers = async (communityId, userIds) => {
20215
20275
  };
20216
20276
  /* end_public_function */
20217
20277
 
20218
- var index$a = /*#__PURE__*/Object.freeze({
20278
+ var index$b = /*#__PURE__*/Object.freeze({
20219
20279
  __proto__: null,
20220
20280
  addRoles: addRoles,
20221
20281
  removeRoles: removeRoles,
@@ -20223,10 +20283,10 @@ var index$a = /*#__PURE__*/Object.freeze({
20223
20283
  unbanMembers: unbanMembers
20224
20284
  });
20225
20285
 
20226
- var index$9 = /*#__PURE__*/Object.freeze({
20286
+ var index$a = /*#__PURE__*/Object.freeze({
20227
20287
  __proto__: null,
20228
- Moderation: index$a,
20229
- Membership: index$b,
20288
+ Moderation: index$b,
20289
+ Membership: index$c,
20230
20290
  getCommunityByIds: getCommunities$1,
20231
20291
  createCommunity: createCommunity,
20232
20292
  updateCommunity: updateCommunity,
@@ -20459,7 +20519,7 @@ const getCategories = (params, callback, config) => {
20459
20519
  };
20460
20520
  /* end_public_function */
20461
20521
 
20462
- var index$8 = /*#__PURE__*/Object.freeze({
20522
+ var index$9 = /*#__PURE__*/Object.freeze({
20463
20523
  __proto__: null,
20464
20524
  getCategory: getCategory,
20465
20525
  getCategories: getCategories
@@ -20627,7 +20687,7 @@ getCustomRankingGlobalFeed.locally = (query) => {
20627
20687
  : undefined;
20628
20688
  };
20629
20689
 
20630
- var index$7 = /*#__PURE__*/Object.freeze({
20690
+ var index$8 = /*#__PURE__*/Object.freeze({
20631
20691
  __proto__: null,
20632
20692
  queryGlobalFeed: queryGlobalFeed,
20633
20693
  getCustomRankingGlobalFeed: getCustomRankingGlobalFeed
@@ -21942,7 +22002,7 @@ const getComments = (params, callback, config) => {
21942
22002
  };
21943
22003
  /* end_public_function */
21944
22004
 
21945
- var index$6 = /*#__PURE__*/Object.freeze({
22005
+ var index$7 = /*#__PURE__*/Object.freeze({
21946
22006
  __proto__: null,
21947
22007
  getCommentByIds: getCommentByIds,
21948
22008
  createComment: createComment,
@@ -22949,7 +23009,7 @@ const semanticSearchPosts = (params, callback, config) => {
22949
23009
  };
22950
23010
  };
22951
23011
 
22952
- var index$5 = /*#__PURE__*/Object.freeze({
23012
+ var index$6 = /*#__PURE__*/Object.freeze({
22953
23013
  __proto__: null,
22954
23014
  getPostByIds: getPostByIds,
22955
23015
  createPost: createPost,
@@ -23483,7 +23543,7 @@ const getStreams = (params, callback, config) => {
23483
23543
  };
23484
23544
  };
23485
23545
 
23486
- var index$4 = /*#__PURE__*/Object.freeze({
23546
+ var index$5 = /*#__PURE__*/Object.freeze({
23487
23547
  __proto__: null,
23488
23548
  createStream: createStream,
23489
23549
  updateStream: updateStream,
@@ -23770,7 +23830,7 @@ const getPoll = (pollId, callback) => {
23770
23830
  };
23771
23831
  /* end_public_function */
23772
23832
 
23773
- var index$3 = /*#__PURE__*/Object.freeze({
23833
+ var index$4 = /*#__PURE__*/Object.freeze({
23774
23834
  __proto__: null,
23775
23835
  createPoll: createPoll,
23776
23836
  closePoll: closePoll,
@@ -23781,7 +23841,7 @@ var index$3 = /*#__PURE__*/Object.freeze({
23781
23841
  getPoll: getPoll
23782
23842
  });
23783
23843
 
23784
- const privateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDHo80SecH7FuF2\nhFYnb+l26/VN8UMLXAQFLnxciNTEwkGVFMpdezlH8rU2HtUJL4RETogbAOLVY0XM\njs6sPn8G1nALmh9qeDpUtVqFOVtBHxEZ910TLOtQiunjqJKO5nWdqZ71EC3OFluR\niGQkO84BiIFbv37ub7xl3S8XarbtKoLcyVpkDHi+1wx1pgCAn6gtBUgckPL5NR8j\nLseabl3HAXQfhTCKo4tmOFM2Dxwl1IUMmIJrJg/aIU/U0tj/1Eoo7mG0JcNWX19l\nW3EecCbi0ncCJOrkUdwlBrcjaMayaX/ubEwyUeTGiLdyc4L3GRLHjyK8xgVNXRMH\nbZWJ2a5NAgMBAAECggEASxuE+35zTFO/XydKgmvIGcWL9FbgMlXb7Vcf0nBoG945\nbiz0NVc2paraIhJXc608xbYF3qLmtAE1MVBI0ORyRdBHNxY024l/6H6SH60Ed+uI\nM4ysp5ourY6Vj+DLwpdRiI9YDjqYAQDIUmhNxJP7XPhOMoZI6st+xZQBM34ic/bv\nAMSJm9OZphSp3+qXVkFZztr2mxD2EZSJJLYxi8BCdgM2qhazalbcJ6zDKHCZWVWm\n8RRxDGldyMb/237JxETzP40tAlzOZDmBAbUgEnurDJ93RVDIE3rbZUshwgeQd18a\nem096mWgvB1AIKYgsTAR3pw+V19YWAjq/glP6fz8wQKBgQD/oQq+ukKF0PRgBeM5\ngeTjSwsdGppQLmf5ndujvoiz/TpdjDEPu6R8kigQr1rG2t4K/yfdZoI8RdmJD1al\n3Q7N9hofooSy4rj6E3txzWZCHJjHad2cnCp/O26HiReGAl7wTcfTmNdiFHhZQzm5\nJBkvWAiwuvQMNfEbnXxw6/vIDwKBgQDH7fX8gsc77JLvAWgp1MaQN/sbqVb6JeT1\nFQfR8E/WFCSmzQBtNzd5KgYuCeelwr/8DyYytvN2BzCYZXp73gI1jF3YlW5jVn74\nOY6TwQ095digwo6Z0yuxopdIOApKgAkL9PRKgNrqAf3NAyMua6lOGifzjDojC3KU\nfylQmxMn4wKBgHp2B9O/H0dEBw5JQ8W0+JX6yWQz7mEjGiR2/1W+XXb8hQ1zr709\nw1r6Gb+EghRpnZ3fBpYGGbYOMFx8wKHM+N6qW3F0ReX8v2juFGE8aRSa5oYBrWzt\nU16Idjbv8hj84cZ1PJmdyvDtpYn9rpWHOZl4rxEbPvbqkIsOMyNVqdT5AoGAOSge\nmwIIU2le2FVeohbibXiToWTYKMuMmURZ5/r72AgKMmWJKbAPe+Q3wBG01/7FRBpQ\noU8Ma0HC8s6QJbliiEyIx9JwrJWd1vkdecBHONrtA4ibm/5zD2WcOllLF+FitLhi\n3qnX6+6F0IaFGFBPJrTzlv0P4dTz/OAdv52V7GECgYEA2TttOKBAqWllgOaZOkql\nLVMJVmgR7s6tLi1+cEP8ZcapV9aRbRzTAKXm4f8AEhtlG9F9kCOvHYCYGi6JaiWJ\nZkHjeex3T+eE6Di6y5Bm/Ift5jtVhJ4jCVwHOKTMej79NPUFTJfv8hCo29haBDv6\nRXFrv+T21KCcw8k3sJeJWWQ=\n-----END PRIVATE KEY-----";
23844
+ const privateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDAARz+hmBgi8pJ\nQb8LeY41gtHhk+ACMwRfhsn7GqpqRQNG2qU0755mzZuVDUqjQMGSo8THJB7O+OJs\nflbZRkFXlFoFOVNw1UpNOgwEQZ6wB9oRwzepTJAfF1sVhm/o/ixvXh1zDFNDy6yZ\npXyiiJHUVxqyjllZhxnwdvjoVtDs6hW6awG09bB9nh/TTejlUKXoAgzqVwu/1QMu\nUVViET495elEe19aUarEy+oL2iKeXCEvqda/pWNBdbieFyJvvZ08HN8dPuT88wq2\njZLEAth1vrwQ2IAa4ktaLcBQdLJgIkrbDvAiVZ8lQAjS/bq5vXQikTGvoPlC5bbn\nvuOM/3eLAgMBAAECggEAVZ+peHAghq2QVj71nX5lxsNCKaCyYwixSJBpfouTt7Rz\nE6PpzMOXFi1W1o+I22jDakuSM2SOQKqI/u0QefB0r0O/KVk5NrZHXk0mkrdYtxOp\nUgaGyf8UvmjB+8VqHrNKyZdk9qtmbnNj01kTTcAtmE4H39zPR7eR/8Rul94vaZbs\nwCnKJS3mLT3JxyGug6lxanveKkjG+CKC1nJQYWaxCJxaFSzbwXQPvDhB+TvrIbee\npd5v4EAyEJohpr+T9oDGGJkb/KARBZCtwLyB976PKJwwBA8MRVL1i5QwawuMiMq5\nUtnOnbGKtCeFzaLbNU0Qi8bqyims84EQxC6DOu1fkQKBgQDdvsoBsEhsOXV7hlIJ\naEd0eSJZVkdqimxH8uGoMM2FeNaOrcB6yBXqTSP0R3OIyf8eaY6yjRvP30ZNXcll\n/gD3O1Mu6YmWQdt1W2WA6pKOsUuPXasf0pdOF7IiFZKlSabz5YHXFqwVuqm8loaj\nsXel3YWqPVdHiankE7tz+3ssnQKBgQDdqi4TNdD1MdEpihx19jr0QjUiXW3939FK\nqp30HESPEGDGQzXdmJgif9HhZb+cJSuWaHEbjgBrYahvgCF+y6LbEpOD+D/dmT+s\nDEAQaR84sah6dokwPjV8fjBSrcVFjCS+doxv0d3p/9OUEeyUhFrY03nxtIEYkLIE\n/Zvn37b4RwKBgQCLENVFe9XfsaVhQ5r9dV2iyTlmh7qgMZG5CbTFs12hQGhm8McO\n+Z7s41YSJCFr/yq1WwP4LJDtrBw99vyQr1zRsG35tNLp3gGRNzGQSQyC2uQFVHw2\np+7mNewsfhUK/gbrXNsyFnDz6635rPlhfbII3sWuP2wWXFqkxE9CbMwR7QKBgQC6\nawDMzxmo2/iYArrkyevSuEuPVxvFwpF1RgAI6C0QVCnPE38dmdN4UB7mfHekje4W\nVEercMURidPp0cxZolCYBQtilUjAyL0vqC3In1/Ogjq6oy3FEMxSop1pKxMY5j+Q\nnoqFD+6deLUrddeNH7J3X4LSr4dSbX4JjG+tlgt+yQKBgQCuwTL4hA6KqeInQ0Ta\n9VQX5Qr8hFlqJz1gpymi/k63tW/Ob8yedbg3WWNWyShwRMFYyY9S81ITFWM95uL6\nvF3x9rmRjwElJw9PMwVu6dmf/CO0Z1wzXSp2VVD12gbrUD/0/d7MUoJ9LgC8X8f/\nn0txLHYGHbx+nf95+JUg6lV3hg==\n-----END PRIVATE KEY-----";
23785
23845
  /*
23786
23846
  * The crypto algorithm used for importing key and signing string
23787
23847
  */
@@ -24141,7 +24201,7 @@ const getPlayer = async (parameters) => {
24141
24201
  return video;
24142
24202
  };
24143
24203
 
24144
- var index$2 = /*#__PURE__*/Object.freeze({
24204
+ var index$3 = /*#__PURE__*/Object.freeze({
24145
24205
  __proto__: null,
24146
24206
  getPlayer: getPlayer
24147
24207
  });
@@ -25314,7 +25374,7 @@ const getGlobalStoryTargets = (params, callback, config) => {
25314
25374
  };
25315
25375
  };
25316
25376
 
25317
- var index$1 = /*#__PURE__*/Object.freeze({
25377
+ var index$2 = /*#__PURE__*/Object.freeze({
25318
25378
  __proto__: null,
25319
25379
  createImageStory: createImageStory,
25320
25380
  createVideoStory: createVideoStory,
@@ -25351,7 +25411,7 @@ const getNetworkAds = async () => {
25351
25411
  };
25352
25412
  };
25353
25413
 
25354
- var index = /*#__PURE__*/Object.freeze({
25414
+ var index$1 = /*#__PURE__*/Object.freeze({
25355
25415
  __proto__: null,
25356
25416
  getNetworkAds: getNetworkAds
25357
25417
  });
@@ -25378,31 +25438,341 @@ const createUserToken = async (apiKey, apiRegion, params) => {
25378
25438
  return { accessToken: data.accessToken };
25379
25439
  };
25380
25440
 
25441
+ /* begin_public_function
25442
+ id: notificationTray.getNotificationTraySeen
25443
+ */
25444
+ /**
25445
+ * ```js
25446
+ * import { NotificationTrayRepository } from '@amityco/ts-sdk'
25447
+ * const notificationTraySeen = await NotificationTrayRepository.getNotificationTraySeen()
25448
+ * ```
25449
+ *
25450
+ *
25451
+ * @returns A page of {@link Amity.NotificationTraySeen} objects
25452
+ *
25453
+ * @category NotificationTray API
25454
+ * @async
25455
+ * */
25456
+ const getNotificationTraySeen$1 = async () => {
25457
+ const client = getActiveClient();
25458
+ client.log('notificationTray/getNotificationTraySeen', {});
25459
+ const { data: payload } = await client.http.get(`api/v1/notification-tray/tray/seen`);
25460
+ const cachedAt = client.cache && Date.now();
25461
+ if (client.cache) {
25462
+ const cacheKey = ['notificationTraySeen', 'get', client.userId];
25463
+ pushToCache(cacheKey, {
25464
+ userId: client.userId,
25465
+ lastTraySeenAt: payload.lastTraySeenAt,
25466
+ lastTrayOccuredAt: payload.lastTrayOccuredAt,
25467
+ });
25468
+ }
25469
+ return {
25470
+ data: {
25471
+ userId: client.userId,
25472
+ lastTraySeenAt: payload.lastTraySeenAt,
25473
+ lastTrayOccuredAt: payload.lastTrayOccuredAt,
25474
+ },
25475
+ cachedAt,
25476
+ };
25477
+ };
25478
+ /* end_public_function */
25479
+ /**
25480
+ * ```js
25481
+ * import { NotificationTrayRepository } from '@amityco/ts-sdk'
25482
+ * const notificationTraySeen = await NotificationTrayRepository.getNotificationTraySeen.locally()
25483
+ * ```
25484
+ *
25485
+ * Queries a paginable list of {@link Amity.NotificationTraySeen} objects from cache
25486
+ *
25487
+ * @returns A page of {@link Amity.NotificationTraySeen} objects
25488
+ *
25489
+ * @category NotificationTray API
25490
+ * @async
25491
+ * */
25492
+ getNotificationTraySeen$1.locally = () => {
25493
+ var _a;
25494
+ const client = getActiveClient();
25495
+ client.log('notificationTray/getNotificationTraySeen.locally', {});
25496
+ if (!client.cache)
25497
+ return;
25498
+ const queryKey = ['notificationTraySeen', 'get'];
25499
+ const { data, cachedAt } = (_a = pullFromCache(queryKey)) !== null && _a !== void 0 ? _a : {};
25500
+ if (!(data === null || data === void 0 ? void 0 : data.notificationTraySeen))
25501
+ return;
25502
+ return { data: data.notificationTraySeen, cachedAt };
25503
+ };
25504
+
25505
+ /**
25506
+ * ```js
25507
+ * import { onNotificationTraySeenUpdated } from '@amityco/ts-sdk'
25508
+ * const dispose = onNotificationTraySeenUpdated(data => {
25509
+ * // ...
25510
+ * })
25511
+ * ```
25512
+ *
25513
+ * Fired when an {@link Amity.NotificationTraySeen} has been updated
25514
+ *
25515
+ * @param callback The function to call when the event was fired
25516
+ * @returns an {@link Amity.Unsubscriber} function to stop listening
25517
+ *
25518
+ * @category NotificationTraySeen Events
25519
+ */
25520
+ const onNotificationTraySeenUpdated = (callback) => {
25521
+ const client = getActiveClient();
25522
+ const disposers = [
25523
+ createEventSubscriber(client, 'onNotificationTraySeenUpdated', 'local.notificationTraySeen.updated', payload => callback(payload)),
25524
+ ];
25525
+ return () => {
25526
+ disposers.forEach(fn => fn());
25527
+ };
25528
+ };
25529
+
25530
+ /* begin_public_function
25531
+ id: notificationTraySeen.get
25532
+ */
25533
+ /**
25534
+ * ```js
25535
+ * import { getNotificationTraySeen } from '@amityco/ts-sdk';
25536
+ *
25537
+ * let notificationTraySeen;
25538
+ *
25539
+ * const unsubscribe = getNotificationTraySeen(userId, response => {
25540
+ * notificationTraySeen = response.data;
25541
+ * });
25542
+ * ```
25543
+ *
25544
+ * Observe all mutation on a given {@link Amity.NotificationTraySeen}
25545
+ *
25546
+ * @param userId the ID of the user to observe
25547
+ * @param callback the function to call when new data are available
25548
+ * @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the message
25549
+ *
25550
+ * @category NotificationTraySeen Live Object
25551
+ */
25552
+ const getNotificationTraySeen = (callback) => {
25553
+ const responder = (snapshot) => {
25554
+ const { data } = snapshot;
25555
+ callback(Object.assign(Object.assign({}, snapshot), { data }));
25556
+ };
25557
+ const { userId } = getActiveUser();
25558
+ return liveObject(userId, responder, 'userId', getNotificationTraySeen$1, [
25559
+ onNotificationTraySeenUpdated,
25560
+ ]);
25561
+ };
25562
+ /* end_public_function */
25563
+
25564
+ /**
25565
+ * TODO: handle cache receive cache option, and cache policy
25566
+ * TODO: check if querybyIds is supported
25567
+ */
25568
+ class NotificationTrayItemsPaginationController extends PaginationController {
25569
+ async getRequest(queryParams, token) {
25570
+ const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT } = queryParams, params = __rest(queryParams, ["limit"]);
25571
+ const options = token ? { token } : { limit };
25572
+ const { data: queryResponse } = await this.http.get(`/api/v1/notification-tray`, {
25573
+ params: Object.assign(Object.assign({}, params), { options }),
25574
+ });
25575
+ return queryResponse;
25576
+ }
25577
+ }
25578
+
25579
+ class NotificationTrayItemsQuerystreamController extends QueryStreamController {
25580
+ constructor(query, cacheKey, notifyChange, preparePayload) {
25581
+ super(query, cacheKey);
25582
+ this.notifyChange = notifyChange;
25583
+ this.preparePayload = preparePayload;
25584
+ }
25585
+ async saveToMainDB(response) {
25586
+ const processedPayload = await this.preparePayload(response);
25587
+ const client = getActiveClient();
25588
+ const cachedAt = client.cache && Date.now();
25589
+ if (client.cache) {
25590
+ ingestInCache(processedPayload, { cachedAt });
25591
+ }
25592
+ }
25593
+ appendToQueryStream(response, direction, refresh = false) {
25594
+ var _a, _b;
25595
+ if (refresh) {
25596
+ pushToCache(this.cacheKey, {
25597
+ data: response.notificationTrayItems.map(getResolver('notificationTrayItem')),
25598
+ });
25599
+ }
25600
+ else {
25601
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
25602
+ const notifications = (_b = collection === null || collection === void 0 ? void 0 : collection.data) !== null && _b !== void 0 ? _b : [];
25603
+ pushToCache(this.cacheKey, Object.assign(Object.assign({}, collection), { data: [
25604
+ ...new Set([
25605
+ ...notifications,
25606
+ ...response.notificationTrayItems.map(getResolver('notificationTrayItem')),
25607
+ ]),
25608
+ ] }));
25609
+ }
25610
+ }
25611
+ }
25612
+
25613
+ const prepareNotificationTrayItemsPayload = (rawPayload) => {
25614
+ const users = rawPayload.users.map(convertRawUserToInternalUser);
25615
+ return Object.assign(Object.assign({}, rawPayload), { users });
25616
+ };
25617
+
25618
+ class NotificationTrayItemsLiveCollectionController extends LiveCollectionController {
25619
+ constructor(query, callback) {
25620
+ const queryStreamId = hash__default["default"](query);
25621
+ const cacheKey = ['notificationTrayItem', 'collection', queryStreamId];
25622
+ const paginationController = new NotificationTrayItemsPaginationController(query);
25623
+ super(paginationController, queryStreamId, cacheKey, callback);
25624
+ this.query = query;
25625
+ this.queryStreamController = new NotificationTrayItemsQuerystreamController(this.query, this.cacheKey, this.notifyChange.bind(this), prepareNotificationTrayItemsPayload);
25626
+ this.callback = callback.bind(this);
25627
+ this.loadPage({ initial: true });
25628
+ }
25629
+ setup() {
25630
+ var _a;
25631
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
25632
+ if (!collection) {
25633
+ pushToCache(this.cacheKey, {
25634
+ data: [],
25635
+ params: {},
25636
+ });
25637
+ }
25638
+ }
25639
+ async persistModel(queryPayload) {
25640
+ await this.queryStreamController.saveToMainDB(queryPayload);
25641
+ }
25642
+ persistQueryStream({ response, direction, refresh, }) {
25643
+ this.queryStreamController.appendToQueryStream(response, direction, refresh);
25644
+ }
25645
+ // eslint-disable-next-line class-methods-use-this
25646
+ startSubscription() {
25647
+ return [];
25648
+ }
25649
+ notifyChange({ origin, loading, error }) {
25650
+ var _a, _b;
25651
+ const collection = (_a = pullFromCache(this.cacheKey)) === null || _a === void 0 ? void 0 : _a.data;
25652
+ if (!collection)
25653
+ return;
25654
+ const data = (_b = collection.data
25655
+ .map(id => pullFromCache(['notificationTrayItem', 'get', id]))
25656
+ .filter(isNonNullable)
25657
+ .map(({ data }) => data)) !== null && _b !== void 0 ? _b : [];
25658
+ if (!this.shouldNotify(data) && origin === 'event')
25659
+ return;
25660
+ this.callback({
25661
+ onNextPage: () => this.loadPage({ direction: "next" /* Amity.LiveCollectionPageDirection.NEXT */ }),
25662
+ data,
25663
+ hasNextPage: !!this.paginationController.getNextToken(),
25664
+ loading,
25665
+ error,
25666
+ });
25667
+ }
25668
+ }
25669
+
25670
+ /**
25671
+ * Get notification tray items for a notification tray page
25672
+ *
25673
+ * @param params the limit query parameters
25674
+ * @param callback the callback to be called when the notification tray items are updated
25675
+ * @returns items in the notification tray
25676
+ *
25677
+ * @category Notification tray items Live Collection
25678
+ *
25679
+ */
25680
+ const getNotificationTrayItems = (params, callback, config) => {
25681
+ const { log, cache } = getActiveClient();
25682
+ if (!cache) {
25683
+ console.log(ENABLE_CACHE_MESSAGE);
25684
+ }
25685
+ const timestamp = Date.now();
25686
+ log(`getNotificationTrayItems(tmpid: ${timestamp}) > listen`);
25687
+ const notiTrayItemsLiveCollection = new NotificationTrayItemsLiveCollectionController(params, callback);
25688
+ const disposers = notiTrayItemsLiveCollection.startSubscription();
25689
+ const cacheKey = notiTrayItemsLiveCollection.getCacheKey();
25690
+ disposers.push(() => dropFromCache(cacheKey));
25691
+ return () => {
25692
+ log(`getNotificationTrayItems(tmpid: ${timestamp}) > dispose`);
25693
+ disposers.forEach(fn => fn());
25694
+ };
25695
+ };
25696
+
25697
+ /* begin_public_function
25698
+ id: notificationTray.markSeen
25699
+ */
25700
+ /**
25701
+ * ```js
25702
+ * import { NotificationTrayRepository } from '@amityco/ts-sdk'
25703
+ * const updated = await NotificationTrayRepository.markNotificationTraySeen({
25704
+ * lastSeenAt: Amity.timestamp,
25705
+ * })
25706
+ * ```
25707
+ *
25708
+ * Updates an {@link Amity.NotificationTraySeen}
25709
+ *
25710
+ * @param userId The ID of the {@link Amity.NotificationTraySeen} to edit
25711
+ * @param lastSeenAt The patch data to apply
25712
+ * @returns the updated {@link Amity.NotificationTraySeen} object
25713
+ *
25714
+ * @category Post API
25715
+ * @async
25716
+ */
25717
+ const markNotificationTraySeen = async (lastSeenAt) => {
25718
+ var _a;
25719
+ const client = getActiveClient();
25720
+ client.log('notificationTray/markNotificationTraySeen', {});
25721
+ const { data: payload } = await client.http.put(`api/v1/notification-tray/tray/seen`, {
25722
+ lastSeenAt,
25723
+ });
25724
+ const cacheData = (_a = pullFromCache([
25725
+ 'notificationTraySeen',
25726
+ 'get',
25727
+ ])) === null || _a === void 0 ? void 0 : _a.data;
25728
+ const data = Object.assign({ userId: client.userId }, payload);
25729
+ const updateCacheData = Object.assign(Object.assign({}, cacheData), data);
25730
+ const cachedAt = client.cache && Date.now();
25731
+ if (client.cache)
25732
+ pushToCache(['notificationTraySeen', 'get', client.userId], updateCacheData, { cachedAt });
25733
+ fireEvent('local.notificationTraySeen.updated', data);
25734
+ return {
25735
+ data: payload,
25736
+ cachedAt,
25737
+ };
25738
+ };
25739
+ /* end_public_function */
25740
+
25741
+ var index = /*#__PURE__*/Object.freeze({
25742
+ __proto__: null,
25743
+ getNotificationTraySeen: getNotificationTraySeen,
25744
+ getNotificationTrayItems: getNotificationTrayItems,
25745
+ markNotificationItemsSeen: markNotificationItemsSeen,
25746
+ markNotificationTraySeen: markNotificationTraySeen,
25747
+ onNotificationTraySeenUpdated: onNotificationTraySeenUpdated
25748
+ });
25749
+
25381
25750
  exports.API_REGIONS = API_REGIONS;
25382
- exports.AdRepository = index;
25383
- exports.CategoryRepository = index$8;
25384
- exports.ChannelRepository = index$c;
25385
- exports.Client = index$l;
25386
- exports.CommentRepository = index$6;
25751
+ exports.AdRepository = index$1;
25752
+ exports.CategoryRepository = index$9;
25753
+ exports.ChannelRepository = index$d;
25754
+ exports.Client = index$m;
25755
+ exports.CommentRepository = index$7;
25387
25756
  exports.CommunityPostSettingMaps = CommunityPostSettingMaps;
25388
25757
  exports.CommunityPostSettings = CommunityPostSettings;
25389
- exports.CommunityRepository = index$9;
25758
+ exports.CommunityRepository = index$a;
25390
25759
  exports.ContentFeedType = ContentFeedType;
25391
25760
  exports.DefaultCommunityPostSetting = DefaultCommunityPostSetting;
25392
- exports.FeedRepository = index$7;
25393
- exports.FileRepository = index$i;
25761
+ exports.FeedRepository = index$8;
25762
+ exports.FileRepository = index$j;
25394
25763
  exports.FileType = FileType;
25395
- exports.LiveStreamPlayer = index$2;
25764
+ exports.LiveStreamPlayer = index$3;
25396
25765
  exports.MessageContentType = MessageContentType;
25397
- exports.MessageRepository = index$g;
25398
- exports.PollRepository = index$3;
25766
+ exports.MessageRepository = index$h;
25767
+ exports.NotificationTrayRepository = index;
25768
+ exports.PollRepository = index$4;
25399
25769
  exports.PostContentType = PostContentType;
25400
- exports.PostRepository = index$5;
25401
- exports.ReactionRepository = index$h;
25402
- exports.StoryRepository = index$1;
25403
- exports.StreamRepository = index$4;
25404
- exports.SubChannelRepository = index$f;
25405
- exports.UserRepository = index$j;
25770
+ exports.PostRepository = index$6;
25771
+ exports.ReactionRepository = index$i;
25772
+ exports.StoryRepository = index$2;
25773
+ exports.StreamRepository = index$5;
25774
+ exports.SubChannelRepository = index$g;
25775
+ exports.UserRepository = index$k;
25406
25776
  exports.VERSION = VERSION;
25407
25777
  exports.VideoResolution = VideoResolution;
25408
25778
  exports.VideoSize = VideoSize;
package/dist/index.d.ts CHANGED
@@ -25,4 +25,5 @@ export * as LiveStreamPlayer from './liveStreamPlayer';
25
25
  export * as StoryRepository from './storyRepository';
26
26
  export * as AdRepository from './adRepository';
27
27
  export * from './external/api';
28
+ export * as NotificationTrayRepository from './notificationTrayRepository';
28
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAEzB,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,cAAc,YAAY,CAAC;AAG3B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAE3D,cAAc,cAAc,CAAC;AAG7B,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,oBAAoB,MAAM,wBAAwB,CAAC;AAE/D,cAAc,iBAAiB,CAAC;AAGhC,OAAO,KAAK,mBAAmB,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAG/C,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AAEzB,cAAc,WAAW,CAAC;AAG1B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,cAAc,YAAY,CAAC;AAG3B,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAE3D,cAAc,cAAc,CAAC;AAG7B,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,oBAAoB,MAAM,wBAAwB,CAAC;AAE/D,cAAc,iBAAiB,CAAC;AAGhC,OAAO,KAAK,mBAAmB,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,kBAAkB,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,cAAc,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAG/C,cAAc,gBAAgB,CAAC;AAE/B,OAAO,KAAK,0BAA0B,MAAM,8BAA8B,CAAC"}