@tellescope/sdk 1.255.19 → 1.256.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.
Files changed (82) hide show
  1. package/lib/cjs/tests/api_tests/custom_dashboards.test.d.ts.map +1 -1
  2. package/lib/cjs/tests/api_tests/custom_dashboards.test.js +99 -8
  3. package/lib/cjs/tests/api_tests/custom_dashboards.test.js.map +1 -1
  4. package/lib/cjs/tests/api_tests/default_summary_journey.test.d.ts.map +1 -0
  5. package/lib/cjs/tests/api_tests/default_summary_journey.test.js.map +1 -0
  6. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts +6 -0
  7. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -0
  8. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js +278 -0
  9. package/lib/cjs/tests/api_tests/file_download_unicode_names.test.js.map +1 -0
  10. package/lib/cjs/tests/api_tests/openloop_webhooks.test.d.ts.map +1 -1
  11. package/lib/cjs/tests/api_tests/openloop_webhooks.test.js +212 -33
  12. package/lib/cjs/tests/api_tests/openloop_webhooks.test.js.map +1 -1
  13. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  14. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js +85 -9
  15. package/lib/cjs/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  16. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts +2 -0
  17. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts.map +1 -0
  18. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js +242 -0
  19. package/lib/cjs/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js.map +1 -0
  20. package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts +29 -0
  21. package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts.map +1 -0
  22. package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js +443 -0
  23. package/lib/cjs/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js.map +1 -0
  24. package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts +35 -0
  25. package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts.map +1 -0
  26. package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js +231 -0
  27. package/lib/cjs/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js.map +1 -0
  28. package/lib/cjs/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.d.ts.map +1 -1
  29. package/lib/cjs/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js +524 -294
  30. package/lib/cjs/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js.map +1 -1
  31. package/lib/cjs/tests/tests.d.ts.map +1 -1
  32. package/lib/cjs/tests/tests.js +431 -230
  33. package/lib/cjs/tests/tests.js.map +1 -1
  34. package/lib/esm/enduser.d.ts +0 -1
  35. package/lib/esm/enduser.d.ts.map +1 -1
  36. package/lib/esm/sdk.d.ts +2 -3
  37. package/lib/esm/sdk.d.ts.map +1 -1
  38. package/lib/esm/session.d.ts +0 -1
  39. package/lib/esm/session.d.ts.map +1 -1
  40. package/lib/esm/tests/api_tests/custom_dashboards.test.d.ts.map +1 -1
  41. package/lib/esm/tests/api_tests/custom_dashboards.test.js +99 -8
  42. package/lib/esm/tests/api_tests/custom_dashboards.test.js.map +1 -1
  43. package/lib/esm/tests/api_tests/default_summary_journey.test.d.ts.map +1 -0
  44. package/lib/esm/tests/api_tests/default_summary_journey.test.js.map +1 -0
  45. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts +6 -0
  46. package/lib/esm/tests/api_tests/file_download_unicode_names.test.d.ts.map +1 -0
  47. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js +248 -0
  48. package/lib/esm/tests/api_tests/file_download_unicode_names.test.js.map +1 -0
  49. package/lib/esm/tests/api_tests/openloop_webhooks.test.d.ts.map +1 -1
  50. package/lib/esm/tests/api_tests/openloop_webhooks.test.js +213 -34
  51. package/lib/esm/tests/api_tests/openloop_webhooks.test.js.map +1 -1
  52. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.d.ts.map +1 -1
  53. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js +85 -9
  54. package/lib/esm/tests/api_tests/phone_calls_cold_transfer.test.js.map +1 -1
  55. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts +2 -0
  56. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.d.ts.map +1 -0
  57. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js +238 -0
  58. package/lib/esm/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.js.map +1 -0
  59. package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts +29 -0
  60. package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.d.ts.map +1 -0
  61. package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js +436 -0
  62. package/lib/esm/tests/api_tests/security/F-0015-webhook-outbound-ssrf.test.js.map +1 -0
  63. package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts +35 -0
  64. package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.d.ts.map +1 -0
  65. package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js +224 -0
  66. package/lib/esm/tests/api_tests/security/F-0025-proxy-image-unauth-ssrf.test.js.map +1 -0
  67. package/lib/esm/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.d.ts.map +1 -1
  68. package/lib/esm/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js +524 -294
  69. package/lib/esm/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.js.map +1 -1
  70. package/lib/esm/tests/tests.d.ts.map +1 -1
  71. package/lib/esm/tests/tests.js +431 -230
  72. package/lib/esm/tests/tests.js.map +1 -1
  73. package/lib/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +10 -10
  75. package/src/tests/api_tests/custom_dashboards.test.ts +92 -0
  76. package/src/tests/api_tests/file_download_unicode_names.test.ts +223 -0
  77. package/src/tests/api_tests/openloop_webhooks.test.ts +138 -0
  78. package/src/tests/api_tests/phone_calls_cold_transfer.test.ts +54 -0
  79. package/src/tests/api_tests/security/F-0013-sanitize-user-html-with-iframes.test.ts +215 -0
  80. package/src/tests/api_tests/security/F-0166-allowed-paths-wildcard-bypass.test.ts +215 -0
  81. package/src/tests/tests.ts +212 -1
  82. package/test_generated.pdf +0 -0
@@ -106,6 +106,7 @@ var user_portal_settings_test_1 = require("./api_tests/user_portal_settings.test
106
106
  var integrations_redacted_test_1 = require("./api_tests/integrations_redacted.test");
107
107
  var healthie_multi_integration_test_1 = require("./api_tests/healthie_multi_integration.test");
108
108
  var get_some_projection_test_1 = require("./api_tests/get_some_projection.test");
109
+ var file_download_unicode_names_test_1 = require("./api_tests/file_download_unicode_names.test");
109
110
  var mdb_sort_test_1 = require("./api_tests/mdb_sort.test");
110
111
  var create_user_notifications_trigger_test_1 = require("./api_tests/create_user_notifications_trigger.test");
111
112
  var inbox_thread_assignment_updates_test_1 = require("./api_tests/inbox_thread_assignment_updates.test");
@@ -158,6 +159,7 @@ var F_0007_invite_user_enumeration_test_1 = require("./api_tests/security/F-0007
158
159
  var register_business_id_injection_test_1 = require("./api_tests/security/register_business_id_injection.test");
159
160
  var F_0008_handle_incoming_communication_cross_tenant_test_1 = require("./api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test");
160
161
  var F_0013_sanitize_user_html_test_1 = require("./api_tests/security/F-0013-sanitize-user-html.test");
162
+ var F_0013_sanitize_user_html_with_iframes_test_1 = require("./api_tests/security/F-0013-sanitize-user-html-with-iframes.test");
161
163
  var F_0016_prototype_pollution_test_1 = require("./api_tests/security/F-0016-prototype-pollution.test");
162
164
  var F_0116_F_0119_enduser_cross_create_test_1 = require("./api_tests/security/F-0116-F-0119-enduser-cross-create.test");
163
165
  var F_0145_globalunique_leak_test_1 = require("./api_tests/security/F-0145-globalunique-leak.test");
@@ -9292,9 +9294,9 @@ var auto_reply_tests = function () { return __awaiter(void 0, void 0, void 0, fu
9292
9294
  });
9293
9295
  }); };
9294
9296
  var merge_enduser_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
