@purpleschool/gptbot 0.7.14 → 0.7.16
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/api/controllers/http/promocode.ts +1 -0
- package/build/api/controllers/http/promocode.js +1 -0
- package/build/commands/promocode/get-upsell-offer.command.js +18 -0
- package/build/commands/promocode/index.js +1 -0
- package/build/constants/errors/errors.js +18 -13
- package/build/constants/promocode/enums/promocode-promotion.enum.js +1 -0
- package/build/constants/subscription/enums/subscription-feature-type.enum.js +2 -0
- package/build/models/promocode.schema.js +2 -0
- package/build/models/subscription-feature.schema.js +7 -1
- package/commands/promocode/get-upsell-offer.command.ts +23 -0
- package/commands/promocode/index.ts +1 -0
- package/constants/errors/errors.ts +18 -14
- package/constants/promocode/enums/promocode-promotion.enum.ts +1 -0
- package/constants/subscription/enums/subscription-feature-type.enum.ts +2 -0
- package/models/promocode.schema.ts +2 -0
- package/models/subscription-feature.schema.ts +8 -0
- package/package.json +1 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetUpsellOfferCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const models_1 = require("../../models");
|
|
6
|
+
var GetUpsellOfferCommand;
|
|
7
|
+
(function (GetUpsellOfferCommand) {
|
|
8
|
+
GetUpsellOfferCommand.RequestSchema = zod_1.z.object({});
|
|
9
|
+
GetUpsellOfferCommand.ResponseSchema = zod_1.z.object({
|
|
10
|
+
data: zod_1.z.object({
|
|
11
|
+
isEligible: zod_1.z.boolean(),
|
|
12
|
+
promocode: zod_1.z.string().nullable(),
|
|
13
|
+
}),
|
|
14
|
+
});
|
|
15
|
+
GetUpsellOfferCommand.ResponseByUUIDSchema = zod_1.z.object({
|
|
16
|
+
data: models_1.PromocodeSchema,
|
|
17
|
+
});
|
|
18
|
+
})(GetUpsellOfferCommand || (exports.GetUpsellOfferCommand = GetUpsellOfferCommand = {}));
|
|
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./create-promocode.command"), exports);
|
|
18
18
|
__exportStar(require("./delete-promocode.command"), exports);
|
|
19
19
|
__exportStar(require("./find-promocode.command"), exports);
|
|
20
|
+
__exportStar(require("./get-upsell-offer.command"), exports);
|
|
20
21
|
__exportStar(require("./update-promocode.command"), exports);
|
|
21
22
|
__exportStar(require("./validate-promocode.command"), exports);
|
|
@@ -1582,68 +1582,73 @@ exports.ERRORS = {
|
|
|
1582
1582
|
message: 'Вложения изображений и текстовых файлов нельзя использовать вместе',
|
|
1583
1583
|
httpCode: 400,
|
|
1584
1584
|
},
|
|
1585
|
-
|
|
1585
|
+
ORDER_CHECK_USER_HAS_PAID_ORDERS_ERROR: {
|
|
1586
1586
|
code: 'A338',
|
|
1587
|
+
message: 'Произошла ошибка при проверке наличия покупок у пользователя',
|
|
1588
|
+
httpCode: 500,
|
|
1589
|
+
},
|
|
1590
|
+
PRESENTATION_CONFIG_ERROR: {
|
|
1591
|
+
code: 'A339',
|
|
1587
1592
|
message: 'Произошла ошибка при получении конфигурации презентации',
|
|
1588
1593
|
httpCode: 500,
|
|
1589
1594
|
},
|
|
1590
1595
|
PRESENTATION_CREATE_ERROR: {
|
|
1591
|
-
code: '
|
|
1596
|
+
code: 'A340',
|
|
1592
1597
|
message: 'Произошла ошибка при создании презентации',
|
|
1593
1598
|
httpCode: 500,
|
|
1594
1599
|
},
|
|
1595
1600
|
PRESENTATION_FIND_ERROR: {
|
|
1596
|
-
code: '
|
|
1601
|
+
code: 'A341',
|
|
1597
1602
|
message: 'Произошла ошибка при поиске презентации',
|
|
1598
1603
|
httpCode: 500,
|
|
1599
1604
|
},
|
|
1600
1605
|
PRESENTATION_NOT_FOUND: {
|
|
1601
|
-
code: '
|
|
1606
|
+
code: 'A342',
|
|
1602
1607
|
message: 'Презентация не найдена',
|
|
1603
1608
|
httpCode: 404,
|
|
1604
1609
|
},
|
|
1605
1610
|
PRESENTATION_SLIDES_GENERATE_ERROR: {
|
|
1606
|
-
code: '
|
|
1611
|
+
code: 'A343',
|
|
1607
1612
|
message: 'Произошла ошибка при генерации слайдов презентации',
|
|
1608
1613
|
httpCode: 500,
|
|
1609
1614
|
},
|
|
1610
1615
|
PRESENTATION_UPDATE_SLIDE_OUTLINE_ERROR: {
|
|
1611
|
-
code: '
|
|
1616
|
+
code: 'A344',
|
|
1612
1617
|
message: 'Произошла ошибка при редактировании макета слайда',
|
|
1613
1618
|
httpCode: 500,
|
|
1614
1619
|
},
|
|
1615
1620
|
PRESENTATION_REPOSITION_SLIDE_OUTLINE_ERROR: {
|
|
1616
|
-
code: '
|
|
1621
|
+
code: 'A345',
|
|
1617
1622
|
message: 'Произошла ошибка при перемещении макета слайда',
|
|
1618
1623
|
httpCode: 500,
|
|
1619
1624
|
},
|
|
1620
1625
|
PRESENTATION_DELETE_SLIDE_OUTLINE_ERROR: {
|
|
1621
|
-
code: '
|
|
1626
|
+
code: 'A346',
|
|
1622
1627
|
message: 'Произошла ошибка при удалении макета слайда',
|
|
1623
1628
|
httpCode: 500,
|
|
1624
1629
|
},
|
|
1625
1630
|
PRESENTATION_DELETE_PRESENTATION_ERROR: {
|
|
1626
|
-
code: '
|
|
1631
|
+
code: 'A347',
|
|
1627
1632
|
message: 'Произошла ошибка при удалении презентации',
|
|
1628
1633
|
httpCode: 500,
|
|
1629
1634
|
},
|
|
1630
1635
|
PRESENTATION_UPDATE_PRESENTATION_OUTLINE_ERROR: {
|
|
1631
|
-
code: '
|
|
1636
|
+
code: 'A348',
|
|
1632
1637
|
message: 'Произошла ошибка при обновлении макета презентации',
|
|
1633
1638
|
httpCode: 500,
|
|
1634
1639
|
},
|
|
1635
1640
|
PRESENTATION_EXPORT_AS_PPTX_ERROR: {
|
|
1636
|
-
code: '
|
|
1641
|
+
code: 'A349',
|
|
1637
1642
|
message: 'Произошла ошибка при экспорте презентации в PPTX',
|
|
1638
1643
|
httpCode: 500,
|
|
1639
1644
|
},
|
|
1640
1645
|
PRESENTATION_DELETE_ALL_USER_PRESENTATIONS_ERROR: {
|
|
1641
|
-
code: '
|
|
1646
|
+
code: 'A350',
|
|
1642
1647
|
message: 'Произошла ошибка при удалении презентаций пользователя',
|
|
1643
1648
|
httpCode: 500,
|
|
1644
1649
|
},
|
|
1645
1650
|
PRESENTATION_UPDATE_ERROR: {
|
|
1646
|
-
code: '
|
|
1651
|
+
code: 'A351',
|
|
1647
1652
|
message: 'Произошла ошибка при обновлении презентации',
|
|
1648
1653
|
httpCode: 500,
|
|
1649
1654
|
},
|
|
@@ -4,4 +4,5 @@ exports.PROMOCODE_PROMOTION = void 0;
|
|
|
4
4
|
var PROMOCODE_PROMOTION;
|
|
5
5
|
(function (PROMOCODE_PROMOTION) {
|
|
6
6
|
PROMOCODE_PROMOTION["BONUS"] = "bonus";
|
|
7
|
+
PROMOCODE_PROMOTION["CHAT_UPSELL"] = "chat_upsell";
|
|
7
8
|
})(PROMOCODE_PROMOTION || (exports.PROMOCODE_PROMOTION = PROMOCODE_PROMOTION = {}));
|
|
@@ -17,6 +17,7 @@ var SUBSCRIPTION_FEATURE_TYPE;
|
|
|
17
17
|
SUBSCRIPTION_FEATURE_TYPE["VIDEO_QUOTA"] = "video_quota";
|
|
18
18
|
SUBSCRIPTION_FEATURE_TYPE["VIDEO_MODEL_ACCESS"] = "video_model_access";
|
|
19
19
|
SUBSCRIPTION_FEATURE_TYPE["EXTENDED_CONTEXT"] = "extended_context";
|
|
20
|
+
SUBSCRIPTION_FEATURE_TYPE["PRESENTATION_QUOTA"] = "presentation_quota";
|
|
20
21
|
})(SUBSCRIPTION_FEATURE_TYPE || (exports.SUBSCRIPTION_FEATURE_TYPE = SUBSCRIPTION_FEATURE_TYPE = {}));
|
|
21
22
|
var SUBSCRIPTION_FEATURE_KIND;
|
|
22
23
|
(function (SUBSCRIPTION_FEATURE_KIND) {
|
|
@@ -27,4 +28,5 @@ var SUBSCRIPTION_FEATURE_KIND;
|
|
|
27
28
|
SUBSCRIPTION_FEATURE_KIND["STT"] = "stt";
|
|
28
29
|
SUBSCRIPTION_FEATURE_KIND["PRESENTATIONS"] = "presentations";
|
|
29
30
|
SUBSCRIPTION_FEATURE_KIND["VIDEO"] = "video";
|
|
31
|
+
SUBSCRIPTION_FEATURE_KIND["PRESENTATION"] = "presentation";
|
|
30
32
|
})(SUBSCRIPTION_FEATURE_KIND || (exports.SUBSCRIPTION_FEATURE_KIND = SUBSCRIPTION_FEATURE_KIND = {}));
|
|
@@ -13,6 +13,8 @@ exports.PromocodeSchema = zod_1.z.object({
|
|
|
13
13
|
status: zod_1.z.nativeEnum(constants_1.PROMOCODE_STATUS),
|
|
14
14
|
forFirstPurchase: zod_1.z.boolean().optional(),
|
|
15
15
|
endDate: zod_1.z.date().nullable(),
|
|
16
|
+
userId: zod_1.z.string().uuid().nullable(),
|
|
17
|
+
unregisteredUserId: zod_1.z.string().uuid().nullable(),
|
|
16
18
|
createdAt: zod_1.z.date(),
|
|
17
19
|
updatedAt: zod_1.z.date(),
|
|
18
20
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SubscriptionFeatureSchema = exports.VideoModelAccessFeatureSchema = exports.VideoQuotaFeatureSchema = exports.STTQuotaFeatureSchema = exports.STTModelAccessFeatureSchema = exports.TTSQuotaFeatureSchema = exports.ImageGenerationQuotaFeatureSchema = exports.TtsModelAccessFeatureSchema = exports.AdvancedToolsAccessFeatureSchema = exports.WebSearchFeatureSchema = exports.ExtendedContextFeatureSchema = exports.MaxInputLengthFeatureSchema = exports.RequestsQuotaFeatureSchema = exports.AiModelAccessFeatureSchema = exports.SubscriptionFeatureBaseSchema = void 0;
|
|
3
|
+
exports.SubscriptionFeatureSchema = exports.PresentationQuotaFeatureSchema = exports.VideoModelAccessFeatureSchema = exports.VideoQuotaFeatureSchema = exports.STTQuotaFeatureSchema = exports.STTModelAccessFeatureSchema = exports.TTSQuotaFeatureSchema = exports.ImageGenerationQuotaFeatureSchema = exports.TtsModelAccessFeatureSchema = exports.AdvancedToolsAccessFeatureSchema = exports.WebSearchFeatureSchema = exports.ExtendedContextFeatureSchema = exports.MaxInputLengthFeatureSchema = exports.RequestsQuotaFeatureSchema = exports.AiModelAccessFeatureSchema = exports.SubscriptionFeatureBaseSchema = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
exports.SubscriptionFeatureBaseSchema = zod_1.z.object({
|
|
@@ -82,6 +82,11 @@ exports.VideoModelAccessFeatureSchema = exports.SubscriptionFeatureBaseSchema.ex
|
|
|
82
82
|
isAvailable: zod_1.z.boolean(),
|
|
83
83
|
modelId: zod_1.z.string(),
|
|
84
84
|
});
|
|
85
|
+
exports.PresentationQuotaFeatureSchema = exports.SubscriptionFeatureBaseSchema.extend({
|
|
86
|
+
kind: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_KIND.PRESENTATION),
|
|
87
|
+
type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_QUOTA),
|
|
88
|
+
value: zod_1.z.number(),
|
|
89
|
+
});
|
|
85
90
|
exports.SubscriptionFeatureSchema = zod_1.z.union([
|
|
86
91
|
exports.AiModelAccessFeatureSchema,
|
|
87
92
|
exports.RequestsQuotaFeatureSchema,
|
|
@@ -96,4 +101,5 @@ exports.SubscriptionFeatureSchema = zod_1.z.union([
|
|
|
96
101
|
exports.VideoQuotaFeatureSchema,
|
|
97
102
|
exports.VideoModelAccessFeatureSchema,
|
|
98
103
|
exports.ExtendedContextFeatureSchema,
|
|
104
|
+
exports.PresentationQuotaFeatureSchema,
|
|
99
105
|
]);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { PromocodeSchema } from '../../models';
|
|
3
|
+
|
|
4
|
+
export namespace GetUpsellOfferCommand {
|
|
5
|
+
export const RequestSchema = z.object({});
|
|
6
|
+
|
|
7
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
8
|
+
|
|
9
|
+
export const ResponseSchema = z.object({
|
|
10
|
+
data: z.object({
|
|
11
|
+
isEligible: z.boolean(),
|
|
12
|
+
promocode: z.string().nullable(),
|
|
13
|
+
}),
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
17
|
+
|
|
18
|
+
export const ResponseByUUIDSchema = z.object({
|
|
19
|
+
data: PromocodeSchema,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export type ResponseByUUID = z.infer<typeof ResponseByUUIDSchema>;
|
|
23
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './create-promocode.command';
|
|
2
2
|
export * from './delete-promocode.command';
|
|
3
3
|
export * from './find-promocode.command';
|
|
4
|
+
export * from './get-upsell-offer.command';
|
|
4
5
|
export * from './update-promocode.command';
|
|
5
6
|
export * from './validate-promocode.command';
|
|
@@ -1589,70 +1589,74 @@ export const ERRORS = {
|
|
|
1589
1589
|
message: 'Вложения изображений и текстовых файлов нельзя использовать вместе',
|
|
1590
1590
|
httpCode: 400,
|
|
1591
1591
|
},
|
|
1592
|
-
|
|
1592
|
+
ORDER_CHECK_USER_HAS_PAID_ORDERS_ERROR: {
|
|
1593
1593
|
code: 'A338',
|
|
1594
|
+
message: 'Произошла ошибка при проверке наличия покупок у пользователя',
|
|
1595
|
+
httpCode: 500,
|
|
1596
|
+
},
|
|
1597
|
+
PRESENTATION_CONFIG_ERROR: {
|
|
1598
|
+
code: 'A339',
|
|
1594
1599
|
message: 'Произошла ошибка при получении конфигурации презентации',
|
|
1595
1600
|
httpCode: 500,
|
|
1596
1601
|
},
|
|
1597
1602
|
PRESENTATION_CREATE_ERROR: {
|
|
1598
|
-
code: '
|
|
1603
|
+
code: 'A340',
|
|
1599
1604
|
message: 'Произошла ошибка при создании презентации',
|
|
1600
1605
|
httpCode: 500,
|
|
1601
1606
|
},
|
|
1602
1607
|
PRESENTATION_FIND_ERROR: {
|
|
1603
|
-
code: '
|
|
1608
|
+
code: 'A341',
|
|
1604
1609
|
message: 'Произошла ошибка при поиске презентации',
|
|
1605
1610
|
httpCode: 500,
|
|
1606
1611
|
},
|
|
1607
1612
|
PRESENTATION_NOT_FOUND: {
|
|
1608
|
-
code: '
|
|
1613
|
+
code: 'A342',
|
|
1609
1614
|
message: 'Презентация не найдена',
|
|
1610
1615
|
httpCode: 404,
|
|
1611
1616
|
},
|
|
1612
1617
|
PRESENTATION_SLIDES_GENERATE_ERROR: {
|
|
1613
|
-
code: '
|
|
1618
|
+
code: 'A343',
|
|
1614
1619
|
message: 'Произошла ошибка при генерации слайдов презентации',
|
|
1615
1620
|
httpCode: 500,
|
|
1616
1621
|
},
|
|
1617
1622
|
PRESENTATION_UPDATE_SLIDE_OUTLINE_ERROR: {
|
|
1618
|
-
code: '
|
|
1623
|
+
code: 'A344',
|
|
1619
1624
|
message: 'Произошла ошибка при редактировании макета слайда',
|
|
1620
1625
|
httpCode: 500,
|
|
1621
1626
|
},
|
|
1622
1627
|
PRESENTATION_REPOSITION_SLIDE_OUTLINE_ERROR: {
|
|
1623
|
-
code: '
|
|
1628
|
+
code: 'A345',
|
|
1624
1629
|
message: 'Произошла ошибка при перемещении макета слайда',
|
|
1625
1630
|
httpCode: 500,
|
|
1626
1631
|
},
|
|
1627
1632
|
PRESENTATION_DELETE_SLIDE_OUTLINE_ERROR: {
|
|
1628
|
-
code: '
|
|
1633
|
+
code: 'A346',
|
|
1629
1634
|
message: 'Произошла ошибка при удалении макета слайда',
|
|
1630
1635
|
httpCode: 500,
|
|
1631
1636
|
},
|
|
1632
1637
|
PRESENTATION_DELETE_PRESENTATION_ERROR: {
|
|
1633
|
-
code: '
|
|
1638
|
+
code: 'A347',
|
|
1634
1639
|
message: 'Произошла ошибка при удалении презентации',
|
|
1635
1640
|
httpCode: 500,
|
|
1636
1641
|
},
|
|
1637
1642
|
PRESENTATION_UPDATE_PRESENTATION_OUTLINE_ERROR: {
|
|
1638
|
-
code: '
|
|
1643
|
+
code: 'A348',
|
|
1639
1644
|
message: 'Произошла ошибка при обновлении макета презентации',
|
|
1640
1645
|
httpCode: 500,
|
|
1641
1646
|
},
|
|
1642
1647
|
PRESENTATION_EXPORT_AS_PPTX_ERROR: {
|
|
1643
|
-
code: '
|
|
1648
|
+
code: 'A349',
|
|
1644
1649
|
message: 'Произошла ошибка при экспорте презентации в PPTX',
|
|
1645
1650
|
httpCode: 500,
|
|
1646
1651
|
},
|
|
1647
1652
|
PRESENTATION_DELETE_ALL_USER_PRESENTATIONS_ERROR: {
|
|
1648
|
-
code: '
|
|
1653
|
+
code: 'A350',
|
|
1649
1654
|
message: 'Произошла ошибка при удалении презентаций пользователя',
|
|
1650
1655
|
httpCode: 500,
|
|
1651
1656
|
},
|
|
1652
1657
|
PRESENTATION_UPDATE_ERROR: {
|
|
1653
|
-
code: '
|
|
1658
|
+
code: 'A351',
|
|
1654
1659
|
message: 'Произошла ошибка при обновлении презентации',
|
|
1655
1660
|
httpCode: 500,
|
|
1656
1661
|
},
|
|
1657
1662
|
};
|
|
1658
|
-
|
|
@@ -13,6 +13,7 @@ export enum SUBSCRIPTION_FEATURE_TYPE {
|
|
|
13
13
|
VIDEO_QUOTA = 'video_quota',
|
|
14
14
|
VIDEO_MODEL_ACCESS = 'video_model_access',
|
|
15
15
|
EXTENDED_CONTEXT = 'extended_context',
|
|
16
|
+
PRESENTATION_QUOTA = 'presentation_quota',
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export enum SUBSCRIPTION_FEATURE_KIND {
|
|
@@ -23,4 +24,5 @@ export enum SUBSCRIPTION_FEATURE_KIND {
|
|
|
23
24
|
STT = 'stt',
|
|
24
25
|
PRESENTATIONS = 'presentations',
|
|
25
26
|
VIDEO = 'video',
|
|
27
|
+
PRESENTATION = 'presentation',
|
|
26
28
|
}
|
|
@@ -11,6 +11,8 @@ export const PromocodeSchema = z.object({
|
|
|
11
11
|
status: z.nativeEnum(PROMOCODE_STATUS),
|
|
12
12
|
forFirstPurchase: z.boolean().optional(),
|
|
13
13
|
endDate: z.date().nullable(),
|
|
14
|
+
userId: z.string().uuid().nullable(),
|
|
15
|
+
unregisteredUserId: z.string().uuid().nullable(),
|
|
14
16
|
|
|
15
17
|
createdAt: z.date(),
|
|
16
18
|
updatedAt: z.date(),
|
|
@@ -112,6 +112,13 @@ export const VideoModelAccessFeatureSchema = SubscriptionFeatureBaseSchema.exten
|
|
|
112
112
|
});
|
|
113
113
|
export type VideoModelAccessFeature = z.infer<typeof VideoModelAccessFeatureSchema>;
|
|
114
114
|
|
|
115
|
+
export const PresentationQuotaFeatureSchema = SubscriptionFeatureBaseSchema.extend({
|
|
116
|
+
kind: z.literal(SUBSCRIPTION_FEATURE_KIND.PRESENTATION),
|
|
117
|
+
type: z.literal(SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_QUOTA),
|
|
118
|
+
value: z.number(),
|
|
119
|
+
});
|
|
120
|
+
export type PresentationQuotaFeature = z.infer<typeof PresentationQuotaFeatureSchema>;
|
|
121
|
+
|
|
115
122
|
export const SubscriptionFeatureSchema = z.union([
|
|
116
123
|
AiModelAccessFeatureSchema,
|
|
117
124
|
RequestsQuotaFeatureSchema,
|
|
@@ -126,6 +133,7 @@ export const SubscriptionFeatureSchema = z.union([
|
|
|
126
133
|
VideoQuotaFeatureSchema,
|
|
127
134
|
VideoModelAccessFeatureSchema,
|
|
128
135
|
ExtendedContextFeatureSchema,
|
|
136
|
+
PresentationQuotaFeatureSchema,
|
|
129
137
|
]);
|
|
130
138
|
|
|
131
139
|
export type SubscriptionFeature = z.infer<typeof SubscriptionFeatureSchema>;
|