@tellescope/sdk 1.236.2 → 1.237.1

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