itd-api 0.9.2 → 0.9.3

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 (37) hide show
  1. package/dist/events/index.cjs +2 -2
  2. package/dist/events/index.d.cts +2 -2
  3. package/dist/events/index.d.ts +2 -2
  4. package/dist/events/index.js +2 -2
  5. package/dist/index.cjs +87 -53
  6. package/dist/index.cjs.map +1 -1
  7. package/dist/index.d.cts +8 -10
  8. package/dist/index.d.ts +8 -10
  9. package/dist/index.js +87 -53
  10. package/dist/index.js.map +1 -1
  11. package/dist/rest/index.cjs +2 -2
  12. package/dist/rest/index.d.cts +2 -2
  13. package/dist/rest/index.d.ts +2 -2
  14. package/dist/rest/index.js +2 -2
  15. package/dist/shared/{events-BCn5LRnT.d.cts → events-BPxBF0gQ.d.cts} +2 -2
  16. package/dist/shared/{events-BIBO2Jif.js → events-BzjI6pn5.js} +2 -2
  17. package/dist/shared/{events-BIBO2Jif.js.map → events-BzjI6pn5.js.map} +1 -1
  18. package/dist/shared/{events-BsRm_Fba.cjs → events-C1FudmSe.cjs} +2 -2
  19. package/dist/shared/{events-BsRm_Fba.cjs.map → events-C1FudmSe.cjs.map} +1 -1
  20. package/dist/shared/{events-t1uGgpkf.d.ts → events-DnwfcLxS.d.ts} +2 -2
  21. package/dist/shared/{render-DA83gS0f.d.cts → render-C1F_QWYD.d.cts} +2 -14
  22. package/dist/shared/{render--ZXmYEf-.js → render-CtOpp9Pm.js} +2 -30
  23. package/dist/shared/render-CtOpp9Pm.js.map +1 -0
  24. package/dist/shared/{render-DqVzx68r.cjs → render-Omy1drH1.cjs} +2 -30
  25. package/dist/shared/render-Omy1drH1.cjs.map +1 -0
  26. package/dist/shared/{render-BdnBV-aT.d.ts → render-uFW2kDxp.d.ts} +2 -14
  27. package/dist/shared/{url-i2f-X1hX.js → url-3Ts6EEHQ.js} +32 -15
  28. package/dist/shared/url-3Ts6EEHQ.js.map +1 -0
  29. package/dist/shared/{url-Doc0XXW_.cjs → url-D6wsXm1T.cjs} +32 -15
  30. package/dist/shared/url-D6wsXm1T.cjs.map +1 -0
  31. package/dist/shared/{url-Dbj6V6fk.d.ts → url-DubjkRR9.d.cts} +8 -16
  32. package/dist/shared/{url-Dbj6V6fk.d.cts → url-DubjkRR9.d.ts} +8 -16
  33. package/package.json +3 -3
  34. package/dist/shared/render--ZXmYEf-.js.map +0 -1
  35. package/dist/shared/render-DqVzx68r.cjs.map +0 -1
  36. package/dist/shared/url-Doc0XXW_.cjs.map +0 -1
  37. package/dist/shared/url-i2f-X1hX.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as isItdStateError, $t as DEFAULT_RATE_LIMIT_BUCKET, A as ItdErrorKind, At as RequestOptions, B as ItdStateError, Bt as RuntimeMode, C as ItdApiError, Ct as PaginationOptions, D as ItdConfigError, Dt as RawRequestOptions, E as ItdAuthError, Et as RateLimitOptions, F as ItdNetworkError, Ft as RuntimeOptions, G as isItdConflictError, Gt as ItdOperationDefinition, H as ItdValidationError, Ht as systemClock, I as ItdNotFoundError, It as QueryParams, J as isItdForbiddenError, Jt as isBuiltInOperationId, K as isItdError, Kt as OPERATIONS, L as ItdPhoneVerificationError, Lt as QueryValue, M as ItdFileError, Mt as RetryContext, N as ItdFileErrorReason, Nt as RetryDecisionContext, O as ItdConflictError, Ot as RequestContext, P as ItdForbiddenError, Pt as RetryOptions, Q as isItdServerError, Qt as BUCKET_LIMITS, R as ItdRateLimitError, Rt as ServiceDefinition, S as ItdAbortError, Sn as WallAccess, St as OperationRequestOptions, T as ItdApiErrorKind, Tt as RateLimitBucketOverride, U as isItdApiError, Ut as BuiltInOperationId, V as ItdTimeoutError, Vt as ItdClock, W as isItdAuthError, Wt as CustomOperationId, X as isItdPhoneVerificationError, Xt as operationMethod, Y as isItdNotFoundError, Yt as operationBucket, Z as isItdRateLimitError, Zt as operationRetrySafety, _ as PrivacySettings, _n as ReportTargetType, _t as OperationMethod, a as NotificationEvent, an as AccessType, b as SubscriptionState, bn as ViewReason, bt as ErrorContextHook, c as NotificationSettings, cn as EventChannelStatus, ct as Listener, d as AuthUser, dn as InteractionType, dt as STATUS_SERVICE, en as RateLimitBucket, et as isItdValidationError, f as Author, fn as ItdErrorCode, ft as LIBRARY_VERSION, g as PinsResult, gn as ReportReason, gt as OperationMetadata, h as Pin, hn as NotificationType, i as formatNotificationText, in as UserRef, j as ItdFieldErrors, jt as ResponseContext, k as ItdError, kt as RequestExtensions, l as Actor, ln as FeedTab, lt as Unsubscribe, m as MyProfile, mn as Loose, mt as OperationAnnotations, n as canonicalNotificationType, nn as Span, nt as AuthIdentity, o as normalizeNotification, on as AttachmentType, p as FollowResult, pn as LikesVisibility, pt as FeatureOperationId, q as isItdFileError, qt as OperationId, r as isKnownNotificationType, rn as UserId, rt as AuthProvider, s as Notification, sn as CommentSort, st as Emitter, t as resolveNotificationUrl, tn as IsoDate, tt as ClientConnection, u as AuthState, un as IncidentKind, ut as DEFAULT_BASE_URL, v as Profile, vn as ServiceState, vt as RetrySafety, w as ItdApiErrorInit, wt as RateLimitBucketContext, x as UserSummary, xn as ViewSource, xt as Logger, y as PublicProfile, yn as SpanType, yt as ClientHooks, z as ItdServerError, zt as RateLimitPacing } from "./shared/url-Dbj6V6fk.cjs";
