@purpleschool/student-works 1.5.10 → 1.5.12

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 (70) hide show
  1. package/build/commands/product/create-product.command.d.ts +32 -0
  2. package/build/commands/product/create-product.command.d.ts.map +1 -1
  3. package/build/commands/product/find-product.command.d.ts +32 -0
  4. package/build/commands/product/find-product.command.d.ts.map +1 -1
  5. package/build/commands/product/get-my-products.command.d.ts +16 -0
  6. package/build/commands/product/get-my-products.command.d.ts.map +1 -1
  7. package/build/commands/product/update-product.command.d.ts +32 -0
  8. package/build/commands/product/update-product.command.d.ts.map +1 -1
  9. package/build/commands/subscription/create-subscription.command.d.ts +29 -5
  10. package/build/commands/subscription/create-subscription.command.d.ts.map +1 -1
  11. package/build/commands/subscription/find-subscription.command.d.ts +39 -3
  12. package/build/commands/subscription/find-subscription.command.d.ts.map +1 -1
  13. package/build/commands/subscription/get-available-upgrades.command.d.ts +13 -1
  14. package/build/commands/subscription/get-available-upgrades.command.d.ts.map +1 -1
  15. package/build/commands/subscription/get-free-subscription.command.d.ts +13 -1
  16. package/build/commands/subscription/get-free-subscription.command.d.ts.map +1 -1
  17. package/build/commands/subscription/update-subscription.command.d.ts +29 -5
  18. package/build/commands/subscription/update-subscription.command.d.ts.map +1 -1
  19. package/build/commands/user/find-user-by-uuid.command.d.ts +2 -2
  20. package/build/commands/user/find-users-by-criteria.command.d.ts +2 -2
  21. package/build/commands/user/up-token-bonus-balance.command.d.ts +2 -2
  22. package/build/commands/user-balance/get-user-balance.command.d.ts +1 -0
  23. package/build/commands/user-balance/get-user-balance.command.d.ts.map +1 -1
  24. package/build/commands/user-balance/get-user-balance.command.js +1 -0
  25. package/build/commands/user-to-subscription/get-user-to-subscriptions.command.d.ts +13 -1
  26. package/build/commands/user-to-subscription/get-user-to-subscriptions.command.d.ts.map +1 -1
  27. package/build/constants/errors/errors.d.ts +37 -0
  28. package/build/constants/errors/errors.d.ts.map +1 -1
  29. package/build/constants/errors/errors.js +38 -0
  30. package/build/constants/index.d.ts +1 -0
  31. package/build/constants/index.d.ts.map +1 -1
  32. package/build/constants/index.js +1 -0
  33. package/build/constants/subscription/enums/subscription-feature-type.enum.d.ts +5 -1
  34. package/build/constants/subscription/enums/subscription-feature-type.enum.d.ts.map +1 -1
  35. package/build/constants/subscription/enums/subscription-feature-type.enum.js +4 -0
  36. package/build/constants/token-reservation/enums/index.d.ts +2 -0
  37. package/build/constants/token-reservation/enums/index.d.ts.map +1 -0
  38. package/build/constants/token-reservation/enums/index.js +17 -0
  39. package/build/constants/token-reservation/enums/token-reservation-status.enum.d.ts +7 -0
  40. package/build/constants/token-reservation/enums/token-reservation-status.enum.d.ts.map +1 -0
  41. package/build/constants/token-reservation/enums/token-reservation-status.enum.js +10 -0
  42. package/build/constants/token-reservation/index.d.ts +2 -0
  43. package/build/constants/token-reservation/index.d.ts.map +1 -0
  44. package/build/constants/token-reservation/index.js +17 -0
  45. package/build/models/presentation/slide-content.schema.js +2 -2
  46. package/build/models/product.schema.d.ts +16 -0
  47. package/build/models/product.schema.d.ts.map +1 -1
  48. package/build/models/product.schema.js +2 -0
  49. package/build/models/subscription-feature.schema.d.ts +30 -2
  50. package/build/models/subscription-feature.schema.d.ts.map +1 -1
  51. package/build/models/subscription-feature.schema.js +21 -1
  52. package/build/models/subscription-upgrade-schema.d.ts +13 -1
  53. package/build/models/subscription-upgrade-schema.d.ts.map +1 -1
  54. package/build/models/subscription.schema.d.ts +65 -5
  55. package/build/models/subscription.schema.d.ts.map +1 -1
  56. package/build/models/user-to-product.schema.d.ts +16 -0
  57. package/build/models/user-to-product.schema.d.ts.map +1 -1
  58. package/build/models/user-to-subscription.schema.d.ts +13 -1
  59. package/build/models/user-to-subscription.schema.d.ts.map +1 -1
  60. package/commands/user-balance/get-user-balance.command.ts +1 -0
  61. package/constants/errors/errors.ts +38 -0
  62. package/constants/index.ts +1 -0
  63. package/constants/subscription/enums/subscription-feature-type.enum.ts +4 -0
  64. package/constants/token-reservation/enums/index.ts +1 -0
  65. package/constants/token-reservation/enums/token-reservation-status.enum.ts +6 -0
  66. package/constants/token-reservation/index.ts +1 -0
  67. package/models/presentation/slide-content.schema.ts +2 -2
  68. package/models/product.schema.ts +2 -0
  69. package/models/subscription-feature.schema.ts +24 -0
  70. package/package.json +1 -1
