@opens/gateways 1.17.5 → 1.17.7
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/_identification-rule-C7mcbjha.d.mts +64 -0
- package/dist/_identification-rule-C7mcbjha.d.ts +64 -0
- package/dist/chat-config/builders/index.d.mts +107 -3
- package/dist/chat-config/builders/index.d.ts +107 -3
- package/dist/chat-config/builders/index.js +369 -4
- package/dist/chat-config/builders/index.js.map +1 -1
- package/dist/chat-config/builders/index.mjs +366 -3
- package/dist/chat-config/builders/index.mjs.map +1 -1
- package/dist/chat-config/contracts/index.d.mts +19 -4
- package/dist/chat-config/contracts/index.d.ts +19 -4
- package/dist/chat-config/value-objects/index.d.mts +46 -2
- package/dist/chat-config/value-objects/index.d.ts +46 -2
- package/dist/chat-config/value-objects/index.js +84 -2
- package/dist/chat-config/value-objects/index.js.map +1 -1
- package/dist/chat-config/value-objects/index.mjs +81 -1
- package/dist/chat-config/value-objects/index.mjs.map +1 -1
- package/dist/customer-service/contracts/index.d.mts +26 -1
- package/dist/customer-service/contracts/index.d.ts +26 -1
- package/dist/customer-service/contracts/index.js.map +1 -1
- package/dist/index.d.mts +10 -4
- package/dist/index.d.ts +10 -4
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/_screen-rule-FlIJzVXA.d.mts +0 -20
- package/dist/_screen-rule-FlIJzVXA.d.ts +0 -20
|
@@ -34,6 +34,84 @@ var ScreenRuleVO = class _ScreenRuleVO {
|
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
+
// src/chat-config/value-objects/_service-rule.ts
|
|
38
|
+
var clonePayload2 = (payload) => ({
|
|
39
|
+
name: payload.name,
|
|
40
|
+
action: "service",
|
|
41
|
+
settings: {
|
|
42
|
+
...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
|
|
43
|
+
...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
|
|
44
|
+
...payload.settings.features !== void 0 ? { features: { ...payload.settings.features } } : {},
|
|
45
|
+
...payload.settings.behavior !== void 0 ? { behavior: payload.settings.behavior } : {}
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
var ServiceRuleVO = class _ServiceRuleVO {
|
|
49
|
+
payload;
|
|
50
|
+
/**
|
|
51
|
+
* Creates a service-rule value object from a complete payload.
|
|
52
|
+
* @param payload - The service-rule payload to snapshot.
|
|
53
|
+
*/
|
|
54
|
+
constructor(payload) {
|
|
55
|
+
this.payload = clonePayload2(payload);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Creates a value object from its JSON representation.
|
|
59
|
+
* @param payload - The service-rule JSON payload.
|
|
60
|
+
* @returns A service-rule value object containing a defensive snapshot.
|
|
61
|
+
*/
|
|
62
|
+
static fromJSON(payload) {
|
|
63
|
+
return new _ServiceRuleVO(payload);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Converts a service-rule value object to JSON.
|
|
67
|
+
* @param serviceRuleVO - The service-rule value object to serialize.
|
|
68
|
+
* @returns A defensive copy of the service-rule payload.
|
|
69
|
+
*/
|
|
70
|
+
static toJSON(serviceRuleVO) {
|
|
71
|
+
return clonePayload2(serviceRuleVO.payload);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
// src/chat-config/value-objects/_identification-rule.ts
|
|
76
|
+
var clonePayload3 = (payload) => ({
|
|
77
|
+
name: payload.name,
|
|
78
|
+
action: "identification",
|
|
79
|
+
settings: {
|
|
80
|
+
...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
|
|
81
|
+
...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
|
|
82
|
+
form: {
|
|
83
|
+
...payload.settings.form,
|
|
84
|
+
...payload.settings.form.fields !== void 0 ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) } : {}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
var IdentificationRuleVO = class _IdentificationRuleVO {
|
|
89
|
+
payload;
|
|
90
|
+
/**
|
|
91
|
+
* Creates an identification-rule value object from a complete payload.
|
|
92
|
+
* @param payload - The identification-rule payload to snapshot.
|
|
93
|
+
*/
|
|
94
|
+
constructor(payload) {
|
|
95
|
+
this.payload = clonePayload3(payload);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Creates a value object from its JSON representation.
|
|
99
|
+
* @param payload - The identification-rule JSON payload.
|
|
100
|
+
* @returns An identification-rule value object containing a defensive snapshot.
|
|
101
|
+
*/
|
|
102
|
+
static fromJSON(payload) {
|
|
103
|
+
return new _IdentificationRuleVO(payload);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Converts an identification-rule value object to JSON.
|
|
107
|
+
* @param identificationRuleVO - The identification-rule value object to serialize.
|
|
108
|
+
* @returns A defensive copy of the identification-rule payload.
|
|
109
|
+
*/
|
|
110
|
+
static toJSON(identificationRuleVO) {
|
|
111
|
+
return clonePayload3(identificationRuleVO.payload);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
37
115
|
// src/chat-config/builders/_screen-rule.ts
|
|
38
116
|
var clonePartialPayload = (payload) => ({
|
|
39
117
|
...payload,
|
|
@@ -135,13 +213,298 @@ var ScreenRuleBuilder = class _ScreenRuleBuilder {
|
|
|
135
213
|
const hasBody = settings?.body !== void 0;
|
|
136
214
|
if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
|
|
137
215
|
if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
|
|
138
|
-
if (
|
|
139
|
-
invalidFields.push("settings.
|
|
216
|
+
if (hasHeader && (settings?.header === null || typeof settings?.header !== "object"))
|
|
217
|
+
invalidFields.push("settings.header");
|
|
218
|
+
if (hasBody && (settings?.body === null || typeof settings?.body !== "object")) invalidFields.push("settings.body");
|
|
140
219
|
if (invalidFields.length > 0)
|
|
141
220
|
throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
|
|
142
221
|
}
|
|
143
222
|
};
|
|
223
|
+
|
|
224
|
+
// src/chat-config/builders/_service-rule.ts
|
|
225
|
+
var clonePartialPayload2 = (payload) => ({
|
|
226
|
+
...payload,
|
|
227
|
+
...payload.settings !== void 0 ? {
|
|
228
|
+
settings: {
|
|
229
|
+
...payload.settings,
|
|
230
|
+
...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
|
|
231
|
+
...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
|
|
232
|
+
...payload.settings.features !== void 0 ? { features: { ...payload.settings.features } } : {}
|
|
233
|
+
}
|
|
234
|
+
} : {}
|
|
235
|
+
});
|
|
236
|
+
var ServiceRuleBuilder = class _ServiceRuleBuilder {
|
|
237
|
+
payload = {
|
|
238
|
+
action: "service",
|
|
239
|
+
settings: {}
|
|
240
|
+
};
|
|
241
|
+
constructor(payload) {
|
|
242
|
+
if (payload !== void 0) this.withRule(payload);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Creates a service-rule builder.
|
|
246
|
+
* @param payload - Optional initial service-rule values.
|
|
247
|
+
* @returns A new service-rule builder.
|
|
248
|
+
*/
|
|
249
|
+
static create(payload) {
|
|
250
|
+
return new _ServiceRuleBuilder(payload);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Merges partial service-rule values into the builder.
|
|
254
|
+
* @param payload - Service-rule values to merge.
|
|
255
|
+
* @returns This builder instance.
|
|
256
|
+
*/
|
|
257
|
+
withRule(payload) {
|
|
258
|
+
const snapshot = clonePartialPayload2(payload);
|
|
259
|
+
this.payload = {
|
|
260
|
+
...this.payload,
|
|
261
|
+
...snapshot,
|
|
262
|
+
action: "service",
|
|
263
|
+
settings: {
|
|
264
|
+
...this.payload.settings,
|
|
265
|
+
...snapshot.settings,
|
|
266
|
+
...snapshot.settings?.features !== void 0 ? { features: { ...this.payload.settings?.features, ...snapshot.settings.features } } : {}
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
return this;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Sets the service-rule name.
|
|
273
|
+
* @param name - The service-rule name.
|
|
274
|
+
* @returns This builder instance.
|
|
275
|
+
*/
|
|
276
|
+
withName(name) {
|
|
277
|
+
this.payload.name = name;
|
|
278
|
+
return this;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Sets the service-rule header.
|
|
282
|
+
* @param header - The header component.
|
|
283
|
+
* @returns This builder instance.
|
|
284
|
+
*/
|
|
285
|
+
withHeader(header) {
|
|
286
|
+
this.payload.settings = {
|
|
287
|
+
...this.payload.settings,
|
|
288
|
+
header: { ...header }
|
|
289
|
+
};
|
|
290
|
+
return this;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Sets the service-rule body.
|
|
294
|
+
* @param body - The body component.
|
|
295
|
+
* @returns This builder instance.
|
|
296
|
+
*/
|
|
297
|
+
withBody(body) {
|
|
298
|
+
this.payload.settings = {
|
|
299
|
+
...this.payload.settings,
|
|
300
|
+
body: { ...body }
|
|
301
|
+
};
|
|
302
|
+
return this;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Sets the feature flags available during the service attendance.
|
|
306
|
+
* @param features - The service feature flags.
|
|
307
|
+
* @returns This builder instance.
|
|
308
|
+
*/
|
|
309
|
+
withFeatures(features) {
|
|
310
|
+
this.payload.settings = {
|
|
311
|
+
...this.payload.settings,
|
|
312
|
+
features: { ...features }
|
|
313
|
+
};
|
|
314
|
+
return this;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Sets whether the service attendance is chat or voice.
|
|
318
|
+
* @param behavior - The attendance behavior.
|
|
319
|
+
* @returns This builder instance.
|
|
320
|
+
*/
|
|
321
|
+
withBehavior(behavior) {
|
|
322
|
+
this.payload.settings = {
|
|
323
|
+
...this.payload.settings,
|
|
324
|
+
behavior
|
|
325
|
+
};
|
|
326
|
+
return this;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Builds a validated service-rule value object.
|
|
330
|
+
* @returns The completed service-rule value object.
|
|
331
|
+
* @throws {Error} If required service-rule fields are missing or invalid.
|
|
332
|
+
*/
|
|
333
|
+
build() {
|
|
334
|
+
this.assertValidPayload(this.payload);
|
|
335
|
+
return ServiceRuleVO.fromJSON({
|
|
336
|
+
name: this.payload.name,
|
|
337
|
+
action: "service",
|
|
338
|
+
settings: {
|
|
339
|
+
...this.payload.settings.header !== void 0 ? { header: { ...this.payload.settings.header } } : {},
|
|
340
|
+
...this.payload.settings.body !== void 0 ? { body: { ...this.payload.settings.body } } : {},
|
|
341
|
+
...this.payload.settings.features !== void 0 ? { features: { ...this.payload.settings.features } } : {},
|
|
342
|
+
...this.payload.settings.behavior !== void 0 ? { behavior: this.payload.settings.behavior } : {}
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
assertValidPayload(payload) {
|
|
347
|
+
const invalidFields = [];
|
|
348
|
+
const settings = payload.settings;
|
|
349
|
+
const hasHeader = settings?.header !== void 0;
|
|
350
|
+
const hasBody = settings?.body !== void 0;
|
|
351
|
+
if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
|
|
352
|
+
if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
|
|
353
|
+
if (hasHeader && (settings?.header === null || typeof settings?.header !== "object"))
|
|
354
|
+
invalidFields.push("settings.header");
|
|
355
|
+
if (hasBody && (settings?.body === null || typeof settings?.body !== "object")) invalidFields.push("settings.body");
|
|
356
|
+
if (invalidFields.length > 0)
|
|
357
|
+
throw new Error(`Cannot build service rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
// src/chat-config/builders/_identification-rule.ts
|
|
362
|
+
var clonePartialPayload3 = (payload) => ({
|
|
363
|
+
...payload,
|
|
364
|
+
...payload.settings !== void 0 ? {
|
|
365
|
+
settings: {
|
|
366
|
+
...payload.settings,
|
|
367
|
+
...payload.settings.header !== void 0 ? { header: { ...payload.settings.header } } : {},
|
|
368
|
+
...payload.settings.body !== void 0 ? { body: { ...payload.settings.body } } : {},
|
|
369
|
+
...payload.settings.form !== void 0 ? {
|
|
370
|
+
form: {
|
|
371
|
+
...payload.settings.form,
|
|
372
|
+
...payload.settings.form.fields !== void 0 ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) } : {}
|
|
373
|
+
}
|
|
374
|
+
} : {}
|
|
375
|
+
}
|
|
376
|
+
} : {}
|
|
377
|
+
});
|
|
378
|
+
var IdentificationRuleBuilder = class _IdentificationRuleBuilder {
|
|
379
|
+
payload = {
|
|
380
|
+
action: "identification",
|
|
381
|
+
settings: {
|
|
382
|
+
form: {}
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
constructor(payload) {
|
|
386
|
+
if (payload !== void 0) this.withRule(payload);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Creates an identification-rule builder.
|
|
390
|
+
* @param payload - Optional initial identification-rule values.
|
|
391
|
+
* @returns A new identification-rule builder.
|
|
392
|
+
*/
|
|
393
|
+
static create(payload) {
|
|
394
|
+
return new _IdentificationRuleBuilder(payload);
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Merges partial identification-rule values into the builder.
|
|
398
|
+
* @param payload - Identification-rule values to merge.
|
|
399
|
+
* @returns This builder instance.
|
|
400
|
+
*/
|
|
401
|
+
withRule(payload) {
|
|
402
|
+
const snapshot = clonePartialPayload3(payload);
|
|
403
|
+
this.payload = {
|
|
404
|
+
...this.payload,
|
|
405
|
+
...snapshot,
|
|
406
|
+
action: "identification",
|
|
407
|
+
settings: {
|
|
408
|
+
...this.payload.settings,
|
|
409
|
+
...snapshot.settings,
|
|
410
|
+
form: {
|
|
411
|
+
...this.payload.settings?.form,
|
|
412
|
+
...snapshot.settings?.form,
|
|
413
|
+
...snapshot.settings?.form?.fields !== void 0 ? { fields: snapshot.settings.form.fields.map((field) => ({ ...field })) } : {}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
return this;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Sets the identification-rule name.
|
|
421
|
+
* @param name - The identification-rule name.
|
|
422
|
+
* @returns This builder instance.
|
|
423
|
+
*/
|
|
424
|
+
withName(name) {
|
|
425
|
+
this.payload.name = name;
|
|
426
|
+
return this;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Sets the identification-rule header.
|
|
430
|
+
* @param header - The header component.
|
|
431
|
+
* @returns This builder instance.
|
|
432
|
+
*/
|
|
433
|
+
withHeader(header) {
|
|
434
|
+
this.payload.settings = {
|
|
435
|
+
...this.payload.settings,
|
|
436
|
+
header: { ...header },
|
|
437
|
+
form: this.payload.settings?.form ?? {}
|
|
438
|
+
};
|
|
439
|
+
return this;
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Sets the identification-rule body.
|
|
443
|
+
* @param body - The body component.
|
|
444
|
+
* @returns This builder instance.
|
|
445
|
+
*/
|
|
446
|
+
withBody(body) {
|
|
447
|
+
this.payload.settings = {
|
|
448
|
+
...this.payload.settings,
|
|
449
|
+
body: { ...body },
|
|
450
|
+
form: this.payload.settings?.form ?? {}
|
|
451
|
+
};
|
|
452
|
+
return this;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Sets the identification-rule form component.
|
|
456
|
+
* @param form - The form component.
|
|
457
|
+
* @returns This builder instance.
|
|
458
|
+
*/
|
|
459
|
+
withForm(form) {
|
|
460
|
+
this.payload.settings = {
|
|
461
|
+
...this.payload.settings,
|
|
462
|
+
form: {
|
|
463
|
+
...form,
|
|
464
|
+
...form.fields !== void 0 ? { fields: form.fields.map((field) => ({ ...field })) } : {}
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
return this;
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Builds a validated identification-rule value object.
|
|
471
|
+
* @returns The completed identification-rule value object.
|
|
472
|
+
* @throws {Error} If required identification-rule fields are missing or invalid.
|
|
473
|
+
*/
|
|
474
|
+
build() {
|
|
475
|
+
this.assertValidPayload(this.payload);
|
|
476
|
+
return IdentificationRuleVO.fromJSON({
|
|
477
|
+
name: this.payload.name,
|
|
478
|
+
action: "identification",
|
|
479
|
+
settings: {
|
|
480
|
+
...this.payload.settings.header !== void 0 ? { header: { ...this.payload.settings.header } } : {},
|
|
481
|
+
...this.payload.settings.body !== void 0 ? { body: { ...this.payload.settings.body } } : {},
|
|
482
|
+
form: {
|
|
483
|
+
...this.payload.settings.form,
|
|
484
|
+
...this.payload.settings.form.fields !== void 0 ? { fields: this.payload.settings.form.fields.map((field) => ({ ...field })) } : {}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
assertValidPayload(payload) {
|
|
490
|
+
const invalidFields = [];
|
|
491
|
+
const settings = payload.settings;
|
|
492
|
+
const hasHeader = settings?.header !== void 0;
|
|
493
|
+
const hasBody = settings?.body !== void 0;
|
|
494
|
+
const form = settings?.form;
|
|
495
|
+
if (typeof payload.name !== "string" || payload.name.trim().length === 0) invalidFields.push("name");
|
|
496
|
+
if (!hasHeader && !hasBody) invalidFields.push("settings.header or settings.body");
|
|
497
|
+
if (hasHeader && (settings?.header === null || typeof settings?.header !== "object"))
|
|
498
|
+
invalidFields.push("settings.header");
|
|
499
|
+
if (hasBody && (settings?.body === null || typeof settings?.body !== "object")) invalidFields.push("settings.body");
|
|
500
|
+
if (form === void 0 || form === null || typeof form !== "object") invalidFields.push("settings.form");
|
|
501
|
+
if (invalidFields.length > 0)
|
|
502
|
+
throw new Error(`Cannot build identification rule. Invalid or missing fields: ${invalidFields.join(", ")}`);
|
|
503
|
+
}
|
|
504
|
+
};
|
|
144
505
|
export {
|
|
145
|
-
|
|
506
|
+
IdentificationRuleBuilder,
|
|
507
|
+
ScreenRuleBuilder,
|
|
508
|
+
ServiceRuleBuilder
|
|
146
509
|
};
|
|
147
510
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +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":";AAEA,IAAM,eAAe,CAAC,aAAuD;AAAA,EAC3E,MAAM,QAAQ;AAAA,EACd,QAAQ;AAAA,EACR,UAAU;AAAA,IACR,GAAI,QAAQ,SAAS,WAAW,SAAY,EAAE,QAAQ,EAAE,GAAG,QAAQ,SAAS,OAAO,EAAE,IAAI,CAAC;AAAA,IAC1F,GAAI,QAAQ,SAAS,SAAS,SAAY,EAAE,MAAM,EAAE,GAAG,QAAQ,SAAS,KAAK,EAAE,IAAI,CAAC;AAAA,EACtF;AACF;AAGO,IAAM,eAAN,MAAM,cAAa;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT,YAAY,SAA8B;AACxC,SAAK,UAAU,aAAa,OAAO;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,SAAS,SAA4C;AAC1D,WAAO,IAAI,cAAa,OAAO;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,OAAO,cAAiD;AAC7D,WAAO,aAAa,aAAa,OAAO;AAAA,EAC1C;AACF;;;ACrCA,IAAM,sBAAsB,CAAC,aAAyE;AAAA,EACpG,GAAG;AAAA,EACH,GAAI,QAAQ,aAAa,SACrB;AAAA,IACE,UAAU;AAAA,MACR,GAAG,QAAQ;AAAA,MACX,GAAI,QAAQ,SAAS,WAAW,SAAY,EAAE,QAAQ,EAAE,GAAG,QAAQ,SAAS,OAAO,EAAE,IAAI,CAAC;AAAA,MAC1F,GAAI,QAAQ,SAAS,SAAS,SAAY,EAAE,MAAM,EAAE,GAAG,QAAQ,SAAS,KAAK,EAAE,IAAI,CAAC;AAAA,IACtF;AAAA,EACF,IACA,CAAC;AACP;AAGO,IAAM,oBAAN,MAAM,mBAAkB;AAAA,EACrB,UAAwC;AAAA,IAC9C,QAAQ;AAAA,IACR,UAAU,CAAC;AAAA,EACb;AAAA,EAEQ,YAAY,SAAwC;AAC1D,QAAI,YAAY,OAAW,MAAK,SAAS,OAAO;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,OAAO,SAA2D;AACvE,WAAO,IAAI,mBAAkB,OAAO;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,SAA6C;AACpD,UAAM,WAAW,oBAAoB,OAAO;AAE5C,SAAK,UAAU;AAAA,MACb,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,GAAG,KAAK,QAAQ;AAAA,QAChB,GAAG,SAAS;AAAA,MACd;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,MAAoB;AAC3B,SAAK,QAAQ,OAAO;AACpB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,QAAyC;AAClD,SAAK,QAAQ,WAAW;AAAA,MACtB,GAAG,KAAK,QAAQ;AAAA,MAChB,QAAQ,EAAE,GAAG,OAAO;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,MAAqC;AAC5C,SAAK,QAAQ,WAAW;AAAA,MACtB,GAAG,KAAK,QAAQ;AAAA,MAChB,MAAM,EAAE,GAAG,KAAK;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,QAAsB;AACpB,SAAK,mBAAmB,KAAK,OAAO;AAEpC,WAAO,aAAa,SAAS;AAAA,MAC3B,MAAM,KAAK,QAAQ;AAAA,MACnB,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,GAAI,KAAK,QAAQ,SAAS,WAAW,SAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,QAAQ,SAAS,OAAO,EAAE,IAAI,CAAC;AAAA,QACpG,GAAI,KAAK,QAAQ,SAAS,SAAS,SAAY,EAAE,MAAM,EAAE,GAAG,KAAK,QAAQ,SAAS,KAAK,EAAE,IAAI,CAAC;AAAA,MAChG;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,mBAAmB,SAA+E;AACxG,UAAM,gBAA0B,CAAC;AACjC,UAAM,WAAW,QAAQ;AACzB,UAAM,YAAY,UAAU,WAAW;AACvC,UAAM,UAAU,UAAU,SAAS;AAEnC,QAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,KAAK,KAAK,EAAE,WAAW,EAAG,eAAc,KAAK,MAAM;AACnG,QAAI,CAAC,aAAa,CAAC,QAAS,eAAc,KAAK,kCAAkC;AACjF,QACE,YACC,UAAU,SAAS,QAAQ,OAAO,UAAU,SAAS,YAAY,OAAO,SAAS,KAAK,YAAY;AAEnG,oBAAc,KAAK,uBAAuB;AAE5C,QAAI,cAAc,SAAS;AACzB,YAAM,IAAI,MAAM,wDAAwD,cAAc,KAAK,IAAI,CAAC,EAAE;AAAA,EACtG;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/chat-config/value-objects/_screen-rule.ts","../../../src/chat-config/value-objects/_service-rule.ts","../../../src/chat-config/value-objects/_identification-rule.ts","../../../src/chat-config/builders/_screen-rule.ts","../../../src/chat-config/builders/_service-rule.ts","../../../src/chat-config/builders/_identification-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 { CreateServiceRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateServiceRuleDTO): CreateServiceRuleDTO => ({\n name: payload.name,\n action: 'service',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n ...(payload.settings.features !== undefined ? { features: { ...payload.settings.features } } : {}),\n ...(payload.settings.behavior !== undefined ? { behavior: payload.settings.behavior } : {}),\n },\n});\n\n/** Value object representing a complete service-rule payload. */\nexport class ServiceRuleVO {\n readonly payload: CreateServiceRuleDTO;\n\n /**\n * Creates a service-rule value object from a complete payload.\n * @param payload - The service-rule payload to snapshot.\n */\n constructor(payload: CreateServiceRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The service-rule JSON payload.\n * @returns A service-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateServiceRuleDTO): ServiceRuleVO {\n return new ServiceRuleVO(payload);\n }\n\n /**\n * Converts a service-rule value object to JSON.\n * @param serviceRuleVO - The service-rule value object to serialize.\n * @returns A defensive copy of the service-rule payload.\n */\n static toJSON(serviceRuleVO: ServiceRuleVO): CreateServiceRuleDTO {\n return clonePayload(serviceRuleVO.payload);\n }\n}\n","import type { CreateIdentificationRuleDTO } from '../contracts';\n\nconst clonePayload = (payload: CreateIdentificationRuleDTO): CreateIdentificationRuleDTO => ({\n name: payload.name,\n action: 'identification',\n settings: {\n ...(payload.settings.header !== undefined ? { header: { ...payload.settings.header } } : {}),\n ...(payload.settings.body !== undefined ? { body: { ...payload.settings.body } } : {}),\n form: {\n ...payload.settings.form,\n ...(payload.settings.form.fields !== undefined\n ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n },\n});\n\n/** Value object representing a complete identification-rule payload. */\nexport class IdentificationRuleVO {\n readonly payload: CreateIdentificationRuleDTO;\n\n /**\n * Creates an identification-rule value object from a complete payload.\n * @param payload - The identification-rule payload to snapshot.\n */\n constructor(payload: CreateIdentificationRuleDTO) {\n this.payload = clonePayload(payload);\n }\n\n /**\n * Creates a value object from its JSON representation.\n * @param payload - The identification-rule JSON payload.\n * @returns An identification-rule value object containing a defensive snapshot.\n */\n static fromJSON(payload: CreateIdentificationRuleDTO): IdentificationRuleVO {\n return new IdentificationRuleVO(payload);\n }\n\n /**\n * Converts an identification-rule value object to JSON.\n * @param identificationRuleVO - The identification-rule value object to serialize.\n * @returns A defensive copy of the identification-rule payload.\n */\n static toJSON(identificationRuleVO: IdentificationRuleVO): CreateIdentificationRuleDTO {\n return clonePayload(identificationRuleVO.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 (hasHeader && (settings?.header === null || typeof settings?.header !== 'object'))\n invalidFields.push('settings.header');\n if (hasBody && (settings?.body === null || typeof settings?.body !== 'object')) invalidFields.push('settings.body');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build screen rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n","import type {\n CreateServiceRuleDTO,\n ScreenRuleBodyComponent,\n ScreenRuleHeaderComponent,\n ServiceRuleBehavior,\n ServiceRuleFeatures,\n} from '../contracts';\nimport { ServiceRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateServiceRuleDTO>): Partial<CreateServiceRuleDTO> => ({\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 ...(payload.settings.features !== undefined ? { features: { ...payload.settings.features } } : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated service-rule value objects. */\nexport class ServiceRuleBuilder {\n private payload: Partial<CreateServiceRuleDTO> = {\n action: 'service',\n settings: {},\n };\n\n private constructor(payload?: Partial<CreateServiceRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates a service-rule builder.\n * @param payload - Optional initial service-rule values.\n * @returns A new service-rule builder.\n */\n static create(payload?: Partial<CreateServiceRuleDTO>): ServiceRuleBuilder {\n return new ServiceRuleBuilder(payload);\n }\n\n /**\n * Merges partial service-rule values into the builder.\n * @param payload - Service-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateServiceRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'service',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n ...(snapshot.settings?.features !== undefined\n ? { features: { ...this.payload.settings?.features, ...snapshot.settings.features } }\n : {}),\n },\n };\n\n return this;\n }\n\n /**\n * Sets the service-rule name.\n * @param name - The service-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 service-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 service-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 * Sets the feature flags available during the service attendance.\n * @param features - The service feature flags.\n * @returns This builder instance.\n */\n withFeatures(features: ServiceRuleFeatures): this {\n this.payload.settings = {\n ...this.payload.settings,\n features: { ...features },\n };\n return this;\n }\n\n /**\n * Sets whether the service attendance is chat or voice.\n * @param behavior - The attendance behavior.\n * @returns This builder instance.\n */\n withBehavior(behavior: ServiceRuleBehavior): this {\n this.payload.settings = {\n ...this.payload.settings,\n behavior,\n };\n return this;\n }\n\n /**\n * Builds a validated service-rule value object.\n * @returns The completed service-rule value object.\n * @throws {Error} If required service-rule fields are missing or invalid.\n */\n build(): ServiceRuleVO {\n this.assertValidPayload(this.payload);\n\n return ServiceRuleVO.fromJSON({\n name: this.payload.name,\n action: 'service',\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 ...(this.payload.settings.features !== undefined ? { features: { ...this.payload.settings.features } } : {}),\n ...(this.payload.settings.behavior !== undefined ? { behavior: this.payload.settings.behavior } : {}),\n },\n });\n }\n\n private assertValidPayload(payload: Partial<CreateServiceRuleDTO>): asserts payload is CreateServiceRuleDTO {\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 (hasHeader && (settings?.header === null || typeof settings?.header !== 'object'))\n invalidFields.push('settings.header');\n if (hasBody && (settings?.body === null || typeof settings?.body !== 'object')) invalidFields.push('settings.body');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build service rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n","import type {\n CreateIdentificationRuleDTO,\n IdentificationRuleFormComponent,\n ScreenRuleBodyComponent,\n ScreenRuleHeaderComponent,\n} from '../contracts';\nimport { IdentificationRuleVO } from '../value-objects';\n\nconst clonePartialPayload = (payload: Partial<CreateIdentificationRuleDTO>): Partial<CreateIdentificationRuleDTO> => ({\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 ...(payload.settings.form !== undefined\n ? {\n form: {\n ...payload.settings.form,\n ...(payload.settings.form.fields !== undefined\n ? { fields: payload.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n }\n : {}),\n },\n }\n : {}),\n});\n\n/** Fluent builder for creating validated identification-rule value objects. */\nexport class IdentificationRuleBuilder {\n private payload: Partial<CreateIdentificationRuleDTO> = {\n action: 'identification',\n settings: {\n form: {},\n },\n };\n\n private constructor(payload?: Partial<CreateIdentificationRuleDTO>) {\n if (payload !== undefined) this.withRule(payload);\n }\n\n /**\n * Creates an identification-rule builder.\n * @param payload - Optional initial identification-rule values.\n * @returns A new identification-rule builder.\n */\n static create(payload?: Partial<CreateIdentificationRuleDTO>): IdentificationRuleBuilder {\n return new IdentificationRuleBuilder(payload);\n }\n\n /**\n * Merges partial identification-rule values into the builder.\n * @param payload - Identification-rule values to merge.\n * @returns This builder instance.\n */\n withRule(payload: Partial<CreateIdentificationRuleDTO>): this {\n const snapshot = clonePartialPayload(payload);\n\n this.payload = {\n ...this.payload,\n ...snapshot,\n action: 'identification',\n settings: {\n ...this.payload.settings,\n ...snapshot.settings,\n form: {\n ...this.payload.settings?.form,\n ...snapshot.settings?.form,\n ...(snapshot.settings?.form?.fields !== undefined\n ? { fields: snapshot.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n },\n };\n\n return this;\n }\n\n /**\n * Sets the identification-rule name.\n * @param name - The identification-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 identification-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 form: this.payload.settings?.form ?? {},\n };\n return this;\n }\n\n /**\n * Sets the identification-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 form: this.payload.settings?.form ?? {},\n };\n return this;\n }\n\n /**\n * Sets the identification-rule form component.\n * @param form - The form component.\n * @returns This builder instance.\n */\n withForm(form: IdentificationRuleFormComponent): this {\n this.payload.settings = {\n ...this.payload.settings,\n form: {\n ...form,\n ...(form.fields !== undefined ? { fields: form.fields.map((field) => ({ ...field })) } : {}),\n },\n };\n return this;\n }\n\n /**\n * Builds a validated identification-rule value object.\n * @returns The completed identification-rule value object.\n * @throws {Error} If required identification-rule fields are missing or invalid.\n */\n build(): IdentificationRuleVO {\n this.assertValidPayload(this.payload);\n\n return IdentificationRuleVO.fromJSON({\n name: this.payload.name,\n action: 'identification',\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 form: {\n ...this.payload.settings.form,\n ...(this.payload.settings.form.fields !== undefined\n ? { fields: this.payload.settings.form.fields.map((field) => ({ ...field })) }\n : {}),\n },\n },\n });\n }\n\n private assertValidPayload(\n payload: Partial<CreateIdentificationRuleDTO>,\n ): asserts payload is CreateIdentificationRuleDTO {\n const invalidFields: string[] = [];\n const settings = payload.settings;\n const hasHeader = settings?.header !== undefined;\n const hasBody = settings?.body !== undefined;\n const form = settings?.form;\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 (hasHeader && (settings?.header === null || typeof settings?.header !== 'object'))\n invalidFields.push('settings.header');\n if (hasBody && (settings?.body === null || typeof settings?.body !== 'object')) invalidFields.push('settings.body');\n if (form === undefined || form === null || typeof form !== 'object') invalidFields.push('settings.form');\n\n if (invalidFields.length > 0)\n throw new Error(`Cannot build identification rule. Invalid or missing fields: ${invalidFields.join(', ')}`);\n }\n}\n"],"mappings":"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","names":["clonePayload","clonePayload","clonePartialPayload","clonePartialPayload"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { S as ScreenRuleHeaderComponent, a as ScreenRuleBodyComponent, c as ServiceRuleFeatures, d as ServiceRuleBehavior, I as IdentificationRuleFormComponent } from '../../_identification-rule-C7mcbjha.mjs';
|
|
2
|
+
export { e as CreateIdentificationRuleDTO, C as CreateScreenRuleDTO, b as CreateServiceRuleDTO, f as IdentificationRuleFieldComponent } from '../../_identification-rule-C7mcbjha.mjs';
|
|
2
3
|
|
|
3
4
|
/** Available provider options in the Chat Config API. */
|
|
4
5
|
type ProviderName = 'whatsapp' | 'gmail' | 'outlook' | 'messenger' | 'direct' | 'yunique';
|
|
@@ -380,7 +381,7 @@ interface QueueRule extends Rule {
|
|
|
380
381
|
flow?: Rule[];
|
|
381
382
|
}
|
|
382
383
|
/** Known rule action values used by the Chat Config API. */
|
|
383
|
-
type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat';
|
|
384
|
+
type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat' | 'screen' | 'service' | 'identification';
|
|
384
385
|
/** Archive filter for listing rules. Matches `GET /rules/paginated` query validation. */
|
|
385
386
|
type RuleArchiveStatus = 'archived' | 'unarchived' | 'all';
|
|
386
387
|
/** Associations that can be eager-loaded when listing paginated rules. */
|
|
@@ -548,11 +549,17 @@ interface RuleFlowSettings {
|
|
|
548
549
|
}
|
|
549
550
|
/**
|
|
550
551
|
* Rule settings JSON.
|
|
551
|
-
* Common keys: `interactiveType` (URA)
|
|
552
|
+
* Common keys: `interactiveType` (URA), `flow` (action `flow`),
|
|
553
|
+
* `header` / `body` for widget screen layouts, and `form` for identification.
|
|
552
554
|
*/
|
|
553
555
|
interface RuleSettings {
|
|
554
556
|
interactiveType?: RuleInteractiveType;
|
|
555
557
|
flow?: RuleFlowSettings;
|
|
558
|
+
header?: ScreenRuleHeaderComponent;
|
|
559
|
+
body?: ScreenRuleBodyComponent;
|
|
560
|
+
features?: ServiceRuleFeatures;
|
|
561
|
+
behavior?: ServiceRuleBehavior;
|
|
562
|
+
form?: IdentificationRuleFormComponent;
|
|
556
563
|
[key: string]: unknown;
|
|
557
564
|
}
|
|
558
565
|
/** Rule entity returned by the Chat Config API. */
|
|
@@ -598,17 +605,25 @@ type RulesCountResponse = {
|
|
|
598
605
|
/** Response returned by the Chat Config API when listing root rules. */
|
|
599
606
|
type RootRulesResponse = RulesResponse;
|
|
600
607
|
|
|
608
|
+
/** Directed connection from one rule to the next rule in a workflow. */
|
|
601
609
|
interface WorkflowEdge {
|
|
610
|
+
/** Unique identifier of the edge. */
|
|
602
611
|
id: string;
|
|
612
|
+
/** Identifier of the rule this edge points to. */
|
|
603
613
|
nextRuleId: string;
|
|
604
614
|
}
|
|
615
|
+
/** Flat workflow graph used to render a widget flow. */
|
|
605
616
|
interface WorkflowData {
|
|
617
|
+
/** Unique identifier of the workflow. */
|
|
606
618
|
id: string;
|
|
619
|
+
/** Rules that belong to the workflow. */
|
|
607
620
|
rules: Rule[];
|
|
621
|
+
/** Outgoing edges keyed by the source rule id. */
|
|
608
622
|
edges: Record<string, WorkflowEdge[]>;
|
|
609
623
|
}
|
|
624
|
+
/** Envelope returned by `GET /workflow/:id`. */
|
|
610
625
|
interface WorkflowDataResponse {
|
|
611
626
|
data: WorkflowData;
|
|
612
627
|
}
|
|
613
628
|
|
|
614
|
-
export type
|
|
629
|
+
export { type Config, type ConfigListByProviderResponse, type ConfigProvider, type DistributionType, type FindOrCreateQueueRuleRequest, type GetConfigsByProviderParams, type GetMemberQueuesRequest, type GetProviderConfigurationsParams, type GetProviderDisplayInfoParams, type GetRootRulesRequest, type GetRuleByIdRequest, type GetRulesCountRequest, type GetRulesRequest, type GetServiceGroupsParams, IdentificationRuleFormComponent, type MetaTemplateButton, type MetaTemplateConfigResponse, type MetaTemplateConfigsResponse, type Provider, type ProviderConfiguration, type ProviderConfigurationsResponse, type ProviderDisplayInfoResponse, type ProviderListResponse, type ProviderName, type Queue, type QueueListResponse, type QueueMember, type QueueRule, type RootRulesResponse, type Rule, type RuleAction, type RuleArchiveStatus, type RuleAssociation, type RuleAutomaticMessage, type RuleCallOnQueue, type RuleFlowSettings, type RuleFlowTextResponse, type RuleHttpMethod, type RuleInteractiveType, type RuleQuestionnaire, type RuleQuestionnaireBodyField, type RuleQuestionnaireHeader, type RuleQuestionnaireInteractiveOption, type RuleQuestionnaireQuestion, type RuleQuestionnaireQuestionType, type RuleQuestionnaireValidationAction, type RuleQuestionnaireValidationRegexType, type RuleResponse, type RuleSettings, type RuleWebhook, type RuleWebhookHeader, type RuleWebhookResponseMapping, type RulesCountResponse, type RulesResponse, ScreenRuleBodyComponent, ScreenRuleHeaderComponent, type ServiceGroup, type ServiceGroupsResponse, ServiceRuleBehavior, ServiceRuleFeatures, type WhatsAppProviderSettings, type WidgetProviderSettings, type WorkflowData, type WorkflowDataResponse, type WorkflowEdge };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { S as ScreenRuleHeaderComponent, a as ScreenRuleBodyComponent, c as ServiceRuleFeatures, d as ServiceRuleBehavior, I as IdentificationRuleFormComponent } from '../../_identification-rule-C7mcbjha.js';
|
|
2
|
+
export { e as CreateIdentificationRuleDTO, C as CreateScreenRuleDTO, b as CreateServiceRuleDTO, f as IdentificationRuleFieldComponent } from '../../_identification-rule-C7mcbjha.js';
|
|
2
3
|
|
|
3
4
|
/** Available provider options in the Chat Config API. */
|
|
4
5
|
type ProviderName = 'whatsapp' | 'gmail' | 'outlook' | 'messenger' | 'direct' | 'yunique';
|
|
@@ -380,7 +381,7 @@ interface QueueRule extends Rule {
|
|
|
380
381
|
flow?: Rule[];
|
|
381
382
|
}
|
|
382
383
|
/** Known rule action values used by the Chat Config API. */
|
|
383
|
-
type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat';
|
|
384
|
+
type RuleAction = 'queue' | 'interactiveMessage' | 'message' | 'automaticMessage' | 'automatic-message' | 'callOnQueue' | 'ura' | 'webhook' | 'questionnaire' | 'flow' | 'csat' | 'screen' | 'service' | 'identification';
|
|
384
385
|
/** Archive filter for listing rules. Matches `GET /rules/paginated` query validation. */
|
|
385
386
|
type RuleArchiveStatus = 'archived' | 'unarchived' | 'all';
|
|
386
387
|
/** Associations that can be eager-loaded when listing paginated rules. */
|
|
@@ -548,11 +549,17 @@ interface RuleFlowSettings {
|
|
|
548
549
|
}
|
|
549
550
|
/**
|
|
550
551
|
* Rule settings JSON.
|
|
551
|
-
* Common keys: `interactiveType` (URA)
|
|
552
|
+
* Common keys: `interactiveType` (URA), `flow` (action `flow`),
|
|
553
|
+
* `header` / `body` for widget screen layouts, and `form` for identification.
|
|
552
554
|
*/
|
|
553
555
|
interface RuleSettings {
|
|
554
556
|
interactiveType?: RuleInteractiveType;
|
|
555
557
|
flow?: RuleFlowSettings;
|
|
558
|
+
header?: ScreenRuleHeaderComponent;
|
|
559
|
+
body?: ScreenRuleBodyComponent;
|
|
560
|
+
features?: ServiceRuleFeatures;
|
|
561
|
+
behavior?: ServiceRuleBehavior;
|
|
562
|
+
form?: IdentificationRuleFormComponent;
|
|
556
563
|
[key: string]: unknown;
|
|
557
564
|
}
|
|
558
565
|
/** Rule entity returned by the Chat Config API. */
|
|
@@ -598,17 +605,25 @@ type RulesCountResponse = {
|
|
|
598
605
|
/** Response returned by the Chat Config API when listing root rules. */
|
|
599
606
|
type RootRulesResponse = RulesResponse;
|
|
600
607
|
|
|
608
|
+
/** Directed connection from one rule to the next rule in a workflow. */
|
|
601
609
|
interface WorkflowEdge {
|
|
610
|
+
/** Unique identifier of the edge. */
|
|
602
611
|
id: string;
|
|
612
|
+
/** Identifier of the rule this edge points to. */
|
|
603
613
|
nextRuleId: string;
|
|
604
614
|
}
|
|
615
|
+
/** Flat workflow graph used to render a widget flow. */
|
|
605
616
|
interface WorkflowData {
|
|
617
|
+
/** Unique identifier of the workflow. */
|
|
606
618
|
id: string;
|
|
619
|
+
/** Rules that belong to the workflow. */
|
|
607
620
|
rules: Rule[];
|
|
621
|
+
/** Outgoing edges keyed by the source rule id. */
|
|
608
622
|
edges: Record<string, WorkflowEdge[]>;
|
|
609
623
|
}
|
|
624
|
+
/** Envelope returned by `GET /workflow/:id`. */
|
|
610
625
|
interface WorkflowDataResponse {
|
|
611
626
|
data: WorkflowData;
|
|
612
627
|
}
|
|
613
628
|
|
|
614
|
-
export type
|
|
629
|
+
export { type Config, type ConfigListByProviderResponse, type ConfigProvider, type DistributionType, type FindOrCreateQueueRuleRequest, type GetConfigsByProviderParams, type GetMemberQueuesRequest, type GetProviderConfigurationsParams, type GetProviderDisplayInfoParams, type GetRootRulesRequest, type GetRuleByIdRequest, type GetRulesCountRequest, type GetRulesRequest, type GetServiceGroupsParams, IdentificationRuleFormComponent, type MetaTemplateButton, type MetaTemplateConfigResponse, type MetaTemplateConfigsResponse, type Provider, type ProviderConfiguration, type ProviderConfigurationsResponse, type ProviderDisplayInfoResponse, type ProviderListResponse, type ProviderName, type Queue, type QueueListResponse, type QueueMember, type QueueRule, type RootRulesResponse, type Rule, type RuleAction, type RuleArchiveStatus, type RuleAssociation, type RuleAutomaticMessage, type RuleCallOnQueue, type RuleFlowSettings, type RuleFlowTextResponse, type RuleHttpMethod, type RuleInteractiveType, type RuleQuestionnaire, type RuleQuestionnaireBodyField, type RuleQuestionnaireHeader, type RuleQuestionnaireInteractiveOption, type RuleQuestionnaireQuestion, type RuleQuestionnaireQuestionType, type RuleQuestionnaireValidationAction, type RuleQuestionnaireValidationRegexType, type RuleResponse, type RuleSettings, type RuleWebhook, type RuleWebhookHeader, type RuleWebhookResponseMapping, type RulesCountResponse, type RulesResponse, ScreenRuleBodyComponent, ScreenRuleHeaderComponent, type ServiceGroup, type ServiceGroupsResponse, ServiceRuleBehavior, ServiceRuleFeatures, type WhatsAppProviderSettings, type WidgetProviderSettings, type WorkflowData, type WorkflowDataResponse, type WorkflowEdge };
|