@foxford/sdk 8.0.1 → 8.1.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.
package/entities.js.flow CHANGED
@@ -1,4 +1,7 @@
1
1
  // @flow
2
+ import { U as UserInterests } from "./types-BrKJGAOa.js";
3
+ import "./antibot.js";
4
+
2
5
  declare type PupilRole =
3
6
  | "11 класс"
4
7
  | "10 класс"
@@ -19,6 +22,21 @@ declare type UserRole =
19
22
  | "Выпускник"
20
23
  | "Дошкольник"
21
24
  | PupilRole;
25
+ declare type LeaderboardAccessState =
26
+ | "unavailable"
27
+ | "available"
28
+ | "vacation"
29
+ | "disabled";
30
+ declare type LeaderboardReadinessState =
31
+ | "changeable_course_selection"
32
+ | "ready"
33
+ | "unready"
34
+ | "waiting_course_selection";
35
+ declare type LearningGoalsAccessState =
36
+ | "enabled"
37
+ | "disabled"
38
+ | "optional"
39
+ | "required";
22
40
  declare interface UserDTO {
23
41
  id: null | number;
24
42
  email: string;
@@ -146,138 +164,677 @@ declare interface UserDTO {
146
164
  yearName: string,
147
165
  ...
148
166
  } | null;
167
+
168
+ /**
169
+ * Текущий интерес посетителя — та же форма, что у `GET /api/user/user_interest`, но из профиля.
170
+ */
171
+ currentInterest: UserInterests | null;
172
+
173
+ /**
174
+ * До какой даты открыт приём в домашнюю школу.
175
+ */
176
+ admissionFinishesOn: null | string;
177
+
178
+ /**
179
+ * Посетитель пришёл из Алгоритмики.
180
+ */
181
+ algoritmika: boolean;
182
+ bonusesPageVisited: boolean;
183
+ canChangeSchoolInfo: boolean;
184
+ externshipDemoAccessActive: boolean;
185
+
186
+ /**
187
+ * Экстернат ждёт оплаты: когда закроется доступ и по какому договору.
188
+ */
189
+ externshipPaymentRequired: {
190
+ accessClosingDate: string,
191
+ contractId: number,
192
+ ...
193
+ } | null;
194
+ externshipPromoHeaderOn: boolean;
195
+ hasExamProgressAccess: boolean;
196
+ hasYearlyRecapAccess: boolean;
197
+ isAttestationSchoolManager: null | boolean;
198
+ isMentor: boolean;
199
+ isXpStreakAvailable: boolean;
200
+ leaderboard: {
201
+ accessState: LeaderboardAccessState,
202
+ readinessState: LeaderboardReadinessState,
203
+ ...
204
+ } | null;
205
+ leaderboardAccessState: LeaderboardAccessState;
206
+ learningGoalsAccessState: LearningGoalsAccessState;
207
+
208
+ /**
209
+ * Мессенджеры, на которые подписан посетитель; `null` — бэкенд не считал.
210
+ */
211
+ messengerSubscriptions: null | string[];
212
+ needToPromoteRenewalWithCoach: boolean;
213
+ nextYearCoursesBannerAvailable: boolean;
214
+ passwordSet: null | boolean;
215
+ referralCode: null | string;
216
+ targetActionsOnboardingAvailable: boolean;
149
217
  }