@@ -15,4 +15,5 @@ export * from './writer';
15
15
  export * from './files';
16
16
  export * from './common';
17
17
  export * from './presentation';
18
+ export * from './token-reservation';
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../constants/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,qBAAqB,CAAC;AACpC,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
@@ -31,3 +31,4 @@ __exportStar(require("./writer"), exports);
31
31
  __exportStar(require("./files"), exports);
32
32
  __exportStar(require("./common"), exports);
33
33
  __exportStar(require("./presentation"), exports);
34
+ __exportStar(require("./token-reservation"), exports);
@@ -1,4 +1,8 @@
1
1
  export declare enum SUBSCRIPTION_FEATURE_TYPE {
2
- GENERIC = "generic"
2
+ GENERIC = "generic",
3
+ CREDITS = "credits",
4
+ WRITER_PAGES = "writer_pages",
5
+ PRESENTATION_SLIDES = "presentation_slides",
6
+ EDU_TASKS = "edu_tasks"
3
7
  }
4
8
  //# sourceMappingURL=subscription-feature-type.enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-feature-type.enum.d.ts","sourceRoot":"","sources":["../../../../constants/subscription/enums/subscription-feature-type.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,yBAAyB;IACjC,OAAO,YAAY;CACtB"}
1
+ {"version":3,"file":"subscription-feature-type.enum.d.ts","sourceRoot":"","sources":["../../../../constants/subscription/enums/subscription-feature-type.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,yBAAyB;IACjC,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,YAAY,iBAAiB;IAC7B,mBAAmB,wBAAwB;IAC3C,SAAS,cAAc;CAC1B"}
@@ -4,4 +4,8 @@ exports.SUBSCRIPTION_FEATURE_TYPE = void 0;
4
4
  var SUBSCRIPTION_FEATURE_TYPE;
5
5
  (function (SUBSCRIPTION_FEATURE_TYPE) {
6
6
  SUBSCRIPTION_FEATURE_TYPE["GENERIC"] = "generic";
7
+ SUBSCRIPTION_FEATURE_TYPE["CREDITS"] = "credits";
8
+ SUBSCRIPTION_FEATURE_TYPE["WRITER_PAGES"] = "writer_pages";
9
+ SUBSCRIPTION_FEATURE_TYPE["PRESENTATION_SLIDES"] = "presentation_slides";
10
+ SUBSCRIPTION_FEATURE_TYPE["EDU_TASKS"] = "edu_tasks";
7
11
  })(SUBSCRIPTION_FEATURE_TYPE || (exports.SUBSCRIPTION_FEATURE_TYPE = SUBSCRIPTION_FEATURE_TYPE = {}));
@@ -0,0 +1,2 @@
1
+ export * from './token-reservation-status.enum';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../constants/token-reservation/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./token-reservation-status.enum"), exports);
@@ -0,0 +1,7 @@
1
+ export declare enum TOKEN_RESERVATION_STATUS {
2
+ PENDING = "pending",
3
+ COMMITTED = "committed",
4
+ RELEASED = "released",
5
+ EXPIRED = "expired"
6
+ }
7
+ //# sourceMappingURL=token-reservation-status.enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-reservation-status.enum.d.ts","sourceRoot":"","sources":["../../../../constants/token-reservation/enums/token-reservation-status.enum.ts"],"names":[],"mappings":"AAAA,oBAAY,wBAAwB;IAChC,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACtB"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TOKEN_RESERVATION_STATUS = void 0;
4
+ var TOKEN_RESERVATION_STATUS;
5
+ (function (TOKEN_RESERVATION_STATUS) {
6
+ TOKEN_RESERVATION_STATUS["PENDING"] = "pending";
7
+ TOKEN_RESERVATION_STATUS["COMMITTED"] = "committed";
8
+ TOKEN_RESERVATION_STATUS["RELEASED"] = "released";
9
+ TOKEN_RESERVATION_STATUS["EXPIRED"] = "expired";
10
+ })(TOKEN_RESERVATION_STATUS || (exports.TOKEN_RESERVATION_STATUS = TOKEN_RESERVATION_STATUS = {}));
@@ -0,0 +1,2 @@
1
+ export * from './enums';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../constants/token-reservation/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./enums"), exports);
@@ -133,13 +133,13 @@ exports.TextSlideDataSchema = zod_1.z.object({
133
133
  .max(70),
134
134
  description: zod_1.z
135
135
  .string()
136
- .describe('Expository prose split into 2–3 paragraphs separated by \\n\\n (double newline). Total length 300–800 characters. ' +
136
+ .describe('Expository prose split into 2–3 paragraphs separated by \\n\\n (double newline). Total length 180–800 characters. ' +
137
137
  'Use **bold** to highlight 1–3 key terms per paragraph (NOT entire sentences). ' +
138
138
  'Use *italics* for definitions, counter-points, or light emphasis (1 per paragraph max). ' +
139
139
  'NO bullet points, NO markdown headers, NO numbered lists. ' +
140
140
  'Each paragraph covers ONE focused idea: e.g. context → main argument → implication. ' +
141
141
  'Do NOT start consecutive paragraphs with the same word. Do NOT cut text short mid-sentence.')
142
- .min(300)
142
+ .min(180)
143
143
  .max(800),
144
144
  version: zod_1.z.literal(1),
145
145
  });
@@ -5,6 +5,22 @@ export declare const ProductSchema: z.ZodObject<{
5
5
  description: z.ZodString;
6
6
  price: z.ZodNumber;
7
7
  tokens: z.ZodNumber;
8
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
9
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
10
+ name: z.ZodString;
11
+ }, z.core.$strip>, z.ZodObject<{
12
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
13
+ name: z.ZodString;
14
+ }, z.core.$strip>, z.ZodObject<{
15
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
16
+ name: z.ZodString;
17
+ }, z.core.$strip>, z.ZodObject<{
18
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
19
+ name: z.ZodString;
20
+ }, z.core.$strip>, z.ZodObject<{
21
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
22
+ name: z.ZodString;
23
+ }, z.core.$strip>], "type">>;
8
24
  createdAt: z.ZodDate;
9
25
  updatedAt: z.ZodDate;
10
26
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"product.schema.d.ts","sourceRoot":"","sources":["../../models/product.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,aAAa;;;;;;;;iBAQxB,CAAC"}
1
+ {"version":3,"file":"product.schema.d.ts","sourceRoot":"","sources":["../../models/product.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;iBASxB,CAAC"}
@@ -2,12 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProductSchema = void 0;
4
4
  const zod_1 = require("zod");
5
+ const subscription_feature_schema_1 = require("./subscription-feature.schema");
5
6
  exports.ProductSchema = zod_1.z.object({
6
7
  uuid: zod_1.z.string().uuid(),
7
8
  name: zod_1.z.string().min(3).max(16384),
8
9
  description: zod_1.z.string().min(3).max(16384),
9
10
  price: zod_1.z.number(),
10
11
  tokens: zod_1.z.number(),
12
+ features: zod_1.z.array(subscription_feature_schema_1.SubscriptionFeatureSchema),
11
13
  createdAt: zod_1.z.date(),
12
14
  updatedAt: zod_1.z.date(),
13
15
  });
@@ -1,11 +1,39 @@
1
1
  import { SUBSCRIPTION_FEATURE_TYPE } from '../constants';
2
2
  import { z } from 'zod';
3
3
  export declare const GenericSubscriptionFeatureSchema: z.ZodObject<{
4
- type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE>;
4
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
5
+ name: z.ZodString;
6
+ }, z.core.$strip>;
7
+ export declare const CreditsSubscriptionFeatureSchema: z.ZodObject<{
8
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
9
+ name: z.ZodString;
10
+ }, z.core.$strip>;
11
+ export declare const WriterPagesSubscriptionFeatureSchema: z.ZodObject<{
12
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
13
+ name: z.ZodString;
14
+ }, z.core.$strip>;
15
+ export declare const PresentationSlidesSubscriptionFeatureSchema: z.ZodObject<{
16
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
17
+ name: z.ZodString;
18
+ }, z.core.$strip>;
19
+ export declare const EduTasksSubscriptionFeatureSchema: z.ZodObject<{
20
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
5
21
  name: z.ZodString;
6
22
  }, z.core.$strip>;
7
23
  export declare const SubscriptionFeatureSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
8
- type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE>;
24
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
25
+ name: z.ZodString;
26
+ }, z.core.$strip>, z.ZodObject<{
27
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
28
+ name: z.ZodString;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
31
+ name: z.ZodString;
32
+ }, z.core.$strip>, z.ZodObject<{
33
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
34
+ name: z.ZodString;
35
+ }, z.core.$strip>, z.ZodObject<{
36
+ type: z.ZodLiteral<SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
9
37
  name: z.ZodString;
10
38
  }, z.core.$strip>], "type">;
