@dev.smartpricing/message-composer-utils 4.5.1-next.2 → 5.0.0-automations.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.
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { AUTOMATION_CATALOG_LANGUAGES, AUTOMATION_CHANNELS, DATE_REFERENCE_DIRECTIONS, MESSAGE_GROUP_PRODUCTS, } from "../types/index.js";
3
+ import { conditionFieldTypeSchema, conditionSchema } from "./condition.js";
4
+ /**
5
+ * GET /automation-catalog: the Automation Catalog of a Product in one
6
+ * language (ADR 0017). The Product is never read from the `sm-product`
7
+ * header (ADR 0019), and the language has no default: a catalog holds its
8
+ * labels in these languages only.
9
+ */
10
+ export const automationCatalogQuerySchema = z.object({
11
+ organization_id: z.uuid(),
12
+ product: z.enum(MESSAGE_GROUP_PRODUCTS),
13
+ language: z.enum(AUTOMATION_CATALOG_LANGUAGES),
14
+ });
15
+ /** `option_list` names the list the Host supplies; the catalog holds none. */
16
+ export const conditionFieldSchema = z.object({
17
+ key: z.string(),
18
+ label: z.string(),
19
+ type: conditionFieldTypeSchema,
20
+ option_list: z.string().optional(),
21
+ });
22
+ export const automationTriggerSchema = z.object({
23
+ type: z.string(),
24
+ label: z.string(),
25
+ date_references: z.array(z.object({
26
+ key: z.string(),
27
+ directions: z.array(z.object({
28
+ direction: z.enum(DATE_REFERENCE_DIRECTIONS),
29
+ label: z.string(),
30
+ })),
31
+ })),
32
+ condition_fields: z.array(conditionFieldSchema),
33
+ default_conditions: z.array(conditionSchema),
34
+ channels: z.array(z.object({
35
+ channel: z.enum(AUTOMATION_CHANNELS),
36
+ recipient: z.string(),
37
+ sender: z.string(),
38
+ })),
39
+ });
40
+ /**
41
+ * A Product with no Automation Catalog answers `catalog: null`, so a client
42
+ * can tell it apart from an error (ADR 0019).
43
+ */
44
+ export const automationCatalogResponseSchema = z.object({
45
+ catalog: z.object({ triggers: z.array(automationTriggerSchema) }).nullable(),
46
+ });
47
+ //# sourceMappingURL=automation-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation-catalog.js","sourceRoot":"","sources":["../../src/schemas/automation-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EAEnB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,eAAe,EAAE,CAAC,CAAC,IAAI,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC;CAC/C,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,eAAe,EAAE,CAAC,CAAC,KAAK,CACtB,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,UAAU,EAAE,CAAC,CAAC,KAAK,CACjB,CAAC,CAAC,MAAM,CAAC;YACP,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;YAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SAClB,CAAC,CACH;KACF,CAAC,CACH;IACD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC/C,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,CACf,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC,CACH;CACF,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7E,CAAgD,CAAC"}
@@ -0,0 +1,191 @@
1
+ import { z } from "zod";
2
+ import { AUTOMATION_ACTION_STATUSES, AUTOMATION_CHANNELS, AUTOMATION_MESSAGE_GROUP_KEPT_REASONS, MESSAGE_GROUP_PRODUCTS, } from "../types/index.js";
3
+ import { conditionOperatorSchema, conditionSchema } from "./condition.js";
4
+ import { messageGroupValidationErrorsSchema } from "./message-group.js";
5
+ /**
6
+ * GET /automations: the Automations of one Organization for one Product.
7
+ * Both are required: the Automation Engine lists one Organization at a time
8
+ * (ADR 0016, a deviation from ADR 0014) and the Product is never read from
9
+ * the `sm-product` header (ADR 0011).
10
+ */
11
+ export const automationListQuerySchema = z.object({
12
+ organization_id: z.uuid(),
13
+ product: z.enum(MESSAGE_GROUP_PRODUCTS),
14
+ });
15
+ /** GET /automations/:id: an Automation of another Product is not found. */
16
+ export const automationQuerySchema = z.object({
17
+ product: z.enum(MESSAGE_GROUP_PRODUCTS),
18
+ });
19
+ /**
20
+ * DELETE /automations/:id: the Message Groups to delete with the Automation,
21
+ * one repeated `message_group_ids` each (ADR 0016). A single one reaches the
22
+ * schema as a string; the route always reads a list. The Product is in the
23
+ * query too: a DELETE has no body to name it in.
24
+ */
25
+ export const deleteAutomationQuerySchema = automationQuerySchema.extend({
26
+ message_group_ids: z
27
+ .union([z.uuid(), z.array(z.uuid())])
28
+ .optional()
29
+ .transform((ids) => (ids === undefined ? [] : [ids].flat())),
30
+ });
31
+ const messageGroupRef = { id: z.uuid(), name: z.string() };
32
+ /** 200 of a DELETE /automations/:id that selected Message Groups. */
33
+ export const automationDeleteResponseSchema = z.object({
34
+ deleted: z.array(z.object(messageGroupRef)),
35
+ kept: z.array(z.object({
36
+ ...messageGroupRef,
37
+ reason: z.enum(AUTOMATION_MESSAGE_GROUP_KEPT_REASONS),
38
+ })),
39
+ });
40
+ /** Automation ids are the engine's (`aut_<uuid>`), not UUIDs. */
41
+ export const automationIdParamsSchema = z.object({
42
+ id: z.string().min(1),
43
+ });
44
+ export const automationActionStatusSchema = z.enum(AUTOMATION_ACTION_STATUSES);
45
+ /**
46
+ * An Action as served: the engine's `config` as stored, loose because the
47
+ * engine owns its shape (ADR 0016).
48
+ */
49
+ export const automationActionSchema = z.object({
50
+ id: z.string(),
51
+ type: z.string(),
52
+ status: automationActionStatusSchema,
53
+ created_at: z.string(),
54
+ updated_at: z.string(),
55
+ config: z.looseObject({
56
+ template: z.string(),
57
+ channel: z.string(),
58
+ recipient: z.string(),
59
+ delay: z.number(),
60
+ }),
61
+ });
62
+ /**
63
+ * An Automation with its Actions embedded (ADR 0016). `settings` and
64
+ * `metadata` keep the engine's shapes, loose so a key the engine adds is
65
+ * served, not stripped; `active` is derived by the backend.
66
+ */
67
+ export const automationResponseSchema = z.object({
68
+ id: z.string(),
69
+ organization_id: z.uuid(),
70
+ product: z.enum(MESSAGE_GROUP_PRODUCTS),
71
+ name: z.string(),
72
+ created_at: z.string(),
73
+ updated_at: z.string(),
74
+ active: z.boolean(),
75
+ settings: z.looseObject({
76
+ trigger: z.looseObject({
77
+ source: z.union([z.string(), z.array(z.string())]).optional(),
78
+ type: z.union([z.string(), z.array(z.string())]),
79
+ }),
80
+ conditions: z.array(z.looseObject({
81
+ field: z.string(),
82
+ operator: z.string(),
83
+ value: z.unknown().optional(),
84
+ })),
85
+ }),
86
+ metadata: z.record(z.string(), z.unknown()).optional(),
87
+ actions: z.array(automationActionSchema),
88
+ });
89
+ export const automationListResponseSchema = z.array(automationResponseSchema);
90
+ /**
91
+ * An Action as submitted: `config` keeps the engine's shape, loose for the
92
+ * rest of the Schedule. The recipient and the sender are not the client's
93
+ * to choose (ADR 0017).
94
+ */
95
+ export const automationActionInputSchema = z.object({
96
+ status: automationActionStatusSchema,
97
+ config: z.looseObject({
98
+ template: z.string().min(1),
99
+ channel: z.enum(AUTOMATION_CHANNELS),
100
+ delay: z.number(),
101
+ dateTimeReference: z.string().min(1),
102
+ }),
103
+ });
104
+ /**
105
+ * POST /automations: an Automation and its Actions in one request
106
+ * (ADR 0016). The Organization and the Product are explicit in the body
107
+ * (ADR 0014, ADR 0011).
108
+ */
109
+ export const createAutomationBodySchema = z.object({
110
+ organization_id: z.uuid(),
111
+ product: z.enum(MESSAGE_GROUP_PRODUCTS),
112
+ name: z.string().trim().min(1),
113
+ settings: z.looseObject({
114
+ trigger: z.looseObject({ type: z.string().min(1) }),
115
+ conditions: z.array(conditionSchema),
116
+ }),
117
+ metadata: z.record(z.string(), z.unknown()).optional(),
118
+ actions: z.array(automationActionInputSchema).min(1),
119
+ });
120
+ /**
121
+ * PUT /automations/:id: the full list of Actions, each stored one named by
122
+ * its `id` (ADR 0016). The Product is explicit (ADR 0011); the Organization
123
+ * is the stored one and is not sent.
124
+ */
125
+ export const updateAutomationBodySchema = createAutomationBodySchema
126
+ .omit({ organization_id: true })
127
+ .extend({
128
+ actions: z
129
+ .array(automationActionInputSchema.extend({
130
+ id: z.string().min(1).optional(),
131
+ }))
132
+ .min(1),
133
+ });
134
+ /**
135
+ * POST /automations/:id/clone: the name of the copy, and the Product as on
136
+ * every write (ADR 0011). Everything else is read from the source.
137
+ */
138
+ export const cloneAutomationBodySchema = createAutomationBodySchema.pick({
139
+ product: true,
140
+ name: true,
141
+ });
142
+ /** `details` of the 502 of an update that was saved only in part. */
143
+ export const automationPartlySavedDetailsSchema = z.object({
144
+ automation: automationResponseSchema,
145
+ action_ids: z.array(z.string().nullable()),
146
+ });
147
+ const position = z.number().int().nonnegative();
148
+ const actionProblem = { target: z.literal("action"), position };
149
+ /**
150
+ * `details` of the 422 `AUTOMATION_ACTIONS_INVALID`: a flat list, each
151
+ * entry naming its `target`. A new kind of problem is a new entry shape,
152
+ * never a change to an existing one.
153
+ */
154
+ export const automationActionsInvalidDetailsSchema = z.object({
155
+ problems: z.array(z.union([
156
+ z.object({
157
+ target: z.literal("trigger"),
158
+ reason: z.literal("not_in_catalog"),
159
+ type: z.string(),
160
+ }),
161
+ z.object({
162
+ target: z.literal("condition"),
163
+ position,
164
+ reason: z.enum(["field_not_in_catalog", "operator_not_allowed"]),
165
+ field: z.string(),
166
+ operator: conditionOperatorSchema,
167
+ }),
168
+ z.object({
169
+ ...actionProblem,
170
+ reason: z.enum(["not_found", "other_organization"]),
171
+ message_group_id: z.string(),
172
+ }),
173
+ z.object({
174
+ ...actionProblem,
175
+ reason: z.literal("invalid"),
176
+ message_group_id: z.string(),
177
+ errors: messageGroupValidationErrorsSchema,
178
+ }),
179
+ z.object({
180
+ ...actionProblem,
181
+ reason: z.literal("date_reference_not_in_catalog"),
182
+ date_reference: z.string(),
183
+ }),
184
+ z.object({
185
+ ...actionProblem,
186
+ reason: z.literal("channel_not_in_catalog"),
187
+ channel: z.enum(AUTOMATION_CHANNELS),
188
+ }),
189
+ ])),
190
+ });
191
+ //# sourceMappingURL=automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/schemas/automation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { CONDITION_FIELD_TYPES, CONDITION_OPERATORS, } from "../types/index.js";
3
+ export const conditionOperatorSchema = z.enum(CONDITION_OPERATORS);
4
+ export const conditionFieldTypeSchema = z.enum(CONDITION_FIELD_TYPES);
5
+ /**
6
+ * A Condition in the Automation Engine's shape (ADR 0018). The value is not
7
+ * checked: what fits depends on the field, which only a catalog knows.
8
+ */
9
+ export const conditionSchema = z.object({
10
+ field: z.string().min(1),
11
+ operator: conditionOperatorSchema,
12
+ value: z.unknown().optional(),
13
+ });
14
+ // The type-to-operator table sits with the vocabulary it is made of, so the
15
+ // layer can read it without the schemas.
16
+ export { CONDITION_OPERATORS_BY_FIELD_TYPE, operatorFitsFieldType, } from "../types/index.js";
17
+ //# sourceMappingURL=condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../src/schemas/condition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAEtE;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,uBAAuB;IACjC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAgC,CAAC;AAElC,4EAA4E;AAC5E,yCAAyC;AACzC,OAAO,EACL,iCAAiC,EACjC,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { CONDITION_OPERATORS_BY_FIELD_TYPE, conditionFieldTypeSchema, conditionOperatorSchema, conditionSchema, operatorFitsFieldType, } from "./condition.js";
3
+ describe("conditionSchema", () => {
4
+ it.each([
5
+ "eq",
6
+ "neq",
7
+ "gt",
8
+ "gte",
9
+ "lt",
10
+ "lte",
11
+ "in",
12
+ "not_in",
13
+ "contains",
14
+ "exclude",
15
+ "exists",
16
+ ])("accepts the engine operator %s", (operator) => {
17
+ const condition = { field: "guest.language", operator, value: "it" };
18
+ expect(conditionSchema.parse(condition)).toEqual(condition);
19
+ });
20
+ it("knows eleven operators and no other", () => {
21
+ expect(conditionOperatorSchema.options).toHaveLength(11);
22
+ expect(conditionSchema.safeParse({ field: "status", operator: "is", value: 1 })
23
+ .success).toBe(false);
24
+ });
25
+ it("accepts a Condition with no value", () => {
26
+ const condition = { field: "totalPrice", operator: "exists" };
27
+ expect(conditionSchema.parse(condition)).toEqual(condition);
28
+ });
29
+ it("keeps the value as it is, whatever its type", () => {
30
+ const condition = {
31
+ field: "guest.marketingConsent",
32
+ operator: "in",
33
+ value: [1, 2],
34
+ };
35
+ expect(conditionSchema.parse(condition)).toEqual(condition);
36
+ });
37
+ it("rejects a Condition with no field", () => {
38
+ expect(conditionSchema.safeParse({ field: "", operator: "eq", value: 1 })
39
+ .success).toBe(false);
40
+ expect(conditionSchema.safeParse({ operator: "eq", value: 1 }).success).toBe(false);
41
+ });
42
+ });
43
+ describe("the field types and their operators (ADR 0018)", () => {
44
+ it("has six field types", () => {
45
+ expect([...conditionFieldTypeSchema.options].sort()).toEqual([
46
+ "date",
47
+ "multiselect",
48
+ "number",
49
+ "price",
50
+ "select",
51
+ "text",
52
+ ]);
53
+ });
54
+ it("gives each field type the operators of the ADR's table", () => {
55
+ const comparison = ["eq", "neq", "gt", "gte", "lt", "lte", "exists"];
56
+ expect(CONDITION_OPERATORS_BY_FIELD_TYPE).toEqual({
57
+ select: ["eq", "neq", "exists"],
58
+ multiselect: ["in", "not_in", "exists"],
59
+ number: comparison,
60
+ price: comparison,
61
+ date: comparison,
62
+ text: ["eq", "neq", "contains", "exclude", "exists"],
63
+ });
64
+ });
65
+ it("tells whether an operator fits a field type", () => {
66
+ expect(operatorFitsFieldType("gte", "price")).toBe(true);
67
+ expect(operatorFitsFieldType("in", "multiselect")).toBe(true);
68
+ expect(operatorFitsFieldType("in", "select")).toBe(false);
69
+ expect(operatorFitsFieldType("contains", "number")).toBe(false);
70
+ expect(operatorFitsFieldType("exists", "text")).toBe(true);
71
+ });
72
+ });
73
+ //# sourceMappingURL=condition.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.test.js","sourceRoot":"","sources":["../../src/schemas/condition.test.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,7 @@ export * from "./message-compilation.js";
13
13
  export * from "./meta-integration.js";