2
- import { $ as ShopConsentContext, $n as PaginationMode, $t as markup, A as DwellEntry, An as Post, At as report, B as ViewTrackerInput, Bn as CreatePollInput, Bt as PollBuilder, C as fromStream, Cn as CommentReplyTo, Cr as OperationExtensions, Ct as ShopSizeChart, D as UpdateProfileInput, Dn as PinPostResult, Dr as PluginTeardown, Dt as ReportsResource, E as UpdatePrivacyInput, En as LikeResult, Er as PluginApi, Et as SearchResult, F as TelemetryClock, Fn as comment, Ft as CreatePostInput, G as ShopConsentsResource, Gn as Session, Gt as parseMarkdown, H as SubscriptionResource, Hn as CreateReportInput, Ht as poll, I as TelemetryOptions, In as BuilderInput, It as PostBuilder, J as ShopOrdersResource, Jn as NotificationsResource, Jt as MarkupContent, K as ShopDeliveryResource, Kn as Subscription, Kt as AutoSpansOptions, L as TelemetryResource, Ln as ItdBuilder, Lt as PostInput, M as PhotoOpenInput, Mn as PostUpdateResult, Mt as FeedParams, N as TelemetryBatch, Nn as CommentBuilder, Nt as PostsResource, O as UserListParams, On as Poll, Or as CookieJar, Ot as ReportBuilder, P as TelemetryBatchOptions, Pn as CommentInput, Pt as UserPostsParams, Q as ShopConsent, Qn as PageState, Qt as autoSpans, R as VideoProgressInput, Rn as isBuilder, Rt as PostUpdateInput, S as VideoMimeType, Sn as Comment, Sr as ClientPlugin, St as ShopRecipient, T as VerificationResource, Tn as Hashtag, Tr as OperationTransformer, Tt as SearchResource, U as CreateShopOrderOptions, Un as UpdatePostInput, Ut as ParseMarkupOptions, V as ViewTrackerOptions, Vn as CreatePostData, Vt as PollInput, W as PayShopOrderOptions, Wn as PaymentMethod, Wt as parseHtml, X as ShopResource, Xn as BaseResource, Xt as MarkupSpan, Y as ShopProductsResource, Yn as UpdateNotificationSettingsInput, Yt as MarkupInput, Z as CreateShopOrderInput, Zn as Page, Zt as TextMarkup, _ as AllowedMimeType, _n as UploadOptions, _r as HttpClient, _t as ShopProduct, a as ShopFeatureOptions, an as StatusDay, ar as FeatureBucketDefinition, at as ShopDeliveryDestination, b as ImageMimeType, bn as RepliesParams, br as AttemptInterceptor, bt as ShopProductSpec, c as ShopOrderAccessStorage, cn as AnnouncementButton, cr as FeatureOperationDefinition, ct as ShopOrderAccessSession, d as statusDays, dn as Portal, dr as FileResolver, dt as ShopOrderItem, en as PlatformClientVersion, er as Paginator, et as ShopConsentKind, f as isMyProfile, fn as Report, fr as PreparedBufferSource, ft as ShopOrderItemInput, g as AUDIO_MIME_TYPES, gn as FilesResource, gr as ResolveFileOptions, gt as ShopPayment, h as ALLOWED_MIME_TYPES, hn as HashtagsResource, hr as ResolveFileContext, ht as ShopOrderSupport, i as ShopFeatureApi, in as ServiceStatus, ir as ClientFeature, it as ShopDeliveryCountry, j as InteractionEntry, jn as PostStats, jt as CommentsParams, k as UsersResource, kn as PollOption, kt as ReportInput, l as ShopOrderAccessStorageAdapterOptions, ln as ChangelogEntry, lr as FeatureRequestOptions, lt as ShopOrderAccessVerification, m as utcStampToIso, mn as HashtagPostsParams, mr as PreparedStreamSource, mt as ShopOrderSummary, n as SpanRenderFormat, nn as PlatformVersions, nr as mapPage, nt as ShopDeliveryCalculation, o as createShopFeature, on as StatusIncidentLine, or as FeatureContext, ot as ShopDeliveryPoint, p as toDate, pn as VerificationStatus, pr as PreparedFileSource, pt as ShopOrderStatus, q as ShopOrderRequestOptions, qn as NotificationListParams, qt as MarkupBuilder, r as renderSpans, rn as PlatformStatus, rr as RateLimitBucketState, rt as ShopDeliveryCity, s as MemoryShopOrderAccessStorage, sn as Announcement, sr as FeatureInstallation, st as ShopOrder, t as RenderSpansOptions, tn as PlatformResource, tr as PaginatorOptions, tt as ShopCreatedOrder, u as createShopOrderAccessStorage, un as Clan, ur as ManagedClientResource, ut as ShopOrderDelivery, v as AudioMimeType, vn as UploadedFile, vr as AttemptContext, vt as ShopProductCategory, w as fromUrl, wn as CommentUpdateResult, wr as OperationTransformContext, wt as ShopSizeChartRow, x as VIDEO_MIME_TYPES, xn as Attachment, xr as AttemptNext, xt as ShopProductStatus, y as IMAGE_MIME_TYPES, yn as CommentsResource, yr as AttemptExtensions, yt as ShopProductColor, z as ViewTracker, zn as CreateCommentInput, zt as post } from "./shared/render-DA83gS0f.cjs";
3
- import { $ as EventTransportContext, A as EventHandler, B as NotificationEventContext, C as EventChannelDeps, D as EventSession, E as EventEnqueueOptions, F as EventSequentializer, G as NotificationOfType, H as NotificationEventOfType, I as EventTypeGuard, J as NotificationUpdateOrigin, K as NotificationUpdate, L as runEventMiddleware, M as EventMiddlewareObject, N as EventNext, O as EventSyncReason, P as EventPredicate, Q as EventTransport, R as EventContext, S as EventChannel, T as EventChannelOptions, U as NotificationEventSelector, V as NotificationEventFilter, W as NotificationEventsUpdate, X as UnknownNotificationUpdate, Y as NotificationUpdateType, Z as UnreadCountUpdate, _ as createNotificationEventsClient, a as WebSocketTransportOptions, b as NotificationEventsOptions, c as EventErrorContext, d as EventMiddlewareLike, et as EventTransportFrame, f as EventRouteTable, g as NotificationEventsClientOptions, h as NotificationEventsClient, i as WebSocketTransport, j as EventMiddleware, k as ReconnectOptions, l as EventFilter, m as EventRouter, n as WebSocketLike, o as EventComposer, p as EventRouteSelector, q as NotificationUpdateOfType, r as WebSocketOpenFailureClassifier, s as EventErrorBoundary, t as WebSocketImplementationOptions, tt as UnauthorizedStreamError, u as EventMiddlewareGroup, v as NotificationEvents, w as EventChannelEvents, x as NotificationEventsTransport, y as NotificationEventsMap, z as NotificationContext } from "./shared/events-BCn5LRnT.cjs";
1
+ import { $ as isItdStateError, $t as DEFAULT_RATE_LIMIT_BUCKET, A as ItdErrorKind, At as RequestOptions, B as ItdStateError, Bt as RuntimeMode, C as ItdApiError, Ct as PaginationOptions, D as ItdConfigError, Dt as RawRequestOptions, E as ItdAuthError, Et as RateLimitOptions, F as ItdNetworkError, Ft as RuntimeOptions, G as isItdConflictError, Gt as ItdOperationDefinition, H as ItdValidationError, Ht as systemClock, I as ItdNotFoundError, It as QueryParams, J as isItdForbiddenError, Jt as isBuiltInOperationId, K as isItdError, Kt as OPERATIONS, L as ItdPhoneVerificationError, Lt as QueryValue, M as ItdFileError, Mt as RetryContext, N as ItdFileErrorReason, Nt as RetryDecisionContext, O as ItdConflictError, Ot as RequestContext, P as ItdForbiddenError, Pt as RetryOptions, Q as isItdServerError, Qt as BUCKET_LIMITS, R as ItdRateLimitError, Rt as ServiceDefinition, S as ItdAbortError, Sn as WallAccess, St as OperationRequestOptions, T as ItdApiErrorKind, Tt as RateLimitBucketOverride, U as isItdApiError, Ut as BuiltInOperationId, V as ItdTimeoutError, Vt as ItdClock, W as isItdAuthError, Wt as CustomOperationId, X as isItdPhoneVerificationError, Xt as operationMethod, Y as isItdNotFoundError, Yt as operationBucket, Z as isItdRateLimitError, Zt as operationRetrySafety, _ as PrivacySettings, _n as ReportTargetType, _t as OperationMethod, a as NotificationEvent, an as AccessType, b as SubscriptionState, bn as ViewReason, bt as ErrorContextHook, c as NotificationSettings, cn as EventChannelStatus, ct as Listener, d as AuthUser, dn as InteractionType, dt as STATUS_SERVICE, en as RateLimitBucket, et as isItdValidationError, f as Author, fn as ItdErrorCode, ft as LIBRARY_VERSION, g as PinsResult, gn as ReportReason, gt as OperationMetadata, h as Pin, hn as NotificationType, i as formatNotificationText, in as UserRef, j as ItdFieldErrors, jt as ResponseContext, k as ItdError, kt as RequestExtensions, l as Actor, ln as FeedTab, lt as Unsubscribe, m as MyProfile, mn as Loose, mt as OperationAnnotations, n as canonicalNotificationType, nn as Span, nt as AuthIdentity, o as normalizeNotification, on as AttachmentType, p as FollowResult, pn as LikesVisibility, pt as FeatureOperationId, q as isItdFileError, qt as OperationId, r as isKnownNotificationType, rn as UserId, rt as AuthProvider, s as Notification, sn as CommentSort, st as Emitter, t as resolveNotificationUrl, tn as IsoDate, tt as ClientConnection, u as AuthState, un as IncidentKind, ut as DEFAULT_BASE_URL, v as Profile, vn as ServiceState, vt as RetrySafety, w as ItdApiErrorInit, wt as RateLimitBucketContext, x as UserSummary, xn as ViewSource, xt as Logger, y as PublicProfile, yn as SpanType, yt as ClientHooks, z as ItdServerError, zt as RateLimitPacing } from "./shared/url-DubjkRR9.cjs";
2
+ import { $ as ShopConsentContext, $n as PaginationMode, $t as markup, A as DwellEntry, An as Post, At as report, B as ViewTrackerInput, Bn as CreatePollInput, Bt as PollBuilder, C as fromStream, Cn as CommentReplyTo, Cr as OperationExtensions, Ct as ShopSizeChart, D as UpdateProfileInput, Dn as PinPostResult, Dr as PluginTeardown, Dt as ReportsResource, E as UpdatePrivacyInput, En as LikeResult, Er as PluginApi, Et as SearchResult, F as TelemetryClock, Fn as comment, Ft as CreatePostInput, G as ShopConsentsResource, Gn as Session, Gt as parseMarkdown, H as SubscriptionResource, Hn as CreateReportInput, Ht as poll, I as TelemetryOptions, In as BuilderInput, It as PostBuilder, J as ShopOrdersResource, Jn as NotificationsResource, Jt as MarkupContent, K as ShopDeliveryResource, Kn as Subscription, Kt as AutoSpansOptions, L as TelemetryResource, Ln as ItdBuilder, Lt as PostInput, M as PhotoOpenInput, Mn as PostUpdateResult, Mt as FeedParams, N as TelemetryBatch, Nn as CommentBuilder, Nt as PostsResource, O as UserListParams, On as Poll, Or as CookieJar, Ot as ReportBuilder, P as TelemetryBatchOptions, Pn as CommentInput, Pt as UserPostsParams, Q as ShopConsent, Qn as PageState, Qt as autoSpans, R as VideoProgressInput, Rn as isBuilder, Rt as PostUpdateInput, S as VideoMimeType, Sn as Comment, Sr as ClientPlugin, St as ShopRecipient, T as VerificationResource, Tn as Hashtag, Tr as OperationTransformer, Tt as SearchResource, U as CreateShopOrderOptions, Un as UpdatePostInput, Ut as ParseMarkupOptions, V as ViewTrackerOptions, Vn as CreatePostData, Vt as PollInput, W as PayShopOrderOptions, Wn as PaymentMethod, Wt as parseHtml, X as ShopResource, Xn as BaseResource, Xt as MarkupSpan, Y as ShopProductsResource, Yn as UpdateNotificationSettingsInput, Yt as MarkupInput, Z as CreateShopOrderInput, Zn as Page, Zt as TextMarkup, _ as AllowedMimeType, _n as UploadOptions, _r as HttpClient, _t as ShopProduct, a as ShopFeatureOptions, an as StatusDay, ar as FeatureBucketDefinition, at as ShopDeliveryDestination, b as ImageMimeType, bn as RepliesParams, br as AttemptInterceptor, bt as ShopProductSpec, c as ShopOrderAccessStorage, cn as AnnouncementButton, cr as FeatureOperationDefinition, ct as ShopOrderAccessSession, d as statusDays, dn as Portal, dr as FileResolver, dt as ShopOrderItem, en as PlatformClientVersion, er as Paginator, et as ShopConsentKind, f as isMyProfile, fn as Report, fr as PreparedBufferSource, ft as ShopOrderItemInput, g as AUDIO_MIME_TYPES, gn as FilesResource, gr as ResolveFileOptions, gt as ShopPayment, h as ALLOWED_MIME_TYPES, hn as HashtagsResource, hr as ResolveFileContext, ht as ShopOrderSupport, i as ShopFeatureApi, in as ServiceStatus, ir as ClientFeature, it as ShopDeliveryCountry, j as InteractionEntry, jn as PostStats, jt as CommentsParams, k as UsersResource, kn as PollOption, kt as ReportInput, l as ShopOrderAccessStorageAdapterOptions, ln as ChangelogEntry, lr as FeatureRequestOptions, lt as ShopOrderAccessVerification, m as utcStampToIso, mn as HashtagPostsParams, mr as PreparedStreamSource, mt as ShopOrderSummary, n as SpanRenderFormat, nn as PlatformVersions, nr as mapPage, nt as ShopDeliveryCalculation, o as createShopFeature, on as StatusIncidentLine, or as FeatureContext, ot as ShopDeliveryPoint, p as toDate, pn as VerificationStatus, pr as PreparedFileSource, pt as ShopOrderStatus, q as ShopOrderRequestOptions, qn as NotificationListParams, qt as MarkupBuilder, r as renderSpans, rn as PlatformStatus, rr as RateLimitBucketState, rt as ShopDeliveryCity, s as MemoryShopOrderAccessStorage, sn as Announcement, sr as FeatureInstallation, st as ShopOrder, t as RenderSpansOptions, tn as PlatformResource, tr as PaginatorOptions, tt as ShopCreatedOrder, u as createShopOrderAccessStorage, un as Clan, ur as ManagedClientResource, ut as ShopOrderDelivery, v as AudioMimeType, vn as UploadedFile, vr as AttemptContext, vt as ShopProductCategory, w as fromUrl, wn as CommentUpdateResult, wr as OperationTransformContext, wt as ShopSizeChartRow, x as VIDEO_MIME_TYPES, xn as Attachment, xr as AttemptNext, xt as ShopProductStatus, y as IMAGE_MIME_TYPES, yn as CommentsResource, yr as AttemptExtensions, yt as ShopProductColor, z as ViewTracker, zn as CreateCommentInput, zt as post } from "./shared/render-C1F_QWYD.cjs";
3
+ import { $ as EventTransportContext, A as EventHandler, B as NotificationEventContext, C as EventChannelDeps, D as EventSession, E as EventEnqueueOptions, F as EventSequentializer, G as NotificationOfType, H as NotificationEventOfType, I as EventTypeGuard, J as NotificationUpdateOrigin, K as NotificationUpdate, L as runEventMiddleware, M as EventMiddlewareObject, N as EventNext, O as EventSyncReason, P as EventPredicate, Q as EventTransport, R as EventContext, S as EventChannel, T as EventChannelOptions, U as NotificationEventSelector, V as NotificationEventFilter, W as NotificationEventsUpdate, X as UnknownNotificationUpdate, Y as NotificationUpdateType, Z as UnreadCountUpdate, _ as createNotificationEventsClient, a as WebSocketTransportOptions, b as NotificationEventsOptions, c as EventErrorContext, d as EventMiddlewareLike, et as EventTransportFrame, f as EventRouteTable, g as NotificationEventsClientOptions, h as NotificationEventsClient, i as WebSocketTransport, j as EventMiddleware, k as ReconnectOptions, l as EventFilter, m as EventRouter, n as WebSocketLike, o as EventComposer, p as EventRouteSelector, q as NotificationUpdateOfType, r as WebSocketOpenFailureClassifier, s as EventErrorBoundary, t as WebSocketImplementationOptions, tt as UnauthorizedStreamError, u as EventMiddlewareGroup, v as NotificationEvents, w as EventChannelEvents, x as NotificationEventsTransport, y as NotificationEventsMap, z as NotificationContext } from "./shared/events-BPxBF0gQ.cjs";
4
4
  import { a as FileStreamOptions, c as LazyFile, d as UrlFileOptions, i as FileStreamContent, l as StreamFile, n as FileContext, o as FileTransferMode, r as FileInput, s as FromStreamOptions, t as FileContent, u as UrlFile } from "./shared/contracts-BoT7msmq.cjs";