11
39
  //# sourceMappingURL=subscription-feature.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-feature.schema.d.ts","sourceRoot":"","sources":["../../models/subscription-feature.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gCAAgC;;;iBAG3C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;2BAEpC,CAAC"}
1
+ {"version":3,"file":"subscription-feature.schema.d.ts","sourceRoot":"","sources":["../../models/subscription-feature.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gCAAgC;;;iBAG3C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;iBAG3C,CAAC;AAEH,eAAO,MAAM,oCAAoC;;;iBAG/C,CAAC;AAEH,eAAO,MAAM,2CAA2C;;;iBAGtD,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;iBAG5C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;2BAMpC,CAAC"}
@@ -1,12 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SubscriptionFeatureSchema = exports.GenericSubscriptionFeatureSchema = void 0;
3
+ exports.SubscriptionFeatureSchema = exports.EduTasksSubscriptionFeatureSchema = exports.PresentationSlidesSubscriptionFeatureSchema = exports.WriterPagesSubscriptionFeatureSchema = exports.CreditsSubscriptionFeatureSchema = exports.GenericSubscriptionFeatureSchema = void 0;
4
4
  const constants_1 = require("../constants");
5
5
  const zod_1 = require("zod");
6
6
  exports.GenericSubscriptionFeatureSchema = zod_1.z.object({
7
7
  type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.GENERIC),
8
8
  name: zod_1.z.string(),
9
9
  });
