@stream-io/feeds-client 0.3.4 → 0.3.6

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 (34) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/index.js +2 -7
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +1 -2
  5. package/dist/cjs/react-bindings.js.map +1 -1
  6. package/dist/es/index.mjs +5 -7
  7. package/dist/es/react-bindings.mjs +1 -2
  8. package/dist/es/react-bindings.mjs.map +1 -1
  9. package/dist/{feeds-client-HvoTzr-z.js → feeds-client-47vliZx_.js} +37 -13
  10. package/dist/feeds-client-47vliZx_.js.map +1 -0
  11. package/dist/{feeds-client-CNHZvctN.mjs → feeds-client-Cd2LsXp-.mjs} +38 -14
  12. package/dist/feeds-client-Cd2LsXp-.mjs.map +1 -0
  13. package/dist/types/common/ApiClient.d.ts.map +1 -1
  14. package/dist/types/common/EventDispatcher.d.ts.map +1 -1
  15. package/dist/types/common/TokenManager.d.ts.map +1 -1
  16. package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
  17. package/dist/types/feed/feed.d.ts +1 -0
  18. package/dist/types/feed/feed.d.ts.map +1 -1
  19. package/dist/types/utils/deep-equal.d.ts +2 -0
  20. package/dist/types/utils/deep-equal.d.ts.map +1 -0
  21. package/dist/types/utils/logger.d.ts +2 -64
  22. package/dist/types/utils/logger.d.ts.map +1 -1
  23. package/package.json +2 -2
  24. package/src/common/ApiClient.ts +2 -2
  25. package/src/common/EventDispatcher.ts +2 -2
  26. package/src/common/TokenManager.ts +2 -2
  27. package/src/common/real-time/StableWSConnection.ts +2 -2
  28. package/src/feed/feed.ts +24 -1
  29. package/src/feeds-client/feeds-client.ts +2 -2
  30. package/src/utils/deep-equal.ts +22 -0
  31. package/src/utils/ensure-exhausted.ts +2 -2
  32. package/src/utils/logger.ts +3 -4
  33. package/dist/feeds-client-CNHZvctN.mjs.map +0 -1
  34. package/dist/feeds-client-HvoTzr-z.js.map +0 -1
@@ -2978,8 +2978,7 @@ class FeedsApi {
2978
2978
  return { ...response.body, metadata: response.metadata };
2979
2979
  }
2980
2980
  }
2981
- const configureLoggers = loggerInternal.configureLoggers;
2982
- const getLogger = loggerInternal.getLogger;
2981
+ const feedsLoggerSystem = loggerInternal.createLoggerSystem();
2983
2982
  const sleep = (m) => new Promise((resolve) => setTimeout(resolve, m));