14
14
  export * from "./onboarding.js";
15
15
  export * from "./tracking.js";
16
+ export * from "./automation.js";
17
+ export * from "./condition.js";
18
+ export * from "./automation-catalog.js";
16
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}
@@ -83,15 +83,17 @@ export const messageGroupWithMessageSummaryResponseSchema = messageGroupWithTags
83
83
  });
84
84
  /** Paginated envelope of list items (ADR 0012). */
85
85
  export const messageGroupSummaryListResponseSchema = paginatedResponseSchema(messageGroupWithMessageSummaryResponseSchema);
86
+ /** The errors of the Message Group validation, by what they are about. */
87
+ export const messageGroupValidationErrorsSchema = z.object({
88
+ status: z.array(z.string()),
89
+ languages: z.array(z.string()),
90
+ content: z.record(z.string(), z.object({
91
+ type: z.enum(MESSAGE_RENDER_TYPES),
92
+ errors: z.array(z.string()),
93
+ })),
94
+ });
86
95
  export const messageGroupValidationResponseSchema = z.object({
87
96
  valid: z.boolean(),
88
- errors: z.object({
89
- status: z.array(z.string()),
90
- languages: z.array(z.string()),
91
- content: z.record(z.string(), z.object({
92
- type: z.string(),
93
- errors: z.array(z.string()),
94
- })),
95
- }),
97
+ errors: messageGroupValidationErrorsSchema,
96
98
  });