10
+ exports.CreditsSubscriptionFeatureSchema = zod_1.z.object({
11
+ type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.CREDITS),
12
+ name: zod_1.z.string(),
13
+ });
14
+ exports.WriterPagesSubscriptionFeatureSchema = zod_1.z.object({
15
+ type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES),
16
+ name: zod_1.z.string(),
17
+ });
18
+ exports.PresentationSlidesSubscriptionFeatureSchema = zod_1.z.object({
19
+ type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES),
20
+ name: zod_1.z.string(),
21
+ });
22
+ exports.EduTasksSubscriptionFeatureSchema = zod_1.z.object({
23
+ type: zod_1.z.literal(constants_1.SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS),
24
+ name: zod_1.z.string(),
25
+ });
10
26
  exports.SubscriptionFeatureSchema = zod_1.z.discriminatedUnion('type', [
11
27
  exports.GenericSubscriptionFeatureSchema,
28
+ exports.CreditsSubscriptionFeatureSchema,
29
+ exports.WriterPagesSubscriptionFeatureSchema,
30
+ exports.PresentationSlidesSubscriptionFeatureSchema,
31
+ exports.EduTasksSubscriptionFeatureSchema,
12
32
  ]);
@@ -11,7 +11,19 @@ export declare const SubscriptionUpgradeSchema: z.ZodIntersection<z.ZodObject<{
11
11
  tokens: z.ZodNumber;
12
12
  action: z.ZodNullable<z.ZodOptional<z.ZodEnum<typeof import("..").SUBSCRIPTION_ACTION>>>;
13
13
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
14
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
14
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
15
+ name: z.ZodString;
16
+ }, z.core.$strip>, z.ZodObject<{
17
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
18
+ name: z.ZodString;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
21
+ name: z.ZodString;
22
+ }, z.core.$strip>, z.ZodObject<{
23
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
24
+ name: z.ZodString;
25
+ }, z.core.$strip>, z.ZodObject<{
26
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
15
27
  name: z.ZodString;
16
28
  }, z.core.$strip>], "type">>;