9295
- var stripeCustomerId, stripeKey, _a, source, destination, otherEnduser, _b, emailToMove, email, _c, eventToMove, event, _d, roomToMove, room, chatToMove, chat;
9296
- return __generator(this, function (_f) {
9297
- switch (_f.label) {
9297
+ var stripeCustomerId, stripeKey, _a, source, destination, otherEnduser, _b, emailToMove, email, _c, eventToMove, event, _d, roomToMove, room, chatToMove, chat, _f, noInsuranceSource, noInsuranceDestination;
9298
+ return __generator(this, function (_g) {
9299
+ switch (_g.label) {
9298
9300
  case 0:
9299
9301
  (0, testing_1.log_header)("Merge Endusers");
9300
9302
  stripeCustomerId = 'example_cu_id';
@@ -9315,39 +9317,39 @@ var merge_enduser_tests = function () { return __awaiter(void 0, void 0, void 0,
9315
9317
  { email: 'other@tellescope.com' },
9316
9318
  ])];
9317
9319
  case 1:
9318
- _a = (_f.sent()).created, source = _a[0], destination = _a[1], otherEnduser = _a[2];
9320
+ _a = (_g.sent()).created, source = _a[0], destination = _a[1], otherEnduser = _a[2];
9319
9321
  return [4 /*yield*/, sdk.api.emails.createSome([
9320
9322
  { enduserId: source.id, subject: 'subject', logOnly: true, textContent: 'email' },
9321
9323
  { enduserId: otherEnduser.id, subject: 'subject', logOnly: true, textContent: 'email' },
9322
9324
  ])];
9323
9325
  case 2:
9324
- _b = (_f.sent()).created, emailToMove = _b[0], email = _b[1];
9326
+ _b = (_g.sent()).created, emailToMove = _b[0], email = _b[1];
9325
9327
  return [4 /*yield*/, sdk.api.calendar_events.createSome([
9326
9328
  { attendees: [{ type: 'enduser', id: source.id }], durationInMinutes: 5, startTimeInMS: Date.now(), title: 'title' },
9327
9329
  { attendees: [{ type: 'enduser', id: otherEnduser.id }], durationInMinutes: 5, startTimeInMS: Date.now(), title: 'title' },
9328
9330
  ])];
9329
9331
  case 3:
9330
- _c = (_f.sent()).created, eventToMove = _c[0], event = _c[1];
9332
+ _c = (_g.sent()).created, eventToMove = _c[0], event = _c[1];
9331
9333
  return [4 /*yield*/, sdk.api.chat_rooms.createSome([
9332
9334
  { enduserIds: [source.id], title: 'title' },
9333
9335
  { enduserIds: [otherEnduser.id], title: 'title' },
9334
9336
  ])];
9335
9337
  case 4:
9336
- _d = (_f.sent()).created, roomToMove = _d[0], room = _d[1];
9338
+ _d = (_g.sent()).created, roomToMove = _d[0], room = _d[1];
9337
9339
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: roomToMove.id, senderId: source.id, message: 'test' })];
9338
9340
  case 5:
9339
- chatToMove = _f.sent();
9341
+ chatToMove = _g.sent();
9340
9342
  return [4 /*yield*/, sdk.api.chats.createOne({
9341
9343
  roomId: room.id, senderId: otherEnduser.id, message: 'test'
9342
9344
  })];
9343
9345
  case 6:
9344
- chat = _f.sent();
9346
+ chat = _g.sent();
9345
9347
  return [4 /*yield*/, sdk.api.endusers.merge({ sourceEnduserId: source.id, destinationEnduserId: destination.id })];
9346
9348
  case 7:
9347
- _f.sent();
9349
+ _g.sent();
9348
9350
  return [4 /*yield*/, (0, testing_1.async_test)("Source is deleted", function () { return sdk.api.endusers.getOne(source.id); }, testing_1.handleAnyError)];
9349
9351
  case 8:
9350
- _f.sent();
9352
+ _g.sent();
9351
9353
  return [4 /*yield*/, (0, testing_1.async_test)("Destination merged", function () { return sdk.api.endusers.getOne(destination.id); }, { onResult: function (e) {
9352
9354
  var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m;
9353
9355
  return (e.email === destination.email
@@ -9367,39 +9369,88 @@ var merge_enduser_tests = function () { return __awaiter(void 0, void 0, void 0,
9367
9369
  && ((_m = e.insuranceSecondary) === null || _m === void 0 ? void 0 : _m.memberId) === 'src-secondary');
9368
9370
  } })];
9369
9371
  case 9:
9370
- _f.sent();
9372
+ _g.sent();
9371
9373
  return [4 /*yield*/, (0, testing_1.async_test)("Other email is unchanged", function () { return sdk.api.emails.getOne(email.id); }, { onResult: function (e) { return e.enduserId === otherEnduser.id; } })];
9372
9374
  case 10:
9373
- _f.sent();
9375
+ _g.sent();
9374
9376
  return [4 /*yield*/, (0, testing_1.async_test)("Other event is unchanged", function () { return sdk.api.calendar_events.getOne(event.id); }, { onResult: function (e) { var _a; return ((_a = e.attendees) === null || _a === void 0 ? void 0 : _a.length) === 1 && !!e.attendees.find(function (e) { return e.id === otherEnduser.id; }); } })];
9375
9377
  case 11:
9376
- _f.sent();
9378
+ _g.sent();
9377
9379
  return [4 /*yield*/, (0, testing_1.async_test)("Other room is unchanged", function () { return sdk.api.chat_rooms.getOne(room.id); }, { onResult: function (e) { var _a, _b; return ((_a = room.enduserIds) === null || _a === void 0 ? void 0 : _a.length) === 1 && !!((_b = e.enduserIds) === null || _b === void 0 ? void 0 : _b.find(function (id) { return id === otherEnduser.id; })); } })];
9378
9380
  case 12:
9379
- _f.sent();
9381
+ _g.sent();
9380
9382
  return [4 /*yield*/, (0, testing_1.async_test)("Other chat is unchanged", function () { return sdk.api.chats.getOne(chat.id); }, { onResult: function (e) { return e.senderId === otherEnduser.id; } })];
9381
9383
  case 13:
9382
- _f.sent();
9384
+ _g.sent();
9383
9385
  return [4 /*yield*/, (0, testing_1.async_test)("Email moved", function () { return sdk.api.emails.getOne(emailToMove.id); }, { onResult: function (e) { return e.enduserId === destination.id; } })];
9384
9386
  case 14:
9385
- _f.sent();
9387
+ _g.sent();
9386
9388
  return [4 /*yield*/, (0, testing_1.async_test)("Chat moved", function () { return sdk.api.chats.getOne(chatToMove.id); }, { onResult: function (e) { return e.senderId === destination.id; } })];
9387
9389
  case 15:
9388
- _f.sent();
9390
+ _g.sent();
9389
9391
  return [4 /*yield*/, (0, testing_1.async_test)("Room moved", function () { return sdk.api.chat_rooms.getOne(roomToMove.id); }, { onResult: function (e) { var _a, _b; return ((_a = e.enduserIds) === null || _a === void 0 ? void 0 : _a.length) === 1 && !!((_b = e.enduserIds) === null || _b === void 0 ? void 0 : _b.includes(destination.id)); } })];
9390
9392
  case 16:
9391
- _f.sent();
9392
- return [4 /*yield*/, (0, testing_1.async_test)("Event moved", function () { return sdk.api.calendar_events.getOne(eventToMove.id); }, { onResult: function (e) { var _a; return e.attendees.length === 1 && !!((_a = e.attendees) === null || _a === void 0 ? void 0 : _a.find(function (a) { return a.id === destination.id; })); } })];
9393
+ _g.sent();
9394
+ return [4 /*yield*/, (0, testing_1.async_test)("Event moved", function () { return sdk.api.calendar_events.getOne(eventToMove.id); }, { onResult: function (e) { var _a; return e.attendees.length === 1 && !!((_a = e.attendees) === null || _a === void 0 ? void 0 : _a.find(function (a) { return a.id === destination.id; })); } })
9395
+ // merging two endusers that both lack insurance must leave the fields absent, NOT null.
9396
+ // a stored null breaks every later partial update: those get flattened to dotted paths
9397
+ // ('insurance.memberId'), and MongoDB rejects a dotted $set under a null parent
9398
+ ];
9393
9399
  case 17:
9394
- _f.sent();
9400
+ _g.sent();
9401
+ return [4 /*yield*/, sdk.api.endusers.createSome([
9402
+ { email: 'noins-source@tellescope.com', fname: 'no', lname: 'insurance' },
9403
+ { email: 'noins-destination@tellescope.com' },
9404
+ ])];
9405
+ case 18:
9406
+ _f = (_g.sent()).created, noInsuranceSource = _f[0], noInsuranceDestination = _f[1];
9407
+ return [4 /*yield*/, sdk.api.endusers.merge({
9408
+ sourceEnduserId: noInsuranceSource.id,
9409
+ destinationEnduserId: noInsuranceDestination.id,
9410
+ })];
9411
+ case 19:
9412
+ _g.sent();
9413
+ return [4 /*yield*/, (0, testing_1.async_test)("Merged endusers have no null insurance", function () { return sdk.api.endusers.getOne(noInsuranceDestination.id); }, { onResult: function (e) { return e.insurance === undefined && e.insuranceSecondary === undefined; } })];
9414
+ case 20:
9415
+ _g.sent();
9416
+ return [4 /*yield*/, (0, testing_1.async_test)("Partial insurance update applies after merge", function () { return __awaiter(void 0, void 0, void 0, function () {
9417
+ return __generator(this, function (_a) {
9418
+ switch (_a.label) {
9419
+ case 0: return [4 /*yield*/, sdk.api.endusers.updateOne(noInsuranceDestination.id, {
9420
+ insurance: { memberId: 'M1', payerName: 'Test Payer' },
9421
+ })]; // no replaceObjectFields, matching the standard update from the UI
9422
+ case 1:
9423
+ _a.sent(); // no replaceObjectFields, matching the standard update from the UI
9424
+ return [4 /*yield*/, sdk.api.endusers.getOne(noInsuranceDestination.id)];
9425
+ case 2: // no replaceObjectFields, matching the standard update from the UI
9426
+ return [2 /*return*/, _a.sent()];
9427
+ }
9428
+ });
9429
+ }); }, { onResult: function (e) { var _a, _b; return ((_a = e.insurance) === null || _a === void 0 ? void 0 : _a.memberId) === 'M1' && ((_b = e.insurance) === null || _b === void 0 ? void 0 : _b.payerName) === 'Test Payer'; } })];
9430
+ case 21:
9431
+ _g.sent();
9432
+ return [4 /*yield*/, (0, testing_1.async_test)("Second partial insurance update merges", function () { return __awaiter(void 0, void 0, void 0, function () {
9433
+ return __generator(this, function (_a) {
9434
+ switch (_a.label) {
9435
+ case 0: return [4 /*yield*/, sdk.api.endusers.updateOne(noInsuranceDestination.id, { insurance: { groupNumber: 'G1' } })];
9436
+ case 1:
9437
+ _a.sent();
9438
+ return [4 /*yield*/, sdk.api.endusers.getOne(noInsuranceDestination.id)];
9439
+ case 2: return [2 /*return*/, _a.sent()];
9440
+ }
9441
+ });
9442
+ }); }, { onResult: function (e) { var _a, _b; return ((_a = e.insurance) === null || _a === void 0 ? void 0 : _a.groupNumber) === 'G1' && ((_b = e.insurance) === null || _b === void 0 ? void 0 : _b.memberId) === 'M1'; } })];
9443
+ case 22:
9444
+ _g.sent();
9395
9445
  return [4 /*yield*/, Promise.all([
9396
9446
  sdk.api.endusers.deleteOne(destination.id),
9397
9447
  sdk.api.endusers.deleteOne(otherEnduser.id),
9448
+ sdk.api.endusers.deleteOne(noInsuranceDestination.id),
9398
9449
  sdk.api.calendar_events.deleteOne(event.id),
9399
9450
  sdk.api.calendar_events.deleteOne(eventToMove.id),
9400
9451
  ])];
9401
- case 18:
9402
- _f.sent();
9452
+ case 23:
9453
+ _g.sent();
9403
9454
  return [2 /*return*/];
9404
9455
  }
9405
9456
  });
@@ -10072,31 +10123,32 @@ var pollForResults = function (f, evaluate, intervalInMS, iterations, shouldErro
10072
10123
  });