97
99
  //# sourceMappingURL=message-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-group.js","sourceRoot":"","sources":["../../src/schemas/message-group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-group.js","sourceRoot":"","sources":["../../src/schemas/message-group.ts"],"names":[],"mappings":"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"}
package/dist/types/app.js CHANGED
@@ -19,6 +19,9 @@ export const errorCodes = {
19
19
  UNSUPPORTED_RENDER_TYPE: "UNSUPPORTED_RENDER_TYPE",
20
20
  NOT_IMPLEMENTED: "NOT_IMPLEMENTED",
21
21
  TRANSLATION_TOKEN_MISMATCH: "TRANSLATION_TOKEN_MISMATCH",
22
+ UPSTREAM_ERROR: "UPSTREAM_ERROR",
23
+ AUTOMATION_ACTIONS_INVALID: "AUTOMATION_ACTIONS_INVALID",
24
+ SYSTEM_AUTOMATION_NOT_DELETABLE: "SYSTEM_AUTOMATION_NOT_DELETABLE",
22
25
  };
23
26
  export const managedLocales = ["en", "de", "fr", "it", "es"];
24
27
  //# sourceMappingURL=app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/types/app.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,+BAA+B,EAAE,iCAAiC;IAClE,6BAA6B,EAAE,+BAA+B;IAC9D,gCAAgC,EAAE,kCAAkC;IACpE,kCAAkC,EAAE,oCAAoC;IACxE,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,4BAA4B;CAChD,CAAC;AAuCX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/types/app.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;IAC9C,+BAA+B,EAAE,iCAAiC;IAClE,6BAA6B,EAAE,+BAA+B;IAC9D,gCAAgC,EAAE,kCAAkC;IACpE,kCAAkC,EAAE,oCAAoC;IACxE,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,4BAA4B;IACxD,cAAc,EAAE,gBAAgB;IAChC,0BAA0B,EAAE,4BAA4B;IACxD,+BAA+B,EAAE,iCAAiC;CAC1D,CAAC;AAuCX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The Automation Catalog (ADR 0017): what an Automation of a Product can be