2984
2983
  function isFunction(value) {
2985
2984
  return value && (Object.prototype.toString.call(value) === "[object Function]" || typeof value === "function" || value instanceof Function);
@@ -3094,7 +3093,7 @@ const capitalize = (s) => {
3094
3093
  };
3095
3094
  class TokenManager {
3096
3095
  constructor() {
3097
- this.logger = getLogger("token-manager");
3096
+ this.logger = feedsLoggerSystem.getLogger("token-manager");
3098
3097
  this.setTokenOrProvider = (tokenOrProvider) => {
3099
3098
  if (isFunction(tokenOrProvider)) {
3100
3099
  this.tokenProvider = tokenOrProvider;
@@ -3211,7 +3210,7 @@ class ConnectionIdManager {
3211
3210
  class EventDispatcher {
3212
3211
  constructor() {
3213
3212
  this.subscribers = {};
3214
- this.logger = getLogger("event-dispatcher");
3213
+ this.logger = feedsLoggerSystem.getLogger("event-dispatcher");
3215
3214
  this.dispatch = (event) => {
3216
3215
  const listeners = [
3217
3216
  ...this.subscribers[event.type] ?? [],
@@ -3256,7 +3255,7 @@ class StableWSConnection {
3256
3255
  this.connectionIdManager = connectionIdManager;
3257
3256
  this.decoders = decoders2;
3258
3257
  this.dispatcher = new EventDispatcher();
3259
- this.logger = getLogger("stable-ws-connection");
3258
+ this.logger = feedsLoggerSystem.getLogger("stable-ws-connection");
3260
3259
  this.on = this.dispatcher.on;
3261
3260
  this.off = this.dispatcher.off;
3262
3261
  this.offAll = this.dispatcher.offAll;
@@ -3764,14 +3763,14 @@ const getRateLimitFromResponseHeader = (response_headers) => {
3764
3763
  };
3765
3764
  return result;
3766
3765
  };
3767
- const version = "0.3.4";
3766
+ const version = "0.3.6";
3768
3767
  class ApiClient {
3769
3768
  constructor(apiKey, tokenManager, connectionIdManager, options) {
3770
3769
  this.apiKey = apiKey;
3771
3770
  this.tokenManager = tokenManager;
3772
3771
  this.connectionIdManager = connectionIdManager;
3773
3772
  this.extraHeaderInformation = {};
3774
- this.logger = getLogger("api-client");
3773
+ this.logger = feedsLoggerSystem.getLogger("api-client");
3775
3774
  this.sendRequest = async (method, url, pathParams, queryParams, body, requestContentType) => {
3776
3775
  queryParams = queryParams ?? {};
3777
3776
  queryParams.api_key = this.apiKey;
@@ -4548,7 +4547,7 @@ const isVideoFile = (file) => {
4548
4547
  return file.type.startsWith("video/");
4549
4548
  };
4550
4549
  const ensureExhausted = (x, message) => {
4551
- getLogger("helpers").warn(message, x);
4550
+ feedsLoggerSystem.getLogger("helpers").warn(message, x);
4552
4551
  };
4553
4552
  const shouldUpdateState = ({
4554
4553
  stateUpdateQueueId,
@@ -6059,6 +6058,21 @@ function handleActivityFeedback(event) {
6059
6058
  });
6060
6059
  }
6061
6060
  }
6061
+ const deepEqual = (x, y) => {
6062
+ if (x === y) {
6063
+ return true;
6064
+ } else if (typeof x == "object" && x != null && typeof y == "object" && y != null) {
6065
+ if (Object.keys(x).length != Object.keys(y).length) return false;
6066
+ for (const prop in x) {
6067
+ if (Object.prototype.hasOwnProperty.call(y, prop)) {
6068
+ if (!deepEqual(x[prop], y[prop])) return false;
6069
+ } else return false;
6070
+ }
6071
+ return true;
6072
+ } else {
6073
+ return false;
6074
+ }
6075
+ };
6062
6076
  const _Feed = class _Feed extends FeedApi {
6063
6077
  constructor(client, groupId, id, data, watch = false, addNewActivitiesTo = "start", activityAddedEventFilter) {
6064
6078
  super(client, groupId, id);
@@ -6166,10 +6180,14 @@ const _Feed = class _Feed extends FeedApi {
6166
6180
  async synchronize() {
6167
6181
  const { last_get_or_create_request_config } = this.state.getLatestValue();
6168
6182
  if (last_get_or_create_request_config?.watch) {
6183
+ this.inProgressGetOrCreate = void 0;
6169
6184
  await this.getOrCreate(last_get_or_create_request_config);
6170
6185
  }
6171
6186
  }
6172
6187
  async getOrCreate(request) {
6188
+ if (!request?.next && this.inProgressGetOrCreate && deepEqual(request, this.inProgressGetOrCreate.request)) {
6189
+ return this.inProgressGetOrCreate.promise;
6190
+ }
6173
6191
  if (this.currentState.is_loading_activities) {
6174
6192
  throw new Error("Only one getOrCreate call is allowed at a time");
6175
6193
  }
@@ -6178,7 +6196,11 @@ const _Feed = class _Feed extends FeedApi {
6178
6196
  is_loading_activities: true
6179
6197
  });
6180
6198
  try {
6181
- const response = await super.getOrCreate(request);
6199
+ const responsePromise = super.getOrCreate(request);
6200
+ if (!request?.next) {
6201
+ this.inProgressGetOrCreate = { request, promise: responsePromise };
6202
+ }
6203
+ const response = await responsePromise;
6182
6204
  const currentActivityFeeds = [];
6183
6205
  for (const activity of response.activities) {
6184
6206
  if (activity.current_feed) {
@@ -6250,6 +6272,9 @@ const _Feed = class _Feed extends FeedApi {
6250
6272
  is_loading: false,
6251
6273
  is_loading_activities: false
6252
6274
  });
6275
+ if (!request?.next) {
6276
+ this.inProgressGetOrCreate = void 0;
6277
+ }
6253
6278
  }
6254
6279
  }
6255
6280
  /**
@@ -7052,7 +7077,7 @@ class FeedsClient extends FeedsApi {
7052
7077
  this.connectionIdManager = connectionIdManager;
7053
7078
  this.polls_by_id = /* @__PURE__ */ new Map();
7054
7079
  this.query_batch_own_capabilties_throttling_interval = options?.query_batch_own_capabilties_throttling_interval ?? DEFAULT_BATCH_OWN_CAPABILITIES_THROTTLING_INTERVAL;
7055
- configureLoggers(options?.configure_loggers_options);
7080
+ feedsLoggerSystem.configureLoggers(options?.configure_loggers_options);
7056
7081
  this.on("all", (event) => {
7057
7082
  const fid = event.fid;
7058
7083
  const feed = typeof fid === "string" ? this.activeFeeds[fid] : void 0;
@@ -7308,11 +7333,10 @@ export {
7308
7333
  isVideoFile as j,
7309
7334
  getStateUpdateQueueId as k,
7310
7335
  updateEntityInArray as l,
7311
- configureLoggers as m,
7312
- getLogger as n,
7313
- ensureExhausted as o,
7336
+ feedsLoggerSystem as m,
7337
+ ensureExhausted as n,
7314
7338
  replaceUniqueArrayMerge as r,
7315
7339
  shouldUpdateState as s,
7316
7340
  uniqueArrayMerge as u
7317
7341
  };
7318
- //# sourceMappingURL=feeds-client-CNHZvctN.mjs.map
7342
+ //# sourceMappingURL=feeds-client-Cd2LsXp-.mjs.map