@escapenavigator/types 2.0.47 → 2.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.
Files changed (52) hide show
  1. package/dist/forms/widget/widget-players-form.dto.d.ts +7 -0
  2. package/dist/forms/widget/widget-players-form.dto.js +6 -0
  3. package/dist/holiday/holiday-kind.enum.d.ts +9 -0
  4. package/dist/holiday/holiday-kind.enum.js +13 -0
  5. package/dist/holiday/profile-holiday.ro.d.ts +12 -0
  6. package/dist/holiday/profile-holiday.ro.js +38 -0
  7. package/dist/holiday/update-holidays.dto.d.ts +14 -0
  8. package/dist/holiday/update-holidays.dto.js +58 -0
  9. package/dist/lead/query-leads.dto.d.ts +4 -2
  10. package/dist/lead/query-leads.dto.js +20 -1
  11. package/dist/openapi/orders/openapi-create-preorder.dto.d.ts +7 -0
  12. package/dist/openapi/orders/openapi-create-preorder.dto.js +6 -0
  13. package/dist/openapi/orders/openapi-order.ro.d.ts +17 -3
  14. package/dist/openapi/orders/openapi-order.ro.js +8 -0
  15. package/dist/openapi/orders/openapi-update-order-players.dto.d.ts +7 -0
  16. package/dist/openapi/orders/openapi-update-order-players.dto.js +6 -0
  17. package/dist/openapi/orders/openapi-update-order.dto.d.ts +7 -0
  18. package/dist/openapi/orders/openapi-update-order.dto.js +6 -0
  19. package/dist/openapi/slots/openapi-slot-variation.ro.d.ts +2 -0
  20. package/dist/openapi/slots/openapi-slot-variation.ro.js +21 -1
  21. package/dist/openapi/widget/openapi-widget-info.ro.d.ts +14 -0
  22. package/dist/openapi/widget/openapi-widget-info.ro.js +28 -0
  23. package/dist/order/create-order.dto.d.ts +7 -0
  24. package/dist/order/create-order.dto.js +6 -0
  25. package/dist/order/order.ro.d.ts +18 -1
  26. package/dist/order/order.ro.js +8 -0
  27. package/dist/order/update-order-slot.dto.d.ts +6 -0
  28. package/dist/order/update-order-slot.dto.js +6 -0
  29. package/dist/order/update-players.dto.d.ts +7 -0
  30. package/dist/order/update-players.dto.js +6 -0
  31. package/dist/slot/slot-autocomplite-form.dto.d.ts +5 -1
  32. package/dist/slot-template/slot-template.ro.d.ts +4 -0
  33. package/dist/slot-template/slot-template.ro.js +8 -0
  34. package/dist/slot-template/special-day.d.ts +10 -0
  35. package/dist/slot-template/special-day.js +13 -0
  36. package/dist/slot-template/update-slot-template.dto.d.ts +2 -0
  37. package/dist/slot-template/update-slot-template.dto.js +12 -0
  38. package/dist/tariff/create-tariff.dto.d.ts +10 -0
  39. package/dist/tariff/create-tariff.dto.js +9 -0
  40. package/dist/tariff/enum/tariff-category-mode.enum.d.ts +20 -0
  41. package/dist/tariff/enum/tariff-category-mode.enum.js +24 -0
  42. package/dist/tariff/tariff-category.d.ts +56 -0
  43. package/dist/tariff/tariff-category.dto.d.ts +19 -0
  44. package/dist/tariff/tariff-category.dto.js +62 -0
  45. package/dist/tariff/tariff-category.js +9 -0
  46. package/dist/tariff/tariff-light.ro.d.ts +7 -0
  47. package/dist/tariff/tariff-light.ro.js +4 -0
  48. package/dist/tsconfig.build.tsbuildinfo +1 -1
  49. package/dist/widget/create-widget.dto.d.ts +10 -0
  50. package/dist/widget/create-widget.dto.js +35 -0
  51. package/dist/widget/widget.ro.d.ts +6 -0
  52. package/package.json +2 -2