3
+ * built from. The backend keeps one config per Product with a label per
4
+ * language and serves it resolved to the requested one.
5
+ */
6
+ /** The languages a catalog holds a label in. */
7
+ export const AUTOMATION_CATALOG_LANGUAGES = [
8
+ "en",
9
+ "it",
10
+ "de",
11
+ "es",
12
+ "fr",
13
+ ];
14
+ export const AUTOMATION_CHANNELS = ["email", "whatsapp"];
15
+ export const DATE_REFERENCE_DIRECTIONS = ["after", "before"];
16
+ //# sourceMappingURL=automation-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation-catalog.js","sourceRoot":"","sources":["../../src/types/automation-catalog.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,gDAAgD;AAChD,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACI,CAAC;AAKX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU,CAAC;AAIlE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Automations as the composer's API serves them (ADR 0016). The envelope
3
+ * speaks the composer's names; `settings`, `metadata` and an Action's
4
+ * `config` keep the Automation Engine's shapes, open to keys it adds.
5
+ */
6
+ export const AUTOMATION_ACTION_STATUSES = ["active", "inactive"];
7
+ /** Why a selected Message Group is still there after its Automation went. */
8
+ export const AUTOMATION_MESSAGE_GROUP_KEPT_REASONS = ["delete_failed"];
9
+ //# sourceMappingURL=automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/types/automation.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAU,CAAC;AAwL1E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,eAAe,CAAU,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Conditions in the Automation Engine's shape, and the closed vocabulary the
3
+ * filter components and the backend share (ADR 0018). Nothing here knows
4
+ * about Automations: an audience page edits Conditions too.
5
+ */
6
+ /** Every operator the Automation Engine accepts. */
7
+ export const CONDITION_OPERATORS = [
8
+ "eq",
9
+ "neq",
10
+ "gt",
11
+ "gte",
12
+ "lt",
13
+ "lte",
14
+ "in",
15
+ "not_in",
16
+ "contains",
17
+ "exclude",
18
+ "exists",
19
+ ];
20
+ export const CONDITION_FIELD_TYPES = [
21
+ "select",
22
+ "multiselect",
23
+ "number",
24
+ "price",
25
+ "date",
26
+ "text",
27
+ ];
28
+ /** The operators of the field types whose values have an order. */
29
+ const ORDERED_VALUE_OPERATORS = [
30
+ "eq",
31
+ "neq",
32
+ "gt",
33
+ "gte",
34
+ "lt",
35
+ "lte",
36
+ "exists",
37
+ ];
38
+ /** The operators a Condition on a field of each type can use (ADR 0018). */
39
+ export const CONDITION_OPERATORS_BY_FIELD_TYPE = {
40
+ select: ["eq", "neq", "exists"],
41
+ multiselect: ["in", "not_in", "exists"],
42
+ number: ORDERED_VALUE_OPERATORS,
43
+ price: ORDERED_VALUE_OPERATORS,
44
+ date: ORDERED_VALUE_OPERATORS,
45
+ text: ["eq", "neq", "contains", "exclude", "exists"],
46
+ };
47
+ export function operatorFitsFieldType(operator, fieldType) {
48
+ const operators = CONDITION_OPERATORS_BY_FIELD_TYPE[fieldType];
49
+ return operators.includes(operator);
50
+ }
51
+ //# sourceMappingURL=condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../src/types/condition.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,SAAS;IACT,QAAQ;CACA,CAAC;AAIX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ;IACR,aAAa;IACb,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;CACE,CAAC;AAWX,mEAAmE;AACnE,MAAM,uBAAuB,GAAG;IAC9B,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,QAAQ;CACuC,CAAC;AAElD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;IAC/B,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACvC,MAAM,EAAE,uBAAuB;IAC/B,KAAK,EAAE,uBAAuB;IAC9B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;CACuB,CAAC;AAE9E,MAAM,UAAU,qBAAqB,CACnC,QAA2B,EAC3B,SAA6B;IAE7B,MAAM,SAAS,GACb,iCAAiC,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC"}
@@ -15,4 +15,7 @@ export * from "./dynamic-values.js";
15
15
  export * from "./brand.js";
