@dev.smartpricing/message-composer-utils 4.0.1 → 4.0.3-templates.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.
@@ -1,3 +1,4 @@
1
1
  export * from "./apiMessages.js";
2
2
  export * from "./aiIntegration.js";
3
+ export * from "./apiTemplates.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
@@ -13,4 +13,5 @@ export * from "./submission-job.js";
13
13
  export * from "./kafka-events.js";
14
14
  export * from "./dynamic-values.js";
15
15
  export * from "./brand.js";
16
+ export * from "./template.js";
16
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev.smartpricing/message-composer-utils",
3
- "version": "4.0.1",
3
+ "version": "4.0.3-templates.0",
4
4
  "description": "Shared types and utilities for the message composer",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,41 @@
1
+ import type {
2
+ RenderType,
3
+ MessageGroupCategory,
4
+ MessageGroupVisibility,
5
+ } from "../message.js";
6
+ import type {
7
+ TemplateFromDb,
8
+ TemplateMessageFromDb,
9
+ TemplateMessage,
10
+ } from "../template.js";
11
+ import type { PostEntity } from "../utils.js";
12
+
13
+ export type TemplateWithMessages = TemplateFromDb & {
14
+ messages: TemplateMessageFromDb[];
15
+ tags: string[];
16
+ };
17
+
18
+ export type TemplateWithMessageSummary = TemplateFromDb & {
19
+ messages: Array<{
20
+ id: string;
21
+ language: string;
22
+ render_type: RenderType;
23
+ preview: string;
24
+ }>;
25
+ tags: string[];
26
+ };
27
+
28
+ export interface CreateTemplatePayload {
29
+ name: string;
30
+ category: MessageGroupCategory;
31
+ visibility?: MessageGroupVisibility;
32
+ is_system?: boolean;
33
+ messages?: PostEntity<TemplateMessage>[];
34
+ tags?: string[];
35
+ }
36
+
37
+ export interface UpdateTemplatePayload {
38
+ name?: string;
39
+ category?: MessageGroupCategory;
40
+ messages?: PostEntity<TemplateMessage>[];
41
+ }
@@ -1,2 +1,3 @@
1
1
  export * from "./apiMessages.js";
2
2
  export * from "./aiIntegration.js";
3
+ export * from "./apiTemplates.js";
@@ -13,3 +13,4 @@ export * from "./submission-job.js";
13
13
  export * from "./kafka-events.js";
14
14
  export * from "./dynamic-values.js";
15
15
  export * from "./brand.js";
16
+ export * from "./template.js";
@@ -4,17 +4,20 @@ export interface KafkaEventBase {
4
4
  event_id: string;
5
5
  event_type: string;
6
6
  timestamp: string;
7
- message_group_id: string;
8
7
  owner?: string;
9
8
  user_id: string;
10
9
  }
11
10
 
12
- export interface MessageGroupDeletedEvent extends KafkaEventBase {
11
+ export interface MessageGroupKafkaEventBase extends KafkaEventBase {
12
+ message_group_id: string;
13
+ }
14
+
15
+ export interface MessageGroupDeletedEvent extends MessageGroupKafkaEventBase {
13
16
  event_type: "MESSAGE_GROUP_DELETED";
14
17
  message_group_name: string;
15
18
  }
16
19
 
17
- export interface MessageStatusChangedEvent extends KafkaEventBase {
20
+ export interface MessageStatusChangedEvent extends MessageGroupKafkaEventBase {
18
21
  event_type: "MESSAGE_STATUS_CHANGED";
19
22
  message_id: string;
20
23
  language_id: string;
@@ -25,22 +28,31 @@ export interface MessageStatusChangedEvent extends KafkaEventBase {
25
28
  aggregated_status: Record<MessageStatus, number>;
26
29
  }
27
30
 
28
- export interface MessageGroupLanguageLostEvent extends KafkaEventBase {
31
+ export interface MessageGroupLanguageLostEvent extends MessageGroupKafkaEventBase {
29
32
  event_type: "MESSAGE_GROUP_LANGUAGE_LOST";
30
33
  language_id: string;
31
34
  }
32
35
 
33
- export interface MessageGroupCategoryChangedEvent extends KafkaEventBase {
36
+ export interface MessageGroupCategoryChangedEvent extends MessageGroupKafkaEventBase {
34
37
  event_type: "MESSAGE_GROUP_CATEGORY_CHANGED";
35
38
  previous_category: MessageGroupCategory;
36
39
  new_category: MessageGroupCategory;
37
40
  source: "meta_webhook";
38
41
  }
39
42
 
43
+ // ─── Template Events ────────────────────────────────────────────────
44
+
45
+ export interface TemplateLifecycleEvent extends KafkaEventBase {
46
+ event_type: "TEMPLATE_CREATED" | "TEMPLATE_UPDATED" | "TEMPLATE_DELETED";
47
+ template_id: string;
48
+ template_name: string;
49
+ }
50
+
40
51
  export type SmartnessKafkaEvent =
41
52
  | MessageGroupDeletedEvent
42
53
  | MessageStatusChangedEvent
43
54
  | MessageGroupLanguageLostEvent
44
- | MessageGroupCategoryChangedEvent;
55
+ | MessageGroupCategoryChangedEvent
56
+ | TemplateLifecycleEvent;
45
57
 
46
58
  export type SmartnessKafkaEventType = SmartnessKafkaEvent["event_type"];
@@ -0,0 +1,48 @@
1
+ import type {
2
+ MessageGroupCategory,
3
+ MessageGroupVisibility,
4
+ RenderType,
5
+ WhatsappMessage,
6
+ EmailMessage,
7
+ } from "./message.js";
8
+ import type { DbEntity, WithDbTimestamps } from "./utils.js";
9
+
10
+ export const SYSTEM_USER_ID = "SYSTEM" as const;
11
+
12
+ // ─── Template ───────────────────────────────────────────────────────
13
+
14
+ export interface Template extends DbEntity {
15
+ id: string;
16
+ name: string;
17
+ category: MessageGroupCategory;
18
+ visibility: MessageGroupVisibility;
19
+ owner?: string;
20
+ user_id: string;
21
+ }
22
+
23
+ export type TemplateFromDb = WithDbTimestamps<Template>;
24
+
25
+ // ─── Template Message ───────────────────────────────────────────────
26
+
27
+ interface BaseTemplateMessage extends DbEntity {
28
+ id: string;
29
+ template_id: string;
30
+ language_id: string;
31
+ render_type: RenderType;
32
+ }
33
+
34
+ export interface WhatsappTemplateMessage extends BaseTemplateMessage {
35
+ render_type: "whatsapp_v1";
36
+ body: WhatsappMessage["body"];
37
+ metadata: WhatsappMessage["metadata"];
38
+ }
39
+
40
+ export interface EmailTemplateMessage extends BaseTemplateMessage {
41
+ render_type: "email_v1";
42
+ body: EmailMessage["body"];
43
+ metadata: EmailMessage["metadata"];
44
+ }
45
+
46
+ export type TemplateMessage = WhatsappTemplateMessage | EmailTemplateMessage;
47
+
48
+ export type TemplateMessageFromDb = WithDbTimestamps<TemplateMessage>;