@tellescope/sdk 1.237.0 → 1.237.2

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 (43) hide show
  1. package/lib/cjs/sdk.d.ts +1 -0
  2. package/lib/cjs/sdk.d.ts.map +1 -1
  3. package/lib/cjs/sdk.js +1 -0
  4. package/lib/cjs/sdk.js.map +1 -1
  5. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.d.ts.map +1 -1
  6. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.js +227 -64
  7. package/lib/cjs/tests/api_tests/inbox_thread_assignment_updates.test.js.map +1 -1
  8. package/lib/cjs/tests/api_tests/inbox_thread_draft_scheduled.test.d.ts +6 -0
  9. package/lib/cjs/tests/api_tests/inbox_thread_draft_scheduled.test.d.ts.map +1 -0
  10. package/lib/cjs/tests/api_tests/inbox_thread_draft_scheduled.test.js +717 -0
  11. package/lib/cjs/tests/api_tests/inbox_thread_draft_scheduled.test.js.map +1 -0
  12. package/lib/cjs/tests/api_tests/inbox_thread_mdb_filter.test.d.ts +6 -0
  13. package/lib/cjs/tests/api_tests/inbox_thread_mdb_filter.test.d.ts.map +1 -0
  14. package/lib/cjs/tests/api_tests/inbox_thread_mdb_filter.test.js +372 -0
  15. package/lib/cjs/tests/api_tests/inbox_thread_mdb_filter.test.js.map +1 -0
  16. package/lib/cjs/tests/tests.d.ts.map +1 -1
  17. package/lib/cjs/tests/tests.js +575 -105
  18. package/lib/cjs/tests/tests.js.map +1 -1
  19. package/lib/esm/sdk.d.ts +1 -0
  20. package/lib/esm/sdk.d.ts.map +1 -1
  21. package/lib/esm/sdk.js +1 -0
  22. package/lib/esm/sdk.js.map +1 -1
  23. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.d.ts.map +1 -1
  24. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.js +227 -64
  25. package/lib/esm/tests/api_tests/inbox_thread_assignment_updates.test.js.map +1 -1
  26. package/lib/esm/tests/api_tests/inbox_thread_draft_scheduled.test.d.ts +6 -0
  27. package/lib/esm/tests/api_tests/inbox_thread_draft_scheduled.test.d.ts.map +1 -0
  28. package/lib/esm/tests/api_tests/inbox_thread_draft_scheduled.test.js +713 -0
  29. package/lib/esm/tests/api_tests/inbox_thread_draft_scheduled.test.js.map +1 -0
  30. package/lib/esm/tests/api_tests/inbox_thread_mdb_filter.test.d.ts +6 -0
  31. package/lib/esm/tests/api_tests/inbox_thread_mdb_filter.test.d.ts.map +1 -0
  32. package/lib/esm/tests/api_tests/inbox_thread_mdb_filter.test.js +368 -0
  33. package/lib/esm/tests/api_tests/inbox_thread_mdb_filter.test.js.map +1 -0
  34. package/lib/esm/tests/tests.d.ts.map +1 -1
  35. package/lib/esm/tests/tests.js +575 -105
  36. package/lib/esm/tests/tests.js.map +1 -1
  37. package/lib/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +10 -10
  39. package/src/sdk.ts +4 -0
  40. package/src/tests/api_tests/inbox_thread_assignment_updates.test.ts +149 -0
  41. package/src/tests/api_tests/inbox_thread_draft_scheduled.test.ts +625 -0
  42. package/src/tests/tests.ts +401 -1
  43. package/test_generated.pdf +0 -0
@@ -74,6 +74,7 @@ import { Session, EnduserSession } from "../sdk";
74
74
  import { enduser_observations_acknowledge_tests } from "./api_tests/enduser_observations_acknowledge.test";
75
75
  import { create_user_notifications_trigger_tests } from "./api_tests/create_user_notifications_trigger.test";
76
76
  import { inbox_thread_assignment_updates_tests } from "./api_tests/inbox_thread_assignment_updates.test";
77
+ import { inbox_thread_draft_scheduled_tests } from "./api_tests/inbox_thread_draft_scheduled.test";
77
78
  import { appointment_completed_trigger_tests } from "./api_tests/appointment_completed_trigger.test";
78
79
  import { purchase_made_trigger_tests } from "./api_tests/purchase_made_trigger.test";
79
80
  import { appointment_rescheduled_trigger_tests } from "./api_tests/appointment_rescheduled_trigger.test";
@@ -14818,6 +14819,469 @@ var inbox_threads_loading_tests = function () { return __awaiter(void 0, void 0,
14818
14819
  }
14819
14820
  });
14820
14821
  }); };
