@purpleschool/gptbot 0.8.7 → 0.8.9

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.
@@ -12,4 +12,5 @@ var SLIDE_CONTENT_TYPE;
12
12
  SLIDE_CONTENT_TYPE["THANK_YOU"] = "THANK_YOU";
13
13
  SLIDE_CONTENT_TYPE["TABLE"] = "TABLE";
14
14
  SLIDE_CONTENT_TYPE["CHART"] = "CHART";
15
+ SLIDE_CONTENT_TYPE["TIMELINE"] = "TIMELINE";
15
16
  })(SLIDE_CONTENT_TYPE || (exports.SLIDE_CONTENT_TYPE = SLIDE_CONTENT_TYPE = {}));
@@ -13,4 +13,5 @@ exports.SLIDE_LAYOUT_MAP = new Map([
13
13
  [enums_1.SLIDE_CONTENT_TYPE.THANK_YOU, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
14
14
  [enums_1.SLIDE_CONTENT_TYPE.TABLE, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
15
15
  [enums_1.SLIDE_CONTENT_TYPE.CHART, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
16
+ [enums_1.SLIDE_CONTENT_TYPE.TIMELINE, [slide_layout_enum_1.SLIDE_LAYOUT.TYPE_1]],
16
17
  ]);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PPTXExportPayloadSchema = exports.PPTXSlideSchema = exports.SlideBackground = exports.PPTXShapeSchema = exports.PPTXTableShapeSchema = exports.PPTXTableRowSchema = exports.PPTXTableCellSchema = exports.PPTXCustomShapeSchema = exports.PPTXPictureBoxSchema = exports.PPTXTextBoxSchema = exports.PPTXParagraphSchema = exports.PPTXFontSchema = exports.PPTXPositionSchema = exports.PPTXMarginSchema = exports.PPTXFillSchema = exports.PPTXShadowSchema = exports.PPTX_CUSTOM_SHAPE_TYPE = exports.PPTX_SHADOW_TYPE = exports.PPTX_FILL_TYPE = exports.PPTX_BORDER_TYPE = exports.PPTX_OBJECT_FIT = exports.PPTX_V_ALIGN = exports.PPTX_H_ALIGN = exports.PPTX_SHAPE_TYPE = void 0;
3
+ exports.PPTXExportPayloadSchema = exports.PPTXSlideSchema = exports.SlideBackground = exports.PPTXShapeSchema = exports.PPTXChevronShapeSchema = exports.PPTXTableShapeSchema = exports.PPTXTableRowSchema = exports.PPTXTableCellSchema = exports.PPTXCustomShapeSchema = exports.PPTXPictureBoxSchema = exports.PPTXTextBoxSchema = exports.PPTXParagraphSchema = exports.PPTXFontSchema = exports.PPTXPositionSchema = exports.PPTXMarginSchema = exports.PPTXFillSchema = exports.PPTXShadowSchema = exports.PPTX_CUSTOM_SHAPE_TYPE = exports.PPTX_SHADOW_TYPE = exports.PPTX_FILL_TYPE = exports.PPTX_BORDER_TYPE = exports.PPTX_OBJECT_FIT = exports.PPTX_V_ALIGN = exports.PPTX_H_ALIGN = exports.PPTX_ARROW_TYPE = exports.PPTX_CHEVRON_DIRECTION = exports.PPTX_SHAPE_TYPE = void 0;
4
4
  const zod_1 = require("zod");
5
5
  var PPTX_SHAPE_TYPE;
6
6
  (function (PPTX_SHAPE_TYPE) {
@@ -8,7 +8,22 @@ var PPTX_SHAPE_TYPE;
8
8
  PPTX_SHAPE_TYPE["PICTURE_BOX"] = "picture_box";
9
9
  PPTX_SHAPE_TYPE["CUSTOM_SHAPE"] = "custom_shape";
10
10
  PPTX_SHAPE_TYPE["TABLE"] = "table";
11
+ PPTX_SHAPE_TYPE["CHEVRON"] = "chevron";
11
12
  })(PPTX_SHAPE_TYPE || (exports.PPTX_SHAPE_TYPE = PPTX_SHAPE_TYPE = {}));
13
+ var PPTX_CHEVRON_DIRECTION;
14
+ (function (PPTX_CHEVRON_DIRECTION) {
15
+ PPTX_CHEVRON_DIRECTION["RIGHT"] = "right";
16
+ PPTX_CHEVRON_DIRECTION["LEFT"] = "left";
17
+ PPTX_CHEVRON_DIRECTION["UP"] = "up";
18
+ PPTX_CHEVRON_DIRECTION["DOWN"] = "down";
19
+ })(PPTX_CHEVRON_DIRECTION || (exports.PPTX_CHEVRON_DIRECTION = PPTX_CHEVRON_DIRECTION = {}));
20
+ var PPTX_ARROW_TYPE;
21
+ (function (PPTX_ARROW_TYPE) {
22
+ PPTX_ARROW_TYPE["RIGHT"] = "rightArrow";
23
+ PPTX_ARROW_TYPE["LEFT"] = "leftArrow";
24
+ PPTX_ARROW_TYPE["UP"] = "upArrow";
25
+ PPTX_ARROW_TYPE["DOWN"] = "downArrow";
26
+ })(PPTX_ARROW_TYPE || (exports.PPTX_ARROW_TYPE = PPTX_ARROW_TYPE = {}));
12
27
  var PPTX_H_ALIGN;
13
28
  (function (PPTX_H_ALIGN) {
14
29
  PPTX_H_ALIGN["LEFT"] = "left";
@@ -161,12 +176,30 @@ exports.PPTXTableShapeSchema = zod_1.z.object({
161
176
  px: zod_1.z.number(),
162
177
  }),
163
178
  });
179
+ // Chevron
180
+ exports.PPTXChevronShapeSchema = zod_1.z.object({
181
+ type: zod_1.z.literal(PPTX_SHAPE_TYPE.CHEVRON),
182
+ direction: zod_1.z.nativeEnum(PPTX_CHEVRON_DIRECTION).default(PPTX_CHEVRON_DIRECTION.RIGHT),
183
+ position: exports.PPTXPositionSchema,
184
+ fill: exports.PPTXFillSchema.optional(),
185
+ text: zod_1.z.string().optional(),
186
+ font: exports.PPTXFontSchema.optional(),
187
+ align: zod_1.z
188
+ .nativeEnum(PPTX_H_ALIGN)
189
+ .optional()
190
+ .default('center'),
191
+ valign: zod_1.z
192
+ .nativeEnum(PPTX_V_ALIGN)
193
+ .optional()
194
+ .default('middle'),
195
+ });
164
196
  // Overview
165
197
  exports.PPTXShapeSchema = zod_1.z.discriminatedUnion('type', [
166
198
  exports.PPTXTextBoxSchema,
167
199
  exports.PPTXPictureBoxSchema,
168
200
  exports.PPTXCustomShapeSchema,
169
201
  exports.PPTXTableShapeSchema,
202
+ exports.PPTXChevronShapeSchema,
170
203
  ]);
171
204
  exports.SlideBackground = zod_1.z.union([
172
205
  exports.PPTXFillSchema,
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SlideContentUserEditSchema = exports.ChartSlideDataUserEditSchema = exports.BarChartSlideDataUserEditSchema = exports.TableSlideDataUserEditSchema = exports.SectionBreakSlideDataUserEditSchema = exports.ImageSlideDataUserEditSchema = exports.ContentsSlideDataUserEditSchema = exports.StructuredListSlideDataUserEditSchema = exports.TextSlideDataUserEditSchema = exports.ThankYouSlideDataUserEditSchema = exports.CoverSlideDataUserEditSchema = void 0;
6
+ exports.SlideContentUserEditSchema = exports.TimelineSlideDataUserEditSchema = exports.ChartSlideDataUserEditSchema = exports.BarChartSlideDataUserEditSchema = exports.TableSlideDataUserEditSchema = exports.SectionBreakSlideDataUserEditSchema = exports.ImageSlideDataUserEditSchema = exports.ContentsSlideDataUserEditSchema = exports.StructuredListSlideDataUserEditSchema = exports.TextSlideDataUserEditSchema = exports.ThankYouSlideDataUserEditSchema = exports.CoverSlideDataUserEditSchema = void 0;
7
7
  const zod_1 = __importDefault(require("zod"));
8
8
  const slide_content_schema_1 = require("./slide-content.schema");
9
9
  const constants_1 = require("../../../constants");
@@ -116,6 +116,22 @@ exports.ChartSlideDataUserEditSchema = zod_1.default.object({
116
116
  chart: zod_1.default.discriminatedUnion('type', [exports.BarChartSlideDataUserEditSchema]),
117
117
  version: zod_1.default.literal(1),
118
118
  });
119
+ exports.TimelineSlideDataUserEditSchema = zod_1.default.object({
120
+ contentType: zod_1.default.literal(constants_1.SLIDE_CONTENT_TYPE.TIMELINE),
121
+ title: zod_1.default.string().min(1).max(500),
122
+ description: zod_1.default.string().min(1).max(1000),
123
+ timeline: zod_1.default.object({
124
+ events: zod_1.default
125
+ .array(zod_1.default.object({
126
+ date: zod_1.default.string().min(1).max(100),
127
+ title: zod_1.default.string().min(1).max(200),
128
+ description: zod_1.default.string().min(1).max(500),
129
+ }))
130
+ .min(2)
131
+ .max(10),
132
+ }),
133
+ version: zod_1.default.literal(1),
134
+ });
119
135
  exports.SlideContentUserEditSchema = zod_1.default.discriminatedUnion('contentType', [
120
136
  exports.CoverSlideDataUserEditSchema,
121
137
  exports.StructuredListSlideDataUserEditSchema,
@@ -126,4 +142,5 @@ exports.SlideContentUserEditSchema = zod_1.default.discriminatedUnion('contentTy
126
142
  exports.ThankYouSlideDataUserEditSchema,
127
143
  exports.TableSlideDataUserEditSchema,
128
144
  exports.ChartSlideDataUserEditSchema,
145
+ exports.TimelineSlideDataUserEditSchema,
129
146
  ]);
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SlideContentSchema = exports.ChartSlideDataSchema = exports.BarChartSlideDataSchema = exports.TableSlideDataSchema = exports.SectionBreakSlideDataSchema = exports.ImageSlideDataSchema = exports.ContentsSlideDataSchema = exports.TextSlideDataSchema = exports.StructuredListSlideDataSchema = exports.ThankYouSlideDataSchema = exports.CoverSlideDataSchema = exports.IconSlotSchema = exports.ImageSlotSchema = exports.SLIDE_CHART_TYPE = void 0;
3
+ exports.SlideContentSchema = exports.TimelineSlideDataSchema = exports.ChartSlideDataSchema = exports.BarChartSlideDataSchema = exports.TableSlideDataSchema = exports.SectionBreakSlideDataSchema = exports.ImageSlideDataSchema = exports.ContentsSlideDataSchema = exports.TextSlideDataSchema = exports.StructuredListSlideDataSchema = exports.ThankYouSlideDataSchema = exports.CoverSlideDataSchema = exports.IconSlotSchema = exports.ImageSlotSchema = exports.SLIDE_CHART_TYPE = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const constants_1 = require("../../../constants");
6
6
  var SLIDE_CHART_TYPE;
@@ -180,6 +180,30 @@ exports.ChartSlideDataSchema = zod_1.z.object({
180
180
  chart: zod_1.z.discriminatedUnion('type', [exports.BarChartSlideDataSchema]),
181
181
  version: zod_1.z.literal(1),
182
182
  });
183
+ exports.TimelineSlideDataSchema = zod_1.z.object({
184
+ contentType: zod_1.z.literal(constants_1.SLIDE_CONTENT_TYPE.TIMELINE),
185
+ title: zod_1.z.string().describe('Slide title in about 6 words').min(10).max(150),
186
+ description: zod_1.z.string().describe('Brief context for the timeline').min(10).max(200),
187
+ timeline: zod_1.z.object({
188
+ events: zod_1.z
189
+ .array(zod_1.z.object({
190
+ date: zod_1.z
191
+ .string()
192
+ .describe('Date or time period label. MUST be general/approximate if exact date unknown (e.g., "Early 2020s", "Mid-1990s", "Recent years")')
193
+ .min(2)
194
+ .max(50),
195
+ title: zod_1.z.string().describe('Event title in 2-4 words').min(5).max(80),
196
+ description: zod_1.z
197
+ .string()
198
+ .describe('Brief description of the event or milestone')
199
+ .min(20)
200
+ .max(150),
201
+ }))
202
+ .length(5)
203
+ .describe('Timeline must contain exactly 5 chronological events'),
204
+ }),
205
+ version: zod_1.z.literal(1),
206
+ });
183
207
  exports.SlideContentSchema = zod_1.z.discriminatedUnion('contentType', [
184
208
  exports.CoverSlideDataSchema,
185
209
  exports.StructuredListSlideDataSchema,
@@ -190,4 +214,5 @@ exports.SlideContentSchema = zod_1.z.discriminatedUnion('contentType', [
190
214
  exports.ThankYouSlideDataSchema,
191
215
  exports.TableSlideDataSchema,
192
216
  exports.ChartSlideDataSchema,
217
+ exports.TimelineSlideDataSchema,
193
218
  ]);
@@ -8,4 +8,5 @@ export enum SLIDE_CONTENT_TYPE {
8
8
  THANK_YOU = 'THANK_YOU',
9
9
  TABLE = 'TABLE',
10
10
  CHART = 'CHART',
11
+ TIMELINE = 'TIMELINE',
11
12
  }
@@ -11,4 +11,5 @@ export const SLIDE_LAYOUT_MAP = new Map<SLIDE_CONTENT_TYPE, SLIDE_LAYOUT[]>([
11
11
  [SLIDE_CONTENT_TYPE.THANK_YOU, [SLIDE_LAYOUT.TYPE_1]],
12
12
  [SLIDE_CONTENT_TYPE.TABLE, [SLIDE_LAYOUT.TYPE_1]],
13
13
  [SLIDE_CONTENT_TYPE.CHART, [SLIDE_LAYOUT.TYPE_1]],
14
+ [SLIDE_CONTENT_TYPE.TIMELINE, [SLIDE_LAYOUT.TYPE_1]],
14
15
  ]);
@@ -5,8 +5,22 @@ export enum PPTX_SHAPE_TYPE {
5
5
  PICTURE_BOX = 'picture_box',
6
6
  CUSTOM_SHAPE = 'custom_shape',
7
7
  TABLE = 'table',
8
+ CHEVRON = 'chevron',
8
9
  }
9
10
 
11
+ export enum PPTX_CHEVRON_DIRECTION {
12
+ RIGHT = 'right',
13
+ LEFT = 'left',
14
+ UP = 'up',
15
+ DOWN = 'down',
16
+ }
17
+
18
+ export enum PPTX_ARROW_TYPE {
19
+ RIGHT = 'rightArrow',
20
+ LEFT = 'leftArrow',
21
+ UP = 'upArrow',
22
+ DOWN = 'downArrow',
23
+ }
10
24
  export enum PPTX_H_ALIGN {
11
25
  LEFT = 'left',
12
26
  CENTER = 'center',
@@ -182,6 +196,25 @@ export const PPTXTableShapeSchema = z.object({
182
196
  });
183
197
  export type PPTXTableShape = z.infer<typeof PPTXTableShapeSchema>;
184
198
 
199
+ // Chevron
200
+ export const PPTXChevronShapeSchema = z.object({
201
+ type: z.literal(PPTX_SHAPE_TYPE.CHEVRON),
202
+ direction: z.nativeEnum(PPTX_CHEVRON_DIRECTION).default(PPTX_CHEVRON_DIRECTION.RIGHT),
203
+ position: PPTXPositionSchema,
204
+ fill: PPTXFillSchema.optional(),
205
+ text: z.string().optional(),
206
+ font: PPTXFontSchema.optional(),
207
+ align: z
208
+ .nativeEnum(PPTX_H_ALIGN)
209
+ .optional()
210
+ .default('center' as PPTX_H_ALIGN),
211
+ valign: z
212
+ .nativeEnum(PPTX_V_ALIGN)
213
+ .optional()
214
+ .default('middle' as PPTX_V_ALIGN),
215
+ });
216
+ export type PPTXChevronShape = z.infer<typeof PPTXChevronShapeSchema>;
217
+
185
218
  // Overview
186
219
 
187
220
  export const PPTXShapeSchema = z.discriminatedUnion('type', [
@@ -189,6 +222,7 @@ export const PPTXShapeSchema = z.discriminatedUnion('type', [
189
222
  PPTXPictureBoxSchema,
190
223
  PPTXCustomShapeSchema,
191
224
  PPTXTableShapeSchema,
225
+ PPTXChevronShapeSchema,
192
226
  ]);
193
227
  export type PPTXShape = z.infer<typeof PPTXShapeSchema>;
194
228
 
@@ -12,6 +12,7 @@ import {
12
12
  IBarChartSlideDataStructure,
13
13
  IChartSlideDataStructure,
14
14
  ImageSlotSchema,
15
+ ITimelineSlideDataStructure,
15
16
  } from './slide-content.schema';
16
17
  import { SLIDE_CONTENT_TYPE } from '../../../constants';
17
18
 
@@ -140,6 +141,25 @@ export const ChartSlideDataUserEditSchema = z.object({
140
141
  version: z.literal(1),
141
142
  }) satisfies z.ZodType<IChartSlideDataStructure>;
142
143
 
144
+ export const TimelineSlideDataUserEditSchema = z.object({
145
+ contentType: z.literal(SLIDE_CONTENT_TYPE.TIMELINE),
146
+ title: z.string().min(1).max(500),
147
+ description: z.string().min(1).max(1000),
148
+ timeline: z.object({
149
+ events: z
150
+ .array(
151
+ z.object({
152
+ date: z.string().min(1).max(100),
153
+ title: z.string().min(1).max(200),
154
+ description: z.string().min(1).max(500),
155
+ }),
156
+ )
157
+ .min(2)
158
+ .max(10),
159
+ }),
160
+ version: z.literal(1),
161
+ }) satisfies z.ZodType<ITimelineSlideDataStructure>;
162
+
143
163
  export const SlideContentUserEditSchema = z.discriminatedUnion('contentType', [
144
164
  CoverSlideDataUserEditSchema,
145
165
  StructuredListSlideDataUserEditSchema,
@@ -150,5 +170,6 @@ export const SlideContentUserEditSchema = z.discriminatedUnion('contentType', [
150
170
  ThankYouSlideDataUserEditSchema,
151
171
  TableSlideDataUserEditSchema,
152
172
  ChartSlideDataUserEditSchema,
173
+ TimelineSlideDataUserEditSchema,
153
174
  ]);
154
175
  export type SlideContentUserEdit = z.infer<typeof SlideContentUserEditSchema>;
@@ -108,6 +108,20 @@ export interface IChartSlideDataStructure {
108
108
  version: 1;
109
109
  }
110
110
 
111
+ export interface ITimelineSlideDataStructure {
112
+ contentType: SLIDE_CONTENT_TYPE.TIMELINE;
113
+ title: string;
114
+ description: string;
115
+ timeline: {
116
+ events: Array<{
117
+ date: string;
118
+ title: string;
119
+ description: string;
120
+ }>;
121
+ };
122
+ version: 1;
123
+ }
124
+
111
125
  export const CoverSlideDataSchema = z.object({
112
126
  contentType: z.literal(SLIDE_CONTENT_TYPE.COVER),
113
127
  title: z.string().describe('Slide title in about 6 words').min(10).max(150),
@@ -307,6 +321,36 @@ export const ChartSlideDataSchema = z.object({
307
321
  }) satisfies z.ZodType<IChartSlideDataStructure>;
308
322
  export type ChartSlideData = z.infer<typeof ChartSlideDataSchema>;
309
323
 
324
+ export const TimelineSlideDataSchema = z.object({
325
+ contentType: z.literal(SLIDE_CONTENT_TYPE.TIMELINE),
326
+ title: z.string().describe('Slide title in about 6 words').min(10).max(150),
327
+ description: z.string().describe('Brief context for the timeline').min(10).max(200),
328
+ timeline: z.object({
329
+ events: z
330
+ .array(
331
+ z.object({
332
+ date: z
333
+ .string()
334
+ .describe(
335
+ 'Date or time period label. MUST be general/approximate if exact date unknown (e.g., "Early 2020s", "Mid-1990s", "Recent years")',
336
+ )
337
+ .min(2)
338
+ .max(50),
339
+ title: z.string().describe('Event title in 2-4 words').min(5).max(80),
340
+ description: z
341
+ .string()
342
+ .describe('Brief description of the event or milestone')
343
+ .min(20)
344
+ .max(150),
345
+ }),
346
+ )
347
+ .length(5)
348
+ .describe('Timeline must contain exactly 5 chronological events'),
349
+ }),
350
+ version: z.literal(1),
351
+ }) satisfies z.ZodType<ITimelineSlideDataStructure>;
352
+ export type TimelineSlideData = z.infer<typeof TimelineSlideDataSchema>;
353
+
310
354
  export const SlideContentSchema = z.discriminatedUnion('contentType', [
311
355
  CoverSlideDataSchema,
312
356
  StructuredListSlideDataSchema,
@@ -317,5 +361,6 @@ export const SlideContentSchema = z.discriminatedUnion('contentType', [
317
361
  ThankYouSlideDataSchema,
318
362
  TableSlideDataSchema,
319
363
  ChartSlideDataSchema,
364
+ TimelineSlideDataSchema,
320
365
  ]);
321
366
  export type SlideContent = z.infer<typeof SlideContentSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/gptbot",
3
- "version": "0.8.7",
3
+ "version": "0.8.9",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",