150
218
  declare class User {
151
219
  constructor(): this;
220
+
221
+ /**
222
+ * Идентификатор посетителя на бэкенде.
223
+ * @returns Число либо `null` у гостя.
224
+ */
152
225
  id: $PropertyType<UserDTO, "id">;
226
+
227
+ /**
228
+ * Почта посетителя.
229
+ * @returns Строка; пустая, если почты нет.
230
+ */
153
231
  email: $PropertyType<UserDTO, "email">;
232
+
233
+ /**
234
+ * Имя.
235
+ * @returns Строка; пустая, если не заполнено.
236
+ */
154
237
  firstName: $PropertyType<UserDTO, "firstName">;
238
+
239
+ /**
240
+ * Отчество.
241
+ * @returns Строка; пустая, если не заполнено.
242
+ */
155
243
  middleName: $PropertyType<UserDTO, "middleName">;
244
+
245
+ /**
246
+ * Фамилия.
247
+ * @returns Строка; пустая, если не заполнено.
248
+ */
156
249
  lastName: $PropertyType<UserDTO, "lastName">;
250
+
251
+ /**
252
+ * Полное имя, каким его собрал бэкенд.
253
+ * @returns Строка; пустая у гостя.
254
+ */
157
255
  fullName: $PropertyType<UserDTO, "fullName">;
256
+
257
+ /**
258
+ * Короткое имя для обращения в интерфейсе.
259
+ * @returns Строка; пустая у гостя.
260
+ */
158
261
  shortName: $PropertyType<UserDTO, "shortName">;
262
+
263
+ /**
264
+ * Когда заведён профиль.
265
+ * @returns Дата ISO либо `null` у гостя.
266
+ */
159
267
  createdAt: $PropertyType<UserDTO, "createdAt">;
268
+
269
+ /**
270
+ * Часовой пояс посетителя.
271
+ * @returns Имя пояса либо `null`, если не задан.
272
+ */
160
273
  timezone: $PropertyType<UserDTO, "timezone">;
274
+
275
+ /**
276
+ * Локаль интерфейса.
277
+ * @returns Код локали либо `null`, если не задана.
278
+ */
161
279
  locale: $PropertyType<UserDTO, "locale">;
280
+
281
+ /**
282
+ * Класс посетителя: id, порядковый номер, имя и транслит.
283
+ * @returns Объект класса; у гостя поля `null` и пустые строки.
284
+ */
162
285
  grade: $PropertyType<UserDTO, "grade">;
286
+
287
+ /**
288
+ * Телефон посетителя.
289
+ * @returns Строка либо `null`, если не указан.
290
+ */
163
291
  phone: $PropertyType<UserDTO, "phone">;
292
+
293
+ /**
294
+ * Адрес аватара.
295
+ * @returns Строка; пустая, если аватара нет.
296
+ */
164
297
  avatarUrl: $PropertyType<UserDTO, "avatarUrl">;
298
+
299
+ /**
300
+ * Посетитель — родитель.
301
+ * @returns `true`, если роль родительская.
302
+ */
165
303
  isParent: $PropertyType<UserDTO, "isParent">;
304
+
305
+ /**
306
+ * Посетитель — выпускник.
307
+ * @returns `true`, если школу закончил.
308
+ */
166
309
  isGraduated: $PropertyType<UserDTO, "isGraduated">;
310
+
311
+ /**
312
+ * Класс подтверждён посетителем.
313
+ * @returns `true`, если класс проверен.
314
+ */
167
315
  gradeChecked: $PropertyType<UserDTO, "gradeChecked">;
316
+
317
+ /**
318
+ * Тип учётной записи на бэкенде.
319
+ * @returns `pupil`, `agent` либо `null` у гостя.
320
+ */
168
321
  type: $PropertyType<UserDTO, "type">;
322
+
323
+ /**
324
+ * Посетитель — репетитор.
325
+ * @returns `true`, если роль репетитора.
326
+ */
169
327
  isCoach: $PropertyType<UserDTO, "isCoach">;
328
+
329
+ /**
330
+ * Ведёт мини-группы.
331
+ * @returns `true`, если ведёт.
332
+ */
170
333
  isMiniGroupTeacher: $PropertyType<UserDTO, "isMiniGroupTeacher">;
334
+
335
+ /**
336
+ * Репетитор экстерната.
337
+ * @returns `true`, если ведёт экстернат.
338
+ */
171
339
  isExternshipCoach: $PropertyType<UserDTO, "isExternshipCoach">;
340
+
341
+ /**
342
+ * Посетитель — учитель.
343
+ * @returns `true`, если роль учителя.
344
+ */
172
345
  isAgent: $PropertyType<UserDTO, "isAgent">;
346
+
347
+ /**
348
+ * Посетитель — методист.
349
+ * @returns `true`, если методист.
350
+ */
173
351
  methodist: $PropertyType<UserDTO, "methodist">;
352
+
353
+ /**
354
+ * Почтовый адрес: страна, регион, город, улица, дом.
355
+ * @returns Объект адреса либо `null`, если не заполнен.
356
+ */
174
357
  address: $PropertyType<UserDTO, "address">;
358
+
359
+ /**
360
+ * Привязанные соцсети.
361
+ * @returns Список провайдеров с идентификаторами; пустой, если привязок нет.
362
+ */
175
363
  socialNets: $PropertyType<UserDTO, "socialNets">;
364
+
365
+ /**
366
+ * Логин в Skype.
367
+ * @returns Строка либо `null`.
368
+ */
176
369
  skype: $PropertyType<UserDTO, "skype">;
370
+
371
+ /**
372
+ * Настройки интерфейса: показанные подсказки и скрытые баннеры.
373
+ * @returns Объект флагов либо `undefined`, если бэкенд их не прислал.
374
+ */
177
375
  settings: $PropertyType<UserDTO, "settings">;
376
+
377
+ /**
378
+ * Бонусный счёт: подарочные и реальные бонусы.
379
+ * @returns Объект с суммами.
380
+ */
178
381
  bonus: $PropertyType<UserDTO, "bonus">;
382
+
383
+ /**
384
+ * Сумма бонусов на счёте.
385
+ * @returns Число.
386
+ */
179
387
  bonusAmount: $PropertyType<UserDTO, "bonusAmount">;
388
+
389
+ /**
390
+ * Есть действующие покупки.
391
+ * @returns `true`, если есть.
392
+ */
180
393
  hasActivePurchases: $PropertyType<UserDTO, "hasActivePurchases">;
394
+
395
+ /**
396
+ * Остались попытки пробных экзаменов.
397
+ * @returns `true`, если остались.
398
+ */
181
399
  hasAttemptsSolveExamRehearsals: $PropertyType<
182
400
  UserDTO,
183
401
  "hasAttemptsSolveExamRehearsals"
184
402
  >;
403
+
404
+ /**
405
+ * Есть закладки.
406
+ * @returns `true`, если есть.
407
+ */
185
408
  hasBookmarks: $PropertyType<UserDTO, "hasBookmarks">;
409
+
410
+ /**
411
+ * Метки посетителя на бэкенде.
412
+ * @returns Список строк либо `null`.
413
+ */
186
414
  tags: $PropertyType<UserDTO, "tags">;
415
+
416
+ /**
417
+ * Шаблон корзины.
418
+ * @returns Число либо `null`.
419
+ */
187
420
  cartTemplateId: $PropertyType<UserDTO, "cartTemplateId">;
421
+
422
+ /**
423
+ * Сколько позиций в корзине.
424
+ * @returns Число.
425
+ */
188
426
  cartItemsCount: $PropertyType<UserDTO, "cartItemsCount">;
427
+
428
+ /**
429
+ * Онбординг пройден.
430
+ * @returns `true`, если пройден.
431
+ */
189
432
  onboardingFinished: $PropertyType<UserDTO, "onboardingFinished">;
433
+
434
+ /**
435
+ * Когда пройден онбординг.
436
+ * @returns Дата ISO либо `null`, пока не пройден.
437
+ */
190
438
  onboardingFinishedAt: $PropertyType<UserDTO, "onboardingFinishedAt">;
439
+
440
+ /**
441
+ * Почта подтверждена.
442
+ * @returns `true`, если подтверждена.
443
+ */
191
444
  emailConfirmed: $PropertyType<UserDTO, "emailConfirmed">;
445
+
446
+ /**
447
+ * Телефон подтверждён.
448
+ * @returns `true`, если подтверждён.
449
+ */
192
450
  phoneConfirmed: $PropertyType<UserDTO, "phoneConfirmed">;
451
+
452
+ /**
453
+ * Почта выдумана бэкендом при регистрации без почты.
454
+ * @returns `true`, если почта ненастоящая.
455
+ */
193
456
  fakeEmail: $PropertyType<UserDTO, "fakeEmail">;
457
+
458
+ /**
459
+ * Посетитель заведён бэкендом без его участия (например, по заявке).
460
+ * @returns `true`, если учётная запись ненастоящая.
461
+ */
194
462
  fakeUser: $PropertyType<UserDTO, "fakeUser">;
463
+
464
+ /**
465
+ * Профиль дополнен данными после регистрации.
466
+ * @returns `true`, если дополнен.
467
+ */
195
468
  profileEnriched: $PropertyType<UserDTO, "profileEnriched">;
469
+
470
+ /**
471
+ * Идентификатор итогов года.
472
+ * @returns Строка либо `null`, если итогов нет.
473
+ */
196
474
  recapUuid: $PropertyType<UserDTO, "recapUuid">;
475
+
476
+ /**
477
+ * Дисциплины, которые изучает посетитель.
478
+ * @returns Список id; пустой, если не выбраны.
479
+ */
197
480
  disciplineIds: $PropertyType<UserDTO, "disciplineIds">;
481
+
482
+ /**
483
+ * Настройки приватности.
484
+ * @returns Объект с флагом публичного профиля.
485
+ */
198
486
  privacy: $PropertyType<UserDTO, "privacy">;
487
+
488
+ /**
489
+ * Телефон родителя.
490
+ * @returns Строка либо `null`.
491
+ */
199
492
  parentPhone: $PropertyType<UserDTO, "parentPhone">;
493
+
494
+ /**
495
+ * Телефон родителя подтверждён.
496
+ * @returns `true`, если подтверждён.
497
+ */
200
498
  parentPhoneConfirmed: $PropertyType<UserDTO, "parentPhoneConfirmed">;
499
+
500
+ /**
501
+ * Посетитель что-то покупал.
502
+ * @returns `true`, `false` либо `null`, если бэкенд не считал.
503
+ */
201
504
  isCustomer: $PropertyType<UserDTO, "isCustomer">;
505
+
506
+ /**
507
+ * Доступны многодневные серии занятий.
508
+ * @returns `true`, если доступны.
509
+ */
202
510
  hasAccessToMultiDaysStreaks: $PropertyType<
203
511
  UserDTO,
204
512
  "hasAccessToMultiDaysStreaks"
205
513
  >;
514
+
515
+ /**
516
+ * Ученик начальной школы.
517
+ * @returns `true`, если начальная школа.
518
+ */
206
519
  isElementaryPupil: $PropertyType<UserDTO, "isElementaryPupil">;
520
+
521
+ /**
522
+ * Токен для канала уведомлений по WebSocket.
523
+ * @returns Строка либо `null`, если канала нет.
524
+ */
207
525
  webSocketNotificationsJwt: $PropertyType<
208
526
  UserDTO,
209
527
  "webSocketNotificationsJwt"
210
528
  >;
529
+
530
+ /**
531
+ * Доступны аттестационные листы.
532
+ * @returns `true`, если доступны.
533
+ */
211
534
  hasAccessToAttestationSheets: $PropertyType<
212
535
  UserDTO,
213
536
  "hasAccessToAttestationSheets"
214
537
  >;
538
+
539
+ /**
540
+ * Посетитель учится в экстернате.
541
+ * @returns `true`, если экстернат.
542
+ */
215
543
  externshipUser: $PropertyType<UserDTO, "externshipUser">;
544
+
545
+ /**
546
+ * Есть оплаченные договоры экстерната.
547
+ * @returns `true`, если есть.
548
+ */
216
549
  hasPurchasedExternshipContracts: $PropertyType<
217
550
  UserDTO,
218
551
  "hasPurchasedExternshipContracts"
219
552
  >;
553
+
554
+ /**
555
+ * Доступна аттестация экстерната.
556
+ * @returns `true`, если доступна.
557
+ */
220
558
  hasExternshipAttestationAccess: $PropertyType<
221
559
  UserDTO,
222
560
  "hasExternshipAttestationAccess"
223
561
  >;
562
+
563
+ /**
564
+ * Профиль в разделе социализации.
565
+ * @returns Объект с id и состоянием либо `null`, если профиля нет.
566
+ */
224
567
  socializationProfile: $PropertyType<UserDTO, "socializationProfile">;
568
+
569
+ /**
570
+ * Когда заканчивается бесплатный доступ.
571
+ * @returns Дата ISO либо `null`, если доступа нет.
572
+ */
225
573
  freeAccessFinishesAt: $PropertyType<UserDTO, "freeAccessFinishesAt">;
574
+
575
+ /**
576
+ * В комнате начальной школы есть непросмотренные новинки.
577
+ * @returns `true`, если есть; `undefined`, если бэкенд не прислал.
578
+ */
226
579
  hasUnseenRoomFeatures: $PropertyType<UserDTO, "hasUnseenRoomFeatures">;
580
+
581
+ /**
582
+ * Покупал договоры экстерната.
583
+ * @returns `true`, если покупал.
584
+ */
227
585
  purchaseAnyExternshipContracts: $PropertyType<
228
586
  UserDTO,
229
587
  "purchaseAnyExternshipContracts"
230
588
  >;
589
+
590
+ /**
591
+ * Связан с экстернатом: ученик, родитель либо репетитор.
592
+ * @returns `true`, если связан; `undefined`, если бэкенд не прислал.
593
+ */
231
594
  hasExternshipRelation: $PropertyType<UserDTO, "hasExternshipRelation">;
595
+
596
+ /**
597
+ * Есть действующий договор экстерната.
598
+ * @returns `true`, если есть; `undefined`, если бэкенд не прислал.
599
+ */
232
600
  hasExternshipActiveContract: $PropertyType<
233
601
  UserDTO,
234
602
  "hasExternshipActiveContract"
235
603
  >;
604
+
605
+ /**
606
+ * Можно продлить договор домашней школы.
607
+ * @returns `true`, если можно; `undefined`, если бэкенд не прислал.
608
+ */
236
609
  canProlongateContract: $PropertyType<UserDTO, "canProlongateContract">;
610
+
611
+ /**
612
+ * Окно пролонгации договора: даты, скидка, заголовок следующего года.
613
+ * @returns Объект окна, `null` либо `undefined`, если окна нет.
614
+ */
237
615
  prolongation: $PropertyType<UserDTO, "prolongation">;
238
616
 
617
+ /**
618
+ * Текущий интерес посетителя: класс, дисциплина, уровень, формат и причина. Та же форма, что у `GET /api/user/user_interest`, но из профиля, без похода.
619
+ * @returns Объект интереса либо `null`, если бэкенд не считал.
620
+ */
621
+ currentInterest: $PropertyType<UserDTO, "currentInterest">;
622
+
623
+ /**
624
+ * До какой даты открыт приём в домашнюю школу.
625
+ * @returns Дата либо `null`, если приём не идёт.
626
+ */
627
+ admissionFinishesOn: $PropertyType<UserDTO, "admissionFinishesOn">;
628
+
629
+ /**
630
+ * Посетитель пришёл из Алгоритмики — партнёрский вход с другой площадки.
631
+ * @returns `true`, если из Алгоритмики.
632
+ */
633
+ algoritmika: $PropertyType<UserDTO, "algoritmika">;
634
+
635
+ /**
636
+ * Страница бонусов уже открывалась — подсказки на ней больше не показываются.
637
+ * @returns `true`, если открывалась.
638
+ */
639
+ bonusesPageVisited: $PropertyType<UserDTO, "bonusesPageVisited">;
640
+
641
+ /**
642
+ * Посетителю разрешено менять школу и класс в профиле.
643
+ * @returns `true`, если разрешено.
644
+ */
645
+ canChangeSchoolInfo: $PropertyType<UserDTO, "canChangeSchoolInfo">;
646
+
647
+ /**
648
+ * Идёт демо-доступ к экстернату.
649
+ * @returns `true`, пока демо активно.
650
+ */
651
+ externshipDemoAccessActive: $PropertyType<
652
+ UserDTO,
653
+ "externshipDemoAccessActive"
654
+ >;
655
+
656
+ /**
657
+ * Экстернат ждёт оплаты: когда закроется доступ и по какому договору.
658
+ * @returns Объект с датой и id договора либо `null`, если долга нет.
659
+ */
660
+ externshipPaymentRequired: $PropertyType<
661
+ UserDTO,
662
+ "externshipPaymentRequired"
663
+ >;
664
+
665
+ /**
666
+ * Показывать промо-шапку экстерната.
667
+ * @returns `true`, если показывать.
668
+ */
669
+ externshipPromoHeaderOn: $PropertyType<UserDTO, "externshipPromoHeaderOn">;
670
+
671
+ /**
672
+ * Доступен раздел прогресса подготовки к экзаменам.
673
+ * @returns `true`, если доступен.
674
+ */
675
+ hasExamProgressAccess: $PropertyType<UserDTO, "hasExamProgressAccess">;
676
+
677
+ /**
678
+ * Доступны итоги года; их адрес — `recapUuid`.
679
+ * @returns `true`, если доступны.
680
+ */
681
+ hasYearlyRecapAccess: $PropertyType<UserDTO, "hasYearlyRecapAccess">;
682
+
683
+ /**
684
+ * Управляет аттестационной школой.
685
+ * @returns `true`, `false` либо `null`, если бэкенд не считал.
686
+ */
687
+ isAttestationSchoolManager: $PropertyType<
688
+ UserDTO,
689
+ "isAttestationSchoolManager"
690
+ >;
691
+
692
+ /**
693
+ * Посетитель — наставник.
694
+ * @returns `true`, если наставник.
695
+ */
696
+ isMentor: $PropertyType<UserDTO, "isMentor">;
697
+
698
+ /**
699
+ * Доступна серия ежедневных занятий с опытом (XP-стрик).
700
+ * @returns `true`, если доступна.
701
+ */
702
+ isXpStreakAvailable: $PropertyType<UserDTO, "isXpStreakAvailable">;
703
+
704
+ /**
705
+ * Таблица лидеров: доступна ли посетителю и готов ли он к ней (выбор курса).
706
+ * @returns Объект состояний либо `null`, если посетитель вне программы.
707
+ */
708
+ leaderboard: $PropertyType<UserDTO, "leaderboard">;
709
+
710
+ /**
711
+ * Состояние доступа к таблице лидеров.
712
+ * @returns `unavailable`, `available`, `vacation` либо `disabled`.
713
+ */
714
+ leaderboardAccessState: $PropertyType<UserDTO, "leaderboardAccessState">;
715
+
716
+ /**
717
+ * Как устроены учебные цели у посетителя.
718
+ * @returns `enabled`, `disabled`, `optional` либо `required`.
719
+ */
720
+ learningGoalsAccessState: $PropertyType<UserDTO, "learningGoalsAccessState">;
721
+
722
+ /**
723
+ * Мессенджеры, на которые посетитель подписан на уведомления.
724
+ * @returns Список либо `null`, если бэкенд не считал.
725
+ */
726
+ messengerSubscriptions: $PropertyType<UserDTO, "messengerSubscriptions">;
727
+
728
+ /**
729
+ * Пора предлагать продление занятий с репетитором.
730
+ * @returns `true`, если пора.
731
+ */
732
+ needToPromoteRenewalWithCoach: $PropertyType<
733
+ UserDTO,
734
+ "needToPromoteRenewalWithCoach"
735
+ >;
736
+
737
+ /**
738
+ * Показывать баннер курсов следующего учебного года.
739
+ * @returns `true`, если показывать.
740
+ */
741
+ nextYearCoursesBannerAvailable: $PropertyType<
742
+ UserDTO,
743
+ "nextYearCoursesBannerAvailable"
744
+ >;
745
+
746
+ /**
747
+ * Пароль задан — вход не только через код или соцсеть.
748
+ * @returns `true`, `false` либо `null`, если бэкенд не считал.
749
+ */
750
+ passwordSet: $PropertyType<UserDTO, "passwordSet">;
751
+
752
+ /**
753
+ * Реферальный код для программы «приведи друга».
754
+ * @returns Строка либо `null`, если код не выдан.
755
+ */
756
+ referralCode: $PropertyType<UserDTO, "referralCode">;
757
+
758
+ /**
759
+ * Доступен онбординг целевых действий.
760
+ * @returns `true`, если доступен.
761
+ */
762
+ targetActionsOnboardingAvailable: $PropertyType<
763
+ UserDTO,
764
+ "targetActionsOnboardingAvailable"
765
+ >;
766
+
239
767
  /**
240
768
  * Идёт ли сейчас окно пролонгации договора домашней школы.
241
769
  *
242
770
  * Границы включаются: последний день окна ещё считается пролонгацией. Не заданная граница
243
771
  * означает, что окна нет вовсе, а не что оно бесконечно.
772
+ * @returns `true`, если сегодня внутри окна включительно
244
773
  */
245
774
  isProlongationBetweenDates(): boolean;
775
+
776
+ /**
777
+ * Гость — сущность с умолчаниями всех полей и признаком `isDefaultUser()`.
778
+ * @returns Новая сущность на каждый вызов: умолчания общие на процесс, копия своя.
779
+ */
246
780
  static createDefault(): User;
247
781
 
248
782
  /**
249
783
  * Форма посетителя по умолчанию ДАННЫМИ — гость со всеми полями: тому, кто отдаёт `UserDTO`
250
784
  * наружу (хост — приложениям), нужна полная форма, а не сущность с методами. Своя копия на
251
785
  * вызов: умолчания общие на процесс, и правка чужой копии их не тронет.
786
+ * @returns Новая копия умолчаний на каждый вызов
252
787
  */
253
788
  static defaultDto(): UserDTO;
789
+
790
+ /**
791
+ * Сущность из профиля бэкенда (`UserDTO` в camelCase): строковые поля чистятся от null-байтов
792
+ * и пробелов по краям, остальное берётся как есть.
793
+ * @param input - Профиль в форме `UserDTO`
794
+ * @returns Сущность над копией профиля: исходный объект не трогается
795
+ */
254
796
  static fromApi(input: mixed): User;
797
+
798
+ /**
799
+ * Сущность собрана из умолчаний (`createDefault`), а не из профиля бэкенда.
800
+ * @returns `true` у гостя по умолчанию
801
+ */
255
802
  isDefaultUser(): boolean;
803
+
804
+ /**
805
+ * Посетитель вошёл — у него есть идентификатор на бэкенде.
806
+ * @returns `true`, если `id` задан и положителен
807
+ */
256
808
  isLoggedIn(): boolean;
257
809
 
258
810
  /**
259
- * Возвращает тектовое представление роли / класса пользователя
260
- * @returns {UserRole}
811
+ * Роль либо класс словом — для подписи в интерфейсе.
812
+ * @returns «Дошкольник» для нулевого класса, «Выпускник» без класса, иначе класс («5 класс»)
261
813
  */
262
814
  getPupilRole(): UserRole;
263
815
 
264
816
  /**
265
- * Возвращает роль пользователя
266
- * @returns {UserRole} роль как строка
817
+ * Роль словом — по флагам профиля, первый совпавший: репетитор, учитель, родитель.
818
+ * @returns «Репетитор», «Учитель», «Родитель», иначе роль ученика из `getPupilRole()`
267
819
  */
268
820
  getRole: () => UserRole;
269
821
 
270
822
  /**
271
- * Возвращает фамилию и инициалы юзера
272
- * @param {User} user
273
- * @return {string} 'Пупкин В.'
823
+ * Фамилия с инициалами имени и отчества — подпись в списках.
824
+ * @returns Строка вида «Пупкин В. И.»; без отчества — «Пупкин В.»
274
825
  */
275
826
  getInitials: () => string;
827
+
828
+ /**
829
+ * Профиль строкой JSON — для печати в документ и передачи по сети.
830
+ * @returns JSON полей сущности
831
+ */
276
832
  toJson(): string;
277
833
 
278
834
  /**
279
835
  * Посетитель данными — то, что едет по сети и в состояние: сущность с методами не
280
836
  * сериализуется. Своя копия на вызов: сущность неизменяема, и правка копии её не тронет.
837
+ * @returns Копия полей сущности данными
281
838
  */
282
839
  toDto(): UserDTO;
283
840
  }