@amityco/ts-sdk 7.27.1-7cc40d1b.0 → 7.27.1-8317d53.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 (34) hide show
  1. package/dist/@types/core/errors.d.ts +2 -1
  2. package/dist/@types/core/errors.d.ts.map +1 -1
  3. package/dist/@types/core/transport.d.ts +1 -0
  4. package/dist/@types/core/transport.d.ts.map +1 -1
  5. package/dist/@types/domains/client.d.ts +86 -0
  6. package/dist/@types/domains/client.d.ts.map +1 -1
  7. package/dist/channelRepository/observers/getChannel.d.ts.map +1 -1
  8. package/dist/client/api/createClient.d.ts.map +1 -1
  9. package/dist/client/api/getModuleSettings.d.ts +25 -0
  10. package/dist/client/api/getModuleSettings.d.ts.map +1 -0
  11. package/dist/client/api/index.d.ts +1 -0
  12. package/dist/client/api/index.d.ts.map +1 -1
  13. package/dist/client/api/tests/integration/moduleSettings.integration.test.d.ts +2 -0
  14. package/dist/client/api/tests/integration/moduleSettings.integration.test.d.ts.map +1 -0
  15. package/dist/client/index.d.ts +1 -0
  16. package/dist/client/index.d.ts.map +1 -1
  17. package/dist/client/utils/parseModuleSettings.d.ts +9 -0
  18. package/dist/client/utils/parseModuleSettings.d.ts.map +1 -0
  19. package/dist/client/utils/resolveModuleAvailability.d.ts +39 -0
  20. package/dist/client/utils/resolveModuleAvailability.d.ts.map +1 -0
  21. package/dist/client/utils/tests/resolveModuleAvailability.test.d.ts +2 -0
  22. package/dist/client/utils/tests/resolveModuleAvailability.test.d.ts.map +1 -0
  23. package/dist/core/errors.d.ts +20 -0
  24. package/dist/core/errors.d.ts.map +1 -1
  25. package/dist/core/transports/http.d.ts.map +1 -1
  26. package/dist/core/transports/tests/moduleNotEntitled.test.d.ts +2 -0
  27. package/dist/core/transports/tests/moduleNotEntitled.test.d.ts.map +1 -0
  28. package/dist/core/transports/utils.d.ts.map +1 -1
  29. package/dist/index.cjs.js +242 -5
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.esm.js +241 -6
  33. package/dist/index.umd.js +2 -2
  34. package/package.json +1 -1
package/dist/index.esm.js CHANGED
@@ -796,6 +796,28 @@ class ASCConnectionError extends ASCError {
796
796
  this.event = event;
797
797
  }
798
798
  }
799
+ /**
800
+ * Thrown when the network does not own a module the call needs. Raised from
801
+ * any module endpoint under `enforce` enforcement, mapped from app code
802
+ * `400325` — never from HTTP 403 alone, which already covers a role problem
803
+ * (`400300` / `400301`), a visitor (`403999`) and a bot (`403998`).
804
+ *
805
+ * `modules` carries **every** key the refusal named, as raw strings, so a
806
+ * caller can say which entitlement is absent without a second request.
807
+ *
808
+ * @category Errors
809
+ */
810
+ class AmityModuleNotEntitledError extends ASCApiError {
811
+ /**
812
+ * @param message The server's message, e.g. `Module not entitled: chat, live`
813
+ * @param modules Every module key from the rejection's `data.modules`
814
+ */
815
+ constructor(message, modules = []) {
816
+ super(message, 400325 /* Amity.ServerError.MODULE_NOT_ENTITLED */, "error" /* Amity.ErrorLevel.ERROR */);
817
+ this.modules = modules;
818
+ this.type = 'AmityModuleNotEntitledError';
819
+ }
820
+ }
799
821
 
800
822
  let activeClient = null;
