itd-api 0.0.6 → 0.0.7

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.
@@ -614,14 +614,18 @@ var RealtimeStatus = Object.freeze({
614
614
  Error: "error",
615
615
  Disconnected: "disconnected"
616
616
  });
617
- var WallAccess = Object.freeze({
618
- Everyone: "everyone"
619
- });
620
- var LikesVisibility = Object.freeze({
621
- Everyone: "everyone",
617
+ var AccessType = Object.freeze({
618
+ /** Никто. */
619
+ Nobody: "nobody",
622
620
  /** Только взаимные подписки. */
623
- Mutual: "mutual"
621
+ Mutual: "mutual",
622
+ /** Подписчики. */
623
+ Followers: "followers",
624
+ /** Все. */
625
+ Everyone: "everyone"
624
626
  });
627
+ var WallAccess = AccessType;
628
+ var LikesVisibility = AccessType;
625
629
  var NotificationType = Object.freeze({
626
630
  /** Реакция на пост. Старое имя — `like`. */
627
631
  PostReaction: "post_reaction",
@@ -650,6 +654,36 @@ var NotificationType = Object.freeze({
650
654
  /** Верификация отклонена. Приходит только по REST. */
651
655
  VerificationRejected: "verification_rejected"
652
656
  });
657
+ var InteractionType = Object.freeze({
658
+ /** Открытие фотографии. */
659
+ PhotoOpen: 1,
660
+ /** Прогресс просмотра видео. Несёт поля `pm`/`dm`. */
661
+ VideoProgress: 2
662
+ });
663
+ var ViewSource = Object.freeze({
664
+ FeedGlobal: 1,
665
+ FeedFollowing: 2,
666
+ FeedClan: 3,
667
+ Profile: 4,
668
+ Hashtag: 5,
669
+ PostPage: 6,
670
+ Link: 7,
671
+ Search: 8
672
+ });
673
+ var ViewReason = Object.freeze({
674
+ /** Пост ушёл из зоны видимости при обычной прокрутке. */
675
+ Normal: 0,
676
+ /** Потеря фокуса окна. */
677
+ Blur: 1,
678
+ /** Вкладка скрыта. */
679
+ Hidden: 2,
680
+ /** Уход со страницы (`pagehide`). */
681
+ PageHide: 3,
682
+ /** Элемент перестал наблюдаться. */
683
+ Unobserve: 4,
684
+ /** Достигнут порог времени просмотра. */
685
+ ThresholdMet: 5
686
+ });
653
687
  var ItdErrorCode = Object.freeze({
654
688
  BAD_REQUEST: "BAD_REQUEST",
655
689
  UNAUTHORIZED: "UNAUTHORIZED",
@@ -1714,7 +1748,7 @@ function normalizeBaseUrl(baseUrl) {
1714
1748
  // src/core/config.ts
1715
1749
  var DEFAULT_BASE_URL = "https://xn--d1ah4a.com";
1716
1750
  var DEFAULT_TIMEOUT = 3e4;
1717
- var LIBRARY_VERSION = "0.0.6";
1751
+ var LIBRARY_VERSION = "0.0.7";
1718
1752
  var DEFAULT_USER_AGENT = `Mozilla/5.0 (compatible; itd-api/${LIBRARY_VERSION}; +https://github.com/KiowDev/itd-api)`;
1719
1753
  var DEFAULT_RATE_LIMIT_DELAYS = Object.freeze([1e3, 5e3, 3e4, 6e4, 9e4]);
1720
1754
  function requirePositive(value, name) {
@@ -4241,49 +4275,6 @@ var PlatformResource = class extends BaseResource {
4241
4275
  });
4242
4276
  }
4243
4277
  };
4244
- var TelemetryResource = class extends BaseResource {
4245
- /**
4246
- * Отправляет время просмотра постов.
4247
- *
4248
- * @experimental Имена полей на проводе сжаты (`ai`, `v`, `s`), и их соответствие
4249
- * смыслу **не проверено** на реальных запросах. Может измениться без предупреждения.
4250
- */
4251
- dwell(entries, options = {}) {
4252
- return this.http.request({
4253
- method: "POST",
4254
- path: "/api/v1/i",
4255
- body: {
4256
- items: entries.map((entry) => ({
4257
- ai: entry.postId,
4258
- v: entry.duration,
4259
- ...entry.vs ? { s: entry.vs } : {}
4260
- }))
4261
- },
4262
- ...this.requestOptions(options)
4263
- });
4264
- }
4265
- /**
4266
- * Отправляет события взаимодействия с контентом.
4267
- *
4268
- * @experimental См. предупреждение у {@link TelemetryResource}.
4269
- */
4270
- interaction(entries, options = {}) {
4271
- return this.http.request({
4272
- method: "POST",
4273
- path: "/api/v1/x",
4274
- body: {
4275
- items: entries.map((entry) => ({
4276
- t: entry.type,
4277
- ...entry.value !== void 0 ? { v: entry.value } : {},
4278
- ...entry.postId ? { ai: entry.postId } : {},
4279
- ...entry.attachmentId ? { mi: entry.attachmentId } : {},
4280
- ...entry.vs ? { s: entry.vs } : {}
4281
- }))
4282
- },
4283
- ...this.requestOptions(options)
4284
- });
4285
- }
4286
- };
4287
4278
 
4288
4279
  // src/resources/notifications.ts
4289
4280
  var READ_BATCH_SIZE = 20;
@@ -4773,6 +4764,70 @@ var PostsResource = class extends BaseResource {
4773
4764
  }
4774
4765
  };
4775
4766
 
4767
+ // src/resources/telemetry.ts
4768
+ var TelemetryResource = class extends BaseResource {
4769
+ /** Идентификатор сессии телеметрии, общий для всех событий этого объекта. */
4770
+ #sessionId;
4771
+ /**
4772
+ * Идентификатор сессии телеметрии (`sid`).
4773
+ *
4774
+ * Создаётся лениво при первом обращении и далее неизменен.
4775
+ */
4776
+ get sessionId() {
4777
+ this.#sessionId ??= createDeviceId();
4778
+ return this.#sessionId;
4779
+ }
4780
+ /**
4781
+ * Отправляет события просмотра постов (`POST /api/v1/i`).
4782
+ *
4783
+ * @experimental См. предупреждение у {@link TelemetryResource}.
4784
+ */
4785
+ dwell(entries, options = {}) {
4786
+ return this.http.request({
4787
+ method: "POST",
4788
+ path: "/api/v1/i",
4789
+ body: {
4790
+ sid: options.sid ?? this.sessionId,
4791
+ e: entries.map((entry) => ({
4792
+ md: entry.durationMs ?? entry.exitAt - entry.enterAt,
4793
+ et: entry.enterAt,
4794
+ xt: entry.exitAt,
4795
+ r: entry.reason,
4796
+ v: entry.vs,
4797
+ ...entry.sourceContext !== void 0 ? { sc: entry.sourceContext } : {},
4798
+ ...entry.source !== void 0 ? { s: entry.source } : {},
4799
+ ...entry.repeat ? { b: 1 } : {}
4800
+ }))
4801
+ },
4802
+ ...this.requestOptions(options)
4803
+ });
4804
+ }
4805
+ /**
4806
+ * Отправляет события взаимодействия с контентом (`POST /api/v1/x`).
4807
+ *
4808
+ * @experimental См. предупреждение у {@link TelemetryResource}.
4809
+ */
4810
+ interaction(entries, options = {}) {
4811
+ return this.http.request({
4812
+ method: "POST",
4813
+ path: "/api/v1/x",
4814
+ body: {
4815
+ sid: options.sid ?? this.sessionId,
4816
+ e: entries.map((entry) => ({
4817
+ t: entry.type,
4818
+ v: entry.vs,
4819
+ ai: entry.postId,
4820
+ ...entry.mediaIndex !== void 0 ? { mi: entry.mediaIndex } : {},
4821
+ ...entry.source !== void 0 ? { s: entry.source } : {},
4822
+ ...entry.positionMs !== void 0 ? { pm: Math.round(entry.positionMs) } : {},
4823
+ ...entry.durationMs !== void 0 ? { dm: Math.round(entry.durationMs) } : {}
4824
+ }))
4825
+ },
4826
+ ...this.requestOptions(options)
4827
+ });
4828
+ }
4829
+ };
4830
+
4776
4831
  // src/resources/users.ts
4777
4832
  var UsersResource = class extends BaseResource {
4778
4833
  /** Загружает свой профиль — с подпиской и признаком подтверждённого телефона. */
@@ -5391,6 +5446,6 @@ function toDate(value) {
5391
5446
  return Number.isFinite(date.getTime()) ? date : null;
5392
5447
  }
5393
5448
 
5394
- export { ALLOWED_MIME_TYPES, AUDIO_MIME_TYPES, AUTH_FLAG_COOKIE, AUTH_PATHS, AttachmentType, CommentSort, DEFAULT_BASE_URL, DEFAULT_TIMEOUT, DEFAULT_USER_AGENT, DEVICE_ID_HEADER, DetectedRuntime, FeedTab, IMAGE_MIME_TYPES, ItdAbortError, ItdApiError, ItdApiErrorKind, ItdAuthError, ItdClient, ItdConfigError, ItdConflictError, ItdError, ItdErrorCode, ItdErrorKind, ItdForbiddenError, ItdNetworkError, ItdNotFoundError, ItdPhoneVerificationError, ItdRateLimitError, ItdRealtime, ItdServerError, ItdTimeoutError, ItdValidationError, LIBRARY_VERSION, LikesVisibility, LocalStorageTokenStorage, MAX_RECONNECT_ATTEMPTS, MemoryTokenStorage, NOTIFICATION_TYPE_ALIASES, NotificationType, OAuthProvider, PaginationMode, Paginator, RECONNECT_BACKOFF, RECONNECT_JITTER, REFRESH_COOKIE, REFRESH_COOKIE_PATH, RealtimeStatus, RealtimeTransportKind, ReportReason, ReportTargetType, RuntimeMode, STREAM_PATH, SignInStatus, SpanType, TURNSTILE_SITE_KEY, UnauthorizedStreamError, VIDEO_MIME_TYPES, WallAccess, canonicalNotificationType, comment, createClient, createTokenStorage, formatNotificationText, isBuilder, isItdApiError, isItdAuthError, isItdConflictError, isItdError, isItdForbiddenError, isItdNotFoundError, isItdPhoneVerificationError, isItdRateLimitError, isItdServerError, isItdValidationError, isKnownNotificationType, isMyProfile, normalizeNotification, poll, post, readNotificationEvent, readUnreadCountEvent, report, resolveNotificationUrl, toDate };
5395
- //# sourceMappingURL=chunk-CCRQI3ON.js.map
5396
- //# sourceMappingURL=chunk-CCRQI3ON.js.map
5449
+ export { ALLOWED_MIME_TYPES, AUDIO_MIME_TYPES, AUTH_FLAG_COOKIE, AUTH_PATHS, AccessType, AttachmentType, CommentSort, DEFAULT_BASE_URL, DEFAULT_TIMEOUT, DEFAULT_USER_AGENT, DEVICE_ID_HEADER, DetectedRuntime, FeedTab, IMAGE_MIME_TYPES, InteractionType, ItdAbortError, ItdApiError, ItdApiErrorKind, ItdAuthError, ItdClient, ItdConfigError, ItdConflictError, ItdError, ItdErrorCode, ItdErrorKind, ItdForbiddenError, ItdNetworkError, ItdNotFoundError, ItdPhoneVerificationError, ItdRateLimitError, ItdRealtime, ItdServerError, ItdTimeoutError, ItdValidationError, LIBRARY_VERSION, LikesVisibility, LocalStorageTokenStorage, MAX_RECONNECT_ATTEMPTS, MemoryTokenStorage, NOTIFICATION_TYPE_ALIASES, NotificationType, OAuthProvider, PaginationMode, Paginator, RECONNECT_BACKOFF, RECONNECT_JITTER, REFRESH_COOKIE, REFRESH_COOKIE_PATH, RealtimeStatus, RealtimeTransportKind, ReportReason, ReportTargetType, RuntimeMode, STREAM_PATH, SignInStatus, SpanType, TURNSTILE_SITE_KEY, UnauthorizedStreamError, VIDEO_MIME_TYPES, ViewReason, ViewSource, WallAccess, canonicalNotificationType, comment, createClient, createTokenStorage, formatNotificationText, isBuilder, isItdApiError, isItdAuthError, isItdConflictError, isItdError, isItdForbiddenError, isItdNotFoundError, isItdPhoneVerificationError, isItdRateLimitError, isItdServerError, isItdValidationError, isKnownNotificationType, isMyProfile, normalizeNotification, poll, post, readNotificationEvent, readUnreadCountEvent, report, resolveNotificationUrl, toDate };
5450
+ //# sourceMappingURL=chunk-CG4SERVM.js.map
5451
+ //# sourceMappingURL=chunk-CG4SERVM.js.map