@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.
- package/dist/_screen-rule-FlIJzVXA.d.mts +20 -0
- package/dist/_screen-rule-FlIJzVXA.d.ts +20 -0
- package/dist/chat-config/builders/index.d.mts +47 -0
- package/dist/chat-config/builders/index.d.ts +47 -0
- package/dist/chat-config/builders/index.js +174 -0
- package/dist/chat-config/builders/index.js.map +1 -0
- package/dist/chat-config/builders/index.mjs +147 -0
- package/dist/chat-config/builders/index.mjs.map +1 -0
- package/dist/chat-config/contracts/index.d.mts +48 -5
- package/dist/chat-config/contracts/index.d.ts +48 -5
- package/dist/chat-config/value-objects/index.d.mts +25 -0
- package/dist/chat-config/value-objects/index.d.ts +25 -0
- package/dist/chat-config/value-objects/index.js +66 -0
- package/dist/chat-config/value-objects/index.js.map +1 -0
- package/dist/chat-config/value-objects/index.mjs +39 -0
- package/dist/chat-config/value-objects/index.mjs.map +1 -0
- package/dist/index.d.mts +8 -5
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -2
|
@@ -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
|
-
/**
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
|