10073
10124
  };
10074
10125
  var test_ticket_automation_assignment_and_optimization = function () { return __awaiter(void 0, void 0, void 0, function () {
10075
- var users, journey, queue, foregroundTestCounter, testForegroundTicket, backgroundTestCounter, testBackgroundTicket, enduser, _a, _b, _c;
10076
- return __generator(this, function (_d) {
10077
- switch (_d.label) {
10126
+ var users, journey, queue, foregroundTestCounter, testForegroundTicket, backgroundTestCounter, testBackgroundTicket, enduser, HOST_A, HOST_B, appointmentHostInfo, createHostedEvent, e, older, newer, e, older, newer, e, deleted, hosted, e, enduserOnly, hosted, e, older, newer, _a, _b, _c;
10127
+ var _d;
10128
+ return __generator(this, function (_f) {
10129
+ switch (_f.label) {
10078
10130
  case 0:
10079
10131
  (0, testing_1.log_header)("Ticket Automation / Assignment Tests");
10080
10132
  return [4 /*yield*/, sdk.api.users.getSome()];
10081
10133
  case 1:
10082
- users = _d.sent();
10134
+ users = _f.sent();
10083
10135
  if (users.length < 3)
10084
10136
  throw new Error("Must have at least 3 users to detect invalid assignment");
10085
10137
  return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, { tags: ['tag1', 'tag2'] })];
10086
10138
  case 2:
10087
- _d.sent();
10139
+ _f.sent();
10088
10140
  return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { tags: ['tag1', 'tag3'] })];
10089
10141
  case 3:
10090
- _d.sent();
10142
+ _f.sent();
10091
10143
  return [4 /*yield*/, sdk.api.journeys.createOne({ title: "Testing" })];
10092
10144
  case 4:
10093
- journey = _d.sent();
10145
+ journey = _f.sent();
10094
10146
  return [4 /*yield*/, sdk.api.ticket_queues.createOne({ title: 'test queue', userIds: [] })];
10095
10147
  case 5:
10096
- queue = _d.sent();
10148
+ queue = _f.sent();
10097
10149
  foregroundTestCounter = 0;
10098
10150
  testForegroundTicket = function (_a) {
10099
- var assignedTo = _a.assignedTo, info = _a.info, validOwners = _a.validOwners, enduser = _a.enduser, closedForReason = _a.closedForReason, testDelayedChild = _a.testDelayedChild;
10151
+ var assignedTo = _a.assignedTo, info = _a.info, validOwners = _a.validOwners, enduser = _a.enduser, closedForReason = _a.closedForReason, testDelayedChild = _a.testDelayedChild, calendarEventId = _a.calendarEventId, ticketOwner = _a.ticketOwner;
10100
10152
  return __awaiter(void 0, void 0, void 0, function () {
10101
10153
  var e, _b, step, statusStep, child, ticket;
10102
10154
  var _c;
@@ -10144,14 +10196,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10144
10196
  })];
10145
10197
  case 5:
10146
10198
  child = _d.sent();
10147
- return [4 /*yield*/, sdk.api.tickets.createOne({
10148
- title: 'foreground ticket',
10149
- enduserId: e.id,
10150
- automationStepId: constants_1.PLACEHOLDER_ID,
10151
- journeyId: journey.id,
10152
- owner: validOwners[0],
10153
- closedForReason: closedForReason,
10154
- })];
10199
+ return [4 /*yield*/, sdk.api.tickets.createOne(__assign({ title: 'foreground ticket', enduserId: e.id, automationStepId: constants_1.PLACEHOLDER_ID, journeyId: journey.id, owner: ticketOwner !== null && ticketOwner !== void 0 ? ticketOwner : validOwners[0], closedForReason: closedForReason }, (calendarEventId ? { calendarEventId: calendarEventId } : {})))];
10155
10200
  case 6:
10156
10201
  ticket = _d.sent();
10157
10202
  return [4 /*yield*/, (0, testing_1.async_test)("Foreground ticket assignment ".concat(++foregroundTestCounter), function () { return sdk.api.tickets.close_ticket({ ticketId: ticket.id, closedForReason: closedForReason }); }, { onResult: function (_a) {
@@ -10200,7 +10245,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10200
10245
  testDelayedChild: true,
10201
10246
  })];
10202
10247
  case 6:
10203
- _d.sent();
10248
+ _f.sent();
10204
10249
  return [4 /*yield*/, testForegroundTicket({
10205
10250
  assignedTo: [],
10206
10251
  info: {
@@ -10211,7 +10256,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10211
10256
  testDelayedChild: true,
10212
10257
  })];
10213
10258
  case 7:
10214
- _d.sent();
10259
+ _f.sent();
10215
10260
  return [4 /*yield*/, testForegroundTicket({
10216
10261
  assignedTo: [],
10217
10262
  info: {
@@ -10223,7 +10268,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10223
10268
  testDelayedChild: true,
10224
10269
  })];
10225
10270
  case 8:
10226
- _d.sent();
10271
+ _f.sent();
10227
10272
  return [4 /*yield*/, testForegroundTicket({
10228
10273
  assignedTo: [],
10229
10274
  info: {
@@ -10233,7 +10278,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10233
10278
  validOwners: [sdkNonAdmin.userInfo.id],
10234
10279
  })];
10235
10280
  case 9:
10236
- _d.sent();
10281
+ _f.sent();
10237
10282
  return [4 /*yield*/, testForegroundTicket({
10238
10283
  assignedTo: [],
10239
10284
  info: {
@@ -10243,7 +10288,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10243
10288
  validOwners: [sdkNonAdmin.userInfo.id],
10244
10289
  })];
10245
10290
  case 10:
10246
- _d.sent();
10291
+ _f.sent();
10247
10292
  return [4 /*yield*/, testForegroundTicket({
10248
10293
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10249
10294
  info: {
@@ -10253,7 +10298,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10253
10298
  validOwners: [sdkNonAdmin.userInfo.id],
10254
10299
  })];
10255
10300
  case 11:
10256
- _d.sent();
10301
+ _f.sent();
10257
10302
  return [4 /*yield*/, testForegroundTicket({
10258
10303
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10259
10304
  info: {
@@ -10263,7 +10308,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10263
10308
  validOwners: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10264
10309
  })];
10265
10310
  case 12:
10266
- _d.sent();
10311
+ _f.sent();
10267
10312
  return [4 /*yield*/, testForegroundTicket({
10268
10313
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10269
10314
  info: {
@@ -10273,7 +10318,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10273
10318
  validOwners: [sdk.userInfo.id, sdkNonAdmin.userInfo.id,],
10274
10319
  })];
10275
10320
  case 13:
10276
- _d.sent();
10321
+ _f.sent();
10277
10322
  return [4 /*yield*/, testForegroundTicket({
10278
10323
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10279
10324
  info: {
@@ -10283,7 +10328,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10283
10328
  validOwners: [sdk.userInfo.id],
10284
10329
  })];
10285
10330
  case 14:
10286
- _d.sent();
10331
+ _f.sent();
10287
10332
  return [4 /*yield*/, testForegroundTicket({
10288
10333
  assignedTo: [],
10289
10334
  info: {
@@ -10293,10 +10338,10 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10293
10338
  validOwners: [sdkNonAdmin.userInfo.id],
10294
10339
  })];
10295
10340
  case 15:
10296
- _d.sent();
10341
+ _f.sent();
10297
10342
  backgroundTestCounter = 0;
10298
10343
  testBackgroundTicket = function (_a) {
10299
- var assignedTo = _a.assignedTo, info = _a.info, validOwners = _a.validOwners, enduser = _a.enduser;
10344
+ var assignedTo = _a.assignedTo, info = _a.info, validOwners = _a.validOwners, enduser = _a.enduser, journeyContext = _a.journeyContext;
10300
10345
  return __awaiter(void 0, void 0, void 0, function () {
10301
10346
  var e, _b;
10302
10347
  return __generator(this, function (_c) {
@@ -10310,15 +10355,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10310
10355
  _c.label = 2;
10311
10356
  case 2:
10312
10357
  e = _b;
10313
- return [4 /*yield*/, sdk.api.automated_actions.createOne({
10314
- action: { type: 'createTicket', info: __assign(__assign({}, info), { title: 'background ticket' }) },
10315
- automationStepId: constants_1.PLACEHOLDER_ID,
10316
- enduserId: e.id,
10317
- event: { type: 'afterAction', info: { automationStepId: constants_1.PLACEHOLDER_ID, delay: 0, delayInMS: 0, unit: 'Days' } },
10318
- journeyId: journey.id,
10319
- status: 'active',
10320
- processAfter: Date.now(),
10321
- })];
10358
+ return [4 /*yield*/, sdk.api.automated_actions.createOne(__assign({ action: { type: 'createTicket', info: __assign(__assign({}, info), { title: 'background ticket' }) }, automationStepId: constants_1.PLACEHOLDER_ID, enduserId: e.id, event: { type: 'afterAction', info: { automationStepId: constants_1.PLACEHOLDER_ID, delay: 0, delayInMS: 0, unit: 'Days' } }, journeyId: journey.id, status: 'active', processAfter: Date.now() }, (journeyContext ? { journeyContext: journeyContext } : {})))];
10322
10359
  case 3:
10323
10360
  _c.sent();
10324
10361
  return [4 /*yield*/, (0, testing_1.async_test)("Background ticket assignment ".concat(++backgroundTestCounter), function () { return pollForResults(function () { return sdk.api.tickets.getSome({ filter: { enduserId: e.id, title: 'background ticket' } }); }, function (t) { return !!t.length; }, 500, 20); }, {
@@ -10344,7 +10381,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10344
10381
  validOwners: [],
10345
10382
  })];
10346
10383
  case 16:
10347
- _d.sent();
10384
+ _f.sent();
10348
10385
  return [4 /*yield*/, testBackgroundTicket({
10349
10386
  assignedTo: [],
10350
10387
  info: {
@@ -10354,7 +10391,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10354
10391
  validOwners: [sdk.userInfo.id],
10355
10392
  })];
10356
10393
  case 17:
10357
- _d.sent();
10394
+ _f.sent();
10358
10395
  return [4 /*yield*/, testBackgroundTicket({
10359
10396
  assignedTo: [],
10360
10397
  info: {
@@ -10366,16 +10403,16 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10366
10403
  // ticket needs existing enduser, previous owner for test to work
10367
10404
  ];
10368
10405
  case 18:
10369
- _d.sent();
10406
+ _f.sent();
10370
10407
  return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'previous-owner-test' })];
10371
10408
  case 19:
10372
- enduser = _d.sent();
10409
+ enduser = _f.sent();
10373
10410
  return [4 /*yield*/, sdk.api.tickets.createOne({
10374
10411
  // title should be different than 'background test' so it doesn't create false positive test
10375
10412
  title: 'previous-owner-test', enduserId: enduser.id, journeyId: journey.id, owner: sdkNonAdmin.userInfo.id
10376
10413
  })];
10377
10414
  case 20:
10378
- _d.sent();
10415
+ _f.sent();
10379
10416
  return [4 /*yield*/, testBackgroundTicket({
10380
10417
  assignedTo: [],
10381
10418
  enduser: enduser,
@@ -10386,7 +10423,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10386
10423
  validOwners: [sdkNonAdmin.userInfo.id],
10387
10424
  })];
10388
10425
  case 21:
10389
- _d.sent();
10426
+ _f.sent();
10390
10427
  return [4 /*yield*/, testBackgroundTicket({
10391
10428
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10392
10429
  info: {
@@ -10396,7 +10433,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10396
10433
  validOwners: [sdkNonAdmin.userInfo.id],
10397
10434
  })];
10398
10435
  case 22:
10399
- _d.sent();
10436
+ _f.sent();
10400
10437
  return [4 /*yield*/, testBackgroundTicket({
10401
10438
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10402
10439
  info: {
@@ -10406,7 +10443,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10406
10443
  validOwners: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10407
10444
  })];
10408
10445
  case 23:
10409
- _d.sent();
10446
+ _f.sent();
10410
10447
  return [4 /*yield*/, testBackgroundTicket({
10411
10448
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10412
10449
  info: {
@@ -10416,7 +10453,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10416
10453
  validOwners: [sdk.userInfo.id, sdkNonAdmin.userInfo.id,],
10417
10454
  })];
10418
10455
  case 24:
10419
- _d.sent();
10456
+ _f.sent();
10420
10457
  return [4 /*yield*/, testBackgroundTicket({
10421
10458
  assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
10422
10459
  info: {
@@ -10426,7 +10463,7 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10426
10463
  validOwners: [sdk.userInfo.id],
10427
10464
  })];
10428
10465
  case 25:
10429
- _d.sent();
10466
+ _f.sent();
10430
10467
  return [4 /*yield*/, testBackgroundTicket({
10431
10468
  assignedTo: [],
10432
10469
  info: {
@@ -10434,18 +10471,161 @@ var test_ticket_automation_assignment_and_optimization = function () { return __
10434
10471
  defaultAssignee: sdk.userInfo.id
10435
10472
  },
10436
10473
  validOwners: [sdkNonAdmin.userInfo.id],
10437
- })];
10474
+ })
10475
+ // 'Recently-Booked Appointment Host' assignment
10476
+ // journeyContext.calendarEventId, when it resolves to a host, takes priority over the legacy
10477
+ // "newest event for this enduser" lookup. one enduser per case, to avoid trigger throttling.
10478
+ ];
10438
10479
  case 26:
10439
- _d.sent();
10480
+ _f.sent();
10481
+ HOST_A = sdkNonAdmin.userInfo.id;
10482
+ HOST_B = sdk.userInfo.id;
10483
+ appointmentHostInfo = function (defaultAssignee) { return ({
10484
+ assignmentStrategy: { type: 'Recently-Booked Appointment Host', info: {} },
10485
+ defaultAssignee: defaultAssignee,
10486
+ }); };
10487
+ createHostedEvent = function (enduserId, hostId) { return sdk.api.calendar_events.createOne({
10488
+ title: 'appointment host test',
10489
+ durationInMinutes: 30,
10490
+ startTimeInMS: Date.now(),
10491
+ attendees: [{ type: 'enduser', id: enduserId }, { type: 'user', id: hostId }],
10492
+ }); };
10493
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fields: { Tag: 'tag3' } })];
10494
+ case 27:
10495
+ e = _f.sent();
10496
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_A)];
10497
+ case 28:
10498
+ older = _f.sent();
10499
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_B)]; // higher _id, so legacy sort picks this one
10500
+ case 29:
10501
+ newer = _f.sent() // higher _id, so legacy sort picks this one
10502
+ ;
10503
+ return [4 /*yield*/, testBackgroundTicket({
10504
+ assignedTo: [],
10505
+ enduser: e,
10506
+ info: appointmentHostInfo(HOST_B),
10507
+ validOwners: [HOST_A],
10508
+ journeyContext: { calendarEventId: older.id },
10509
+ })];
10510
+ case 30:
10511
+ _f.sent();
10512
+ return [4 /*yield*/, Promise.all([older, newer].map(function (ev) { return sdk.api.calendar_events.deleteOne(ev.id); }))];
10513
+ case 31:
10514
+ _f.sent();
10515
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fields: { Tag: 'tag3' } })];
10516
+ case 32:
10517
+ e = _f.sent();
10518
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_A)];
10519
+ case 33:
10520
+ older = _f.sent();
10521
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_B)];
10522
+ case 34:
10523
+ newer = _f.sent();
10524
+ return [4 /*yield*/, testBackgroundTicket({
10525
+ assignedTo: [],
10526
+ enduser: e,
10527
+ info: appointmentHostInfo(HOST_A),
10528
+ validOwners: [HOST_B], // newest created event's host
10529
+ })];
10530
+ case 35:
10531
+ _f.sent();
10532
+ return [4 /*yield*/, Promise.all([older, newer].map(function (ev) { return sdk.api.calendar_events.deleteOne(ev.id); }))];
10533
+ case 36:
10534
+ _f.sent();
10535
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fields: { Tag: 'tag3' } })];
10536
+ case 37:
10537
+ e = _f.sent();
10538
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_B)];
10539
+ case 38:
10540
+ deleted = _f.sent();
10541
+ return [4 /*yield*/, sdk.api.calendar_events.deleteOne(deleted.id)];
10542
+ case 39:
10543
+ _f.sent();
10544
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_A)];
10545
+ case 40:
10546
+ hosted = _f.sent();
10547
+ return [4 /*yield*/, testBackgroundTicket({
10548
+ assignedTo: [],
10549
+ enduser: e,
10550
+ info: appointmentHostInfo(HOST_B),
10551
+ validOwners: [HOST_A],
10552
+ journeyContext: { calendarEventId: deleted.id },
10553
+ })];
10554
+ case 41:
10555
+ _f.sent();
10556
+ return [4 /*yield*/, sdk.api.calendar_events.deleteOne(hosted.id)];
10557
+ case 42:
10558
+ _f.sent();
10559
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fields: { Tag: 'tag3' } })];
10560
+ case 43:
10561
+ e = _f.sent();
10562
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
10563
+ title: 'appointment host test, no host',
10564
+ durationInMinutes: 30,
10565
+ startTimeInMS: Date.now(),
10566
+ attendees: [{ type: 'enduser', id: e.id }],
10567
+ })];
10568
+ case 44:
10569
+ enduserOnly = _f.sent();
10570
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_A)];
10571
+ case 45:
10572
+ hosted = _f.sent();
10573
+ return [4 /*yield*/, testBackgroundTicket({
10574
+ assignedTo: [],
10575
+ enduser: e,
10576
+ info: appointmentHostInfo(HOST_B),
10577
+ validOwners: [HOST_A],
10578
+ journeyContext: { calendarEventId: enduserOnly.id },
10579
+ })];
10580
+ case 46:
10581
+ _f.sent();
10582
+ return [4 /*yield*/, Promise.all([enduserOnly, hosted].map(function (ev) { return sdk.api.calendar_events.deleteOne(ev.id); }))];
10583
+ case 47:
10584
+ _f.sent();
10585
+ // no events at all -> no resolvable host, so defaultAssignee wins
10586
+ return [4 /*yield*/, testBackgroundTicket({
10587
+ assignedTo: [],
10588
+ info: appointmentHostInfo(HOST_A),
10589
+ validOwners: [HOST_A],
10590
+ })
10591
+ // api path: close_ticket copies the original ticket's calendarEventId into journeyContext
10592
+ ];
10593
+ case 48:
10594
+ // no events at all -> no resolvable host, so defaultAssignee wins
10595
+ _f.sent();
10596
+ return [4 /*yield*/, sdk.api.endusers.createOne({
10597
+ journeys: (_d = {}, _d[journey.id] = '', _d), fields: { Tag: 'tag3' },
10598
+ })];
10599
+ case 49:
10600
+ e = _f.sent();
10601
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_A)];
10602
+ case 50:
10603
+ older = _f.sent();
10604
+ return [4 /*yield*/, createHostedEvent(e.id, HOST_B)];
10605
+ case 51:
10606
+ newer = _f.sent();
10607
+ return [4 /*yield*/, testForegroundTicket({
10608
+ assignedTo: [],
10609
+ enduser: e,
10610
+ info: appointmentHostInfo(HOST_B),
10611
+ validOwners: [HOST_A],
10612
+ calendarEventId: older.id,
10613
+ ticketOwner: HOST_B, // so a previous-owner style fallback would also fail
10614
+ })];
10615
+ case 52:
10616
+ _f.sent();
10617
+ return [4 /*yield*/, Promise.all([older, newer].map(function (ev) { return sdk.api.calendar_events.deleteOne(ev.id); }))];
10618
+ case 53:
10619
+ _f.sent();
10440
10620
  _b = (_a = Promise).all;