@@ -32,3 +32,9 @@ __decorate([
32
32
  (0, class_transformer_1.Expose)(),
33
33
  __metadata("design:type", Number)
34
34
  ], UpdatePlayersrDto.prototype, "reducedPlayers", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsOptional)(),
37
+ (0, class_validator_1.IsObject)(),
38
+ (0, class_transformer_1.Expose)(),
39
+ __metadata("design:type", Object)
40
+ ], UpdatePlayersrDto.prototype, "composition", void 0);
@@ -1,7 +1,11 @@
1
1
  import { CreateRuleDto } from '../slot-rule/create-rule.dto';
2
2
  import { SlotDiscountTypeEnum } from './enum/slot-discount-type.enum';
3
3
  export declare class SlotAutocompliteFormDto extends CreateRuleDto {
4
- days: number[];
4
+ /**
5
+ * Индексы дней недели (0 = пн) либо ключи псевдо-дней шаблона
6
+ * (`holiday` / `eve`) — см. `slot-template/special-day`.
7
+ */
8
+ days: Array<number | string>;
5
9
  start: string;
6
10
  end: string;
7
11
  breakInterval: string;
@@ -13,4 +13,8 @@ export declare class SlotTemplateRO extends RO {
13
13
  ruleId: number;
14
14
  tariffId: number;
15
15
  } | null;
16
+ /** В праздники слотов нет, даже если праздничная колонка заполнена. */
17
+ holidayClosed?: boolean;
18
+ /** То же самое для предпраздничных дней. */
19
+ eveClosed?: boolean;
16
20
  }
@@ -44,3 +44,11 @@ __decorate([
44
44
  (0, class_transformer_1.Expose)(),
45
45
  __metadata("design:type", Object)
46
46
  ], SlotTemplateRO.prototype, "anytime", void 0);