14822
+ var inbox_threads_new_fields_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
14823
+ var e, resetThreadsAndDates, i, start, resetThreadBuildingDates, from, chatRoom, groupMMS, inboundCall, outboundCall, archivedDate, trashedDate, beforeReset, resetResult, afterReset, org, epochTime, emptyResetResult;
14824
+ var _a, _b;
14825
+ return __generator(this, function (_c) {
14826
+ switch (_c.label) {
14827
+ case 0:
14828
+ log_header("Inbox Thread New Fields Tests (archivedAt, trashedAt, senderIds)");
14829
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'Test', lname: 'NewFields' })
14830
+ // Use the new reset_threads endpoint for full resets (delete threads + reset dates)
14831
+ ];
14832
+ case 1:
14833
+ e = _c.sent();
14834
+ resetThreadsAndDates = function () { return sdk.api.inbox_threads.reset_threads(); };
14835
+ i = 0;
14836
+ start = new Date();
14837
+ resetThreadBuildingDates = function () { return (sdk.api.organizations.updateOne(businessId, {
14838
+ inboxThreadsBuiltFrom: new Date(start.getTime() + (i++)),
14839
+ inboxThreadsBuiltTo: new Date(start.getTime() + (i++))
14840
+ })); };
14841
+ // Start with clean state
14842
+ return [4 /*yield*/, resetThreadsAndDates()];
14843
+ case 2:
14844
+ // Start with clean state
14845
+ _c.sent();
14846
+ from = new Date(start.getTime() - 10000);
14847
+ // Test 1: Sender ID Tests - Email
14848
+ log_header("Sender ID Tests - Email");
14849
+ return [4 /*yield*/, sdk.api.emails.createOne({
14850
+ logOnly: true,
14851
+ subject: 'Test Email Inbound',
14852
+ textContent: 'Inbound email',
14853
+ enduserId: e.id,
14854
+ inbound: true,
14855
+ userId: sdk.userInfo.id,
14856
+ })];
14857
+ case 3:
14858
+ _c.sent();
14859
+ return [4 /*yield*/, sdk.api.emails.createOne({
14860
+ logOnly: true,
14861
+ subject: 'Test Email Inbound',
14862
+ textContent: 'Outbound email',
14863
+ enduserId: e.id,
14864
+ inbound: false,
14865
+ userId: sdk.userInfo.id,
14866
+ })];
14867
+ case 4:
14868
+ _c.sent();
14869
+ return [4 /*yield*/, async_test('build email threads with sender IDs', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14870
+ var alreadyBuilt = _a.alreadyBuilt;
14871
+ return !alreadyBuilt;
14872
+ } })];
14873
+ case 5:
14874
+ _c.sent();
14875
+ return [4 /*yield*/, async_test('verify email thread has correct sender IDs', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14876
+ var threads = _a.threads;
14877
+ var emailThread = threads.find(function (t) { return t.type === 'Email'; });
14878
+ return !!emailThread
14879
+ && emailThread.recentOutboundUserId === sdk.userInfo.id
14880
+ && emailThread.recentInboundEnduserId === e.id;
14881
+ } })
14882
+ // Test 2: Sender ID Tests - SMS
14883
+ ];
14884
+ case 6:
14885
+ _c.sent();
14886
+ // Test 2: Sender ID Tests - SMS
14887
+ log_header("Sender ID Tests - SMS");
14888
+ return [4 /*yield*/, resetThreadsAndDates()];
14889
+ case 7:
14890
+ _c.sent();
14891
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({
14892
+ logOnly: true,
14893
+ inbound: true,
14894
+ enduserId: e.id,
14895
+ message: 'Inbound SMS',
14896
+ userId: sdk.userInfo.id,
14897
+ phoneNumber: '+15555555555',
14898
+ enduserPhoneNumber: '+15555555556',
14899
+ })];
14900
+ case 8:
14901
+ _c.sent();
14902
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({
14903
+ logOnly: true,
14904
+ inbound: false,
14905
+ enduserId: e.id,
14906
+ message: 'Outbound SMS',
14907
+ userId: sdk.userInfo.id,
14908
+ phoneNumber: '+15555555555',
14909
+ enduserPhoneNumber: '+15555555556',
14910
+ })];
14911
+ case 9:
14912
+ _c.sent();
14913
+ return [4 /*yield*/, async_test('build SMS threads with sender IDs', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14914
+ var alreadyBuilt = _a.alreadyBuilt;
14915
+ return !alreadyBuilt;
14916
+ } })];
14917
+ case 10:
14918
+ _c.sent();
14919
+ return [4 /*yield*/, async_test('verify SMS thread has correct sender IDs', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14920
+ var threads = _a.threads;
14921
+ var smsThread = threads.find(function (t) { return t.type === 'SMS'; });
14922
+ return !!smsThread
14923
+ && smsThread.recentOutboundUserId === sdk.userInfo.id
14924
+ && smsThread.recentInboundEnduserId === e.id;
14925
+ } })
14926
+ // Test 3: Sender ID Tests - ChatRoom
14927
+ ];
14928
+ case 11:
14929
+ _c.sent();
14930
+ // Test 3: Sender ID Tests - ChatRoom
14931
+ log_header("Sender ID Tests - ChatRoom");
14932
+ return [4 /*yield*/, resetThreadsAndDates()];
14933
+ case 12:
14934
+ _c.sent();
14935
+ return [4 /*yield*/, sdk.api.chat_rooms.createOne({
14936
+ title: 'Test Chat Room',
14937
+ userIds: [sdk.userInfo.id],
14938
+ enduserIds: [e.id],
14939
+ })
14940
+ // First message from user (outbound)
14941
+ ];
14942
+ case 13:
14943
+ chatRoom = _c.sent();
14944
+ // First message from user (outbound)
14945
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: chatRoom.id, message: 'User message', senderId: sdk.userInfo.id })];
14946
+ case 14:
14947
+ // First message from user (outbound)
14948
+ _c.sent();
14949
+ return [4 /*yield*/, wait(undefined, 500)];
14950
+ case 15:
14951
+ _c.sent();
14952
+ return [4 /*yield*/, async_test('build chat threads after user message', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14953
+ var alreadyBuilt = _a.alreadyBuilt;
14954
+ return !alreadyBuilt;
14955
+ } })];
14956
+ case 16:
14957
+ _c.sent();
14958
+ return [4 /*yield*/, async_test('verify chat thread has outbound userId only', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14959
+ var threads = _a.threads;
14960
+ var chatThread = threads.find(function (t) { return t.type === 'Chat'; });
14961
+ return !!chatThread
14962
+ && chatThread.recentOutboundUserId === sdk.userInfo.id
14963
+ && !chatThread.recentInboundEnduserId;
14964
+ } })
14965
+ // Now enduser sends a message (becomes recentSender, but merge preserves previous outbound userId)
14966
+ ];
14967
+ case 17:
14968
+ _c.sent();
14969
+ // Now enduser sends a message (becomes recentSender, but merge preserves previous outbound userId)
14970
+ return [4 /*yield*/, sdk.api.chats.createOne({ roomId: chatRoom.id, message: 'Enduser message', enduserId: e.id, senderId: e.id })];
14971
+ case 18:
14972
+ // Now enduser sends a message (becomes recentSender, but merge preserves previous outbound userId)
14973
+ _c.sent();
14974
+ return [4 /*yield*/, wait(undefined, 500)];
14975
+ case 19:
14976
+ _c.sent();
14977
+ return [4 /*yield*/, resetThreadBuildingDates()]; // Only reset dates, keep existing thread for merge test
14978
+ case 20:
14979
+ _c.sent(); // Only reset dates, keep existing thread for merge test
14980
+ return [4 /*yield*/, async_test('rebuild chat threads after enduser message', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
14981
+ var alreadyBuilt = _a.alreadyBuilt;
14982
+ return !alreadyBuilt;
14983
+ } })];
14984
+ case 21:
14985
+ _c.sent();
14986
+ return [4 /*yield*/, async_test('verify chat thread has both sender IDs (merge preserves previous)', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
14987
+ var threads = _a.threads;
14988
+ var chatThread = threads.find(function (t) { return t.type === 'Chat'; });
14989
+ // ChatRoom only tracks one recentSender at a time, but merge preserves both IDs
14990
+ return !!chatThread
14991
+ && chatThread.recentOutboundUserId === sdk.userInfo.id // preserved from previous build
14992
+ && chatThread.recentInboundEnduserId === e.id; // from current build
14993
+ } })
14994
+ // Test 4: Sender ID Tests - GroupMMS
14995
+ ];
14996
+ case 22:
14997
+ _c.sent();
14998
+ // Test 4: Sender ID Tests - GroupMMS
14999
+ log_header("Sender ID Tests - GroupMMS");
15000
+ return [4 /*yield*/, resetThreadsAndDates()];
15001
+ case 23:
15002
+ _c.sent();
15003
+ return [4 /*yield*/, sdk.api.group_mms_conversations.createOne({
15004
+ enduserIds: [e.id],
15005
+ userIds: [sdk.userInfo.id],
15006
+ userStates: [],
15007
+ messages: [
15008
+ { message: 'Inbound message', sender: e.id, timestamp: Date.now() - 1000, logOnly: true },
15009
+ { message: 'Outbound message', sender: sdk.userInfo.id, timestamp: Date.now(), logOnly: true },
15010
+ ],
15011
+ })];
15012
+ case 24:
15013
+ groupMMS = _c.sent();
15014
+ return [4 /*yield*/, async_test('build GroupMMS threads with sender IDs', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15015
+ var alreadyBuilt = _a.alreadyBuilt;
15016
+ return !alreadyBuilt;
15017
+ } })];
15018
+ case 25:
15019
+ _c.sent();
15020
+ return [4 /*yield*/, async_test('verify GroupMMS thread has correct sender IDs', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15021
+ var threads = _a.threads;
15022
+ var groupMMSThread = threads.find(function (t) { return t.type === 'GroupMMS'; });
15023
+ return !!groupMMSThread
15024
+ && groupMMSThread.recentOutboundUserId === sdk.userInfo.id
15025
+ && groupMMSThread.recentInboundEnduserId === e.id;
15026
+ } })
15027
+ // Test 5: Sender ID Tests - PhoneCall
15028
+ ];
15029
+ case 26:
15030
+ _c.sent();
15031
+ // Test 5: Sender ID Tests - PhoneCall
15032
+ log_header("Sender ID Tests - PhoneCall");
15033
+ return [4 /*yield*/, resetThreadsAndDates()];
15034
+ case 27:
15035
+ _c.sent();
15036
+ return [4 /*yield*/, sdk.api.phone_calls.createOne({
15037
+ enduserId: e.id,
15038
+ inbound: true,
15039
+ to: '+15555555555',
15040
+ from: '+15555555556',
15041
+ userId: sdk.userInfo.id,
15042
+ })];
15043
+ case 28:
15044
+ inboundCall = _c.sent();
15045
+ return [4 /*yield*/, async_test('build phone call threads (inbound)', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15046
+ var alreadyBuilt = _a.alreadyBuilt;
15047
+ return !alreadyBuilt;
15048
+ } })];
15049
+ case 29:
15050
+ _c.sent();
15051
+ return [4 /*yield*/, async_test('verify inbound phone call thread has enduserId', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15052
+ var threads = _a.threads;
15053
+ var callThread = threads.find(function (t) { return t.type === 'Phone' && t.threadId === inboundCall.id; });
15054
+ return !!callThread
15055
+ && !callThread.recentOutboundUserId
15056
+ && callThread.recentInboundEnduserId === e.id;
15057
+ } })
15058
+ // Test outbound call separately to avoid date range issues
15059
+ ];
15060
+ case 30:
15061
+ _c.sent();
15062
+ // Test outbound call separately to avoid date range issues
15063
+ return [4 /*yield*/, resetThreadsAndDates()];
15064
+ case 31:
15065
+ // Test outbound call separately to avoid date range issues
15066
+ _c.sent();
15067
+ return [4 /*yield*/, sdk.api.phone_calls.createOne({
15068
+ enduserId: e.id,
15069
+ inbound: false,
15070
+ to: '+15555555556',
15071
+ from: '+15555555555',
15072
+ userId: sdk.userInfo.id,
15073
+ })];
15074
+ case 32:
15075
+ outboundCall = _c.sent();
15076
+ return [4 /*yield*/, async_test('build phone call threads (outbound)', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15077
+ var alreadyBuilt = _a.alreadyBuilt;
15078
+ return !alreadyBuilt;
15079
+ } })];
15080
+ case 33:
15081
+ _c.sent();
15082
+ return [4 /*yield*/, async_test('verify outbound phone call thread has userId', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15083
+ var threads = _a.threads;
15084
+ var callThread = threads.find(function (t) { return t.type === 'Phone' && t.threadId === outboundCall.id; });
15085
+ return !!callThread
15086
+ && callThread.recentOutboundUserId === sdk.userInfo.id
15087
+ && !callThread.recentInboundEnduserId;
15088
+ } })
15089
+ // Test 6: Archive/Trash Tests - Propagation
15090
+ ];
15091
+ case 34:
15092
+ _c.sent();
15093
+ // Test 6: Archive/Trash Tests - Propagation
15094
+ log_header("Archive/Trash Tests - Propagation");
15095
+ return [4 /*yield*/, resetThreadsAndDates()];
15096
+ case 35:
15097
+ _c.sent();
15098
+ archivedDate = new Date();
15099
+ return [4 /*yield*/, sdk.api.emails.createOne({
15100
+ logOnly: true,
15101
+ subject: 'Archived Email',
15102
+ textContent: 'This email is archived',
15103
+ enduserId: e.id,
15104
+ inbound: true,
15105
+ userId: sdk.userInfo.id,
15106
+ archivedAt: archivedDate,
15107
+ })];
15108
+ case 36:
15109
+ _c.sent();
15110
+ return [4 /*yield*/, async_test('build threads with archived email', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15111
+ var alreadyBuilt = _a.alreadyBuilt;
15112
+ return !alreadyBuilt;
15113
+ } })];
15114
+ case 37:
15115
+ _c.sent();
15116
+ return [4 /*yield*/, async_test('verify thread has archivedAt populated', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15117
+ var threads = _a.threads;
15118
+ var emailThread = threads.find(function (t) { return t.type === 'Email'; });
15119
+ return !!emailThread
15120
+ && !!emailThread.archivedAt
15121
+ && new Date(emailThread.archivedAt).getTime() === archivedDate.getTime();
15122
+ } })
15123
+ // Test 7: Archive/Trash Tests - Clearing (new message clears archived status)
15124
+ ];
15125
+ case 38:
15126
+ _c.sent();
15127
+ // Test 7: Archive/Trash Tests - Clearing (new message clears archived status)
15128
+ log_header("Archive/Trash Tests - Clearing");
15129
+ return [4 /*yield*/, sdk.api.emails.createOne({
15130
+ logOnly: true,
15131
+ subject: 'Archived Email',
15132
+ textContent: 'This email is NOT archived',
15133
+ enduserId: e.id,
15134
+ inbound: true,
15135
+ userId: sdk.userInfo.id,
15136
+ // No archivedAt
15137
+ })];
15138
+ case 39:
15139
+ _c.sent();
15140
+ return [4 /*yield*/, resetThreadBuildingDates()]; // Only reset dates, keep existing thread for merge test
15141
+ case 40:
15142
+ _c.sent(); // Only reset dates, keep existing thread for merge test
15143
+ return [4 /*yield*/, async_test('rebuild threads after non-archived message', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15144
+ var alreadyBuilt = _a.alreadyBuilt;
15145
+ return !alreadyBuilt;
15146
+ } })];
15147
+ case 41:
15148
+ _c.sent();
15149
+ return [4 /*yield*/, async_test('verify thread archivedAt is cleared', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15150
+ var threads = _a.threads;
15151
+ var emailThread = threads.find(function (t) { return t.type === 'Email'; });
15152
+ return !!emailThread && emailThread.archivedAt === '';
15153
+ } })
15154
+ // Test 8: Archive/Trash Tests - trashedAt propagation
15155
+ ];
15156
+ case 42:
15157
+ _c.sent();
15158
+ // Test 8: Archive/Trash Tests - trashedAt propagation
15159
+ log_header("Archive/Trash Tests - Trashed Propagation");
15160
+ return [4 /*yield*/, resetThreadsAndDates()];
15161
+ case 43:
15162
+ _c.sent();
15163
+ trashedDate = new Date();
15164
+ return [4 /*yield*/, sdk.api.sms_messages.createOne({
15165
+ logOnly: true,
15166
+ inbound: true,
15167
+ enduserId: e.id,
15168
+ message: 'Trashed SMS',
15169
+ userId: sdk.userInfo.id,
15170
+ phoneNumber: '+15555555557',
15171
+ enduserPhoneNumber: '+15555555558',
15172
+ trashedAt: trashedDate,
15173
+ })];
15174
+ case 44:
15175
+ _c.sent();
15176
+ return [4 /*yield*/, async_test('build threads with trashed SMS', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15177
+ var alreadyBuilt = _a.alreadyBuilt;
15178
+ return !alreadyBuilt;
15179
+ } })];
15180
+ case 45:
15181
+ _c.sent();
15182
+ return [4 /*yield*/, async_test('verify thread has trashedAt populated', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15183
+ var threads = _a.threads;
15184
+ var smsThread = threads.find(function (t) { return t.type === 'SMS' && t.phoneNumber === '+15555555557'; });
15185
+ return !!smsThread
15186
+ && !!smsThread.trashedAt
15187
+ && new Date(smsThread.trashedAt).getTime() === trashedDate.getTime();
15188
+ } })
15189
+ // Test 9: Archive/Trash Tests - Most Recent Archived, Older Not
15190
+ ];
15191
+ case 46:
15192
+ _c.sent();
15193
+ // Test 9: Archive/Trash Tests - Most Recent Archived, Older Not
15194
+ log_header("Archive/Trash Tests - Most Recent Archived, Older Not");
15195
+ return [4 /*yield*/, resetThreadsAndDates()
15196
+ // Create non-archived message first (older)
15197
+ ];
15198
+ case 47:
15199
+ _c.sent();
15200
+ // Create non-archived message first (older)
15201
+ return [4 /*yield*/, sdk.api.emails.createOne({
15202
+ logOnly: true,
15203
+ subject: 'Archive Order Test',
15204
+ textContent: 'Older non-archived email',
15205
+ enduserId: e.id,
15206
+ inbound: true,
15207
+ userId: sdk.userInfo.id,
15208
+ // No archivedAt
15209
+ })];
15210
+ case 48:
15211
+ // Create non-archived message first (older)
15212
+ _c.sent();
15213
+ return [4 /*yield*/, wait(undefined, 100)
15214
+ // Create archived message second (newer = most recent)
15215
+ ]; // Small delay to ensure ordering
15216
+ case 49:
15217
+ _c.sent(); // Small delay to ensure ordering
15218
+ // Create archived message second (newer = most recent)
15219
+ return [4 /*yield*/, sdk.api.emails.createOne({
15220
+ logOnly: true,
15221
+ subject: 'Archive Order Test',
15222
+ textContent: 'Newer archived email',
15223
+ enduserId: e.id,
15224
+ inbound: true,
15225
+ userId: sdk.userInfo.id,
15226
+ archivedAt: new Date(),
15227
+ })];
15228
+ case 50:
15229
+ // Create archived message second (newer = most recent)
15230
+ _c.sent();
15231
+ return [4 /*yield*/, async_test('build threads for archive order test', function () { return sdk.api.inbox_threads.build_threads({ from: from, to: new Date() }); }, { onResult: function (_a) {
15232
+ var alreadyBuilt = _a.alreadyBuilt;
15233
+ return !alreadyBuilt;
15234
+ } })];
15235
+ case 51:
15236
+ _c.sent();
15237
+ return [4 /*yield*/, async_test('verify thread archivedAt follows most recent message (IS archived)', function () { return sdk.api.inbox_threads.load_threads({}); }, { onResult: function (_a) {
15238
+ var threads = _a.threads;
15239
+ var emailThread = threads.find(function (t) { return t.type === 'Email'; });
15240
+ // Most recent message is archived, so thread should be archived
15241
+ return !!emailThread && !!emailThread.archivedAt;
15242
+ } })
15243
+ // Test 10: Reset Threads Endpoint - Comprehensive Coverage
15244
+ ];
15245
+ case 52:
15246
+ _c.sent();
15247
+ // Test 10: Reset Threads Endpoint - Comprehensive Coverage
15248
+ log_header("Reset Threads Endpoint Test");
15249
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({})];
15250
+ case 53:
15251
+ beforeReset = _c.sent();
15252
+ assert(beforeReset.threads.length > 0, 'no threads before reset test', 'threads exist before reset test');
15253
+ return [4 /*yield*/, sdk.api.inbox_threads.reset_threads()];
15254
+ case 54:
15255
+ resetResult = _c.sent();
15256
+ assert(resetResult.deletedCount > 0, 'no threads deleted by reset', 'reset_threads deleted threads');
15257
+ return [4 /*yield*/, sdk.api.inbox_threads.load_threads({})];
15258
+ case 55:
15259
+ afterReset = _c.sent();
15260
+ assert(afterReset.threads.length === 0, 'threads remain after reset', 'all threads deleted after reset');
15261
+ return [4 /*yield*/, sdk.api.organizations.getOne(businessId)];
15262
+ case 56:
15263
+ org = _c.sent();
15264
+ epochTime = new Date(0).getTime();
15265
+ assert(new Date((_a = org.inboxThreadsBuiltFrom) !== null && _a !== void 0 ? _a : 0).getTime() === epochTime, 'inboxThreadsBuiltFrom not reset to epoch', 'organization inboxThreadsBuiltFrom reset to epoch');
15266
+ assert(new Date((_b = org.inboxThreadsBuiltTo) !== null && _b !== void 0 ? _b : 0).getTime() === epochTime, 'inboxThreadsBuiltTo not reset to epoch', 'organization inboxThreadsBuiltTo reset to epoch');
15267
+ return [4 /*yield*/, sdk.api.inbox_threads.reset_threads()];
15268
+ case 57:
15269
+ emptyResetResult = _c.sent();
15270
+ assert(emptyResetResult.deletedCount === 0, 'deletedCount should be 0 when no threads', 'reset with no threads returns 0');
15271
+ // Cleanup
15272
+ return [4 /*yield*/, Promise.all([
15273
+ sdk.api.endusers.deleteOne(e.id),
15274
+ sdk.api.chat_rooms.deleteOne(chatRoom.id).catch(function () { }),
15275
+ sdk.api.group_mms_conversations.deleteOne(groupMMS.id).catch(function () { }),
15276
+ resetThreadsAndDates(), // Use the new endpoint for cleanup
15277
+ ])];
15278
+ case 58:
15279
+ // Cleanup
15280
+ _c.sent();
15281
+ return [2 /*return*/];
15282
+ }
15283
+ });
15284
+ }); };
14821
15285
  var get_next_reminder_timestamp_tests = function () {
14822
15286
  log_header("Get Next Reminder Timestamp Tests");
14823
15287
  var startTimeInMS = Date.now();
@@ -14921,7 +15385,7 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
14921
15385
  assert(truncate_string(null, { length: 4, showEllipsis: false }) === '', 'truncate doesnt work for non string', 'trucate works for non-string');
14922
15386
  _l.label = 2;
14923
15387
  case 2:
14924
- _l.trys.push([2, 94, , 95]);
15388
+ _l.trys.push([2, 96, , 97]);
14925
15389
  get_next_reminder_timestamp_tests();
14926
15390
  form_conditional_logic_tests();
14927
15391
  return [4 /*yield*/, test_weighted_round_robin()];
@@ -15062,243 +15526,249 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
15062
15526
  return [4 /*yield*/, setup_tests(sdk, sdkNonAdmin)];
15063
15527
  case 16:
15064
15528
  _l.sent();
15065
- return [4 /*yield*/, auto_merge_form_submission_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15529
+ return [4 /*yield*/, inbox_thread_assignment_updates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15066
15530
  case 17:
15067
15531
  _l.sent();
15068
- return [4 /*yield*/, threadKeyTests()];
15532
+ return [4 /*yield*/, inbox_thread_draft_scheduled_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15069
15533
  case 18:
15070
15534
  _l.sent();
15071
- return [4 /*yield*/, automation_trigger_tests()];
15535
+ return [4 /*yield*/, inbox_threads_new_fields_tests()];
15072
15536
  case 19:
15073
15537
  _l.sent();
15074
- return [4 /*yield*/, managed_content_enduser_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15538
+ return [4 /*yield*/, auto_merge_form_submission_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15075
15539
  case 20:
15076
15540
  _l.sent();
15077
- return [4 /*yield*/, afteraction_day_of_month_delay_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15541
+ return [4 /*yield*/, threadKeyTests()];
15078
15542
  case 21:
15079
15543
  _l.sent();
15080
- return [4 /*yield*/, bulk_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15544
+ return [4 /*yield*/, automation_trigger_tests()];
15081
15545
  case 22:
15082
15546
  _l.sent();
15083
- return [4 /*yield*/, custom_aggregation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15547
+ return [4 /*yield*/, managed_content_enduser_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15084
15548
  case 23:
15085
15549
  _l.sent();
15086
- return [4 /*yield*/, formsort_tests()];
15550
+ return [4 /*yield*/, afteraction_day_of_month_delay_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15087
15551
  case 24:
15088
15552
  _l.sent();
15089
- return [4 /*yield*/, self_serve_appointment_booking_tests()];
15553
+ return [4 /*yield*/, bulk_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15090
15554
  case 25:
15091
15555
  _l.sent();
15092
- return [4 /*yield*/, time_tracks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15556
+ return [4 /*yield*/, custom_aggregation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15093
15557
  case 26:
15094
15558
  _l.sent();
15095
- return [4 /*yield*/, calendar_event_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15559
+ return [4 /*yield*/, formsort_tests()];
15096
15560
  case 27:
15097
15561
  _l.sent();
15098
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
15562
+ return [4 /*yield*/, self_serve_appointment_booking_tests()];
15099
15563
  case 28:
15100
15564
  _l.sent();
15101
- return [4 /*yield*/, monthly_availability_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15565
+ return [4 /*yield*/, time_tracks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15102
15566
  case 29:
15103
15567
  _l.sent();
15104
- return [4 /*yield*/, journey_error_branching_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15568
+ return [4 /*yield*/, calendar_event_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15105
15569
  case 30:
15106
15570
  _l.sent();
15107
- return [4 /*yield*/, inbox_thread_assignment_updates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15571
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
15108
15572
  case 31:
15109
15573
  _l.sent();
15110
- return [4 /*yield*/, message_assignment_trigger_tests({ sdk: sdk })];
15574
+ return [4 /*yield*/, monthly_availability_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15111
15575
  case 32:
15112
15576
  _l.sent();
15113
- return [4 /*yield*/, inbox_threads_building_tests()];
15577
+ return [4 /*yield*/, journey_error_branching_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15114
15578
  case 33:
15115
15579
  _l.sent();
15116
- return [4 /*yield*/, inbox_threads_loading_tests()];
15580
+ return [4 /*yield*/, message_assignment_trigger_tests({ sdk: sdk })];
15117
15581
  case 34:
15118
15582
  _l.sent();
15119
- return [4 /*yield*/, load_inbox_data_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15583
+ return [4 /*yield*/, inbox_threads_building_tests()];
15120
15584
  case 35:
15121
15585
  _l.sent();
15122
- return [4 /*yield*/, enduser_observations_acknowledge_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15586
+ return [4 /*yield*/, inbox_threads_loading_tests()];
15123
15587
  case 36:
15124
15588
  _l.sent();
15125
- return [4 /*yield*/, create_user_notifications_trigger_tests({ sdk: sdk })];
15589
+ return [4 /*yield*/, load_inbox_data_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15126
15590
  case 37:
15127
15591
  _l.sent();
15128
- return [4 /*yield*/, group_mms_active_tests()];
15592
+ return [4 /*yield*/, enduser_observations_acknowledge_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
15129
15593
  case 38:
15130
15594
  _l.sent();
15131
- return [4 /*yield*/, auto_reply_tests()];
15595
+ return [4 /*yield*/, create_user_notifications_trigger_tests({ sdk: sdk })];
15132
15596
  case 39:
15133
15597
  _l.sent();
15134
- return [4 /*yield*/, relationships_tests()];
15598
+ return [4 /*yield*/, group_mms_active_tests()];
15135
15599
  case 40:
15136
15600
  _l.sent();
15137
- return [4 /*yield*/, rate_limit_tests()];
15601
+ return [4 /*yield*/, auto_reply_tests()];
15138
15602
  case 41:
15139
15603
  _l.sent();
15140
- return [4 /*yield*/, ip_address_form_tests()];
15604
+ return [4 /*yield*/, relationships_tests()];
15141
15605
  case 42:
15142
15606
  _l.sent();
15143
- return [4 /*yield*/, bulk_update_tests()];
15607
+ return [4 /*yield*/, rate_limit_tests()];
15144
15608
  case 43:
15145
15609
  _l.sent();
15146
- return [4 /*yield*/, cancel_upcoming_appointments_journey_action_test()];
15610
+ return [4 /*yield*/, ip_address_form_tests()];
15147
15611
  case 44:
15148
15612
  _l.sent();
15149
- return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
15613
+ return [4 /*yield*/, bulk_update_tests()];
15150
15614
  case 45:
15615
+ _l.sent();
15616
+ return [4 /*yield*/, cancel_upcoming_appointments_journey_action_test()];
15617
+ case 46:
15618
+ _l.sent();
15619
+ return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
15620
+ case 47:
15151
15621
  _l.sent(); // should come right after setup tests
15152
15622
  return [4 /*yield*/, sync_tests_with_access_tags()]; // should come directly after setup to avoid extra sync values
15153
- case 46:
15623
+ case 48:
15154
15624
  _l.sent(); // should come directly after setup to avoid extra sync values
15155
15625
  return [4 /*yield*/, sync_tests()]; // should come directly after setup to avoid extra sync values
15156
- case 47:
15626
+ case 49:
15157
15627
  _l.sent(); // should come directly after setup to avoid extra sync values
15158
15628
  return [4 /*yield*/, get_templated_message_tests()];
15159
- case 48:
15629
+ case 50:
15160
15630
  _l.sent();
15161
15631
  return [4 /*yield*/, updatedAt_tests()];
15162
- case 49:
15632
+ case 51:
15163
15633
  _l.sent();
15164
15634
  return [4 /*yield*/, file_source_tests()];
15165
- case 50:
15635
+ case 52:
15166
15636
  _l.sent();
15167
15637
  return [4 /*yield*/, enduser_access_tags_tests()];
15168
- case 51:
15638
+ case 53:
15169
15639
  _l.sent();
15170
15640
  return [4 /*yield*/, enduserAccessTests()];
15171
- case 52:
15641
+ case 54:
15172
15642
  _l.sent();
15173
15643
  return [4 /*yield*/, test_form_response_search()];
15174
- case 53:
15644
+ case 55:
15175
15645
  _l.sent();
15176
15646
  return [4 /*yield*/, date_parsing_tests()];
15177
- case 54:
15647
+ case 56:
15178
15648
  _l.sent();
15179
15649
  return [4 /*yield*/, fromEmailOverride_tests()];
15180
- case 55:
15650
+ case 57:
15181
15651
  _l.sent();
15182
15652
  return [4 /*yield*/, ticket_tests()];
15183
- case 56:
15653
+ case 58:
15184
15654
  _l.sent();
15185
15655
  return [4 /*yield*/, uniqueness_tests()];
15186
- case 57:
15656
+ case 59:
15187
15657
  _l.sent();
15188
15658
  return [4 /*yield*/, enduser_orders_tests()];
15189
- case 58:
15659
+ case 60:
15190
15660
  _l.sent();
15191
15661
  return [4 /*yield*/, calendar_event_care_team_tests()];
15192
- case 59:
15662
+ case 61:
15193
15663
  _l.sent();
15194
15664
  return [4 /*yield*/, merge_enduser_tests()];
15195
- case 60:
15665
+ case 62:
15196
15666
  _l.sent();
15197
15667
  return [4 /*yield*/, input_modifier_tests()];
15198
- case 61:
15668
+ case 63:
15199
15669
  _l.sent();
15200
15670
  return [4 /*yield*/, switch_to_related_contacts_tests()];
15201
- case 62:
15671
+ case 64:
15202
15672
  _l.sent();
15203
15673
  return [4 /*yield*/, redaction_tests()];
15204
- case 63:
15674
+ case 65:
15205
15675
  _l.sent();
15206
15676
  return [4 /*yield*/, no_chained_triggers_tests()];
15207
- case 64:
15677
+ case 66:
15208
15678
  _l.sent();
15209
15679
  return [4 /*yield*/, mdb_filter_tests()];
15210
- case 65:
15680
+ case 67:
15211
15681
  _l.sent();
15212
15682
  return [4 /*yield*/, superadmin_tests()];
15213
- case 66:
15683
+ case 68:
15214
15684
  _l.sent();
15215
15685
  return [4 /*yield*/, ticket_queue_tests()];
15216
- case 67:
15686
+ case 69:
15217
15687
  _l.sent();
15218
15688
  return [4 /*yield*/, vital_trigger_tests()];
15219
- case 68:
15689
+ case 70:
15220
15690
  _l.sent();
15221
15691
  return [4 /*yield*/, close_reasons_no_duplicates_tests()];
15222
- case 69:
15692
+ case 71:
15223
15693
  _l.sent();
15224
15694
  return [4 /*yield*/, register_as_enduser_tests()];
15225
- case 70:
15695
+ case 72:
15226
15696
  _l.sent();
15227
15697
  return [4 /*yield*/, lockout_tests()];
15228
- case 71:
15698
+ case 73:
15229
15699
  _l.sent();
15230
15700
  return [4 /*yield*/, delete_user_tests()
15231
15701
  // await test_send_with_template()
15232
15702
  ];
15233
- case 72:
15703
+ case 74:
15234
15704
  _l.sent();
15235
15705
  // await test_send_with_template()
15236
15706
  return [4 /*yield*/, bulk_read_tests()];
15237
- case 73:
15707
+ case 75:
15238
15708
  // await test_send_with_template()
15239
15709
  _l.sent();
15240
15710
  return [4 /*yield*/, ticket_reminder_tests()];
15241
- case 74:
15711
+ case 76:
15242
15712
  _l.sent();
15243
15713
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
15244
- case 75:
15714
+ case 77:
15245
15715
  _l.sent();
15246
15716
  return [4 /*yield*/, unique_strings_tests()];
15247
- case 76:
15717
+ case 78:
15248
15718
  _l.sent();
15249
15719
  return [4 /*yield*/, alternate_phones_tests()];
15250
- case 77:
15720
+ case 79:
15251
15721
  _l.sent();
15252
15722
  return [4 /*yield*/, role_based_access_tests()];
15253
- case 78:
15723
+ case 80:
15254
15724
  _l.sent();
15255
15725
  return [4 /*yield*/, enduser_session_tests()];
15256
- case 79:
15726
+ case 81:
15257
15727
  _l.sent();
15258
15728
  return [4 /*yield*/, nextReminderInMS_tests()];
15259
- case 80:
15729
+ case 82:
15260
15730
  _l.sent();
15261
15731
  return [4 /*yield*/, search_tests()];
15262
- case 81:
15732
+ case 83:
15263
15733
  _l.sent();
15264
15734
  return [4 /*yield*/, wait_for_trigger_tests()];
15265
- case 82:
15735
+ case 84:
15266
15736
  _l.sent();
15267
15737
  return [4 /*yield*/, pdf_generation()];
15268
- case 83:
15738
+ case 85:
15269
15739
  _l.sent();
15270
15740
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests().catch(console.error)]; // timing is unreliable, uncomment if changing logic
15271
- case 84:
15741
+ case 86:
15272
15742
  _l.sent(); // timing is unreliable, uncomment if changing logic
15273
15743
  return [4 /*yield*/, sub_organization_enduser_tests()];
15274
- case 85:
15744
+ case 87:
15275
15745
  _l.sent();
15276
15746
  return [4 /*yield*/, sub_organization_tests()];
15277
- case 86:
15747
+ case 88:
15278
15748
  _l.sent();
15279
15749
  return [4 /*yield*/, filter_by_date_tests()];
15280
- case 87:
15750
+ case 89:
15281
15751
  _l.sent();
15282
15752
  return [4 /*yield*/, generate_user_auth_tests()];
15283
- case 88:
15753
+ case 90:
15284
15754
  _l.sent();
15285
15755
  return [4 /*yield*/, generateEnduserAuthTests()];
15286
- case 89:
15756
+ case 91:
15287
15757
  _l.sent();
15288
15758
  return [4 /*yield*/, public_form_tests()];
15289
- case 90:
15759
+ case 92:
15290
15760
  _l.sent();
15291
15761
  return [4 /*yield*/, badInputTests()];
15292
- case 91:
15762
+ case 93:
15293
15763
  _l.sent();
15294
15764
  return [4 /*yield*/, filterTests()];
15295
- case 92:
15765
+ case 94:
15296
15766
  _l.sent();
15297
15767
  return [4 /*yield*/, updatesTests()];
15298
- case 93:
15768
+ case 95:
15299
15769
  _l.sent();
15300
- return [3 /*break*/, 95];
15301
- case 94:
15770
+ return [3 /*break*/, 97];
15771
+ case 96:
15302
15772
  err_1 = _l.sent();
15303
15773
  console.error("Failed during custom test");
15304
15774
  if (err_1.message && err_1.info) {
@@ -15308,18 +15778,18 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
15308
15778
  console.error(err_1);
15309
15779
  }
15310
15780
  process.exit(1);
15311
- return [3 /*break*/, 95];
15312
- case 95:
15781
+ return [3 /*break*/, 97];
15782
+ case 97:
15313
15783
  _a = schema;
15314
15784
  _b = [];
15315
15785
  for (_c in _a)
15316
15786
  _b.push(_c);
15317
15787
  _i = 0;
15318
- _l.label = 96;
15319
- case 96:
15320
- if (!(_i < _b.length)) return [3 /*break*/, 99];
15788
+ _l.label = 98;
15789
+ case 98:
15790
+ if (!(_i < _b.length)) return [3 /*break*/, 101];
15321
15791
  _c = _b[_i];
15322
- if (!(_c in _a)) return [3 /*break*/, 98];
15792
+ if (!(_c in _a)) return [3 /*break*/, 100];
15323
15793
  n = _c;
15324
15794
  returnValidation = (_k = (_j = schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
15325
15795
  return [4 /*yield*/, run_generated_tests({
@@ -15330,41 +15800,41 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
15330
15800
  create: returnValidation // ModelFields<ClientModel>,
15331
15801
  }
15332
15802
  })];
15333
- case 97:
15803
+ case 99:
15334
15804
  _l.sent();
15335
- _l.label = 98;
15336
- case 98:
15805
+ _l.label = 100;
15806
+ case 100:
15337
15807
  _i++;
15338
- return [3 /*break*/, 96];
15339
- case 99:
15808
+ return [3 /*break*/, 98];
15809
+ case 101:
15340
15810
  _d = tests;
15341
15811
  _f = [];
15342
15812
  for (_g in _d)
15343
15813
  _f.push(_g);
15344
15814
  _h = 0;
15345
- _l.label = 100;
15346
- case 100:
15347
- if (!(_h < _f.length)) return [3 /*break*/, 105];
15815
+ _l.label = 102;
15816
+ case 102:
15817
+ if (!(_h < _f.length)) return [3 /*break*/, 107];
15348
15818
  _g = _f[_h];
15349
- if (!(_g in _d)) return [3 /*break*/, 104];
15819
+ if (!(_g in _d)) return [3 /*break*/, 106];
15350
15820
  t = _g;
15351
- _l.label = 101;
15352
- case 101:
15353
- _l.trys.push([101, 103, , 104]);
15821
+ _l.label = 103;
15822
+ case 103:
15823
+ _l.trys.push([103, 105, , 106]);
15354
15824
  return [4 /*yield*/, tests[t]()];
15355
- case 102:
15825
+ case 104:
15356
15826
  _l.sent();
15357
- return [3 /*break*/, 104];
15358
- case 103:
15827
+ return [3 /*break*/, 106];
15828
+ case 105:
15359
15829
  err_2 = _l.sent();
15360
15830
  console.error("Error running test:");
15361
15831
  console.error(err_2);
15362
15832
  process.exit(1);
15363
- return [3 /*break*/, 104];
15364
- case 104:
15833
+ return [3 /*break*/, 106];
15834
+ case 106:
15365
15835
  _h++;
15366
- return [3 /*break*/, 100];
15367
- case 105:
15836
+ return [3 /*break*/, 102];
15837
+ case 107:
15368
15838
  process.exit();
15369
15839
  return [2 /*return*/];
15370
15840
  }