5
5
  import { a as KeyValueStoreResult, c as createKeyValueStore, d as withCodec, f as withNamespace, i as KeyValueStoreKeys, l as createRecordKeyValueStore, n as KeyValueCodec, o as MemoryKeyValueStore, r as KeyValueStore, s as RecordKeyValueStoreSource, t as EnumerableKeyValueStore, u as isEnumerableKeyValueStore } from "./shared/key-value-store-COZaNHZS.cjs";
6
6
  import { a as createTokenStorage, i as TokenStorageAdapterOptions, n as MemoryTokenStorage, r as TokenStorage, t as ItdSession } from "./shared/storage-BQrtKon9.cjs";
@@ -66,7 +66,8 @@ interface SessionOptions {
66
66
  /** Где хранить сессию. По умолчанию {@link MemoryTokenStorage}. */
67
67
  storage?: TokenStorage | undefined;
68
68
  /**
69
- * Обновлять токен автоматически при ответе `401`. По умолчанию `true`.
69
+ * Обновлять токен перед истечением и восстанавливать сессию при ответе `401`.
70
+ * По умолчанию `true`.
70
71
  *
71
72
  * При `false` библиотека просто пробросит {@link ItdAuthError}, а обновлением
72
73
  * вы управляете сами через `itd.auth.refresh()`.
@@ -233,12 +234,9 @@ declare class AuthManager implements AuthProvider {
233
234
  * ответ был бы `false` даже при полностью рабочей сохранённой сессии.
234
235
  */
235
236
  hasRefreshSession(): Promise<boolean>;
236
- /**
237
- * Готовит состояние авторизации до входа запроса в очередь. Стадия `auth_preparation`.
238
- *
239
- * Загрузка хранилища, внешний источник токена и отложенный вход асинхронны, поэтому
240
- * обязаны завершиться до захвата слота очереди.
241
- */
237
+ /** Готовит внутреннюю сессию до retry исходного запроса. */
238
+ preflight(allowRefresh: boolean): Promise<void>;
239
+ /** Перед каждой попыткой перечитывает внешний источник токена. */
242
240
  prepare(): Promise<void>;
243
241
  /**
244
242
  * Заголовки уже подготовленной авторизации без чтения storage или вызова внешнего источника.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as isItdStateError, $t as DEFAULT_RATE_LIMIT_BUCKET, A as ItdErrorKind, At as RequestOptions, B as ItdStateError, Bt as RuntimeMode, C as ItdApiError, Ct as PaginationOptions, D as ItdConfigError, Dt as RawRequestOptions, E as ItdAuthError, Et as RateLimitOptions, F as ItdNetworkError, Ft as RuntimeOptions, G as isItdConflictError, Gt as ItdOperationDefinition, H as ItdValidationError, Ht as systemClock, I as ItdNotFoundError, It as QueryParams, J as isItdForbiddenError, Jt as isBuiltInOperationId, K as isItdError, Kt as OPERATIONS, L as ItdPhoneVerificationError, Lt as QueryValue, M as ItdFileError, Mt as RetryContext, N as ItdFileErrorReason, Nt as RetryDecisionContext, O as ItdConflictError, Ot as RequestContext, P as ItdForbiddenError, Pt as RetryOptions, Q as isItdServerError, Qt as BUCKET_LIMITS, R as ItdRateLimitError, Rt as ServiceDefinition, S as ItdAbortError, Sn as WallAccess, St as OperationRequestOptions, T as ItdApiErrorKind, Tt as RateLimitBucketOverride, U as isItdApiError, Ut as BuiltInOperationId, V as ItdTimeoutError, Vt as ItdClock, W as isItdAuthError, Wt as CustomOperationId, X as isItdPhoneVerificationError, Xt as operationMethod, Y as isItdNotFoundError, Yt as operationBucket, Z as isItdRateLimitError, Zt as operationRetrySafety, _ as PrivacySettings, _n as ReportTargetType, _t as OperationMethod, a as NotificationEvent, an as AccessType, b as SubscriptionState, bn as ViewReason, bt as ErrorContextHook, c as NotificationSettings, cn as EventChannelStatus, ct as Listener, d as AuthUser, dn as InteractionType, dt as STATUS_SERVICE, en as RateLimitBucket, et as isItdValidationError, f as Author, fn as ItdErrorCode, ft as LIBRARY_VERSION, g as PinsResult, gn as ReportReason, gt as OperationMetadata, h as Pin, hn as NotificationType, i as formatNotificationText, in as UserRef, j as ItdFieldErrors, jt as ResponseContext, k as ItdError, kt as RequestExtensions, l as Actor, ln as FeedTab, lt as Unsubscribe, m as MyProfile, mn as Loose, mt as OperationAnnotations, n as canonicalNotificationType, nn as Span, nt as AuthIdentity, o as normalizeNotification, on as AttachmentType, p as FollowResult, pn as LikesVisibility, pt as FeatureOperationId, q as isItdFileError, qt as OperationId, r as isKnownNotificationType, rn as UserId, rt as AuthProvider, s as Notification, sn as CommentSort, st as Emitter, t as resolveNotificationUrl, tn as IsoDate, tt as ClientConnection, u as AuthState, un as IncidentKind, ut as DEFAULT_BASE_URL, v as Profile, vn as ServiceState, vt as RetrySafety, w as ItdApiErrorInit, wt as RateLimitBucketContext, x as UserSummary, xn as ViewSource, xt as Logger, y as PublicProfile, yn as SpanType, yt as ClientHooks, z as ItdServerError, zt as RateLimitPacing } from "./shared/url-Dbj6V6fk.js";
2
- import { $ as ShopConsentContext, $n as PaginationMode, $t as markup, A as DwellEntry, An as Post, At as report, B as ViewTrackerInput, Bn as CreatePollInput, Bt as PollBuilder, C as fromStream, Cn as CommentReplyTo, Cr as OperationExtensions, Ct as ShopSizeChart, D as UpdateProfileInput, Dn as PinPostResult, Dr as PluginTeardown, Dt as ReportsResource, E as UpdatePrivacyInput, En as LikeResult, Er as PluginApi, Et as SearchResult, F as TelemetryClock, Fn as comment, Ft as CreatePostInput, G as ShopConsentsResource, Gn as Session, Gt as parseMarkdown, H as SubscriptionResource, Hn as CreateReportInput, Ht as poll, I as TelemetryOptions, In as BuilderInput, It as PostBuilder, J as ShopOrdersResource, Jn as NotificationsResource, Jt as MarkupContent, K as ShopDeliveryResource, Kn as Subscription, Kt as AutoSpansOptions, L as TelemetryResource, Ln as ItdBuilder, Lt as PostInput, M as PhotoOpenInput, Mn as PostUpdateResult, Mt as FeedParams, N as TelemetryBatch, Nn as CommentBuilder, Nt as PostsResource, O as UserListParams, On as Poll, Or as CookieJar, Ot as ReportBuilder, P as TelemetryBatchOptions, Pn as CommentInput, Pt as UserPostsParams, Q as ShopConsent, Qn as PageState, Qt as autoSpans, R as VideoProgressInput, Rn as isBuilder, Rt as PostUpdateInput, S as VideoMimeType, Sn as Comment, Sr as ClientPlugin, St as ShopRecipient, T as VerificationResource, Tn as Hashtag, Tr as OperationTransformer, Tt as SearchResource, U as CreateShopOrderOptions, Un as UpdatePostInput, Ut as ParseMarkupOptions, V as ViewTrackerOptions, Vn as CreatePostData, Vt as PollInput, W as PayShopOrderOptions, Wn as PaymentMethod, Wt as parseHtml, X as ShopResource, Xn as BaseResource, Xt as MarkupSpan, Y as ShopProductsResource, Yn as UpdateNotificationSettingsInput, Yt as MarkupInput, Z as CreateShopOrderInput, Zn as Page, Zt as TextMarkup, _ as AllowedMimeType, _n as UploadOptions, _r as HttpClient, _t as ShopProduct, a as ShopFeatureOptions, an as StatusDay, ar as FeatureBucketDefinition, at as ShopDeliveryDestination, b as ImageMimeType, bn as RepliesParams, br as AttemptInterceptor, bt as ShopProductSpec, c as ShopOrderAccessStorage, cn as AnnouncementButton, cr as FeatureOperationDefinition, ct as ShopOrderAccessSession, d as statusDays, dn as Portal, dr as FileResolver, dt as ShopOrderItem, en as PlatformClientVersion, er as Paginator, et as ShopConsentKind, f as isMyProfile, fn as Report, fr as PreparedBufferSource, ft as ShopOrderItemInput, g as AUDIO_MIME_TYPES, gn as FilesResource, gr as ResolveFileOptions, gt as ShopPayment, h as ALLOWED_MIME_TYPES, hn as HashtagsResource, hr as ResolveFileContext, ht as ShopOrderSupport, i as ShopFeatureApi, in as ServiceStatus, ir as ClientFeature, it as ShopDeliveryCountry, j as InteractionEntry, jn as PostStats, jt as CommentsParams, k as UsersResource, kn as PollOption, kt as ReportInput, l as ShopOrderAccessStorageAdapterOptions, ln as ChangelogEntry, lr as FeatureRequestOptions, lt as ShopOrderAccessVerification, m as utcStampToIso, mn as HashtagPostsParams, mr as PreparedStreamSource, mt as ShopOrderSummary, n as SpanRenderFormat, nn as PlatformVersions, nr as mapPage, nt as ShopDeliveryCalculation, o as createShopFeature, on as StatusIncidentLine, or as FeatureContext, ot as ShopDeliveryPoint, p as toDate, pn as VerificationStatus, pr as PreparedFileSource, pt as ShopOrderStatus, q as ShopOrderRequestOptions, qn as NotificationListParams, qt as MarkupBuilder, r as renderSpans, rn as PlatformStatus, rr as RateLimitBucketState, rt as ShopDeliveryCity, s as MemoryShopOrderAccessStorage, sn as Announcement, sr as FeatureInstallation, st as ShopOrder, t as RenderSpansOptions, tn as PlatformResource, tr as PaginatorOptions, tt as ShopCreatedOrder, u as createShopOrderAccessStorage, un as Clan, ur as ManagedClientResource, ut as ShopOrderDelivery, v as AudioMimeType, vn as UploadedFile, vr as AttemptContext, vt as ShopProductCategory, w as fromUrl, wn as CommentUpdateResult, wr as OperationTransformContext, wt as ShopSizeChartRow, x as VIDEO_MIME_TYPES, xn as Attachment, xr as AttemptNext, xt as ShopProductStatus, y as IMAGE_MIME_TYPES, yn as CommentsResource, yr as AttemptExtensions, yt as ShopProductColor, z as ViewTracker, zn as CreateCommentInput, zt as post } from "./shared/render-BdnBV-aT.js";
3
- import { $ as EventTransportContext, A as EventHandler, B as NotificationEventContext, C as EventChannelDeps, D as EventSession, E as EventEnqueueOptions, F as EventSequentializer, G as NotificationOfType, H as NotificationEventOfType, I as EventTypeGuard, J as NotificationUpdateOrigin, K as NotificationUpdate, L as runEventMiddleware, M as EventMiddlewareObject, N as EventNext, O as EventSyncReason, P as EventPredicate, Q as EventTransport, R as EventContext, S as EventChannel, T as EventChannelOptions, U as NotificationEventSelector, V as NotificationEventFilter, W as NotificationEventsUpdate, X as UnknownNotificationUpdate, Y as NotificationUpdateType, Z as UnreadCountUpdate, _ as createNotificationEventsClient, a as WebSocketTransportOptions, b as NotificationEventsOptions, c as EventErrorContext, d as EventMiddlewareLike, et as EventTransportFrame, f as EventRouteTable, g as NotificationEventsClientOptions, h as NotificationEventsClient, i as WebSocketTransport, j as EventMiddleware, k as ReconnectOptions, l as EventFilter, m as EventRouter, n as WebSocketLike, o as EventComposer, p as EventRouteSelector, q as NotificationUpdateOfType, r as WebSocketOpenFailureClassifier, s as EventErrorBoundary, t as WebSocketImplementationOptions, tt as UnauthorizedStreamError, u as EventMiddlewareGroup, v as NotificationEvents, w as EventChannelEvents, x as NotificationEventsTransport, y as NotificationEventsMap, z as NotificationContext } from "./shared/events-t1uGgpkf.js";
1
+ import { $ as isItdStateError, $t as DEFAULT_RATE_LIMIT_BUCKET, A as ItdErrorKind, At as RequestOptions, B as ItdStateError, Bt as RuntimeMode, C as ItdApiError, Ct as PaginationOptions, D as ItdConfigError, Dt as RawRequestOptions, E as ItdAuthError, Et as RateLimitOptions, F as ItdNetworkError, Ft as RuntimeOptions, G as isItdConflictError, Gt as ItdOperationDefinition, H as ItdValidationError, Ht as systemClock, I as ItdNotFoundError, It as QueryParams, J as isItdForbiddenError, Jt as isBuiltInOperationId, K as isItdError, Kt as OPERATIONS, L as ItdPhoneVerificationError, Lt as QueryValue, M as ItdFileError, Mt as RetryContext, N as ItdFileErrorReason, Nt as RetryDecisionContext, O as ItdConflictError, Ot as RequestContext, P as ItdForbiddenError, Pt as RetryOptions, Q as isItdServerError, Qt as BUCKET_LIMITS, R as ItdRateLimitError, Rt as ServiceDefinition, S as ItdAbortError, Sn as WallAccess, St as OperationRequestOptions, T as ItdApiErrorKind, Tt as RateLimitBucketOverride, U as isItdApiError, Ut as BuiltInOperationId, V as ItdTimeoutError, Vt as ItdClock, W as isItdAuthError, Wt as CustomOperationId, X as isItdPhoneVerificationError, Xt as operationMethod, Y as isItdNotFoundError, Yt as operationBucket, Z as isItdRateLimitError, Zt as operationRetrySafety, _ as PrivacySettings, _n as ReportTargetType, _t as OperationMethod, a as NotificationEvent, an as AccessType, b as SubscriptionState, bn as ViewReason, bt as ErrorContextHook, c as NotificationSettings, cn as EventChannelStatus, ct as Listener, d as AuthUser, dn as InteractionType, dt as STATUS_SERVICE, en as RateLimitBucket, et as isItdValidationError, f as Author, fn as ItdErrorCode, ft as LIBRARY_VERSION, g as PinsResult, gn as ReportReason, gt as OperationMetadata, h as Pin, hn as NotificationType, i as formatNotificationText, in as UserRef, j as ItdFieldErrors, jt as ResponseContext, k as ItdError, kt as RequestExtensions, l as Actor, ln as FeedTab, lt as Unsubscribe, m as MyProfile, mn as Loose, mt as OperationAnnotations, n as canonicalNotificationType, nn as Span, nt as AuthIdentity, o as normalizeNotification, on as AttachmentType, p as FollowResult, pn as LikesVisibility, pt as FeatureOperationId, q as isItdFileError, qt as OperationId, r as isKnownNotificationType, rn as UserId, rt as AuthProvider, s as Notification, sn as CommentSort, st as Emitter, t as resolveNotificationUrl, tn as IsoDate, tt as ClientConnection, u as AuthState, un as IncidentKind, ut as DEFAULT_BASE_URL, v as Profile, vn as ServiceState, vt as RetrySafety, w as ItdApiErrorInit, wt as RateLimitBucketContext, x as UserSummary, xn as ViewSource, xt as Logger, y as PublicProfile, yn as SpanType, yt as ClientHooks, z as ItdServerError, zt as RateLimitPacing } from "./shared/url-DubjkRR9.js";
2
+ import { $ as ShopConsentContext, $n as PaginationMode, $t as markup, A as DwellEntry, An as Post, At as report, B as ViewTrackerInput, Bn as CreatePollInput, Bt as PollBuilder, C as fromStream, Cn as CommentReplyTo, Cr as OperationExtensions, Ct as ShopSizeChart, D as UpdateProfileInput, Dn as PinPostResult, Dr as PluginTeardown, Dt as ReportsResource, E as UpdatePrivacyInput, En as LikeResult, Er as PluginApi, Et as SearchResult, F as TelemetryClock, Fn as comment, Ft as CreatePostInput, G as ShopConsentsResource, Gn as Session, Gt as parseMarkdown, H as SubscriptionResource, Hn as CreateReportInput, Ht as poll, I as TelemetryOptions, In as BuilderInput, It as PostBuilder, J as ShopOrdersResource, Jn as NotificationsResource, Jt as MarkupContent, K as ShopDeliveryResource, Kn as Subscription, Kt as AutoSpansOptions, L as TelemetryResource, Ln as ItdBuilder, Lt as PostInput, M as PhotoOpenInput, Mn as PostUpdateResult, Mt as FeedParams, N as TelemetryBatch, Nn as CommentBuilder, Nt as PostsResource, O as UserListParams, On as Poll, Or as CookieJar, Ot as ReportBuilder, P as TelemetryBatchOptions, Pn as CommentInput, Pt as UserPostsParams, Q as ShopConsent, Qn as PageState, Qt as autoSpans, R as VideoProgressInput, Rn as isBuilder, Rt as PostUpdateInput, S as VideoMimeType, Sn as Comment, Sr as ClientPlugin, St as ShopRecipient, T as VerificationResource, Tn as Hashtag, Tr as OperationTransformer, Tt as SearchResource, U as CreateShopOrderOptions, Un as UpdatePostInput, Ut as ParseMarkupOptions, V as ViewTrackerOptions, Vn as CreatePostData, Vt as PollInput, W as PayShopOrderOptions, Wn as PaymentMethod, Wt as parseHtml, X as ShopResource, Xn as BaseResource, Xt as MarkupSpan, Y as ShopProductsResource, Yn as UpdateNotificationSettingsInput, Yt as MarkupInput, Z as CreateShopOrderInput, Zn as Page, Zt as TextMarkup, _ as AllowedMimeType, _n as UploadOptions, _r as HttpClient, _t as ShopProduct, a as ShopFeatureOptions, an as StatusDay, ar as FeatureBucketDefinition, at as ShopDeliveryDestination, b as ImageMimeType, bn as RepliesParams, br as AttemptInterceptor, bt as ShopProductSpec, c as ShopOrderAccessStorage, cn as AnnouncementButton, cr as FeatureOperationDefinition, ct as ShopOrderAccessSession, d as statusDays, dn as Portal, dr as FileResolver, dt as ShopOrderItem, en as PlatformClientVersion, er as Paginator, et as ShopConsentKind, f as isMyProfile, fn as Report, fr as PreparedBufferSource, ft as ShopOrderItemInput, g as AUDIO_MIME_TYPES, gn as FilesResource, gr as ResolveFileOptions, gt as ShopPayment, h as ALLOWED_MIME_TYPES, hn as HashtagsResource, hr as ResolveFileContext, ht as ShopOrderSupport, i as ShopFeatureApi, in as ServiceStatus, ir as ClientFeature, it as ShopDeliveryCountry, j as InteractionEntry, jn as PostStats, jt as CommentsParams, k as UsersResource, kn as PollOption, kt as ReportInput, l as ShopOrderAccessStorageAdapterOptions, ln as ChangelogEntry, lr as FeatureRequestOptions, lt as ShopOrderAccessVerification, m as utcStampToIso, mn as HashtagPostsParams, mr as PreparedStreamSource, mt as ShopOrderSummary, n as SpanRenderFormat, nn as PlatformVersions, nr as mapPage, nt as ShopDeliveryCalculation, o as createShopFeature, on as StatusIncidentLine, or as FeatureContext, ot as ShopDeliveryPoint, p as toDate, pn as VerificationStatus, pr as PreparedFileSource, pt as ShopOrderStatus, q as ShopOrderRequestOptions, qn as NotificationListParams, qt as MarkupBuilder, r as renderSpans, rn as PlatformStatus, rr as RateLimitBucketState, rt as ShopDeliveryCity, s as MemoryShopOrderAccessStorage, sn as Announcement, sr as FeatureInstallation, st as ShopOrder, t as RenderSpansOptions, tn as PlatformResource, tr as PaginatorOptions, tt as ShopCreatedOrder, u as createShopOrderAccessStorage, un as Clan, ur as ManagedClientResource, ut as ShopOrderDelivery, v as AudioMimeType, vn as UploadedFile, vr as AttemptContext, vt as ShopProductCategory, w as fromUrl, wn as CommentUpdateResult, wr as OperationTransformContext, wt as ShopSizeChartRow, x as VIDEO_MIME_TYPES, xn as Attachment, xr as AttemptNext, xt as ShopProductStatus, y as IMAGE_MIME_TYPES, yn as CommentsResource, yr as AttemptExtensions, yt as ShopProductColor, z as ViewTracker, zn as CreateCommentInput, zt as post } from "./shared/render-uFW2kDxp.js";
3
+ import { $ as EventTransportContext, A as EventHandler, B as NotificationEventContext, C as EventChannelDeps, D as EventSession, E as EventEnqueueOptions, F as EventSequentializer, G as NotificationOfType, H as NotificationEventOfType, I as EventTypeGuard, J as NotificationUpdateOrigin, K as NotificationUpdate, L as runEventMiddleware, M as EventMiddlewareObject, N as EventNext, O as EventSyncReason, P as EventPredicate, Q as EventTransport, R as EventContext, S as EventChannel, T as EventChannelOptions, U as NotificationEventSelector, V as NotificationEventFilter, W as NotificationEventsUpdate, X as UnknownNotificationUpdate, Y as NotificationUpdateType, Z as UnreadCountUpdate, _ as createNotificationEventsClient, a as WebSocketTransportOptions, b as NotificationEventsOptions, c as EventErrorContext, d as EventMiddlewareLike, et as EventTransportFrame, f as EventRouteTable, g as NotificationEventsClientOptions, h as NotificationEventsClient, i as WebSocketTransport, j as EventMiddleware, k as ReconnectOptions, l as EventFilter, m as EventRouter, n as WebSocketLike, o as EventComposer, p as EventRouteSelector, q as NotificationUpdateOfType, r as WebSocketOpenFailureClassifier, s as EventErrorBoundary, t as WebSocketImplementationOptions, tt as UnauthorizedStreamError, u as EventMiddlewareGroup, v as NotificationEvents, w as EventChannelEvents, x as NotificationEventsTransport, y as NotificationEventsMap, z as NotificationContext } from "./shared/events-DnwfcLxS.js";
4
4
  import { a as FileStreamOptions, c as LazyFile, d as UrlFileOptions, i as FileStreamContent, l as StreamFile, n as FileContext, o as FileTransferMode, r as FileInput, s as FromStreamOptions, t as FileContent, u as UrlFile } from "./shared/contracts-BoT7msmq.js";
5
5
  import { a as KeyValueStoreResult, c as createKeyValueStore, d as withCodec, f as withNamespace, i as KeyValueStoreKeys, l as createRecordKeyValueStore, n as KeyValueCodec, o as MemoryKeyValueStore, r as KeyValueStore, s as RecordKeyValueStoreSource, t as EnumerableKeyValueStore, u as isEnumerableKeyValueStore } from "./shared/key-value-store-COZaNHZS.js";
6
6
  import { a as createTokenStorage, i as TokenStorageAdapterOptions, n as MemoryTokenStorage, r as TokenStorage, t as ItdSession } from "./shared/storage-CTRGT5wF.js";
@@ -66,7 +66,8 @@ interface SessionOptions {
66
66
  /** Где хранить сессию. По умолчанию {@link MemoryTokenStorage}. */
67
67
  storage?: TokenStorage | undefined;
68
68
  /**
69
- * Обновлять токен автоматически при ответе `401`. По умолчанию `true`.
69
+ * Обновлять токен перед истечением и восстанавливать сессию при ответе `401`.
70
+ * По умолчанию `true`.
70
71
  *
71
72
  * При `false` библиотека просто пробросит {@link ItdAuthError}, а обновлением
72
73
  * вы управляете сами через `itd.auth.refresh()`.
@@ -233,12 +234,9 @@ declare class AuthManager implements AuthProvider {
233
234
  * ответ был бы `false` даже при полностью рабочей сохранённой сессии.
234
235
  */
235
236
  hasRefreshSession(): Promise<boolean>;
236
- /**
237
- * Готовит состояние авторизации до входа запроса в очередь. Стадия `auth_preparation`.
238
- *
239
- * Загрузка хранилища, внешний источник токена и отложенный вход асинхронны, поэтому
240
- * обязаны завершиться до захвата слота очереди.
241
- */
237
+ /** Готовит внутреннюю сессию до retry исходного запроса. */
238
+ preflight(allowRefresh: boolean): Promise<void>;
239
+ /** Перед каждой попыткой перечитывает внешний источник токена. */
242
240
  prepare(): Promise<void>;
243
241
  /**
244
242
  * Заголовки уже подготовленной авторизации без чтения storage или вызова внешнего источника.
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { $ as orderPluginDefinitions, A as ITD_CATALOG, C as ReportReason, D as ViewReason, E as SpanType, F as operationMethod, G as pickString, I as operationRetrySafety, K as RetrySafety, L as BUCKET_LIMITS, M as defineBuiltInOperation, N as isBuiltInOperationId, O as ViewSource, P as operationBucket, Q as assertPluginRemovable, R as DEFAULT_RATE_LIMIT_BUCKET, S as NotificationType, T as ServiceState, V as pickArray, Z as RequestQueuePool, _ as FeedTab, at as isRecord, b as ItdErrorCode, c as normalizeNotification, d as canonicalNotificationType, et as DEFAULT_BASE_URL, f as isKnownNotificationType, g as EventChannelStatus, h as CommentSort, it as LIBRARY_VERSION, j as OPERATIONS, k as WallAccess, lt as systemClock, m as AttachmentType, n as formatNotificationText, nt as STATUS_SERVICE, o as passthroughOperation, ot as requireOptionalBoolean, p as AccessType, rt as resolveRateLimit, s as voidOperation, st as RateLimitPacing, t as resolveNotificationUrl, ut as installAsyncDisposeFallback, v as IncidentKind, w as ReportTargetType, x as LikesVisibility, y as InteractionType, z as createClientRuntime } from "./shared/url-i2f-X1hX.js";
1
+ import { $ as orderPluginDefinitions, A as ITD_CATALOG, C as ReportReason, D as ViewReason, E as SpanType, F as operationMethod, G as pickString, I as operationRetrySafety, K as RetrySafety, L as BUCKET_LIMITS, M as defineBuiltInOperation, N as isBuiltInOperationId, O as ViewSource, P as operationBucket, Q as assertPluginRemovable, R as DEFAULT_RATE_LIMIT_BUCKET, S as NotificationType, T as ServiceState, V as pickArray, Z as RequestQueuePool, _ as FeedTab, at as isRecord, b as ItdErrorCode, c as normalizeNotification, d as canonicalNotificationType, et as DEFAULT_BASE_URL, f as isKnownNotificationType, g as EventChannelStatus, h as CommentSort, it as LIBRARY_VERSION, j as OPERATIONS, k as WallAccess, lt as systemClock, m as AttachmentType, n as formatNotificationText, nt as STATUS_SERVICE, o as passthroughOperation, ot as requireOptionalBoolean, p as AccessType, rt as resolveRateLimit, s as voidOperation, st as RateLimitPacing, t as resolveNotificationUrl, ut as installAsyncDisposeFallback, v as IncidentKind, w as ReportTargetType, x as LikesVisibility, y as InteractionType, z as createClientRuntime } from "./shared/url-3Ts6EEHQ.js";
2
2
  import { A as isItdStateError, C as isItdError, D as isItdPhoneVerificationError, E as isItdNotFoundError, O as isItdRateLimitError, S as isItdConflictError, T as isItdForbiddenError, _ as ItdStateError, a as ItdConfigError, b as isItdApiError, c as ItdErrorKind, d as ItdForbiddenError, f as ItdNetworkError, g as ItdServerError, h as ItdRateLimitError, i as ItdAuthError, j as isItdValidationError, k as isItdServerError, l as ItdFileError, m as ItdPhoneVerificationError, n as ItdApiError, o as ItdConflictError, p as ItdNotFoundError, r as ItdApiErrorKind, s as ItdError, t as ItdAbortError, u as ItdFileErrorReason, v as ItdTimeoutError, w as isItdFileError, x as isItdAuthError, y as ItdValidationError } from "./shared/errors-GI10kZxk.js";
3
3
  import { c as REFRESH_COOKIE, l as REFRESH_COOKIE_PATH, s as CookieJar, u as isSerializedCookieEntry, v as RuntimeMode, y as createDeviceId } from "./shared/redact-DJV0XM3n.js";
4
- import { A as utcStampToIso, C as AUDIO_MIME_TYPES, D as isBuilder, E as comment, F as mapPage, I as createFeatureHost, L as ExtensibleOperationCatalog, M as BaseResource, N as PaginationMode, O as createStatusFeature, P as Paginator, S as ALLOWED_MIME_TYPES, T as VIDEO_MIME_TYPES, _ as poll, a as createShopOrderAccessStorage, b as parseHtml, c as ShopOrderStatus, d as isMyProfile, f as fromStream, g as post, h as report, i as MemoryShopOrderAccessStorage, j as NotificationsResource, k as toDate, l as ShopProductCategory, m as createResources, n as renderSpans, o as statusDays, p as fromUrl, r as createShopFeature, s as ShopConsentKind, t as SpanRenderFormat, u as ShopProductStatus, v as autoSpans, w as IMAGE_MIME_TYPES, x as parseMarkdown, y as markup } from "./shared/render--ZXmYEf-.js";
4
+ import { A as utcStampToIso, C as AUDIO_MIME_TYPES, D as isBuilder, E as comment, F as mapPage, I as createFeatureHost, L as ExtensibleOperationCatalog, M as BaseResource, N as PaginationMode, O as createStatusFeature, P as Paginator, S as ALLOWED_MIME_TYPES, T as VIDEO_MIME_TYPES, _ as poll, a as createShopOrderAccessStorage, b as parseHtml, c as ShopOrderStatus, d as isMyProfile, f as fromStream, g as post, h as report, i as MemoryShopOrderAccessStorage, j as NotificationsResource, k as toDate, l as ShopProductCategory, m as createResources, n as renderSpans, o as statusDays, p as fromUrl, r as createShopFeature, s as ShopConsentKind, t as SpanRenderFormat, u as ShopProductStatus, v as autoSpans, w as IMAGE_MIME_TYPES, x as parseMarkdown, y as markup } from "./shared/render-CtOpp9Pm.js";
5
5
  import { c as FileTransferMode } from "./shared/options-i4LrKfqx.js";
6
- import { _ as reportListenerError, a as WebSocketTransport, c as NotificationEventsTransport, d as NotificationUpdateOrigin, f as NotificationUpdateType, g as Emitter, h as runEventMiddleware, i as createNotificationEventsClient, l as resolveNotificationEventsOptions, m as UnauthorizedStreamError, n as EventRouter, o as EVENT_OPERATIONS, p as EventChannel, r as NotificationEventsClient, s as NotificationEvents, t as EventComposer, u as setNotificationEventsConnectGuard } from "./shared/events-BIBO2Jif.js";
6
+ import { _ as reportListenerError, a as WebSocketTransport, c as NotificationEventsTransport, d as NotificationUpdateOrigin, f as NotificationUpdateType, g as Emitter, h as runEventMiddleware, i as createNotificationEventsClient, l as resolveNotificationEventsOptions, m as UnauthorizedStreamError, n as EventRouter, o as EVENT_OPERATIONS, p as EventChannel, r as NotificationEventsClient, s as NotificationEvents, t as EventComposer, u as setNotificationEventsConnectGuard } from "./shared/events-BzjI6pn5.js";
7
7
  import { a as isEnumerableKeyValueStore, i as createRecordKeyValueStore, o as withCodec, r as createKeyValueStore, s as withNamespace, t as MemoryKeyValueStore } from "./shared/key-value-store-Bt2PSMxY.js";
8
8
  import { n as copySession, r as createTokenStorage, t as MemoryTokenStorage } from "./shared/storage-DiDe0PZM.js";
9
9
  import { a as scopedTokenStorage, i as isRestorableSession, n as controlledTokenStorage, r as createMultiTokenStorage, t as MemoryMultiTokenStorage } from "./shared/multi-storage-C3Ngtop1.js";
@@ -74,38 +74,34 @@ function decodeBase64Url(segment) {
74
74
  const bytes = Uint8Array.from(binary, (char) => char.charCodeAt(0));
75
75
  return new TextDecoder().decode(bytes);
76
76
  }
77
- /**
78
- * Читает `sub` и `sid` из полезной нагрузки JWT.
79
- *
80
- * Подпись не проверяется — ключа для проверки у клиента нет. Прочитанные значения служат
81
- * лишь метками для разделения локального состояния и не дают доступа: его определяет сервер.
82
- */
83
- function readTokenIdentity(token) {
77
+ /** Читает полезную нагрузку JWT без проверки подписи. */
78
+ function readTokenPayload(token) {
84
79
  try {
85
80
  const payload = token.split(".")[1];
86
- if (!payload) return {};
81
+ if (!payload) return void 0;
87
82
  const parsed = JSON.parse(decodeBase64Url(payload));
88
- if (typeof parsed !== "object" || parsed === null) return {};
89
- const { sub, sid } = parsed;
90
- return {
91
- ...typeof sub === "string" && sub.length > 0 ? { subject: sub } : {},
92
- ...typeof sid === "string" && sid.length > 0 ? { sessionId: sid } : {}
93
- };
83
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) return void 0;
84
+ return parsed;
94
85
  } catch {
95
- return {};
86
+ return;
96
87
  }
97
88
  }
98
- /**
99
- * Читает `sub` из полезной нагрузки JWT.
100
- *
101
- * @returns идентификатор владельца токена; `undefined`, если токен не JWT, повреждён
102
- * или поля `sub` в нём нет
103
- */
104
- function readTokenSubject(token) {
105
- return readTokenIdentity(token).subject;
89
+ /** Читает используемые клиентом поля JWT за один раз. */
90
+ function readTokenMetadata(token) {
91
+ const payload = readTokenPayload(token);
92
+ if (!payload) return {};
93
+ const { sub, sid, exp } = payload;
94
+ const expiresAt = typeof exp === "number" && Number.isFinite(exp) ? exp * 1e3 : void 0;
95
+ return {
96
+ ...typeof sub === "string" && sub.length > 0 ? { subject: sub } : {},
97
+ ...typeof sid === "string" && sid.length > 0 ? { sessionId: sid } : {},
98
+ ...expiresAt !== void 0 && Number.isFinite(expiresAt) ? { expiresAt } : {}
99
+ };
106
100
  }
107
101
  //#endregion
108
102
  //#region src/session/auth.ts
103
+ /** Запас до истечения токена на очередь и выполнение запроса. */
104
+ const ACCESS_TOKEN_REFRESH_LEEWAY_MS = 3e4;
109
105
  /**
110
106
  * Проверяет форму `auth` и сообщает о типичных ошибках понятным текстом.
111
107
  *
@@ -305,7 +301,7 @@ var AuthManager = class {
305
301
  * старте читают хранилище один раз и не заводят каждый свой `deviceId`.
306
302
  */
307
303
  #loading = null;
308
- /** Общий промис обновления: к нему присоединяются все, кто получил 401. */
304
+ /** Текущее обновление: к нему присоединяются запросы той же ревизии. */
309
305
  #refreshing = null;
310
306
  /** Общий промис входа по логину и паролю. */
311
307
  #signingIn = null;
@@ -315,6 +311,7 @@ var AuthManager = class {
315
311
  #externalToken;
316
312
  /** Идентификаторы последнего токена внешнего источника для синхронных потребителей. */
317
313
  #externalIdentity;
314
+ #tokenMetadata;
318
315
  /**
319
316
  * Идентификатор устройства.
320
317
  *
@@ -328,9 +325,7 @@ var AuthManager = class {
328
325
  * Счётчик смен владельца авторизации.
329
326
  *
330
327
  * Растёт при каждой операции, которая заменяет или очищает сессию извне: `clear`,
331
- * `setSession`, `setAccessToken`, вход. `#performRefresh` снимает его значение перед
332
- * сетевым запросом и сверяет перед записью — иначе запоздавший ответ обновления мог бы
333
- * воскресить уже очищенную сессию поверх `signOut`.
328
+ * `setSession`, `setAccessToken`, вход. Refresh сверяет снимок до и после сетевого запроса.
334
329
  */
335
330
  #authEpoch = 0;
336
331
  #externalReadGeneration = 0;
@@ -363,6 +358,7 @@ var AuthManager = class {
363
358
  this.#disposed = true;
364
359
  this.#externalReadGeneration += 1;
365
360
  this.#invalidateInFlight();
361
+ this.#tokenMetadata = void 0;
366
362
  this.#emitter.removeAllListeners();
367
363
  }
368
364
  /**
@@ -423,12 +419,25 @@ var AuthManager = class {
423
419
  return this.#session?.accessToken ?? null;
424
420
  }
425
421
  #identityForToken(accessToken) {
426
- const token = accessToken ? readTokenIdentity(accessToken) : {};
422
+ const token = this.#metadataForToken(accessToken);
427
423
  return {
428
424
  ...token.subject ? { userId: token.subject } : {},
429
425
  ...token.sessionId ? { sessionId: token.sessionId } : {}
430
426
  };
431
427
  }
428
+ #metadataForToken(accessToken) {
429
+ if (!accessToken) {
430
+ this.#tokenMetadata = void 0;
431
+ return {};
432
+ }
433
+ if (this.#tokenMetadata?.accessToken === accessToken) return this.#tokenMetadata.value;
434
+ const value = readTokenMetadata(accessToken);
435
+ this.#tokenMetadata = {
436
+ accessToken,
437
+ value
438
+ };
439
+ return value;
440
+ }
432
441
  async #readExternalToken(getToken) {
433
442
  this.#assertActive();
434
443
  const generation = ++this.#externalReadGeneration;
@@ -475,15 +484,33 @@ var AuthManager = class {
475
484
  if (this.#jar.has("is_auth", this.#config.baseUrl)) return true;
476
485
  return Boolean(this.#session?.refreshToken);
477
486
  }
478
- /**
479
- * Готовит состояние авторизации до входа запроса в очередь. Стадия `auth_preparation`.
480
- *
481
- * Загрузка хранилища, внешний источник токена и отложенный вход асинхронны, поэтому
482
- * обязаны завершиться до захвата слота очереди.
483
- */
487
+ /** Готовит внутреннюю сессию до retry исходного запроса. */
488
+ async preflight(allowRefresh) {
489
+ this.#assertActive();
490
+ let accessToken = (await this.#loadSession())?.accessToken;
491
+ if (!accessToken) {
492
+ const auth = this.#config.auth;
493
+ if (typeof auth === "object" && auth !== null && "email" in auth) accessToken = await this.#signInWithCredentials(auth) ?? void 0;
494
+ }
495
+ if (!accessToken || !allowRefresh || !this.#config.autoRefresh) return;
496
+ const expiresAt = this.#metadataForToken(accessToken).expiresAt;
497
+ if (expiresAt === void 0 || expiresAt > this.#config.clock.now() + ACCESS_TOKEN_REFRESH_LEEWAY_MS || !this.#hasRefreshSession()) return;
498
+ try {
499
+ await this.#refreshDeduplicated({
500
+ epoch: this.#authEpoch,
501
+ accessToken
502
+ });
503
+ } catch (error) {
504
+ this.#emitter.emit("authError", { error });
505
+ throw error;
506
+ }
507
+ }
508
+ /** Перед каждой попыткой перечитывает внешний источник токена. */
484
509
  async prepare() {
485
510
  this.#assertActive();
486
- await this.token();
511
+ if ((await this.#loadSession())?.accessToken) return;
512
+ const auth = this.#config.auth;
513
+ if (typeof auth === "object" && auth !== null && "getToken" in auth) await this.#readExternalToken(() => auth.getToken());
487
514
  }
488
515
  /**
489
516
  * Заголовки уже подготовленной авторизации без чтения storage или вызова внешнего источника.
@@ -630,7 +657,7 @@ var AuthManager = class {
630
657
  async getUserId() {
631
658
  this.#assertActive();
632
659
  const session = await this.#loadSession();
633
- return session?.accessToken ? readTokenSubject(session.accessToken) : void 0;
660
+ return session?.accessToken ? this.#identityForToken(session.accessToken).userId : void 0;
634
661
  }
635
662
  /** Заменяет сессию и связанные с ней cookie целиком. */
636
663
  async setSession(session) {
@@ -733,24 +760,30 @@ var AuthManager = class {
733
760
  this.#persistence = pending.catch(() => {});
734
761
  return pending;
735
762
  }
736
- /**
737
- * Обновление с дедупликацией.
738
- *
739
- * Все, кто пришёл, пока обновление уже идёт, получают его результат, а не запускают своё.
740
- */
741
- #refreshDeduplicated() {
742
- if (this.#refreshing) return this.#refreshing;
743
- const promise = this.#performRefresh().finally(() => {
744
- this.#refreshing = null;
763
+ /** Дедуплицирует refresh одной ревизии; следующая ждёт завершения предыдущей. */
764
+ #refreshDeduplicated(expectation = { epoch: this.#authEpoch }) {
765
+ const current = this.#refreshing;
766
+ if (current) {
767
+ if (current.epoch === expectation.epoch) return current.promise;
768
+ return current.promise.then(() => this.#refreshDeduplicated(expectation), () => this.#refreshDeduplicated(expectation));
769
+ }
770
+ const promise = this.#performRefresh(expectation).finally(() => {
771
+ if (this.#refreshing?.promise === promise) this.#refreshing = null;
745
772
  });
746
- this.#refreshing = promise;
773
+ this.#refreshing = {
774
+ epoch: expectation.epoch,
775
+ promise
776
+ };
747
777
  return promise;
748
778
  }
749
- async #performRefresh() {
779
+ #matchesRefreshExpectation(expectation) {
780
+ return this.#authEpoch === expectation.epoch && (expectation.accessToken === void 0 || this.#session?.accessToken === expectation.accessToken);
781
+ }
782
+ async #performRefresh(expectation) {
750
783
  this.#assertActive();
751
784
  await this.#loadSession();
785
+ if (!this.#matchesRefreshExpectation(expectation)) return this.#currentAccessToken();
752
786
  if (!this.#hasRefreshSession()) return this.#reloginOrNull();
753
- const epoch = this.#authEpoch;
754
787
  const flowCookies = this.#jar.clone();
755
788
  try {
756
789
  const accessToken = await this.#http.execute(AUTH_REFRESH, {
@@ -759,7 +792,7 @@ var AuthManager = class {
759
792
  skipAuthRefresh: true,
760
793
  cookieJar: flowCookies
761
794
  });
762
- if (this.#authEpoch !== epoch) return this.#session?.accessToken ?? null;
795
+ if (!this.#matchesRefreshExpectation(expectation)) return this.#session?.accessToken ?? null;
763
796
  this.#jar.replaceWith(flowCookies);
764
797
  const rotated = this.#jar.getValue(REFRESH_COOKIE, this.#config.baseUrl + REFRESH_COOKIE_PATH);
765
798
  this.#transitionAuth(accessToken, false);
@@ -771,10 +804,11 @@ var AuthManager = class {
771
804
  });
772
805
  this.#emitter.emit("tokens", { accessToken });
773
806
  await saved;
807
+ if (this.#authEpoch !== expectation.epoch) return this.#currentAccessToken();
774
808
  return accessToken;
775
809
  } catch (error) {
810
+ if (this.#authEpoch !== expectation.epoch) return this.#currentAccessToken();
776
811
  if (error instanceof ItdAuthError) {
777
- if (this.#authEpoch !== epoch) return this.#session?.accessToken ?? null;
778
812
  this.#invalidateInFlight();
779
813
  const clearedRevision = this.#authEpoch;
780
814
  this.#transitionAuth(void 0);