47
+ __decorate([
48
+ (0, class_transformer_1.Expose)(),
49
+ __metadata("design:type", Boolean)
50
+ ], SlotTemplateRO.prototype, "holidayClosed", void 0);
51
+ __decorate([
52
+ (0, class_transformer_1.Expose)(),
53
+ __metadata("design:type", Boolean)
54
+ ], SlotTemplateRO.prototype, "eveClosed", void 0);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Псевдо-дни шаблона расписания. Лежат в том же поле `date`, что и индексы
3
+ * дней недели («0».."6"), поэтому значения обязаны быть нечисловыми —
4
+ * иначе `+date` в старом коде молча превратит их в день недели.
5
+ */
6
+ export declare const HOLIDAY_DAY_KEY = "holiday";
7
+ export declare const HOLIDAY_EVE_DAY_KEY = "eve";
8
+ export type SpecialDayKey = typeof HOLIDAY_DAY_KEY | typeof HOLIDAY_EVE_DAY_KEY;
9
+ export declare const SPECIAL_DAY_KEYS: SpecialDayKey[];
10
+ export declare const isSpecialDayKey: (value: unknown) => value is SpecialDayKey;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSpecialDayKey = exports.SPECIAL_DAY_KEYS = exports.HOLIDAY_EVE_DAY_KEY = exports.HOLIDAY_DAY_KEY = void 0;
4
+ /**
5
+ * Псевдо-дни шаблона расписания. Лежат в том же поле `date`, что и индексы
6
+ * дней недели («0».."6"), поэтому значения обязаны быть нечисловыми —
7
+ * иначе `+date` в старом коде молча превратит их в день недели.
8
+ */
9
+ exports.HOLIDAY_DAY_KEY = 'holiday';
10
+ exports.HOLIDAY_EVE_DAY_KEY = 'eve';
11
+ exports.SPECIAL_DAY_KEYS = [exports.HOLIDAY_DAY_KEY, exports.HOLIDAY_EVE_DAY_KEY];
12
+ const isSpecialDayKey = (value) => value === exports.HOLIDAY_DAY_KEY || value === exports.HOLIDAY_EVE_DAY_KEY;
13
+ exports.isSpecialDayKey = isSpecialDayKey;
@@ -13,6 +13,8 @@ export declare class UpdateSlotTemplateDto {
13
13
  anytime?: AnytimeTemplateConfigDto;
14
14
  step?: number;
15
15
  breakMinutes?: number;
16
+ holidayClosed?: boolean;
17
+ eveClosed?: boolean;
16
18
  questroomsIds: number[];
17
19
  start: string;
18
20
  /** Если передаем end шаблон перепишется */
@@ -72,6 +72,18 @@ __decorate([
72
72
  (0, class_transformer_1.Expose)(),
73
73
  __metadata("design:type", Number)
74
74
  ], UpdateSlotTemplateDto.prototype, "breakMinutes", void 0);
75
+ __decorate([
76
+ (0, class_validator_1.IsOptional)(),
77
+ (0, class_validator_1.IsBoolean)(),
78
+ (0, class_transformer_1.Expose)(),
79
+ __metadata("design:type", Boolean)
80
+ ], UpdateSlotTemplateDto.prototype, "holidayClosed", void 0);
81
+ __decorate([
82
+ (0, class_validator_1.IsOptional)(),
83
+ (0, class_validator_1.IsBoolean)(),
84
+ (0, class_transformer_1.Expose)(),
85
+ __metadata("design:type", Boolean)
86
+ ], UpdateSlotTemplateDto.prototype, "eveClosed", void 0);
75
87
  __decorate([
76
88
  (0, class_validator_1.IsArray)(),
77
89
  (0, class_validator_1.ArrayMinSize)(1),
@@ -1,9 +1,19 @@
1
1
  import { TariffReducedRateModeEnum } from './enum/tariff-reduced-rate-mode.enum';
2
+ import { TariffCategoryDto } from './tariff-category.dto';
2
3
  export declare class CreateTariffDto {
3
4
  title: string;
4
5
  price: {
5
6
  [x: string]: number;
6
7
  };
8
+ /**
9
+ * Категории участников: единый список строк в пикере состава. Ровно одна
10
+ * категория с `mode: base`.
11
+ *
12
+ * Опционально ради совместимости: старые клиенты (мобильное приложение,
13
+ * не обновлённые интеграции) шлют `childPriceDescription` + `reduced*`,
14
+ * и бэкенд собирает категории из них сам (см. `categoriesFromTariff`).
15
+ */
16
+ categories?: TariffCategoryDto[];
7
17
  isVariationEligible?: boolean;
8
18
  /**
9
19
  * Доступен ли альтернативный тариф (вариация) для выбора в виджете.
@@ -15,6 +15,7 @@ const class_transformer_1 = require("class-transformer");
15
15
  const class_validator_1 = require("class-validator");
16
16
  const is_not_blank_1 = require("../shared/is-not-blank");
17
17
  const tariff_reduced_rate_mode_enum_1 = require("./enum/tariff-reduced-rate-mode.enum");
18
+ const tariff_category_dto_1 = require("./tariff-category.dto");
18
19
  class CreateTariffDto {
19
20
  }
20
21
  exports.CreateTariffDto = CreateTariffDto;
@@ -28,6 +29,14 @@ __decorate([
28
29
  (0, class_transformer_1.Expose)(),
29
30
  __metadata("design:type", Object)
30
31
  ], CreateTariffDto.prototype, "price", void 0);
32
+ __decorate([
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsArray)(),
35
+ (0, class_validator_1.ValidateNested)({ each: true }),
36
+ (0, class_transformer_1.Type)(() => tariff_category_dto_1.TariffCategoryDto),
37
+ (0, class_transformer_1.Expose)(),
38
+ __metadata("design:type", Array)
39
+ ], CreateTariffDto.prototype, "categories", void 0);
31
40
  __decorate([
32
41
  (0, class_validator_1.IsOptional)(),
33
42
  (0, class_validator_1.IsBoolean)(),
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Как считается цена одного гостя категории относительно базовой доли —
3
+ * `price[состав] / состав`.
4
+ *
5
+ * Категория заменяет три прежние независимые оси состава (взрослые,
6
+ * `price.child` сверху, `reducedPlayers` внутри группы) одним списком строк
7
+ * в пикере. Прежние настройки выражаются без потерь: детская надбавка — это
8
+ * `FIXED` с `countsInPrice: false`, льготная ставка `delta` — `DELTA`, а
9
+ * льготная ставка `fixed` — `FIXED` с `countsInPrice: true`.
10
+ */
11
+ export declare enum TariffCategoryModeEnum {
12
+ /** Полная доля групповой цены. Ровно одна категория тарифа. */
13
+ BASE = "base",
14
+ /** На `value` минорных единиц дешевле базовой доли. */
15
+ DELTA = "delta",
16
+ /** Ровно `value` минорных единиц за гостя. */
17
+ FIXED = "fixed",
18
+ /** На `value` базисных пунктов (1% = 100) дешевле базовой доли. */
19
+ PERCENT = "percent"
20
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TariffCategoryModeEnum = void 0;
4
+ /**
5
+ * Как считается цена одного гостя категории относительно базовой доли —
6
+ * `price[состав] / состав`.
7
+ *
8
+ * Категория заменяет три прежние независимые оси состава (взрослые,
9
+ * `price.child` сверху, `reducedPlayers` внутри группы) одним списком строк
10
+ * в пикере. Прежние настройки выражаются без потерь: детская надбавка — это
11
+ * `FIXED` с `countsInPrice: false`, льготная ставка `delta` — `DELTA`, а
12
+ * льготная ставка `fixed` — `FIXED` с `countsInPrice: true`.
13
+ */
14
+ var TariffCategoryModeEnum;
15
+ (function (TariffCategoryModeEnum) {
16
+ /** Полная доля групповой цены. Ровно одна категория тарифа. */
17
+ TariffCategoryModeEnum["BASE"] = "base";
18
+ /** На `value` минорных единиц дешевле базовой доли. */
19
+ TariffCategoryModeEnum["DELTA"] = "delta";
20
+ /** Ровно `value` минорных единиц за гостя. */
21
+ TariffCategoryModeEnum["FIXED"] = "fixed";
22
+ /** На `value` базисных пунктов (1% = 100) дешевле базовой доли. */
23
+ TariffCategoryModeEnum["PERCENT"] = "percent";
24
+ })(TariffCategoryModeEnum || (exports.TariffCategoryModeEnum = TariffCategoryModeEnum = {}));
@@ -0,0 +1,56 @@
1
+ import { TariffCategoryModeEnum } from './enum/tariff-category-mode.enum';
2
+ /**
3
+ * Категория участников тарифа: одна строка со степпером в пикере состава.
4
+ *
5
+ * Заменяет три прежние оси (`players` по сетке, `price.child` сверху,
6
+ * `reducedPlayers` внутри группы) единым списком. Групповая сетка `price`
7
+ * при этом остаётся: категория описывает не абсолютный билет, а как цена
8
+ * гостя относится к базовой доле состава — иначе нелинейное ценообразование
9
+ * квестов (2 гостя дороже за человека, чем 5) выразить нельзя.
10
+ */
11
+ export type TariffCategory = {
12
+ /**
13
+ * Стабильный идентификатор внутри тарифа. Уезжает в состав заказа и в
14
+ * снимок на броне, поэтому переименование категории цену не меняет.
15
+ */
16
+ key: string;
17
+ /** Название для гостя: «Взрослые», «Дети до 7 лет», «Студенты». */
18
+ title: string;
19
+ /** Правила категории: возраст, документы. Рендерится под названием. */
20
+ description?: string | null;
21
+ mode: TariffCategoryModeEnum;
22
+ /**
23
+ * Смысл зависит от `mode`: скидка (`DELTA`), цена гостя (`FIXED`),
24
+ * скидка в базисных пунктах (`PERCENT`). Для `BASE` игнорируется.
25
+ */
26
+ value: number;
27
+ /**
28
+ * Считается ли гость при выборе уровня сетки `price[N]`.
29
+ *
30
+ * `true` — гость занимает место в составе (льгота: два взрослых и студент
31
+ * считаются группой из трёх). `false` — надбавка сверх групповой цены,
32
+ * так работала старая «цена за ребёнка». В редакторе больше не
33
+ * переключается: новые строки всегда занимают место, `false` остаётся
34
+ * у тарифов, перенесённых из `price.child`.
35
+ */
36
+ countsInPrice: boolean;
37
+ /**
38
+ * Потолок гостей категории в одной броне. `null` — ограничен составом.
39
+ * В редакторе больше не задаётся: вместимости комнаты и сетки тарифа
40
+ * достаточно. Поле оставлено, чтобы уже сохранённые лимиты не отвалились.
41
+ */
42
+ max?: number | null;
43
+ };
44
+ /** Ключ базовой категории у тарифов, прошедших бэкфилл. */
45
+ export declare const BASE_CATEGORY_KEY = "adult";
46
+ /** Ключ категории, в которую бэкфилл переносит `price.child`. */
47
+ export declare const CHILD_CATEGORY_KEY = "child";
48
+ /** Ключ категории, в которую бэкфилл переносит льготную ставку. */
49
+ export declare const REDUCED_CATEGORY_KEY = "reduced";
50
+ /**
51
+ * Состав брони: сколько гостей в каждой категории тарифа.
52
+ *
53
+ * Названо не `participants`, потому что это имя на заказе занято связью с
54
+ * подписантами waiver'ов (`OrderParticipantEntity`).
55
+ */
56
+ export type OrderComposition = Record<string, number>;
@@ -0,0 +1,19 @@
1
+ import { TariffCategoryModeEnum } from './enum/tariff-category-mode.enum';
2
+ export declare class TariffCategoryDto {
3
+ /**
4
+ * Латиница/цифры/дефис: ключ уезжает в JSONB состава заказа и в ключи
5
+ * форм, поэтому пробелы и юникод здесь только мешают.
6
+ */
7
+ key: string;
8
+ title: string;
9
+ description?: string | null;
10
+ mode: TariffCategoryModeEnum;
11
+ /**
12
+ * У базовой категории цена — доля групповой, поэтому значение не нужно.
13
+ * У остальных 0 допустим: «бесплатно» для `FIXED` и «без скидки» для
14
+ * `DELTA` — валидные настройки.
15
+ */
16
+ value: number;
17
+ countsInPrice: boolean;
18
+ max?: number | null;
19
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TariffCategoryDto = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const is_not_blank_1 = require("../shared/is-not-blank");
16
+ const tariff_category_mode_enum_1 = require("./enum/tariff-category-mode.enum");
17
+ class TariffCategoryDto {
18
+ }
19
+ exports.TariffCategoryDto = TariffCategoryDto;
20
+ __decorate([
21
+ (0, class_validator_1.IsString)(),
22
+ (0, class_validator_1.Matches)(/^[a-z0-9_-]{1,32}$/),
23
+ (0, class_transformer_1.Expose)(),
24
+ __metadata("design:type", String)
25
+ ], TariffCategoryDto.prototype, "key", void 0);
26
+ __decorate([
27
+ (0, is_not_blank_1.IsNotBlank)(),
28
+ (0, class_validator_1.MaxLength)(60),
29
+ (0, class_transformer_1.Expose)(),
30
+ __metadata("design:type", String)
31
+ ], TariffCategoryDto.prototype, "title", void 0);
32
+ __decorate([
33
+ (0, class_validator_1.IsOptional)(),
34
+ (0, class_validator_1.IsString)(),
35
+ (0, class_validator_1.MaxLength)(500),
36
+ (0, class_transformer_1.Expose)(),
37
+ __metadata("design:type", String)
38
+ ], TariffCategoryDto.prototype, "description", void 0);
39
+ __decorate([
40
+ (0, class_validator_1.IsEnum)(tariff_category_mode_enum_1.TariffCategoryModeEnum),
41
+ (0, class_transformer_1.Expose)(),
42
+ __metadata("design:type", String)
43
+ ], TariffCategoryDto.prototype, "mode", void 0);
44
+ __decorate([
45
+ (0, class_validator_1.ValidateIf)(({ mode }) => mode !== tariff_category_mode_enum_1.TariffCategoryModeEnum.BASE),
46
+ (0, class_validator_1.IsInt)(),
47
+ (0, class_validator_1.Min)(0),
48
+ (0, class_transformer_1.Expose)(),
49
+ __metadata("design:type", Number)
50
+ ], TariffCategoryDto.prototype, "value", void 0);
51
+ __decorate([
52
+ (0, class_validator_1.IsBoolean)(),
53
+ (0, class_transformer_1.Expose)(),
54
+ __metadata("design:type", Boolean)
55
+ ], TariffCategoryDto.prototype, "countsInPrice", void 0);
56
+ __decorate([
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsInt)(),
59
+ (0, class_validator_1.Min)(0),
60
+ (0, class_transformer_1.Expose)(),
61
+ __metadata("design:type", Number)
62
+ ], TariffCategoryDto.prototype, "max", void 0);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REDUCED_CATEGORY_KEY = exports.CHILD_CATEGORY_KEY = exports.BASE_CATEGORY_KEY = void 0;
4
+ /** Ключ базовой категории у тарифов, прошедших бэкфилл. */
5
+ exports.BASE_CATEGORY_KEY = 'adult';
6
+ /** Ключ категории, в которую бэкфилл переносит `price.child`. */
7
+ exports.CHILD_CATEGORY_KEY = 'child';
8
+ /** Ключ категории, в которую бэкфилл переносит льготную ставку. */
9
+ exports.REDUCED_CATEGORY_KEY = 'reduced';
@@ -1,5 +1,6 @@
1
1
  import { OpenapiTariffRO } from '../openapi/shared/openapi-tariff.ro';
2
2
  import { TariffReducedRateModeEnum } from './enum/tariff-reduced-rate-mode.enum';
3
+ import { TariffCategory } from './tariff-category';
3
4
  /**
4
5
  * Лёгкий RO тарифа для bootstrap'а. В сторе нужны:
5
6
  * - `title` / `clientTitle` (отображение в Select'ах и `slots/*` модалках),
@@ -18,6 +19,12 @@ export declare class TariffLightRO {
18
19
  saved: boolean;
19
20
  title: string;
20
21
  price: OpenapiTariffRO;
22
+ /**
23
+ * Категории участников. Динамический массив, поэтому без `@Type(() => …)`:
24
+ * иначе `Serializer({ excludeExtraneousValues: true })` вычистил бы поля,
25
+ * которых нет в классе-обёртке.
26
+ */
27
+ categories: TariffCategory[];
21
28
  isVariationEligible: boolean;
22
29
  availableInWidget: boolean;
23
30
  clientTitle?: string;
@@ -45,6 +45,10 @@ __decorate([
45
45
  (0, class_transformer_1.Expose)(),
46
46
  __metadata("design:type", openapi_tariff_ro_1.OpenapiTariffRO)
47
47
  ], TariffLightRO.prototype, "price", void 0);
48
+ __decorate([
49
+ (0, class_transformer_1.Expose)(),
50
+ __metadata("design:type", Array)
51
+ ], TariffLightRO.prototype, "categories", void 0);
48
52
  __decorate([
49
53
  (0, class_transformer_1.Expose)(),
50
54
  __metadata("design:type", Boolean)