801
823
  /**
@@ -1945,6 +1967,22 @@ function computeUrl(type, region) {
1945
1967
 
1946
1968
  const uuid = () => uuid$1.v4().toString();
1947
1969
 
1970
+ /**
1971
+ * Reads the module keys a `MODULE_NOT_ENTITLED` rejection named.
1972
+ *
1973
+ * Every entry is kept, as a raw string: one call can need more than one
1974
+ * module, and a key this build predates is still the only part of the
1975
+ * payload a customer can act on.
1976
+ *
1977
+ * @category Transport
1978
+ * @hidden
1979
+ */
1980
+ const extractNotEntitledModules = (data) => {
1981
+ const { modules } = data !== null && data !== void 0 ? data : {};
1982
+ if (!Array.isArray(modules))
1983
+ return [];
1984
+ return modules.filter((module) => typeof module === 'string');
1985
+ };
1948
1986
  /**
1949
1987
  * Unwraps v3 server payload (for error handling and type extraction)
1950
1988
  *
@@ -1964,6 +2002,15 @@ const unwrapPayload = (response) => {
1964
2002
  throw new ASCUnknownError(response.code);
1965
2003
  }
1966
2004
  else if (response.status === 'error') {
2005
+ /*
2006
+ * An entitlement refusal must not arrive as a generic failure: a customer
2007
+ * cannot then tell a module they have not bought from an outage. Keyed on
2008
+ * the app code, never on the HTTP status, so a role or membership problem
2009
+ * still maps to the generic error.
2010
+ */
2011
+ if (response.code === 400325 /* Amity.ServerError.MODULE_NOT_ENTITLED */) {
2012
+ throw new AmityModuleNotEntitledError(response.message, extractNotEntitledModules(response.data));
2013
+ }
1967
2014
  throw new ASCApiError(response.message, response.code, "error" /* Amity.ErrorLevel.ERROR */);
1968
2015
  }
1969
2016
  // unjust, but helps force uncast "T | undefined" to allow deconstruction without warnings
@@ -2158,20 +2205,28 @@ const createHttpTransport = (endpoint) => {
2158
2205
  });
2159
2206
  return response;