17
29
  createdAt: z.ZodDate;
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-upgrade-schema.d.ts","sourceRoot":"","sources":["../../models/subscription-upgrade-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;kBAKrC,CAAC"}
1
+ {"version":3,"file":"subscription-upgrade-schema.d.ts","sourceRoot":"","sources":["../../models/subscription-upgrade-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKrC,CAAC"}
@@ -12,7 +12,19 @@ export declare const SubscriptionSchema: z.ZodObject<{
12
12
  tokens: z.ZodNumber;
13
13
  action: z.ZodNullable<z.ZodOptional<z.ZodEnum<typeof SUBSCRIPTION_ACTION>>>;
14
14
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
15
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
15
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
16
+ name: z.ZodString;
17
+ }, z.core.$strip>, z.ZodObject<{
18
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
19
+ name: z.ZodString;
20
+ }, z.core.$strip>, z.ZodObject<{
21
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
22
+ name: z.ZodString;
23
+ }, z.core.$strip>, z.ZodObject<{
24
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
25
+ name: z.ZodString;
26
+ }, z.core.$strip>, z.ZodObject<{
27
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
16
28
  name: z.ZodString;
17
29
  }, z.core.$strip>], "type">>;
18
30
  createdAt: z.ZodDate;
@@ -30,7 +42,19 @@ export declare const SubscriptionWithActionSchema: z.ZodIntersection<z.ZodObject
30
42
  tokens: z.ZodNumber;
31
43
  action: z.ZodNullable<z.ZodOptional<z.ZodEnum<typeof SUBSCRIPTION_ACTION>>>;
32
44
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
33
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
45
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
46
+ name: z.ZodString;
47
+ }, z.core.$strip>, z.ZodObject<{
48
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
49
+ name: z.ZodString;
50
+ }, z.core.$strip>, z.ZodObject<{
51
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
52
+ name: z.ZodString;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
55
+ name: z.ZodString;
56
+ }, z.core.$strip>, z.ZodObject<{
57
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
34
58
  name: z.ZodString;
35
59
  }, z.core.$strip>], "type">>;
36
60
  createdAt: z.ZodDate;
@@ -50,7 +74,19 @@ export declare const SubscriptionWithSubTypesSchema: z.ZodIntersection<z.ZodObje
50
74
  tokens: z.ZodNumber;
51
75
  action: z.ZodNullable<z.ZodOptional<z.ZodEnum<typeof SUBSCRIPTION_ACTION>>>;
