@opens/gateways 1.16.24 → 1.17.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,20 @@
1
+ /** Body content rendered by a screen rule. */
2
+ interface ScreenRuleBodyComponent {
3
+ content: string;
4
+ }
5
+ /** Header content rendered by a screen rule. */
6
+ interface ScreenRuleHeaderComponent {
7
+ content?: string;
8
+ logo?: string;
9
+ }
10
+ /** Payload used to create a screen rule. */
11
+ interface CreateScreenRuleDTO {
12
+ name: string;
13
+ action: 'screen';
14
+ settings: {
15
+ body?: ScreenRuleBodyComponent;
16
+ header?: ScreenRuleHeaderComponent;
17
+ };
18
+ }
19
+
20
+ export type { CreateScreenRuleDTO as C, ScreenRuleHeaderComponent as S, ScreenRuleBodyComponent as a };
@@ -0,0 +1,20 @@
1
+ /** Body content rendered by a screen rule. */
2
+ interface ScreenRuleBodyComponent {
3
+ content: string;
4
+ }
5
+ /** Header content rendered by a screen rule. */
6
+ interface ScreenRuleHeaderComponent {
7
+ content?: string;
8
+ logo?: string;
9
+ }
10
+ /** Payload used to create a screen rule. */
11
+ interface CreateScreenRuleDTO {
12
+ name: string;
13
+ action: 'screen';
14
+ settings: {
15
+ body?: ScreenRuleBodyComponent;
16
+ header?: ScreenRuleHeaderComponent;
17
+ };
18
+ }
19
+
20
+ export type { CreateScreenRuleDTO as C, ScreenRuleHeaderComponent as S, ScreenRuleBodyComponent as a };
@@ -0,0 +1,47 @@
1
+ import { C as CreateScreenRuleDTO, S as ScreenRuleHeaderComponent, a as ScreenRuleBodyComponent } from '../../_screen-rule-FlIJzVXA.mjs';
2
+ import { ScreenRuleVO } from '../value-objects/index.mjs';
3
+
4
+ /** Fluent builder for creating validated screen-rule value objects. */
5
+ declare class ScreenRuleBuilder {
6
+ private payload;
7
+ private constructor();
8
+ /**
9
+ * Creates a screen-rule builder.
10
+ * @param payload - Optional initial screen-rule values.
11
+ * @returns A new screen-rule builder.
12
+ */
13
+ static create(payload?: Partial<CreateScreenRuleDTO>): ScreenRuleBuilder;
14
+ /**
15
+ * Merges partial screen-rule values into the builder.
16
+ * @param payload - Screen-rule values to merge.
17
+ * @returns This builder instance.
18
+ */
19
+ withRule(payload: Partial<CreateScreenRuleDTO>): this;
20
+ /**
21
+ * Sets the screen-rule name.
22
+ * @param name - The screen-rule name.
23
+ * @returns This builder instance.
24
+ */
25
+ withName(name: string): this;
26
+ /**
27
+ * Sets the screen-rule header.
28
+ * @param header - The header component.
29
+ * @returns This builder instance.
30
+ */
31
+ withHeader(header: ScreenRuleHeaderComponent): this;
32
+ /**
33
+ * Sets the screen-rule body.
34
+ * @param body - The body component.
35
+ * @returns This builder instance.
36
+ */
37
+ withBody(body: ScreenRuleBodyComponent): this;
38
+ /**
39
+ * Builds a validated screen-rule value object.
40
+ * @returns The completed screen-rule value object.
41
+ * @throws {Error} If required screen-rule fields are missing or invalid.
42
+ */
43
+ build(): ScreenRuleVO;
44
+ private assertValidPayload;
45
+ }
46
+
47
+ export { ScreenRuleBuilder };
@@ -0,0 +1,47 @@
1
+ import { C as CreateScreenRuleDTO, S as ScreenRuleHeaderComponent, a as ScreenRuleBodyComponent } from '../../_screen-rule-FlIJzVXA.js';
2
+ import { ScreenRuleVO } from '../value-objects/index.js';
3
+
4
+ /** Fluent builder for creating validated screen-rule value objects. */
5
+ declare class ScreenRuleBuilder {
6
+ private payload;
7
+ private constructor();
8
+ /**
9
+ * Creates a screen-rule builder.
10
+ * @param payload - Optional initial screen-rule values.
11
+ * @returns A new screen-rule builder.
12
+ */
13
+ static create(payload?: Partial<CreateScreenRuleDTO>): ScreenRuleBuilder;
14
+ /**
15
+ * Merges partial screen-rule values into the builder.
16
+ * @param payload - Screen-rule values to merge.
17
+ * @returns This builder instance.
18
+ */
19
+ withRule(payload: Partial<CreateScreenRuleDTO>): this;
20
+ /**
21
+ * Sets the screen-rule name.
22
+ * @param name - The screen-rule name.
23
+ * @returns This builder instance.
24
+ */
25
+ withName(name: string): this;
26
+ /**
27
+ * Sets the screen-rule header.
28
+ * @param header - The header component.
29
+ * @returns This builder instance.
30
+ */
31
+ withHeader(header: ScreenRuleHeaderComponent): this;
32
+ /**
33
+ * Sets the screen-rule body.
34
+ * @param body - The body component.
35
+ * @returns This builder instance.
36
+ */
37
+ withBody(body: ScreenRuleBodyComponent): this;
38
+ /**
39
+ * Builds a validated screen-rule value object.
40
+ * @returns The completed screen-rule value object.
41
+ * @throws {Error} If required screen-rule fields are missing or invalid.
42
+ */
43
+ build(): ScreenRuleVO;
44
+ private assertValidPayload;
45
+ }
46
+
47
+ export { ScreenRuleBuilder };
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/chat-config/builders/index.ts
21
+ var builders_exports = {};
22
+ __export(builders_exports, {
23
+ ScreenRuleBuilder: () => ScreenRuleBuilder
24
+ });
25
+ module.exports = __toCommonJS(builders_exports);
26
+
27
+ // src/chat-config/value-objects/_screen-rule.ts
28
+ var clonePayload = (payload) => ({
29
+ name: payload.name,
30
+ action: "screen",
31
+ settings: {
32
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
33
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {}
34
+ }
35
+ });
36
+ var ScreenRuleVO = class _ScreenRuleVO {
37
+ payload;
38
+ /**
39
+ * Creates a screen-rule value object from a complete payload.
40
+ * @param payload - The screen-rule payload to snapshot.
41
+ */
42
+ constructor(payload) {
43
+ this.payload = clonePayload(payload);
44
+ }
45
+ /**
46
+ * Creates a value object from its JSON representation.
47
+ * @param payload - The screen-rule JSON payload.
48
+ * @returns A screen-rule value object containing a defensive snapshot.
49
+ */
50
+ static fromJSON(payload) {
51
+ return new _ScreenRuleVO(payload);
52
+ }
53
+ /**
54
+ * Converts a screen-rule value object to JSON.
55
+ * @param screenRuleVO - The screen-rule value object to serialize.
56
+ * @returns A defensive copy of the screen-rule payload.
57
+ */
58
+ static toJSON(screenRuleVO) {
59
+ return clonePayload(screenRuleVO.payload);
60
+ }
61
+ };
62
+
63
+ // src/chat-config/builders/_screen-rule.ts
64
+ var clonePartialPayload = (payload) => ({
65
+ ...payload,
66
+ ...payload.settings !== void 0 ? {
67
+ settings: {
68
+ ...payload.settings,
69
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
70
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {}
71
+ }
72
+ } : {}
73
+ });
74
+ var ScreenRuleBuilder = class _ScreenRuleBuilder {
75
+ payload = {
76
+ action: "screen",
77
+ settings: {}
78
+ };
79
+ constructor(payload) {
80
+ if (payload !== void 0) this.withRule(payload);
81
+ }
82
+ /**
83
+ * Creates a screen-rule builder.
84
+ * @param payload - Optional initial screen-rule values.
85
+ * @returns A new screen-rule builder.
86
+ */
87
+ static create(payload) {
88
+ return new _ScreenRuleBuilder(payload);
89
+ }
90
+ /**
91
+ * Merges partial screen-rule values into the builder.
92
+ * @param payload - Screen-rule values to merge.
93
+ * @returns This builder instance.
94
+ */
95
+ withRule(payload) {
96
+ const snapshot = clonePartialPayload(payload);
97
+ this.payload = {
98
+ ...this.payload,
99
+ ...snapshot,
100
+ action: "screen",
101
+ settings: {
102
+ ...this.payload.settings,
103
+ ...snapshot.settings
104
+ }
105
+ };
106
+ return this;
107
+ }
108
+ /**
109
+ * Sets the screen-rule name.
110
+ * @param name - The screen-rule name.
111
+ * @returns This builder instance.
112
+ */
113
+ withName(name) {
114
+ this.payload.name = name;
115
+ return this;
116
+ }
117
+ /**
118
+ * Sets the screen-rule header.
119
+ * @param header - The header component.
120
+ * @returns This builder instance.
121
+ */
122
+ withHeader(header) {
123
+ this.payload.settings = {
124
+ ...this.payload.settings,
125
+ header: { ...header }
126
+ };
127
+ return this;
128
+ }
129
+ /**
130
+ * Sets the screen-rule body.
131
+ * @param body - The body component.
132
+ * @returns This builder instance.
133
+ */
134
+ withBody(body) {
135
+ this.payload.settings = {
136
+ ...this.payload.settings,
137
+ body: { ...body }
138
+ };
139
+ return this;
140
+ }
141
+ /**
142
+ * Builds a validated screen-rule value object.
143
+ * @returns The completed screen-rule value object.
144
+ * @throws {Error} If required screen-rule fields are missing or invalid.
145
+ */
146
+ build() {
147
+ this.assertValidPayload(this.payload);
148
+ return ScreenRuleVO.fromJSON({
149
+ name: this.payload.name,
150
+ action: "screen",
151
+ settings: {
152
+ ...this.payload.settings.header !== void 0 ? { header: { ...this.payload.settings.header } } : {},
153
+ ...this.payload.settings.body !== void 0 ? { body: { ...this.payload.settings.body } } : {}
154
+ }
155
+ });
156
+ }
157
+ assertValidPayload(payload) {
158
+ const invalidFields = [];
159
+ const settings = payload.settings;
160
+ const hasHeader = settings?.header !== void 0;
161
+ const hasBody = settings?.body !== void 0;
162
+ if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
163
+ if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
164
+ if (hasBody && (settings?.body === null || typeof settings?.body !== "object" || typeof settings.body.content !== "string"))
165
+ invalidFields.push("settings.body.content");
166
+ if (invalidFields.length > 0)
167
+ throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
168
+ }
169
+ };
170
+ // Annotate the CommonJS export names for ESM import in node:
171
+ 0 && (module.exports = {
172
+ ScreenRuleBuilder
173
+ });
174
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/chat-config/builders/index.ts","../../../src/chat-config/value-objects/_screen-rule.ts","../../../src/chat-config/builders/_screen-rule.ts"],"sourcesContent":["export * from './_screen-rule';\n","import type { CreateScreenRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateScreenRuleDTO): CreateScreenRuleDTO => ({\n name: payload.name,\n action: 'screen',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n});\n\n/** Value object representing a complete screen-rule payload. */\nexport class ScreenRuleVO {\n readonly payload: CreateScreenRuleDTO;\n\n /**\n * Creates a screen-rule value object from a complete payload.\n * @param payload - The screen-rule payload to snapshot.\n */\n constructor(payload: CreateScreenRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The screen-rule JSON payload.\n * @returns A screen-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateScreenRuleDTO): ScreenRuleVO {\n return new ScreenRuleVO(payload);\n }\n\n /**\n * Converts a screen-rule value object to JSON.\n * @param screenRuleVO - The screen-rule value object to serialize.\n * @returns A defensive copy of the screen-rule payload.\n */\n static toJSON(screenRuleVO: ScreenRuleVO): CreateScreenRuleDTO {\n return clonePayload(screenRuleVO.payload);\n }\n}\n","import type { CreateScreenRuleDTO, ScreenRuleBodyComponent, ScreenRuleHeaderComponent } from '../contracts';\nimport { ScreenRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateScreenRuleDTO>): Partial<CreateScreenRuleDTO> => ({\n ...payload,\n ...(payload.settings !== undefined\n ? {\n settings: {\n ...payload.settings,\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated screen-rule value objects. */\nexport class ScreenRuleBuilder {\n private payload: Partial<CreateScreenRuleDTO> = {\n action: 'screen',\n settings: {},\n };\n\n private constructor(payload?: Partial<CreateScreenRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates a screen-rule builder.\n * @param payload - Optional initial screen-rule values.\n * @returns A new screen-rule builder.\n */\n static create(payload?: Partial<CreateScreenRuleDTO>): ScreenRuleBuilder {\n return new ScreenRuleBuilder(payload);\n }\n\n /**\n * Merges partial screen-rule values into the builder.\n * @param payload - Screen-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateScreenRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'screen',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n },\n };\n\n return this;\n }\n\n /**\n * Sets the screen-rule name.\n * @param name - The screen-rule name.\n * @returns This builder instance.\n */\n withName(name: string): this {\n this.payload.name = name;\n return this;\n }\n\n /**\n * Sets the screen-rule header.\n * @param header - The header component.\n * @returns This builder instance.\n */\n withHeader(header: ScreenRuleHeaderComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n header: { ...header },\n };\n return this;\n }\n\n /**\n * Sets the screen-rule body.\n * @param body - The body component.\n * @returns This builder instance.\n */\n withBody(body: ScreenRuleBodyComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n body: { ...body },\n };\n return this;\n }\n\n /**\n * Builds a validated screen-rule value object.\n * @returns The completed screen-rule value object.\n * @throws {Error} If required screen-rule fields are missing or invalid.\n */\n build(): ScreenRuleVO {\n this.assertValidPayload(this.payload);\n\n return ScreenRuleVO.fromJSON({\n name: this.payload.name,\n action: 'screen',\n settings: {\n ...(this.payload.settings.header !== undefined ? { header: { ...this.payload.settings.header } } : {}),\n ...(this.payload.settings.body !== undefined ? { body: { ...this.payload.settings.body } } : {}),\n },\n });\n }\n\n private assertValidPayload(payload: Partial<CreateScreenRuleDTO>): asserts payload is CreateScreenRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n\n if (typeof payload.name !== 'string' || payload.name.trim().length === 0) invalidFields.push('name');\n if (!hasHeader && !hasBody) invalidFields.push('settings.header or settings.body');\n if (\n hasBody &&\n (settings?.body === null || typeof settings?.body !== 'object' || typeof settings.body.content !== 'string')\n )\n invalidFields.push('settings.body.content');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,147 @@
1
+ // src/chat-config/value-objects/_screen-rule.ts
2
+ var clonePayload = (payload) => ({
3
+ name: payload.name,
4
+ action: "screen",
5
+ settings: {
6
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
7
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {}
8
+ }
9
+ });
10
+ var ScreenRuleVO = class _ScreenRuleVO {
11
+ payload;
12
+ /**
13
+ * Creates a screen-rule value object from a complete payload.
14
+ * @param payload - The screen-rule payload to snapshot.
15
+ */
16
+ constructor(payload) {
17
+ this.payload = clonePayload(payload);
18
+ }
19
+ /**
20
+ * Creates a value object from its JSON representation.
21
+ * @param payload - The screen-rule JSON payload.
22
+ * @returns A screen-rule value object containing a defensive snapshot.
23
+ */
24
+ static fromJSON(payload) {
25
+ return new _ScreenRuleVO(payload);
26
+ }
27
+ /**
28
+ * Converts a screen-rule value object to JSON.
29
+ * @param screenRuleVO - The screen-rule value object to serialize.
30
+ * @returns A defensive copy of the screen-rule payload.
31
+ */
32
+ static toJSON(screenRuleVO) {
33
+ return clonePayload(screenRuleVO.payload);
34
+ }
35
+ };
36
+
37
+ // src/chat-config/builders/_screen-rule.ts
38
+ var clonePartialPayload = (payload) => ({
39
+ ...payload,
40
+ ...payload.settings !== void 0 ? {
41
+ settings: {
42
+ ...payload.settings,
43
+ ...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
44
+ ...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {}
45
+ }
46
+ } : {}
47
+ });
48
+ var ScreenRuleBuilder = class _ScreenRuleBuilder {
49
+ payload = {
50
+ action: "screen",
51
+ settings: {}
52
+ };
53
+ constructor(payload) {
54
+ if (payload !== void 0) this.withRule(payload);
55
+ }
56
+ /**
57
+ * Creates a screen-rule builder.
58
+ * @param payload - Optional initial screen-rule values.
59
+ * @returns A new screen-rule builder.
60
+ */
61
+ static create(payload) {
62
+ return new _ScreenRuleBuilder(payload);
63
+ }
64
+ /**
65
+ * Merges partial screen-rule values into the builder.
66
+ * @param payload - Screen-rule values to merge.
67
+ * @returns This builder instance.
68
+ */
69
+ withRule(payload) {
70
+ const snapshot = clonePartialPayload(payload);
71
+ this.payload = {
72
+ ...this.payload,
73
+ ...snapshot,
74
+ action: "screen",
75
+ settings: {
76
+ ...this.payload.settings,
77
+ ...snapshot.settings
78
+ }
79
+ };
80
+ return this;
81
+ }
82
+ /**
83
+ * Sets the screen-rule name.
84
+ * @param name - The screen-rule name.
85
+ * @returns This builder instance.
86
+ */
87
+ withName(name) {
88
+ this.payload.name = name;
89
+ return this;
90
+ }
91
+ /**
92
+ * Sets the screen-rule header.
93
+ * @param header - The header component.
94
+ * @returns This builder instance.
95
+ */
96
+ withHeader(header) {
97
+ this.payload.settings = {
98
+ ...this.payload.settings,
99
+ header: { ...header }
100
+ };
101
+ return this;
102
+ }
103
+ /**
104
+ * Sets the screen-rule body.
105
+ * @param body - The body component.
106
+ * @returns This builder instance.
107
+ */
108
+ withBody(body) {
109
+ this.payload.settings = {
110
+ ...this.payload.settings,
111
+ body: { ...body }
112
+ };
113
+ return this;
114
+ }
115
+ /**
116
+ * Builds a validated screen-rule value object.
117
+ * @returns The completed screen-rule value object.
118
+ * @throws {Error} If required screen-rule fields are missing or invalid.
119
+ */
120
+ build() {
121
+ this.assertValidPayload(this.payload);
122
+ return ScreenRuleVO.fromJSON({
123
+ name: this.payload.name,
124
+ action: "screen",
125
+ settings: {
126
+ ...this.payload.settings.header !== void 0 ? { header: { ...this.payload.settings.header } } : {},
127
+ ...this.payload.settings.body !== void 0 ? { body: { ...this.payload.settings.body } } : {}
128
+ }
129
+ });
130
+ }
131
+ assertValidPayload(payload) {
132
+ const invalidFields = [];
133
+ const settings = payload.settings;
134
+ const hasHeader = settings?.header !== void 0;
135
+ const hasBody = settings?.body !== void 0;
136
+ if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
137
+ if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
138
+ if (hasBody && (settings?.body === null || typeof settings?.body !== "object" || typeof settings.body.content !== "string"))
139
+ invalidFields.push("settings.body.content");
140
+ if (invalidFields.length > 0)
141
+ throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
142
+ }
143
+ };
144
+ export {
145
+ ScreenRuleBuilder
146
+ };
147
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/chat-config/value-objects/_screen-rule.ts","../../../src/chat-config/builders/_screen-rule.ts"],"sourcesContent":["import type { CreateScreenRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateScreenRuleDTO): CreateScreenRuleDTO => ({\n name: payload.name,\n action: 'screen',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n});\n\n/** Value object representing a complete screen-rule payload. */\nexport class ScreenRuleVO {\n readonly payload: CreateScreenRuleDTO;\n\n /**\n * Creates a screen-rule value object from a complete payload.\n * @param payload - The screen-rule payload to snapshot.\n */\n constructor(payload: CreateScreenRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The screen-rule JSON payload.\n * @returns A screen-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateScreenRuleDTO): ScreenRuleVO {\n return new ScreenRuleVO(payload);\n }\n\n /**\n * Converts a screen-rule value object to JSON.\n * @param screenRuleVO - The screen-rule value object to serialize.\n * @returns A defensive copy of the screen-rule payload.\n */\n static toJSON(screenRuleVO: ScreenRuleVO): CreateScreenRuleDTO {\n return clonePayload(screenRuleVO.payload);\n }\n}\n","import type { CreateScreenRuleDTO, ScreenRuleBodyComponent, ScreenRuleHeaderComponent } from '../contracts';\nimport { ScreenRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateScreenRuleDTO>): Partial<CreateScreenRuleDTO> => ({\n ...payload,\n ...(payload.settings !== undefined\n ? {\n settings: {\n ...payload.settings,\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated screen-rule value objects. */\nexport class ScreenRuleBuilder {\n private payload: Partial<CreateScreenRuleDTO> = {\n action: 'screen',\n settings: {},\n };\n\n private constructor(payload?: Partial<CreateScreenRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates a screen-rule builder.\n * @param payload - Optional initial screen-rule values.\n * @returns A new screen-rule builder.\n */\n static create(payload?: Partial<CreateScreenRuleDTO>): ScreenRuleBuilder {\n return new ScreenRuleBuilder(payload);\n }\n\n /**\n * Merges partial screen-rule values into the builder.\n * @param payload - Screen-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateScreenRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'screen',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n },\n };\n\n return this;\n }\n\n /**\n * Sets the screen-rule name.\n * @param name - The screen-rule name.\n * @returns This builder instance.\n */\n withName(name: string): this {\n this.payload.name = name;\n return this;\n }\n\n /**\n * Sets the screen-rule header.\n * @param header - The header component.\n * @returns This builder instance.\n */\n withHeader(header: ScreenRuleHeaderComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n header: { ...header },\n };\n return this;\n }\n\n /**\n * Sets the screen-rule body.\n * @param body - The body component.\n * @returns This builder instance.\n */\n withBody(body: ScreenRuleBodyComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n body: { ...body },\n };\n return this;\n }\n\n /**\n * Builds a validated screen-rule value object.\n * @returns The completed screen-rule value object.\n * @throws {Error} If required screen-rule fields are missing or invalid.\n */\n build(): ScreenRuleVO {\n this.assertValidPayload(this.payload);\n\n return ScreenRuleVO.fromJSON({\n name: this.payload.name,\n action: 'screen',\n settings: {\n ...(this.payload.settings.header !== undefined ? { header: { ...this.payload.settings.header } } : {}),\n ...(this.payload.settings.body !== undefined ? { body: { ...this.payload.settings.body } } : {}),\n },\n });\n }\n\n private assertValidPayload(payload: Partial<CreateScreenRuleDTO>): asserts payload is CreateScreenRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n\n if (typeof payload.name !== 'string' || payload.name.trim().length === 0) invalidFields.push('name');\n if (!hasHeader && !hasBody) invalidFields.push('settings.header or settings.body');\n if (\n hasBody &&\n (settings?.body === null || typeof settings?.body !== 'object' || typeof settings.body.content !== 'string')\n )\n invalidFields.push('settings.body.content');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,5 @@
1
+ export { C as CreateScreenRuleDTO, a as ScreenRuleBodyComponent, S as ScreenRuleHeaderComponent } from '../../_screen-rule-FlIJzVXA.mjs';
2
+
1
3
  /** Available provider options in the Chat Config API. */
2
4
  type ProviderName = 'whatsapp' | 'gmail' | 'outlook' | 'messenger' | 'direct' | 'yunique';
3
5
  interface Provider {
@@ -151,43 +153,84 @@ interface ProviderDisplayInfoResponse {
151
153
  channel: string | null;
152
154
  }
153
155
 
154
- /** A provider entity nested within a configuration response. */
156
+ /**
157
+ * Provider entity nested in `GET /config/provider/:providerId` via the
158
+ * Sequelize association `providers` (`Configs.belongsTo(Providers)`).
159
+ * `id` is the integer primary key of the `Providers` table.
160
+ */
155
161
  interface ConfigProvider {
156
- id: string;
162
+ /** Provider primary key (`Providers.id`, integer). */
163
+ id: number | string;
164
+ /** Provider name (e.g. `whatsapp`, `gmail`, `outlook`, `messenger`, `direct`, `yunique`). */
157
165
  name: string;
166
+ /** Provider channel type (e.g. `chat`, `email`). */
158
167
  type: string;
168
+ /** Default session TTL in seconds. */
159
169
  defaultSession: number;
170
+ /** JSON schema describing provider-specific `configurations` fields, when available. */
160
171
  configurationsSchema: Record<string, unknown> | null;
161
172
  createdAt: string;
162
173
  updatedAt: string;
163
174
  }
164
- /** A configuration entity returned by the Chat Config API. */
175
+ /**
176
+ * A configuration row from the `Configs` table.
177
+ * Returned by `GET /config/:configId` and inside
178
+ * `GET /config/provider/:providerId` (`{ configurations: Config[] }`).
179
+ * When listed by provider, each item includes the nested `providers` association.
180
+ */
165
181
  interface Config {
182
+ /** Configuration UUID (`Configs.id`). */
166
183
  id: string;
167
184
  isAssistanceEnabled: boolean;
168
185
  rewind: number | null;
186
+ /** Company UUID resolved from the auth token on list-by-provider. */
169
187
  companyId: string;
170
188
  active: boolean;
189
+ /** Provider-specific settings JSON (shape varies by provider). */
171
190
  configurations: Record<string, unknown>;
172
191
  priority: number | null;
192
+ /** Foreign key to `Providers.id`. */
193
+ providerId: number | string;
173
194
  inbound: boolean;
174
195
  outbound: boolean;
175
196
  deletedAt: string | null;
197
+ csatConditionalRulesEnabled: boolean;
198
+ csatFeedbackTTL: number | null;
199
+ createdAt: string;
200
+ updatedAt: string;
201
+ /** Nested provider loaded by `GET /config/provider/:providerId`. */
176
202
  providers: ConfigProvider;
177
203
  }
178
- /** Response returned by the Chat Config API when listing configurations by provider. */
204
+ /**
205
+ * Response of `GET /config/provider/:providerId`.
206
+ * Always wrapped as `{ configurations }` (empty array when none match).
207
+ */
179
208
  interface ConfigListByProviderResponse {
180
209
  configurations: Config[];
181
210
  }
182
- /** Query parameters for filtering configurations by provider. */
211
+ /**
212
+ * Optional query filters for `GET /config/provider/:providerId`.
213
+ * Filters map to `Configs` columns, except `providerType` / `providerName`
214
+ * which filter the nested `providers` association (`type` / `name`).
215
+ * The backend applies filters with truthiness checks, so `false` / `0` values
216
+ * are ignored and do not filter.
217
+ */
183
218
  interface GetConfigsByProviderParams {
219
+ /** Filter by `Configs.isAssistanceEnabled`. */
184
220
  isAssistanceEnabled?: boolean;
221
+ /** Filter by `Configs.rewind`. */
185
222
  rewind?: number;
223
+ /** Filter by `Configs.active`. */
186
224
  active?: boolean;
225
+ /** Filter by `Configs.priority`. */
187
226
  priority?: number;
227
+ /** Filter by `Configs.inbound` (e.g. inbound WhatsApp channels). */
188
228
  inbound?: boolean;
229
+ /** Filter by `Configs.outbound`. */
189
230
  outbound?: boolean;
231
+ /** Filter by nested `providers.type` (e.g. `chat`, `email`). */
190
232
  providerType?: string;
233
+ /** Filter by nested `providers.name` (e.g. `whatsapp`). */
191
234
  providerName?: string;
192
235
  }
193
236