16
16
  export * from "./organization.js";
17
17
  export * from "./pagination.js";
18
+ export * from "./automation.js";
19
+ export * from "./condition.js";
20
+ export * from "./automation-catalog.js";
18
21
  //# 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;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,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,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev.smartpricing/message-composer-utils",
3
- "version": "4.5.1-next.2",
3
+ "version": "5.0.0-automations.0",
4
4
  "description": "Shared types and utilities for the message composer",
5
5
  "type": "module",
6
6
  "exports": {
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ import {
3
+ AUTOMATION_CATALOG_LANGUAGES,
4
+ AUTOMATION_CHANNELS,
5
+ AutomationCatalogResponse,
6
+ DATE_REFERENCE_DIRECTIONS,
7
+ MESSAGE_GROUP_PRODUCTS,
8
+ } from "../types/index.js";
9
+ import { conditionFieldTypeSchema, conditionSchema } from "./condition.js";
10
+
11
+ /**
12
+ * GET /automation-catalog: the Automation Catalog of a Product in one
13
+ * language (ADR 0017). The Product is never read from the `sm-product`
14
+ * header (ADR 0019), and the language has no default: a catalog holds its
15
+ * labels in these languages only.
16
+ */
17
+ export const automationCatalogQuerySchema = z.object({
18
+ organization_id: z.uuid(),
19
+ product: z.enum(MESSAGE_GROUP_PRODUCTS),
20
+ language: z.enum(AUTOMATION_CATALOG_LANGUAGES),
21
+ });
22
+
23
+ /** `option_list` names the list the Host supplies; the catalog holds none. */
24
+ export const conditionFieldSchema = z.object({
25
+ key: z.string(),
26
+ label: z.string(),
27
+ type: conditionFieldTypeSchema,
28
+ option_list: z.string().optional(),
29
+ });
30
+
31
+ export const automationTriggerSchema = z.object({
32
+ type: z.string(),
33
+ label: z.string(),
34
+ date_references: z.array(
35
+ z.object({
36
+ key: z.string(),
37
+ directions: z.array(
38
+ z.object({
39
+ direction: z.enum(DATE_REFERENCE_DIRECTIONS),
40
+ label: z.string(),
41
+ }),
42
+ ),
43
+ }),
44
+ ),
45
+ condition_fields: z.array(conditionFieldSchema),
46
+ default_conditions: z.array(conditionSchema),
47
+ channels: z.array(
48
+ z.object({
49
+ channel: z.enum(AUTOMATION_CHANNELS),
50
+ recipient: z.string(),
51
+ sender: z.string(),
52
+ }),
53
+ ),
54
+ });
55
+
56
+ /**
57
+ * A Product with no Automation Catalog answers `catalog: null`, so a client
58
+ * can tell it apart from an error (ADR 0019).
59
+ */
60
+ export const automationCatalogResponseSchema = z.object({
61
+ catalog: z.object({ triggers: z.array(automationTriggerSchema) }).nullable(),
62
+ }) satisfies z.ZodType<AutomationCatalogResponse>;