52
76
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
53
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
77
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
78
+ name: z.ZodString;
79
+ }, z.core.$strip>, z.ZodObject<{
80
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
81
+ name: z.ZodString;
82
+ }, z.core.$strip>, z.ZodObject<{
83
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
84
+ name: z.ZodString;
85
+ }, z.core.$strip>, z.ZodObject<{
86
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
87
+ name: z.ZodString;
88
+ }, z.core.$strip>, z.ZodObject<{
89
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
54
90
  name: z.ZodString;
55
91
  }, z.core.$strip>], "type">>;
56
92
  createdAt: z.ZodDate;
@@ -68,7 +104,19 @@ export declare const SubscriptionWithSubTypesSchema: z.ZodIntersection<z.ZodObje
68
104
  tokens: z.ZodNumber;
69
105
  action: z.ZodNullable<z.ZodOptional<z.ZodEnum<typeof SUBSCRIPTION_ACTION>>>;
70
106
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
71
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
107
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
108
+ name: z.ZodString;
109
+ }, z.core.$strip>, z.ZodObject<{
110
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
111
+ name: z.ZodString;
112
+ }, z.core.$strip>, z.ZodObject<{
113
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
114
+ name: z.ZodString;
115
+ }, z.core.$strip>, z.ZodObject<{
116
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
117
+ name: z.ZodString;
118
+ }, z.core.$strip>, z.ZodObject<{
119
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
72
120
  name: z.ZodString;
73
121
  }, z.core.$strip>], "type">>;
74
122
  createdAt: z.ZodDate;
@@ -89,7 +137,19 @@ export declare const SubscriptionWithFeaturesSchema: z.ZodObject<{
89
137
  createdAt: z.ZodDate;
90
138
  updatedAt: z.ZodDate;
91
139
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
92
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
140
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
141
+ name: z.ZodString;
142
+ }, z.core.$strip>, z.ZodObject<{
143
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
144
+ name: z.ZodString;
145
+ }, z.core.$strip>, z.ZodObject<{
146
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
147
+ name: z.ZodString;
148
+ }, z.core.$strip>, z.ZodObject<{
149
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
150
+ name: z.ZodString;
151
+ }, z.core.$strip>, z.ZodObject<{
152
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
93
153
  name: z.ZodString;
94
154
  }, z.core.$strip>], "type">>;
95
155
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.schema.d.ts","sourceRoot":"","sources":["../../models/subscription.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;iBAc7B,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;kBAKxC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAK1C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;iBAEzC,CAAC"}
1
+ {"version":3,"file":"subscription.schema.d.ts","sourceRoot":"","sources":["../../models/subscription.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc7B,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKxC,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAK1C,CAAC;AAEF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEzC,CAAC"}
@@ -25,6 +25,22 @@ export declare const UserToProductWithProductSchema: z.ZodObject<{
25
25
  description: z.ZodString;
26
26
  price: z.ZodNumber;
27
27
  tokens: z.ZodNumber;
28
+ features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
29
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
30
+ name: z.ZodString;
31
+ }, z.core.$strip>, z.ZodObject<{
32
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
33
+ name: z.ZodString;
34
+ }, z.core.$strip>, z.ZodObject<{
35
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
36
+ name: z.ZodString;
37
+ }, z.core.$strip>, z.ZodObject<{
38
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
39
+ name: z.ZodString;
40
+ }, z.core.$strip>, z.ZodObject<{
41
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
42
+ name: z.ZodString;
43
+ }, z.core.$strip>], "type">>;
28
44
  createdAt: z.ZodDate;
29
45
  updatedAt: z.ZodDate;