2160
2207
  }, error => {
2161
- var _a, _b, _c;
2208
+ var _a, _b, _c, _d;
2162
2209
  const { response } = error;
2163
2210
  // handle unauthorized request
2164
2211
  if ((response === null || response === void 0 ? void 0 : response.data.code) === 400100 /* Amity.ServerError.UNAUTHORIZED */) {
2165
2212
  fireEvent('tokenTerminated', "terminated" /* Amity.SessionStates.TERMINATED */);
2166
2213
  }
2214
+ // handle globally banned user. The realtime `user.didGlobalBan` event can be missed
2215
+ // (e.g. MQTT dropped before delivery), so mirror the 400100 handling above and fire
2216
+ // the same virtual event the login subscriptions already listen to. That terminates
2217
+ // the session with `TokenTerminationReason.GLOBAL_BAN` and notifies `onClientBanned`
2218
+ // consumers, instead of leaving the session `established` with a revoked token.
2219
+ if (((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.code) === 400312 /* Amity.ServerError.GLOBAL_BAN */) {
2220
+ fireEvent('user.didGlobalBan', { users: [], files: [] });
2221
+ }
2167
2222
  // handle visitor daily usage limit exceeded
2168
- if (((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.code) === 400323 /* Amity.ServerError.VISITOR_USAGE_LIMIT_EXCEEDED */) {
2223
+ if (((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.code) === 400323 /* Amity.ServerError.VISITOR_USAGE_LIMIT_EXCEEDED */) {
2169
2224
  throttledFireVisitorUsageLimit();
2170
2225
  throw new ASCError('Visitor usage limit exceeded', 400323 /* Amity.ServerError.VISITOR_USAGE_LIMIT_EXCEEDED */, "error" /* Amity.ErrorLevel.ERROR */);
2171
2226
  }
2172
2227
  // if it's an error with status in the response payload,
2173
2228
  // then it's an expected error.
2174
- if ((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.status) {
2229
+ if ((_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.status) {
2175
2230
  unwrapPayload(response === null || response === void 0 ? void 0 : response.data);
2176
2231
  }
2177
2232
  // as on request cancellation error is returned
@@ -2179,7 +2234,7 @@ const createHttpTransport = (endpoint) => {
2179
2234
  throw error;
2180
2235
  }
2181
2236
  // unexpected error.
2182
- throw new Error((_c = response === null || response === void 0 ? void 0 : response.data) !== null && _c !== void 0 ? _c : error);
2237
+ throw new Error((_d = response === null || response === void 0 ? void 0 : response.data) !== null && _d !== void 0 ? _d : error);
2183
2238
  });
2184
2239
  instance.defaults.paramsSerializer = {
2185
2240
  encode: params => encodeURIComponent(params),
@@ -5465,6 +5520,95 @@ const getForYouFeedSetting = async () => {
5465
5520
  };
5466
5521
  /* end_public_function */
5467
5522
 
5523
+ const ENFORCEMENT_MODES = ['off', 'shadow', 'enforce'];
5524
+ /**
5525
+ * An unrecognised mode decodes to `off`, and so does an absent one. A mode
5526
+ * this build does not know must not withhold anything — defaulting to
5527
+ * `enforce` would let a server-side rename black out a customer's app.
5528
+ *
5529
+ * @category private
5530
+ */
5531
+ const parseEnforcement = (mode) => {
5532
+ const match = ENFORCEMENT_MODES.find(value => value === mode);
5533
+ return match !== null && match !== void 0 ? match : 'off';
5534
+ };
5535
+ const parseGrants = (modules) => {
5536
+ const grants = {};
5537
+ Object.entries(modules !== null && modules !== void 0 ? modules : {}).forEach(([key, granted]) => {
5538
+ grants[key] = granted === true;
5539
+ });
5540
+ return grants;
5541
+ };
5542
+ /**
5543
+ * Every catalog entry survives, including one whose key this build has never
5544
+ * heard of, so a module added server-side is still listable.
5545
+ *
5546
+ * @category private
5547
+ */
5548
+ const parseCatalog = (catalog) => {
5549
+ const parsed = {};
5550
+ Object.entries(catalog !== null && catalog !== void 0 ? catalog : {}).forEach(([key, definition]) => {
5551
+ const rawRequires = definition === null || definition === void 0 ? void 0 : definition.requires;
5552
+ const requires = Array.isArray(rawRequires)
5553
+ ? rawRequires.filter((entry) => typeof entry === 'string')
5554
+ : [];
5555
+ parsed[key] = {
5556
+ label: typeof (definition === null || definition === void 0 ? void 0 : definition.label) === 'string' ? definition.label : key,
5557
+ kind: (definition === null || definition === void 0 ? void 0 : definition.kind) === 'setting' ? 'setting' : 'api',
5558
+ requires,
5559
+ };
5560
+ });
5561
+ return parsed;
5562
+ };
5563
+ /**
5564
+ * Decodes `GET /api/v3/network-settings/modules`. Nothing is trimmed: the
5565
+ * catalog is the dependency table callers resolve against, and a client that
5566
+ * cannot see it has to hardcode one.
5567
+ *
5568
+ * @category private
5569
+ */
5570
+ const parseModuleSettings = (raw) => {
5571
+ var _a;
5572
+ return ({
5573
+ enforcement: parseEnforcement((_a = raw === null || raw === void 0 ? void 0 : raw.enforcement) !== null && _a !== void 0 ? _a : raw === null || raw === void 0 ? void 0 : raw.mode),
5574
+ modules: parseGrants(raw === null || raw === void 0 ? void 0 : raw.modules),
5575
+ catalog: parseCatalog(raw === null || raw === void 0 ? void 0 : raw.catalog),
5576
+ });
5577
+ };
5578
+
5579
+ /* begin_public_function
5580
+ id: client.getModuleSettings
5581
+ */
5582
+ /**
5583
+ * ```js
5584
+ * import { Client } from '@amityco/ts-sdk'
5585
+ * const moduleSettings = await Client.getModuleSettings()
5586
+ * ```
5587
+ *
5588
+ * Fetches the network's module entitlements: which modules the network was
5589
+ * granted, whether core is enforcing those grants, and the catalog of all
5590
+ * modules with their dependency chains.
5591
+ *
5592
+ * The payload is returned whole — `catalog` is the dependency table
5593
+ * {@link resolveModuleAvailability} reads, and a client that cannot see it has
5594
+ * to hardcode one.
5595
+ *
5596
+ * The read is **advisory**. It tells a host what to offer; under `enforce` the
5597
+ * backend refuses a call to an unowned module regardless of what was resolved
5598
+ * here, and that refusal arrives as `AmityModuleNotEntitledError`.
5599
+ *
5600
+ * @returns A Promise of {@link Amity.ModuleSettings} object
5601
+ *
5602
+ * @category Client API
5603
+ * @async
5604
+ */
5605
+ const getModuleSettings = async () => {
5606
+ const client = getActiveClient();
5607
+ const { data } = await client.http.get(`/api/v3/network-settings/modules`);
5608
+ return parseModuleSettings(data);
5609
+ };
5610
+ /* end_public_function */
5611
+
5468
5612
  const checkUserPermission = (userId, permission) => {
5469
5613
  var _a;
5470
5614
  const user = (_a = pullFromCache(['user', 'get', userId])) === null || _a === void 0 ? void 0 : _a.data;
@@ -9189,6 +9333,7 @@ const createClient = (apiKey, apiRegion = API_REGIONS.SG, { debugSession = DEFAU
9189
9333
  getMarkerSyncConsistentMode,
9190
9334
  getProductCatalogueSetting,
9191
9335
  getForYouFeedSetting,
9336
+ getModuleSettings,
9192
9337
  /**
9193
9338
  * Prefix for the deviceId key in the local storage or async storage.
9194
9339
  * This is allow user to have multiple SDK client and Mqtt client within the same app.
@@ -10234,6 +10379,92 @@ const getUserUnread = (callback) => {
10234
10379
  };
10235
10380
  };
10236
10381
 
10382
+ /**
10383
+ * ```js
10384
+ * import { Client, resolveModuleAvailability } from '@amityco/ts-sdk'
10385
+ *
10386
+ * const moduleSettings = await Client.getModuleSettings()
10387
+ *
10388
+ * if (resolveModuleAvailability(moduleSettings, 'live').isAvailable) {
10389
+ * // offer the Live entry point
10390
+ * }
10391
+ * ```
10392
+ *
10393
+ * Resolves whether one module is usable on this network.
10394
+ *
10395
+ * Availability is a function of all three fields of
10396
+ * {@link Amity.ModuleSettings} — the enforcement mode, the module's own grant,
10397
+ * and its prerequisite chain — combined in that order. Reading `modules`
10398
+ * directly contradicts the mode: staging answers `mode: 'off'` with
10399
+ * `modules: {}`, and every module still works.
10400
+ *
10401
+ * The dependency table comes from the payload's `catalog`, never from a
10402
+ * hardcoded copy, so a chain the backend changes takes effect without an SDK
10403
+ * release.
10404
+ *
10405
+ * The SDK does not hold the settings — the caller keeps what it fetched and
10406
+ * resolves against it. With no settings at all (a fetch that never succeeded)
10407
+ * the caller reads that as every module available: under `enforce` the backend
10408
+ * refuses the calls anyway, so the exposure is a screen that offers too much,
10409
+ * not one that withholds what a customer paid for.
10410
+ *
10411
+ * @param moduleSettings The network's module settings
10412
+ * @param moduleKey The module to resolve — an {@link Amity.ModuleKey}, so the
10413
+ * 15 keys this build knows complete and type-check while a catalog entry it
10414
+ * does not know still resolves.
10415
+ * @returns An {@link Amity.ModuleAvailability} answer
10416
+ *
10417
+ * @category Client API
10418
+ */
10419
+ const resolveModuleAvailability = (moduleSettings, moduleKey, seen = new Set()) => {
10420
+ var _a, _b, _c, _d, _e;
10421
+ const isGranted = (_a = moduleSettings.modules[moduleKey]) !== null && _a !== void 0 ? _a : false;
10422
+ /*
10423
+ * Not enforcing: nothing is withheld, and no graph walk is needed. This has
10424
+ * to come first — `off` and `shadow` resolve available whatever the grant
10425
+ * says, and a cycle would otherwise return unavailable under `off` too.
10426
+ */
10427
+ if (moduleSettings.enforcement !== 'enforce') {
10428
+ return { moduleKey, isAvailable: true, isGranted };
10429
+ }
10430
+ // A cycle in `requires` resolves unavailable rather than recursing.
10431
+ if (seen.has(moduleKey)) {
10432
+ return {
10433
+ moduleKey,
10434
+ isAvailable: false,
10435
+ isGranted,
10436
+ reason: 'prerequisiteUnavailable',
10437
+ unsatisfied: (_c = (_b = moduleSettings.catalog[moduleKey]) === null || _b === void 0 ? void 0 : _b.requires) !== null && _c !== void 0 ? _c : [],
10438
+ };
10439
+ }
10440
+ // The module's own grant is evaluated before its prerequisites, so
10441
+ // `notGranted` is reported in preference when both hold.
10442
+ if (!isGranted) {
10443
+ return { moduleKey, isAvailable: false, isGranted, reason: 'notGranted' };
10444
+ }
10445
+ const requires = (_e = (_d = moduleSettings.catalog[moduleKey]) === null || _d === void 0 ? void 0 : _d.requires) !== null && _e !== void 0 ? _e : [];
10446
+ if (requires.length === 0)
10447
+ return { moduleKey, isAvailable: true, isGranted };
10448
+ // `requires` is satisfied by any one entry, transitively.
10449
+ const isSatisfied = requires.some(dependency => resolveModuleAvailability(moduleSettings, dependency, new Set([...seen, moduleKey]))
10450
+ .isAvailable);
10451
+ if (isSatisfied)
10452
+ return { moduleKey, isAvailable: true, isGranted };
10453
+ /*
10454
+ * `unsatisfied` carries the whole `requires` list rather than one entry. Any
10455
+ * one of them would have satisfied the requirement, so naming a single
10456
+ * module misdirects: telling a Community-only customer "Comment needs post"
10457
+ * hides that Story would also have done.
10458
+ */
10459
+ return {
10460
+ moduleKey,
10461
+ isAvailable: false,
10462
+ isGranted,
10463
+ reason: 'prerequisiteUnavailable',
10464
+ unsatisfied: requires,
10465
+ };
10466
+ };
10467
+
10237
10468
  var index$t = /*#__PURE__*/Object.freeze({
10238
10469
  __proto__: null,
10239
10470
  getActiveClient: getActiveClient,
@@ -10257,6 +10488,7 @@ var index$t = /*#__PURE__*/Object.freeze({
10257
10488
  getShareableLinkConfiguration: getShareableLinkConfiguration,
10258
10489
  getProductCatalogueSetting: getProductCatalogueSetting,
10259
10490
  getForYouFeedSetting: getForYouFeedSetting,
10491
+ getModuleSettings: getModuleSettings,
10260
10492
  loginAsVisitor: loginAsVisitor,
10261
10493
  loginAsBot: loginAsBot,
10262
10494
  getCurrentUser: getCurrentUser,
@@ -10284,7 +10516,8 @@ var index$t = /*#__PURE__*/Object.freeze({
10284
10516
  startMarkerSync: startMarkerSync,
10285
10517
  startUnreadSync: startUnreadSync,
10286
10518
  stopUnreadSync: stopUnreadSync,
10287
- getMarkerSyncConsistentMode: getMarkerSyncConsistentMode
10519
+ getMarkerSyncConsistentMode: getMarkerSyncConsistentMode,
10520
+ resolveModuleAvailability: resolveModuleAvailability
10288
10521
  });
10289
10522
 
10290
10523
  /* begin_public_function
@@ -21277,6 +21510,8 @@ const getChannel = (channelId, callback) => {
21277
21510
  onChannelMemberRemoved,
21278
21511
  onChannelMemberBanned,
21279
21512
  onChannelMemberUnbanned,
21513
+ onChannelMemberRoleAdded,
21514
+ onChannelMemberRoleRemoved,
21280
21515
  onChannelSetMuted,
21281
21516
  onChannelMessagePinned,
21282
21517
  onChannelMessageUnpinned,
@@ -36897,4 +37132,4 @@ class AmityAttachmentProductTags {
36897
37132
  }
36898
37133
  }
36899
37134
 
36900
- export { API_REGIONS, index$6 as AdRepository, AmityAttachmentProductTags, AmityAutoSubscription, AmityChannelNotificationModeEnum, AmityCommunityType, AmityEventOrderOption, AmityEventOriginType, AmityEventResponseStatus, AmityEventSortOption, AmityEventStatus, AmityEventType, AmityLiveViewerCountMode, AmitySharableContentType, AnalyticsSourceTypeEnum, index$g as CategoryRepository, index$k as ChannelRepository, index$t as Client, index$f as CommentRepository, CommunityNotificationEventNameEnum, CommunityPostSettingMaps, CommunityPostSettings, index$h as CommunityRepository, ContentFeedType, ContentFlagReasonEnum, index as CuratedContentRepository, DefaultCommunityPostSetting, index$2 as EventRepository, FeedDataTypeEnum, index$e as FeedRepository, FeedSortByEnum, FeedSourceEnum, FeedTypeEnum, FileAccessTypeEnum, index$q as FileRepository, FileType, GET_WATCHER_URLS, index$4 as InvitationRepository, InvitationSortByEnum, InvitationStatusEnum, InvitationTargetTypeEnum, InvitationTypeEnum, JoinRequestStatusEnum, JoinResultStatusEnum, index$3 as LiveReactionRepository, index$8 as LiveStreamPlayer, MembershipAcceptanceTypeEnum, MessageContentType, index$o as MessageRepository, NotificationRolesFilterTypeEnum, NotificationSettingsLevelEnum, index$9 as PollRepository, PostContentType, index$c as PostRepository, PostStructureType, index$1 as ProductRepository, index$p as ReactionRepository, index$a as RoomPresenceRepository, index$d as RoomRepository, SearchUsersByEnum, index$7 as StoryRepository, index$b as StreamRepository, index$n as SubChannelRepository, SubscriptionLevels, UserNotificationModuleNameEnum, UserReportTypeEnum, index$r as UserRepository, UserTypeEnum, VERSION, VideoResolution, VideoSize, VideoTranscodingStatus, backupCache, createQuery, createReport, createUserToken, deleteReport, disableCache, dropFromCache, enableCache, exceedsUntilAtBoundary, filterByChannelMembership, filterByCommunityMembership, filterByFeedType, filterByPostDataTypes, filterByPropEquality, filterByPropInclusion, filterByPropIntersection, filterBySearchTerm, filterByStringComparePartially, filterByUntilAt, filterCommentsByBlockUsers, filterPostsByBlockUsers, getBlockUsersId, getChannelTopic, getCommentTopic, getCommunityStoriesTopic, getCommunityTopic, getLiveReactionTopic, getLiveStreamTopic, getMarkedMessageTopic, getMarkerUserFeedTopic, getMessageTopic, getMyFollowersTopic, getMyFollowingsTopic, getNetworkId, getNetworkTopic, getPostTopic, getRole, getRoomStreamerTopic, getRoomWatcherTopic, getSmartFeedChannelTopic, getSmartFeedMessageTopic, getSmartFeedSubChannelTopic, getStoryTopic, getSubChannelTopic, getUserTopic, isAfterBefore, isAfterBeforeRaw, isCachable, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkip, mergeInCache, index$5 as notificationTray, onChannelMarkerFetched, onFeedMarkerFetched, onFeedMarkerUpdated, onMessageMarked, onMessageMarkerFetched, onSubChannelMarkerFetched, onSubChannelMarkerUpdated, onUserMarkerFetched, onUserMarkerFetchedLegacy, pullFromCache, pushToCache, queryCache, queryOptions, queryRoles, restoreCache, runQuery, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByFirstUpdated, sortByLastActivity, sortByLastCreated, sortByLastUpdated, sortByLocalSortingDate, sortByName, sortBySegmentNumber, subscribeTopic, toPage, toPageRaw, toToken, upsertInCache, validateUntilAt, wipeCache };
37135
+ export { API_REGIONS, index$6 as AdRepository, AmityAttachmentProductTags, AmityAutoSubscription, AmityChannelNotificationModeEnum, AmityCommunityType, AmityEventOrderOption, AmityEventOriginType, AmityEventResponseStatus, AmityEventSortOption, AmityEventStatus, AmityEventType, AmityLiveViewerCountMode, AmityModuleNotEntitledError, AmitySharableContentType, AnalyticsSourceTypeEnum, index$g as CategoryRepository, index$k as ChannelRepository, index$t as Client, index$f as CommentRepository, CommunityNotificationEventNameEnum, CommunityPostSettingMaps, CommunityPostSettings, index$h as CommunityRepository, ContentFeedType, ContentFlagReasonEnum, index as CuratedContentRepository, DefaultCommunityPostSetting, index$2 as EventRepository, FeedDataTypeEnum, index$e as FeedRepository, FeedSortByEnum, FeedSourceEnum, FeedTypeEnum, FileAccessTypeEnum, index$q as FileRepository, FileType, GET_WATCHER_URLS, index$4 as InvitationRepository, InvitationSortByEnum, InvitationStatusEnum, InvitationTargetTypeEnum, InvitationTypeEnum, JoinRequestStatusEnum, JoinResultStatusEnum, index$3 as LiveReactionRepository, index$8 as LiveStreamPlayer, MembershipAcceptanceTypeEnum, MessageContentType, index$o as MessageRepository, NotificationRolesFilterTypeEnum, NotificationSettingsLevelEnum, index$9 as PollRepository, PostContentType, index$c as PostRepository, PostStructureType, index$1 as ProductRepository, index$p as ReactionRepository, index$a as RoomPresenceRepository, index$d as RoomRepository, SearchUsersByEnum, index$7 as StoryRepository, index$b as StreamRepository, index$n as SubChannelRepository, SubscriptionLevels, UserNotificationModuleNameEnum, UserReportTypeEnum, index$r as UserRepository, UserTypeEnum, VERSION, VideoResolution, VideoSize, VideoTranscodingStatus, backupCache, createQuery, createReport, createUserToken, deleteReport, disableCache, dropFromCache, enableCache, exceedsUntilAtBoundary, filterByChannelMembership, filterByCommunityMembership, filterByFeedType, filterByPostDataTypes, filterByPropEquality, filterByPropInclusion, filterByPropIntersection, filterBySearchTerm, filterByStringComparePartially, filterByUntilAt, filterCommentsByBlockUsers, filterPostsByBlockUsers, getBlockUsersId, getChannelTopic, getCommentTopic, getCommunityStoriesTopic, getCommunityTopic, getLiveReactionTopic, getLiveStreamTopic, getMarkedMessageTopic, getMarkerUserFeedTopic, getMessageTopic, getMyFollowersTopic, getMyFollowingsTopic, getNetworkId, getNetworkTopic, getPostTopic, getRole, getRoomStreamerTopic, getRoomWatcherTopic, getSmartFeedChannelTopic, getSmartFeedMessageTopic, getSmartFeedSubChannelTopic, getStoryTopic, getSubChannelTopic, getUserTopic, isAfterBefore, isAfterBeforeRaw, isCachable, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkip, mergeInCache, index$5 as notificationTray, onChannelMarkerFetched, onFeedMarkerFetched, onFeedMarkerUpdated, onMessageMarked, onMessageMarkerFetched, onSubChannelMarkerFetched, onSubChannelMarkerUpdated, onUserMarkerFetched, onUserMarkerFetchedLegacy, pullFromCache, pushToCache, queryCache, queryOptions, queryRoles, resolveModuleAvailability, restoreCache, runQuery, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByFirstUpdated, sortByLastActivity, sortByLastCreated, sortByLastUpdated, sortByLocalSortingDate, sortByName, sortBySegmentNumber, subscribeTopic, toPage, toPageRaw, toToken, upsertInCache, validateUntilAt, wipeCache };