10441
10621
  return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)];
10442
- case 27:
10622
+ case 54:
10443
10623
  _c = [
10444
- _d.sent()
10624
+ _f.sent()
10445
10625
  ];
10446
10626
  return [4 /*yield*/, sdk.api.ticket_queues.deleteOne(queue.id)];
10447
- case 28: return [2 /*return*/, _b.apply(_a, [_c.concat([
10448
- _d.sent()
10627
+ case 55: return [2 /*return*/, _b.apply(_a, [_c.concat([
10628
+ _f.sent()
10449
10629
  ])])];
10450
10630
  }
10451
10631
  });
@@ -15622,7 +15802,7 @@ var replace_enduser_template_values_tests = function () { return __awaiter(void
15622
15802
  });
15623
15803
  }); };
15624
15804
  var replace_form_field_template_values_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
15625
- var enduserWithMultilineField, enduserWithLiteralEscapeField, enduserWithCRLFField;
15805
+ var enduserWithMultilineField, enduserWithLiteralEscapeField, enduserWithCRLFField, enduserWithMarkupField, escaped, enduserWithMarkupAndNewline, enduserWithAmpersand;
15626
15806
  return __generator(this, function (_a) {
15627
15807
  (0, testing_1.log_header)("Replace Form Field Template Values Tests");
15628
15808
  enduserWithMultilineField = {
@@ -15650,6 +15830,21 @@ var replace_form_field_template_values_tests = function () { return __awaiter(vo
15650
15830
  fields: { Locations: 'NYC\r\nSF\r\nLA' },
15651
15831
  };
15652
15832
  (0, testing_1.assert)((0, utilities_1.replace_form_field_template_values)('<p>Locations: {{enduser.Locations}}</p>', { enduser: enduserWithCRLFField, escapeNewlinesAsHTMLBreaks: true }) === '<p>Locations: NYC<br />SF<br />LA</p>', 'fail CRLF in substituted value', 'CRLF in substituted value');
15833
+ enduserWithMarkupField = {
15834
+ fname: "Multi",
15835
+ fields: { Injected: '<iframe src="https://evil.example"></iframe>' },
15836
+ };
15837
+ escaped = (0, utilities_1.replace_form_field_template_values)('<p>{{enduser.Injected}}</p>', { enduser: enduserWithMarkupField, escapeNewlinesAsHTMLBreaks: true, escapeHTMLValues: true });
15838
+ (0, testing_1.assert)(escaped.includes('&lt;iframe') && !escaped.includes('<iframe'), 'fail escapeHTMLValues escapes markup', 'escapeHTMLValues escapes markup');
15839
+ enduserWithMarkupAndNewline = {
15840
+ fields: { Mixed: 'a<b\nc&d' },
15841
+ };
15842
+ (0, testing_1.assert)((0, utilities_1.replace_form_field_template_values)('{{enduser.Mixed}}', { enduser: enduserWithMarkupAndNewline, escapeNewlinesAsHTMLBreaks: true, escapeHTMLValues: true }) === 'a&lt;b<br />c&amp;d', 'fail escapeHTMLValues ordering vs newline breaks', 'escapeHTMLValues ordering vs newline breaks');
15843
+ enduserWithAmpersand = {
15844
+ fields: { Practice: 'Smith & Jones <Cardiology>' },
15845
+ };
15846
+ (0, testing_1.assert)((0, utilities_1.replace_form_field_template_values)('Practice: {{enduser.Practice}}', { enduser: enduserWithAmpersand }) === 'Practice: Smith & Jones <Cardiology>', 'fail no escaping without the flag', 'no escaping without the flag');
15847
+ (0, testing_1.assert)((0, utilities_1.replace_form_field_template_values)('Practice: {{enduser.Practice}}', { enduser: enduserWithAmpersand, escapeHTMLValues: true }) === 'Practice: Smith &amp; Jones &lt;Cardiology&gt;', 'fail escaping with the flag', 'escaping with the flag');
15653
15848
  return [2 /*return*/];
15654
15849
  });
15655
15850
  }); };