30
46
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"user-to-product.schema.d.ts","sourceRoot":"","sources":["../../models/user-to-product.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,mBAAmB;;;;;;;;;iBAS9B,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;iBAEzC,CAAC"}
1
+ {"version":3,"file":"user-to-product.schema.d.ts","sourceRoot":"","sources":["../../models/user-to-product.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,mBAAmB;;;;;;;;;iBAS9B,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAEzC,CAAC"}
@@ -42,7 +42,19 @@ export declare const UserToSubscriptionWithSubscriptionSchema: z.ZodIntersection
42
42
  tokens: z.ZodNumber;
43
43
  action: z.ZodNullable<z.ZodOptional<z.ZodEnum<typeof import("..").SUBSCRIPTION_ACTION>>>;
44
44
  features: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
45
- type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE>;
45
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.GENERIC>;
46
+ name: z.ZodString;
47
+ }, z.core.$strip>, z.ZodObject<{
48
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.CREDITS>;
49
+ name: z.ZodString;
50
+ }, z.core.$strip>, z.ZodObject<{
51
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES>;
52
+ name: z.ZodString;
53
+ }, z.core.$strip>, z.ZodObject<{
54
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES>;
55
+ name: z.ZodString;
56
+ }, z.core.$strip>, z.ZodObject<{
57
+ type: z.ZodLiteral<import("..").SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS>;
46
58
  name: z.ZodString;
47
59
  }, z.core.$strip>], "type">>;
48
60
  createdAt: z.ZodDate;
@@ -1 +1 @@
1
- {"version":3,"file":"user-to-subscription.schema.d.ts","sourceRoot":"","sources":["../../models/user-to-subscription.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;iBAcnC,CAAC;AAEH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKpD,CAAC"}
1
+ {"version":3,"file":"user-to-subscription.schema.d.ts","sourceRoot":"","sources":["../../models/user-to-subscription.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;iBAcnC,CAAC;AAEH,eAAO,MAAM,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKpD,CAAC"}
@@ -9,6 +9,7 @@ export namespace GetUserBalanceCommand {
9
9
  productBalance: z.number(),
10
10
  referralBonusBalance: z.number(),
11
11
  carriedOverBalance: z.number(),
12
+ reservedTokenBalance: z.number(),
12
13
  }),
13
14
  });
14
15
  export type Response = z.infer<typeof ResponseSchema>;
@@ -16,6 +16,44 @@ export const ERRORS = {
16
16
  code: 'BALANCE_002',
17
17
  httpCode: 500,
18
18
  },
19
+ // TOKEN RESERVATION
20
+ TOKEN_RESERVATION: {
21
+ INSUFFICIENT_BALANCE: {
22
+ message: 'Недостаточно средств',
23
+ code: 'TOKEN_RESERVATION_001',
24
+ httpCode: 400,
25
+ },
26
+ NOT_FOUND: {
27
+ message: 'Запись о резервировании токенов не найдена',
28
+ code: 'TOKEN_RESERVATION_002',
29
+ httpCode: 404,
30
+ },
31
+ INVALID_STATUS: {
32
+ message: 'Недопустимый статус записи о резервировании токенов',
33
+ code: 'TOKEN_RESERVATION_003',
34
+ httpCode: 400,
35
+ },
36
+ EXPIRED: {
37
+ message: 'Срок записи о резервировании токенов истёк',
38
+ code: 'TOKEN_RESERVATION_004',
39
+ httpCode: 400,
40
+ },
41
+ CREATE_ERROR: {
42
+ message: 'Ошибка при создании записи о резервировании токенов',
43
+ code: 'TOKEN_RESERVATION_005',
44
+ httpCode: 500,
45
+ },
46
+ COMMIT_ERROR: {
47
+ message: 'Ошибка при подтверждении зарезервированных токенов',
48
+ code: 'TOKEN_RESERVATION_006',
49
+ httpCode: 500,
50
+ },
51
+ RELEASE_ERROR: {
52
+ message: 'Ошибка при освобождении зарезервированных токенов',
53
+ code: 'TOKEN_RESERVATION_007',
54
+ httpCode: 500,
55
+ },
56
+ },
19
57
  // AUTH
20
58
  AUTH_REGISTER_CONFLICT: {
21
59
  message: 'Пользователь с этим email уже существует',
@@ -15,3 +15,4 @@ export * from './writer';
15
15
  export * from './files';
16
16
  export * from './common';
17
17
  export * from './presentation';
18
+ export * from './token-reservation';
@@ -1,3 +1,7 @@
1
1
  export enum SUBSCRIPTION_FEATURE_TYPE {
2
2
  GENERIC = 'generic',
3
+ CREDITS = 'credits',
4
+ WRITER_PAGES = 'writer_pages',
5
+ PRESENTATION_SLIDES = 'presentation_slides',
6
+ EDU_TASKS = 'edu_tasks',
3
7
  }
@@ -0,0 +1 @@
1
+ export * from './token-reservation-status.enum';
@@ -0,0 +1,6 @@
1
+ export enum TOKEN_RESERVATION_STATUS {
2
+ PENDING = 'pending',
3
+ COMMITTED = 'committed',
4
+ RELEASED = 'released',
5
+ EXPIRED = 'expired',
6
+ }
@@ -0,0 +1 @@
1
+ export * from './enums';
@@ -267,14 +267,14 @@ export const TextSlideDataSchema = z.object({
267
267
  description: z
268
268
  .string()
269
269
  .describe(
270
- 'Expository prose split into 2–3 paragraphs separated by \\n\\n (double newline). Total length 300–800 characters. ' +
270
+ 'Expository prose split into 2–3 paragraphs separated by \\n\\n (double newline). Total length 180–800 characters. ' +
271
271
  'Use **bold** to highlight 1–3 key terms per paragraph (NOT entire sentences). ' +
272
272
  'Use *italics* for definitions, counter-points, or light emphasis (1 per paragraph max). ' +
273
273
  'NO bullet points, NO markdown headers, NO numbered lists. ' +
274
274
  'Each paragraph covers ONE focused idea: e.g. context → main argument → implication. ' +
275
275
  'Do NOT start consecutive paragraphs with the same word. Do NOT cut text short mid-sentence.',
276
276
  )
277
- .min(300)
277
+ .min(180)
278
278
  .max(800),
279
279
  version: z.literal(1),
280
280
  }) satisfies z.ZodType<ITextSlideDataStructure>;
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { SubscriptionFeatureSchema } from './subscription-feature.schema';
2
3
 
3
4
  export const ProductSchema = z.object({
4
5
  uuid: z.string().uuid(),
@@ -6,6 +7,7 @@ export const ProductSchema = z.object({
6
7
  description: z.string().min(3).max(16384),
7
8
  price: z.number(),
8
9
  tokens: z.number(),
10
+ features: z.array(SubscriptionFeatureSchema),
9
11
  createdAt: z.date(),
10
12
  updatedAt: z.date(),
11
13
  });
@@ -6,6 +6,30 @@ export const GenericSubscriptionFeatureSchema = z.object({
6
6
  name: z.string(),
7
7
  });
8
8
 
9
+ export const CreditsSubscriptionFeatureSchema = z.object({
10
+ type: z.literal(SUBSCRIPTION_FEATURE_TYPE.CREDITS),
11
+ name: z.string(),
12
+ });
13
+
14
+ export const WriterPagesSubscriptionFeatureSchema = z.object({
15
+ type: z.literal(SUBSCRIPTION_FEATURE_TYPE.WRITER_PAGES),
16
+ name: z.string(),
17
+ });
18
+
19
+ export const PresentationSlidesSubscriptionFeatureSchema = z.object({
20
+ type: z.literal(SUBSCRIPTION_FEATURE_TYPE.PRESENTATION_SLIDES),
21
+ name: z.string(),
22
+ });
23
+
24
+ export const EduTasksSubscriptionFeatureSchema = z.object({
25
+ type: z.literal(SUBSCRIPTION_FEATURE_TYPE.EDU_TASKS),
26
+ name: z.string(),
27
+ });
28
+
9
29
  export const SubscriptionFeatureSchema = z.discriminatedUnion('type', [
10
30
  GenericSubscriptionFeatureSchema,
31
+ CreditsSubscriptionFeatureSchema,
32
+ WriterPagesSubscriptionFeatureSchema,
33
+ PresentationSlidesSubscriptionFeatureSchema,
34
+ EduTasksSubscriptionFeatureSchema,
11
35
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/student-works",
3
- "version": "1.5.10",
3
+ "version": "1.5.12",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",