@@ -17024,7 +17219,7 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
17024
17219
  (0, testing_1.assert)((0, utilities_1.truncate_string)(null, { length: 4, showEllipsis: false }) === '', 'truncate doesnt work for non string', 'trucate works for non-string');
17025
17220
  _l.label = 2;
17026
17221
  case 2:
17027
- _l.trys.push([2, 174, , 175]);
17222
+ _l.trys.push([2, 176, , 177]);
17028
17223
  get_next_reminder_timestamp_tests();
17029
17224
  (0, exports.form_conditional_logic_tests)();
17030
17225
  return [4 /*yield*/, test_weighted_round_robin()];
@@ -17261,387 +17456,393 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
17261
17456
  return [4 /*yield*/, (0, F_0013_sanitize_user_html_test_1.sanitize_user_html_xss_tests)()];
17262
17457
  case 48:
17263
17458
  _l.sent();
17264
- return [4 /*yield*/, (0, F_0016_prototype_pollution_test_1.prototype_pollution_tests)()];
17459
+ return [4 /*yield*/, (0, F_0013_sanitize_user_html_with_iframes_test_1.sanitize_user_html_with_iframes_tests)()];
17265
17460
  case 49:
17266
17461
  _l.sent();
17267
- return [4 /*yield*/, (0, account_switcher_test_1.account_switcher_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17462
+ return [4 /*yield*/, (0, F_0016_prototype_pollution_test_1.prototype_pollution_tests)()];
17268
17463
  case 50:
17269
17464
  _l.sent();
17270
- return [4 /*yield*/, (0, totp_mfa_test_1.totp_mfa_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17465
+ return [4 /*yield*/, (0, account_switcher_test_1.account_switcher_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17271
17466
  case 51:
17272
17467
  _l.sent();
17273
- return [4 /*yield*/, (0, enduser_login_test_1.enduser_login_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17468
+ return [4 /*yield*/, (0, totp_mfa_test_1.totp_mfa_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17274
17469
  case 52:
17275
17470
  _l.sent();
17276
- return [4 /*yield*/, (0, outbound_chat_sent_trigger_test_1.outbound_chat_sent_trigger_tests)({ sdk: sdk })];
17471
+ return [4 /*yield*/, (0, enduser_login_test_1.enduser_login_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17277
17472
  case 53:
17278
17473
  _l.sent();
17279
- return [4 /*yield*/, (0, enduser_cross_access_isolation_test_1.enduser_cross_access_isolation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17474
+ return [4 /*yield*/, (0, outbound_chat_sent_trigger_test_1.outbound_chat_sent_trigger_tests)({ sdk: sdk })];
17280
17475
  case 54:
17281
17476
  _l.sent();
17282
- return [4 /*yield*/, (0, eom_procedure_codes_test_1.eom_procedure_codes_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17477
+ return [4 /*yield*/, (0, enduser_cross_access_isolation_test_1.enduser_cross_access_isolation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17283
17478
  case 55:
17284
17479
  _l.sent();
17285
- return [4 /*yield*/, (0, cross_org_api_key_test_1.cross_org_api_key_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17480
+ return [4 /*yield*/, (0, eom_procedure_codes_test_1.eom_procedure_codes_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17286
17481
  case 56:
17287
17482
  _l.sent();
17288
- return [4 /*yield*/, (0, organization_api_keys_test_1.organization_api_keys_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17483
+ return [4 /*yield*/, (0, cross_org_api_key_test_1.cross_org_api_key_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17289
17484
  case 57:
17290
17485
  _l.sent();
17291
- return [4 /*yield*/, (0, scoped_api_keys_test_1.scoped_api_keys_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17486
+ return [4 /*yield*/, (0, organization_api_keys_test_1.organization_api_keys_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17292
17487
  case 58:
17293
17488
  _l.sent();
17294
- return [4 /*yield*/, (0, organization_settings_duplicates_test_1.organization_settings_duplicates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17489
+ return [4 /*yield*/, (0, scoped_api_keys_test_1.scoped_api_keys_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17295
17490
  case 59:
17296
17491
  _l.sent();
17297
- return [4 /*yield*/, (0, enduser_session_invalidation_test_1.enduser_session_invalidation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17492
+ return [4 /*yield*/, (0, organization_settings_duplicates_test_1.organization_settings_duplicates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17298
17493
  case 60:
17299
17494
  _l.sent();
17300
- return [4 /*yield*/, (0, chats_analytics_test_1.chats_analytics_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17495
+ return [4 /*yield*/, (0, enduser_session_invalidation_test_1.enduser_session_invalidation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17301
17496
  case 61:
17302
17497
  _l.sent();
17303
- return [4 /*yield*/, (0, field_redaction_test_1.field_redaction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17498
+ return [4 /*yield*/, (0, chats_analytics_test_1.chats_analytics_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17304
17499
  case 62:
17305
17500
  _l.sent();
17306
- return [4 /*yield*/, (0, form_submitted_trigger_test_1.form_submitted_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17501
+ return [4 /*yield*/, (0, field_redaction_test_1.field_redaction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17307
17502
  case 63:
17308
17503
  _l.sent();
17309
- return [4 /*yield*/, (0, dont_sync_to_elation_form_submission_test_1.dont_sync_to_elation_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17504
+ return [4 /*yield*/, (0, form_submitted_trigger_test_1.form_submitted_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17310
17505
  case 64:
17311
17506
  _l.sent();
17312
- return [4 /*yield*/, (0, date_string_validation_test_1.date_string_validation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17507
+ return [4 /*yield*/, (0, dont_sync_to_elation_form_submission_test_1.dont_sync_to_elation_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17313
17508
  case 65:
17314
17509
  _l.sent();
17315
- return [4 /*yield*/, (0, phone_tree_enduser_condition_test_1.phone_tree_enduser_condition_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17510
+ return [4 /*yield*/, (0, date_string_validation_test_1.date_string_validation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17316
17511
  case 66:
17317
17512
  _l.sent();
17318
- return [4 /*yield*/, (0, openloop_webhooks_test_1.openloop_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17513
+ return [4 /*yield*/, (0, phone_tree_enduser_condition_test_1.phone_tree_enduser_condition_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17319
17514
  case 67:
17320
17515
  _l.sent();
17321
- return [4 /*yield*/, (0, mdi_webhooks_test_1.mdi_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17516
+ return [4 /*yield*/, (0, openloop_webhooks_test_1.openloop_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17322
17517
  case 68:
17323
17518
  _l.sent();
17324
- return [4 /*yield*/, (0, integrations_redacted_test_1.integrations_redacted_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17519
+ return [4 /*yield*/, (0, mdi_webhooks_test_1.mdi_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17325
17520
  case 69:
17326
17521
  _l.sent();
17327
- return [4 /*yield*/, (0, healthie_multi_integration_test_1.healthie_multi_integration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17522
+ return [4 /*yield*/, (0, integrations_redacted_test_1.integrations_redacted_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17328
17523
  case 70:
17329
17524
  _l.sent();
17330
- return [4 /*yield*/, (0, mdb_sort_test_1.mdb_sort_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17525
+ return [4 /*yield*/, (0, healthie_multi_integration_test_1.healthie_multi_integration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17331
17526
  case 71:
17332
17527
  _l.sent();
17333
- return [4 /*yield*/, search_tests()];
17528
+ return [4 /*yield*/, (0, mdb_sort_test_1.mdb_sort_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17334
17529
  case 72:
17335
17530
  _l.sent();
17336
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17531
+ return [4 /*yield*/, search_tests()];
17337
17532
  case 73:
17338
17533
  _l.sent();
17339
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_historical_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17534
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17340
17535
  case 74:
17341
17536
  _l.sent();
17342
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_correction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17537
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_historical_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17343
17538
  case 75:
17344
17539
  _l.sent();
17345
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_review_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17540
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_correction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17346
17541
  case 76:
17347
17542
  _l.sent();
17348
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_lock_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17543
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_review_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17349
17544
  case 77:
17350
17545
  _l.sent();
17351
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_edge_case_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17546
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_lock_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17352
17547
  case 78:
17353
17548
  _l.sent();
17354
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_resubmit_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17549
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_edge_case_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17355
17550
  case 79:
17356
17551
  _l.sent();
17357
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_appointment_duration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17552
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_resubmit_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17358
17553
  case 80:
17359
17554
  _l.sent();
17360
- return [4 /*yield*/, (0, calendar_event_limits_test_1.calendar_event_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17555
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_appointment_duration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17361
17556
  case 81:
17362
17557
  _l.sent();
17363
- return [4 /*yield*/, (0, get_some_projection_test_1.get_some_projection_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17558
+ return [4 /*yield*/, (0, calendar_event_limits_test_1.calendar_event_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17364
17559
  case 82:
17365
17560
  _l.sent();
17366
- return [4 /*yield*/, (0, elation_user_id_test_1.elation_user_id_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17561
+ return [4 /*yield*/, (0, get_some_projection_test_1.get_some_projection_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17367
17562
  case 83:
17368
17563
  _l.sent();
17369
- return [4 /*yield*/, (0, concurrent_build_threads_test_1.concurrent_build_threads_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17564
+ return [4 /*yield*/, (0, file_download_unicode_names_test_1.file_download_unicode_names_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17370
17565
  case 84:
17371
17566
  _l.sent();
17372
- return [4 /*yield*/, (0, custom_aggregation_test_1.custom_aggregation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17567
+ return [4 /*yield*/, (0, elation_user_id_test_1.elation_user_id_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17373
17568
  case 85:
17374
17569
  _l.sent();
17375
- return [4 /*yield*/, (0, no_access_permission_checks_test_1.no_access_permission_checks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17570
+ return [4 /*yield*/, (0, concurrent_build_threads_test_1.concurrent_build_threads_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17376
17571
  case 86:
17377
17572
  _l.sent();
17378
- return [4 /*yield*/, enduser_tests()];
17573
+ return [4 /*yield*/, (0, custom_aggregation_test_1.custom_aggregation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17379
17574
  case 87:
17380
17575
  _l.sent();
17381
- return [4 /*yield*/, (0, form_started_trigger_test_1.form_started_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17576
+ return [4 /*yield*/, (0, no_access_permission_checks_test_1.no_access_permission_checks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17382
17577
  case 88:
17383
17578
  _l.sent();
17384
- return [4 /*yield*/, (0, load_team_chat_test_1.load_team_chat_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17579
+ return [4 /*yield*/, enduser_tests()];
17385
17580
  case 89:
17386
17581
  _l.sent();
17387
- return [4 /*yield*/, (0, ai_conversations_test_1.ai_conversations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17582
+ return [4 /*yield*/, (0, form_started_trigger_test_1.form_started_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17388
17583
  case 90:
17389
17584
  _l.sent();
17390
- return [4 /*yield*/, (0, inbox_thread_assignment_updates_test_1.inbox_thread_assignment_updates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17585
+ return [4 /*yield*/, (0, load_team_chat_test_1.load_team_chat_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17391
17586
  case 91:
17392
17587
  _l.sent();
17393
- return [4 /*yield*/, (0, inbox_thread_draft_scheduled_test_1.inbox_thread_draft_scheduled_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17588
+ return [4 /*yield*/, (0, ai_conversations_test_1.ai_conversations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17394
17589
  case 92:
17395
17590
  _l.sent();
17396
- return [4 /*yield*/, (0, load_threads_autobuild_test_1.load_threads_autobuild_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17591
+ return [4 /*yield*/, (0, inbox_thread_assignment_updates_test_1.inbox_thread_assignment_updates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17397
17592
  case 93:
17398
17593
  _l.sent();
17399
- return [4 /*yield*/, inbox_threads_new_fields_tests()];
17594
+ return [4 /*yield*/, (0, inbox_thread_draft_scheduled_test_1.inbox_thread_draft_scheduled_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17400
17595
  case 94:
17401
17596
  _l.sent();
17402
- return [4 /*yield*/, (0, auto_merge_form_submission_test_1.auto_merge_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17597
+ return [4 /*yield*/, (0, load_threads_autobuild_test_1.load_threads_autobuild_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17403
17598
  case 95:
17404
17599
  _l.sent();
17405
- return [4 /*yield*/, threadKeyTests()];
17600
+ return [4 /*yield*/, inbox_threads_new_fields_tests()];
17406
17601
  case 96:
17407
17602
  _l.sent();
17408
- return [4 /*yield*/, (0, managed_content_enduser_access_test_1.managed_content_enduser_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17603
+ return [4 /*yield*/, (0, auto_merge_form_submission_test_1.auto_merge_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17409
17604
  case 97:
17410
17605
  _l.sent();
17411
- return [4 /*yield*/, (0, managed_content_file_access_test_1.managed_content_file_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17606
+ return [4 /*yield*/, threadKeyTests()];
17412
17607
  case 98:
17413
17608
  _l.sent();
17414
- return [4 /*yield*/, (0, afteraction_day_of_month_delay_test_1.afteraction_day_of_month_delay_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17609
+ return [4 /*yield*/, (0, managed_content_enduser_access_test_1.managed_content_enduser_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17415
17610
  case 99:
17416
17611
  _l.sent();
17417
- return [4 /*yield*/, (0, bulk_assignment_test_1.bulk_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17612
+ return [4 /*yield*/, (0, managed_content_file_access_test_1.managed_content_file_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17418
17613
  case 100:
17419
17614
  _l.sent();
17420
- return [4 /*yield*/, (0, exports.formsort_tests)()];
17615
+ return [4 /*yield*/, (0, afteraction_day_of_month_delay_test_1.afteraction_day_of_month_delay_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17421
17616
  case 101:
17422
17617
  _l.sent();
17423
- return [4 /*yield*/, (0, formsort_header_auth_test_1.formsort_header_auth_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17618
+ return [4 /*yield*/, (0, bulk_assignment_test_1.bulk_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17424
17619
  case 102:
17425
17620
  _l.sent();
17426
- return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
17621
+ return [4 /*yield*/, (0, exports.formsort_tests)()];
17427
17622
  case 103:
17428
17623
  _l.sent();
17429
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17624
+ return [4 /*yield*/, (0, formsort_header_auth_test_1.formsort_header_auth_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17430
17625
  case 104:
17431
17626
  _l.sent();
17432
- return [4 /*yield*/, (0, monthly_availability_restrictions_test_1.monthly_availability_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17627
+ return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
17433
17628
  case 105:
17434
17629
  _l.sent();
17435
- return [4 /*yield*/, (0, journey_error_branching_test_1.journey_error_branching_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17630
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17436
17631
  case 106:
17437
17632
  _l.sent();
17438
- return [4 /*yield*/, (0, journey_delete_cancels_actions_test_1.journey_delete_cancels_actions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17633
+ return [4 /*yield*/, (0, monthly_availability_restrictions_test_1.monthly_availability_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17439
17634
  case 107:
17440
17635
  _l.sent();
17441
- return [4 /*yield*/, (0, message_assignment_trigger_test_1.message_assignment_trigger_tests)({ sdk: sdk })];
17636
+ return [4 /*yield*/, (0, journey_error_branching_test_1.journey_error_branching_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17442
17637
  case 108:
17443
17638
  _l.sent();
17444
- return [4 /*yield*/, inbox_threads_building_tests()];
17639
+ return [4 /*yield*/, (0, journey_delete_cancels_actions_test_1.journey_delete_cancels_actions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17445
17640
  case 109:
17446
17641
  _l.sent();
17447
- return [4 /*yield*/, inbox_threads_loading_tests()];
17642
+ return [4 /*yield*/, (0, message_assignment_trigger_test_1.message_assignment_trigger_tests)({ sdk: sdk })];
17448
17643
  case 110:
17449
17644
  _l.sent();
17450
- return [4 /*yield*/, (0, load_inbox_data_test_1.load_inbox_data_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17645
+ return [4 /*yield*/, inbox_threads_building_tests()];
17451
17646
  case 111:
17452
17647
  _l.sent();
17453
- return [4 /*yield*/, (0, phone_calls_cold_transfer_test_1.phone_calls_cold_transfer_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17648
+ return [4 /*yield*/, inbox_threads_loading_tests()];
17454
17649
  case 112:
17455
17650
  _l.sent();
17456
- return [4 /*yield*/, (0, enduser_observations_acknowledge_test_1.enduser_observations_acknowledge_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17651
+ return [4 /*yield*/, (0, load_inbox_data_test_1.load_inbox_data_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17457
17652
  case 113:
17458
17653
  _l.sent();
17459
- return [4 /*yield*/, (0, nutrition_tracking_test_1.nutrition_tracking_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17654
+ return [4 /*yield*/, (0, phone_calls_cold_transfer_test_1.phone_calls_cold_transfer_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17460
17655
  case 114:
17461
17656
  _l.sent();
17462
- return [4 /*yield*/, (0, translations_test_1.translations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17657
+ return [4 /*yield*/, (0, enduser_observations_acknowledge_test_1.enduser_observations_acknowledge_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17463
17658
  case 115:
17464
17659
  _l.sent();
17465
- return [4 /*yield*/, (0, create_user_notifications_trigger_test_1.create_user_notifications_trigger_tests)({ sdk: sdk })];
17660
+ return [4 /*yield*/, (0, nutrition_tracking_test_1.nutrition_tracking_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17466
17661
  case 116:
17467
17662
  _l.sent();
17468
- return [4 /*yield*/, group_mms_active_tests()];
17663
+ return [4 /*yield*/, (0, translations_test_1.translations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17469
17664
  case 117:
17470
17665
  _l.sent();
17471
- return [4 /*yield*/, auto_reply_tests()];
17666
+ return [4 /*yield*/, (0, create_user_notifications_trigger_test_1.create_user_notifications_trigger_tests)({ sdk: sdk })];
17472
17667
  case 118:
17473
17668
  _l.sent();
17474
- return [4 /*yield*/, (0, exports.relationships_tests)()];
17669
+ return [4 /*yield*/, group_mms_active_tests()];
17475
17670
  case 119:
17476
17671
  _l.sent();
17477
- return [4 /*yield*/, rate_limit_tests()];
17672
+ return [4 /*yield*/, auto_reply_tests()];
17478
17673
  case 120:
17479
17674
  _l.sent();
17480
- return [4 /*yield*/, ip_address_form_tests()];
17675
+ return [4 /*yield*/, (0, exports.relationships_tests)()];
17481
17676
  case 121:
17482
17677
  _l.sent();
17483
- return [4 /*yield*/, bulk_update_tests()];
17678
+ return [4 /*yield*/, rate_limit_tests()];
17484
17679
  case 122:
17485
17680
  _l.sent();
17486
- return [4 /*yield*/, (0, calendar_events_bulk_update_test_1.calendar_events_bulk_update_tests)({ sdk: sdk })];
17681
+ return [4 /*yield*/, ip_address_form_tests()];
17487
17682
  case 123:
17488
17683
  _l.sent();
17489
- return [4 /*yield*/, (0, calendar_event_references_update_test_1.calendar_event_references_update_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17684
+ return [4 /*yield*/, bulk_update_tests()];
17490
17685
  case 124:
17491
17686
  _l.sent();
17492
- return [4 /*yield*/, (0, exports.cancel_upcoming_appointments_journey_action_test)()];
17687
+ return [4 /*yield*/, (0, calendar_events_bulk_update_test_1.calendar_events_bulk_update_tests)({ sdk: sdk })];
17493
17688
  case 125:
17494
17689
  _l.sent();
17495
- return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17690
+ return [4 /*yield*/, (0, calendar_event_references_update_test_1.calendar_event_references_update_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17496
17691
  case 126:
17692
+ _l.sent();
17693
+ return [4 /*yield*/, (0, exports.cancel_upcoming_appointments_journey_action_test)()];
17694
+ case 127:
17695
+ _l.sent();
17696
+ return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17697
+ case 128:
17497
17698
  _l.sent(); // should come right after setup tests
17498
17699
  return [4 /*yield*/, sync_tests_with_access_tags()]; // should come directly after setup to avoid extra sync values
17499
- case 127:
17700
+ case 129:
17500
17701
  _l.sent(); // should come directly after setup to avoid extra sync values
17501
17702
  return [4 /*yield*/, sync_tests()]; // should come directly after setup to avoid extra sync values
17502
- case 128:
17703
+ case 130:
17503
17704
  _l.sent(); // should come directly after setup to avoid extra sync values
17504
17705
  return [4 /*yield*/, get_templated_message_tests()];
17505
- case 129:
17706
+ case 131:
17506
17707
  _l.sent();
17507
17708
  return [4 /*yield*/, updatedAt_tests()];
17508
- case 130:
17709
+ case 132:
17509
17710
  _l.sent();
17510
17711
  return [4 /*yield*/, file_source_tests()];
17511
- case 131:
17712
+ case 133:
17512
17713
  _l.sent();
17513
17714
  return [4 /*yield*/, enduser_access_tags_tests()];
17514
- case 132:
17715
+ case 134:
17515
17716
  _l.sent();
17516
17717
  return [4 /*yield*/, enduserAccessTests()];
17517
- case 133:
17718
+ case 135:
17518
17719
  _l.sent();
17519
17720
  return [4 /*yield*/, test_form_response_search()];
17520
- case 134:
17721
+ case 136:
17521
17722
  _l.sent();
17522
17723
  return [4 /*yield*/, date_parsing_tests()];
17523
- case 135:
17724
+ case 137:
17524
17725
  _l.sent();
17525
17726
  return [4 /*yield*/, fromEmailOverride_tests()];
17526
- case 136:
17727
+ case 138:
17527
17728
  _l.sent();
17528
17729
  return [4 /*yield*/, ticket_tests()];
17529
- case 137:
17730
+ case 139:
17530
17731
  _l.sent();
17531
17732
  return [4 /*yield*/, uniqueness_tests()];
17532
- case 138:
17733
+ case 140:
17533
17734
  _l.sent();
17534
17735
  return [4 /*yield*/, (0, exports.enduser_orders_tests)()];
17535
- case 139:
17736
+ case 141:
17536
17737
  _l.sent();
17537
17738
  return [4 /*yield*/, calendar_event_care_team_tests()];
17538
- case 140:
17739
+ case 142:
17539
17740
  _l.sent();
17540
17741
  return [4 /*yield*/, merge_enduser_tests()];
17541
- case 141:
17742
+ case 143:
17542
17743
  _l.sent();
17543
17744
  return [4 /*yield*/, input_modifier_tests()];
17544
- case 142:
17745
+ case 144:
17545
17746
  _l.sent();
17546
17747
  return [4 /*yield*/, (0, exports.switch_to_related_contacts_tests)()];
17547
- case 143:
17748
+ case 145:
17548
17749
  _l.sent();
17549
17750
  return [4 /*yield*/, redaction_tests()];
17550
- case 144:
17751
+ case 146:
17551
17752
  _l.sent();
17552
17753
  return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
17553
- case 145:
17754
+ case 147:
17554
17755
  _l.sent();
17555
17756
  return [4 /*yield*/, mdb_filter_tests()];
17556
- case 146:
17757
+ case 148:
17557
17758
  _l.sent();
17558
17759
  return [4 /*yield*/, superadmin_tests()];
17559
- case 147:
17760
+ case 149:
17560
17761
  _l.sent();
17561
17762
  return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
17562
- case 148:
17763
+ case 150:
17563
17764
  _l.sent();
17564
17765
  return [4 /*yield*/, vital_trigger_tests()];
17565
- case 149:
17766
+ case 151:
17566
17767
  _l.sent();
17567
17768
  return [4 /*yield*/, close_reasons_no_duplicates_tests()];
17568
- case 150:
17769
+ case 152:
17569
17770
  _l.sent();
17570
17771
  return [4 /*yield*/, register_as_enduser_tests()];
17571
- case 151:
17772
+ case 153:
17572
17773
  _l.sent();
17573
17774
  return [4 /*yield*/, lockout_tests()];
17574
- case 152:
17775
+ case 154:
17575
17776
  _l.sent();
17576
17777
  return [4 /*yield*/, delete_user_tests()
17577
17778
  // await test_send_with_template()
17578
17779
  ];
17579
- case 153:
17780
+ case 155:
17580
17781
  _l.sent();
17581
17782
  // await test_send_with_template()
17582
17783
  return [4 /*yield*/, bulk_read_tests()];
17583
- case 154:
17784
+ case 156:
17584
17785
  // await test_send_with_template()
17585
17786
  _l.sent();
17586
17787
  return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
17587
- case 155:
17788
+ case 157:
17588
17789
  _l.sent();
17589
17790
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
17590
- case 156:
17791
+ case 158:
17591
17792
  _l.sent();
17592
17793
  return [4 /*yield*/, unique_strings_tests()];
17593
- case 157:
17794
+ case 159:
17594
17795
  _l.sent();
17595
17796
  return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
17596
- case 158:
17797
+ case 160:
17597
17798
  _l.sent();
17598
17799
  return [4 /*yield*/, role_based_access_tests()];
17599
- case 159:
17800
+ case 161:
17600
17801
  _l.sent();
17601
17802
  return [4 /*yield*/, enduser_session_tests()];
17602
- case 160:
17803
+ case 162:
17603
17804
  _l.sent();
17604
17805
  return [4 /*yield*/, nextReminderInMS_tests()];
17605
- case 161:
17806
+ case 163:
17606
17807
  _l.sent();
17607
17808
  return [4 /*yield*/, wait_for_trigger_tests()];
17608
- case 162:
17809
+ case 164:
17609
17810
  _l.sent();
17610
17811
  return [4 /*yield*/, pdf_generation()];
17611
- case 163:
17812
+ case 165:
17612
17813
  _l.sent();
17613
17814
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests().catch(console.error)]; // timing is unreliable, uncomment if changing logic
17614
- case 164:
17815
+ case 166:
17615
17816
  _l.sent(); // timing is unreliable, uncomment if changing logic
17616
17817
  return [4 /*yield*/, sub_organization_enduser_tests()];
17617
- case 165:
17818
+ case 167:
17618
17819
  _l.sent();
17619
17820
  return [4 /*yield*/, sub_organization_tests()];
17620
- case 166:
17821
+ case 168:
17621
17822
  _l.sent();
17622
17823
  return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
17623
- case 167:
17824
+ case 169:
17624
17825
  _l.sent();
17625
17826
  return [4 /*yield*/, generate_user_auth_tests()];
17626
- case 168:
17827
+ case 170:
17627
17828
  _l.sent();
17628
17829
  return [4 /*yield*/, generateEnduserAuthTests()];
17629
- case 169:
17830
+ case 171:
17630
17831
  _l.sent();
17631
17832
  return [4 /*yield*/, public_form_tests()];
17632
- case 170:
17833
+ case 172:
17633
17834
  _l.sent();
17634
17835
  return [4 /*yield*/, badInputTests()];
17635
- case 171:
17836
+ case 173:
17636
17837
  _l.sent();
17637
17838
  return [4 /*yield*/, filterTests()];
17638
- case 172:
17839
+ case 174:
17639
17840
  _l.sent();
17640
17841
  return [4 /*yield*/, updatesTests()];
17641
- case 173:
17842
+ case 175:
17642
17843
  _l.sent();
17643
- return [3 /*break*/, 175];
17644
- case 174:
17844
+ return [3 /*break*/, 177];
17845
+ case 176:
17645
17846
  err_1 = _l.sent();
17646
17847
  console.error("Failed during custom test");
17647
17848
  if (err_1.message && err_1.info) {
@@ -17651,18 +17852,18 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
17651
17852
  console.error(err_1);
17652
17853
  }
17653
17854
  process.exit(1);
17654
- return [3 /*break*/, 175];
17655
- case 175:
17855
+ return [3 /*break*/, 177];
17856
+ case 177:
17656
17857
  _a = schema_1.schema;
17657
17858
  _b = [];
17658
17859
  for (_c in _a)
17659
17860
  _b.push(_c);
17660
17861
  _i = 0;
17661
- _l.label = 176;
17662
- case 176:
17663
- if (!(_i < _b.length)) return [3 /*break*/, 179];
17862
+ _l.label = 178;
17863
+ case 178:
17864
+ if (!(_i < _b.length)) return [3 /*break*/, 181];
17664
17865
  _c = _b[_i];
17665
- if (!(_c in _a)) return [3 /*break*/, 178];
17866
+ if (!(_c in _a)) return [3 /*break*/, 180];
17666
17867
  n = _c;
17667
17868
  returnValidation = (_k = (_j = schema_1.schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
17668
17869
  return [4 /*yield*/, run_generated_tests({
@@ -17673,41 +17874,41 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
17673
17874
  create: returnValidation // ModelFields<ClientModel>,
17674
17875
  }
17675
17876
  })];
17676
- case 177:
17877
+ case 179:
17677
17878
  _l.sent();
17678
- _l.label = 178;
17679
- case 178:
17879
+ _l.label = 180;
17880
+ case 180:
17680
17881
  _i++;
17681
- return [3 /*break*/, 176];
17682
- case 179:
17882
+ return [3 /*break*/, 178];
17883
+ case 181:
17683
17884
  _d = tests;
17684
17885
  _f = [];
17685
17886
  for (_g in _d)
17686
17887
  _f.push(_g);
17687
17888
  _h = 0;
17688
- _l.label = 180;
17689
- case 180:
17690
- if (!(_h < _f.length)) return [3 /*break*/, 185];
17889
+ _l.label = 182;
17890
+ case 182:
17891
+ if (!(_h < _f.length)) return [3 /*break*/, 187];
17691
17892
  _g = _f[_h];
17692
- if (!(_g in _d)) return [3 /*break*/, 184];
17893
+ if (!(_g in _d)) return [3 /*break*/, 186];
17693
17894
  t = _g;
17694
- _l.label = 181;
17695
- case 181:
17696
- _l.trys.push([181, 183, , 184]);
17895
+ _l.label = 183;
17896
+ case 183:
17897
+ _l.trys.push([183, 185, , 186]);
17697
17898
  return [4 /*yield*/, tests[t]()];
17698
- case 182:
17899
+ case 184:
17699
17900
  _l.sent();
17700
- return [3 /*break*/, 184];
17701
- case 183:
17901
+ return [3 /*break*/, 186];
17902
+ case 185:
17702
17903
  err_2 = _l.sent();
17703
17904
  console.error("Error running test:");
17704
17905
  console.error(err_2);
17705
17906
  process.exit(1);
17706
- return [3 /*break*/, 184];
17707
- case 184:
17907
+ return [3 /*break*/, 186];
17908
+ case 186:
17708
17909
  _h++;
17709
- return [3 /*break*/, 180];
17710
- case 185:
17910
+ return [3 /*break*/, 182];
17911
+ case 187:
17711
17912
  process.exit();
17712
17913
  return [2 /*return*/];
17713
17914
  }