@futdevpro/nts-dynamo 1.14.78 → 1.14.80

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 (31) hide show
  1. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.d.ts +4 -4
  2. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.d.ts.map +1 -1
  3. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.js +22 -22
  4. package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.js.map +1 -1
  5. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.d.ts +4 -4
  6. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.d.ts.map +1 -1
  7. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.js +19 -19
  8. package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.js.map +1 -1
  9. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.d.ts +4 -4
  10. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.d.ts.map +1 -1
  11. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.js +1 -1
  12. package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.js.map +1 -1
  13. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.d.ts +4 -4
  14. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.d.ts.map +1 -1
  15. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.js +1 -1
  16. package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.js.map +1 -1
  17. package/build/_modules/bot/_services/bot-main.control-service.js +2 -2
  18. package/build/_modules/bot/_services/bot-main.control-service.js.map +1 -1
  19. package/build/_modules/bot/_services/bot-messaging-provider.service-base.d.ts +4 -4
  20. package/build/_modules/bot/_services/bot-messaging-provider.service-base.d.ts.map +1 -1
  21. package/build/_services/base/data.service.d.ts.map +1 -1
  22. package/build/_services/base/data.service.js +10 -2
  23. package/build/_services/base/data.service.js.map +1 -1
  24. package/package.json +1 -1
  25. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.ts +30 -24
  26. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.ts +22 -22
  27. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.ts +6 -6
  28. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.ts +6 -6
  29. package/src/_modules/bot/_services/bot-main.control-service.ts +2 -2
  30. package/src/_modules/bot/_services/bot-messaging-provider.service-base.ts +5 -5
  31. package/src/_services/base/data.service.ts +15 -5
@@ -1,5 +1,5 @@
1
1
  import { Client, GatewayIntentBits, Guild, Collection, GuildMember, Message, Partials, Role, TextChannel, Channel, DMChannel } from 'discord.js';
2
- import { DyFM_AnyError, DyFM_Error, DyFM_Log, week } from '@futdevpro/fsm-dynamo';
2
+ import { DyFM_AnyError, DyFM_Array, DyFM_Error, DyFM_Log, week } from '@futdevpro/fsm-dynamo';
3
3
  import { DyNTS_Bot_MessagingProvider_ServiceBase, DyNTS_Bot_MessagingProvider_Config } from '../../../_services/bot-messaging-provider.service-base';
4
4
  import { DyNTS_Bot_LastMessageDate } from '../../../_models/bot-last-message-date.interface';
5
5
  import { DyNTS_Bot_LastMentionDate } from '../../../_models/bot-last-mention-date.interface';
@@ -115,7 +115,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
115
115
 
116
116
  async getChannelByName(name: string): Promise<DyNTS_DiB_Channel> {
117
117
  if (this.channelCache.has(name)) {
118
- return this.wrapChannel(this.channelCache.get(name));
118
+ return await this.wrapChannel(this.channelCache.get(name));
119
119
  }
120
120
 
121
121
  const channel = this.guild.channels.cache.find(
@@ -127,7 +127,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
127
127
  }
128
128
 
129
129
  this.channelCache.set(name, channel);
130
- return this.wrapChannel(channel);
130
+ return await this.wrapChannel(channel);
131
131
  }
132
132
 
133
133
  async getChannelById(id: string): Promise<DyNTS_DiB_Channel> {
@@ -139,7 +139,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
139
139
  if (!this.channelCache.has(channel.name)) {
140
140
  this.channelCache.set(channel.name, channel);
141
141
  }
142
- return this.wrapChannel(channel);
142
+ return await this.wrapChannel(channel);
143
143
  }
144
144
 
145
145
  async sendMessageToChannelByName(channelName: string, message: string): Promise<DyNTS_DiB_Message> {
@@ -190,7 +190,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
190
190
  limit: limit
191
191
  });
192
192
 
193
- return Array.from(messages.values()).map((msg: Message) => this.wrapMessage(msg));
193
+ return await Promise.all(Array.from(messages.values()).map(async (msg: Message) => await this.wrapMessage(msg)));
194
194
  }
195
195
 
196
196
  async getLastMessageInChannel(channelName: string): Promise<DyNTS_DiB_Message> {
@@ -205,7 +205,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
205
205
  });
206
206
  const lastMessage: Message = messages.first();
207
207
 
208
- return lastMessage ? this.wrapMessage(lastMessage) : null;
208
+ return lastMessage ? await this.wrapMessage(lastMessage) : null;
209
209
  }
210
210
 
211
211
  async clearChannel(channel: DyNTS_DiB_Channel): Promise<void> {
@@ -261,10 +261,10 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
261
261
  }
262
262
 
263
263
  firstMessage.content = originalContent;
264
- return this.wrapMessage(firstMessage);
264
+ return await this.wrapMessage(firstMessage);
265
265
  } else {
266
266
  const message: Message = await discordTextChannel.send(content);
267
- return this.wrapMessage(message);
267
+ return await this.wrapMessage(message);
268
268
  }
269
269
  }
270
270
 
@@ -295,10 +295,10 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
295
295
  }
296
296
 
297
297
  firstMessage.content = originalContent;
298
- return this.wrapMessage(firstMessage);
298
+ return await this.wrapMessage(firstMessage);
299
299
  } else {
300
300
  const reply: Message= await message.rawPlatformMessage.reply(content);
301
- return this.wrapMessage(reply);
301
+ return await this.wrapMessage(reply);
302
302
  }
303
303
  } catch (error) {
304
304
  DyFM_Error.logSimple('Error replying to message:', error);
@@ -334,7 +334,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
334
334
  const messages: Collection<string, Message> = await (channel.rawPlatformChannel as TextChannel).messages.fetch({
335
335
  limit: limit
336
336
  });
337
- return Array.from(messages.values()).map((msg: Message) => this.wrapMessage(msg));
337
+ return await Promise.all(Array.from(messages.values()).map(async (msg: Message) => await this.wrapMessage(msg)));
338
338
  }
339
339
 
340
340
  async fetchMessagesById(id: string, limit: number): Promise<DyNTS_DiB_Message[]> {
@@ -350,7 +350,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
350
350
  const messages: Collection<string, Message> = await message.rawPlatformMessage.channel.messages.fetch({
351
351
  limit: limit
352
352
  });
353
- return Array.from(messages.values()).map((msg: Message) => this.wrapMessage(msg));
353
+ return await Promise.all(Array.from(messages.values()).map(async (msg: Message) => await this.wrapMessage(msg)));
354
354
  }
355
355
 
356
356
  async fetchAllMessagesWithPaging(channel: DyNTS_DiB_Channel, maxFetch: number = 1000): Promise<DyNTS_DiB_Message[]> {
@@ -369,9 +369,12 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
369
369
  const messageCollection: Collection<string, Message> = await channel.rawPlatformChannel.messages.fetch(options);
370
370
  if (messageCollection.size === 0) break;
371
371
 
372
- Array.from(messageCollection.values()).forEach((msg: Message) => {
373
- allMessages.push(this.wrapMessage(msg));
374
- });
372
+ await DyFM_Array.asyncForEach(
373
+ Array.from(messageCollection.values()),
374
+ async (msg: Message) => {
375
+ allMessages.push(await this.wrapMessage(msg));
376
+ }
377
+ );
375
378
 
376
379
  lastId = Array.from(messageCollection.values()).pop()?.id;
377
380
  fetched += messageCollection.size;
@@ -392,7 +395,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
392
395
  throw new Error(`User not found with username: ${username}`);
393
396
  }
394
397
 
395
- return this.wrapUser(member);
398
+ return await this.wrapUser(member);
396
399
  }
397
400
 
398
401
  getUserMention(userId: string): string {
@@ -408,7 +411,10 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
408
411
  (channel.rawPlatformChannel as TextChannel).permissionsFor(member)?.has('ViewChannel')
409
412
  );
410
413
 
411
- return Array.from(allowedMembers.values()).map((member: GuildMember) => this.wrapUser(member));
414
+ return await DyFM_Array.asyncMap(
415
+ Array.from(allowedMembers.values()),
416
+ async (member: GuildMember) => await this.wrapUser(member)
417
+ );
412
418
  }
413
419
 
414
420
  async fetchMembersInGuild(guild: Guild): Promise<Collection<string, GuildMember>> {
@@ -545,9 +551,9 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
545
551
  return pings.join(' ');
546
552
  }
547
553
 
548
- create_onMessageEventListener(handler: (message: DyNTS_DiB_Message, issuer: string) => void): void {
549
- this.client.on('messageCreate', (message: Message) => {
550
- handler(this.wrapMessage(message), 'discord');
554
+ async create_onMessageEventListener(handler: (message: DyNTS_DiB_Message, issuer: string) => Promise<void>): Promise<void> {
555
+ this.client.on('messageCreate', async (message: Message) => {
556
+ await handler(await this.wrapMessage(message), 'discord');
551
557
  });
552
558
  }
553
559
 
@@ -569,7 +575,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
569
575
  );
570
576
  }
571
577
 
572
- wrapMessage(message: Message): DyNTS_DiB_Message {
578
+ async wrapMessage(message: Message): Promise<DyNTS_DiB_Message> {
573
579
  let replyTo: Message | null = null;
574
580
  if (message.reference?.messageId) {
575
581
  replyTo = message.channel.messages.cache.get(
@@ -597,14 +603,14 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
597
603
 
598
604
  issuer: message.author.id,
599
605
 
600
- channel: this.wrapChannel(message.channel),
606
+ channel: await this.wrapChannel(message.channel),
601
607
  /* user: this.wrapUser(message.author), */
602
608
 
603
609
  provider: this,
604
610
  });
605
611
  }
606
612
 
607
- wrapChannel(channel: Channel): DyNTS_DiB_Channel {
613
+ async wrapChannel(channel: Channel): Promise<DyNTS_DiB_Channel> {
608
614
  return new DyNTS_Bot_ChannelWrapper<Channel>({
609
615
  id: channel.id,
610
616
  name: (channel as TextChannel).name || ('DM Channel with ' + (channel as DMChannel).recipient.username),
@@ -617,7 +623,7 @@ export class DyNTS_DiB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
617
623
  });
618
624
  }
619
625
 
620
- wrapUser(user: GuildMember): DyNTS_DiB_User {
626
+ async wrapUser(user: GuildMember): Promise<DyNTS_DiB_User> {
621
627
  return new DyNTS_Bot_UserWrapper<GuildMember>({
622
628
  id: user.user.id,
623
629
  username: user.user.username,
@@ -1,4 +1,4 @@
1
- import { DyFM_AnyError, DyFM_Error, DyFM_Log, week } from '@futdevpro/fsm-dynamo';
1
+ import { DyFM_AnyError, DyFM_Array, DyFM_Error, DyFM_Log, week } from '@futdevpro/fsm-dynamo';
2
2
  import {
3
3
  DyFM_Msg_Provider_Type, DyFM_Msg_Conversation, DyFM_Msg_EventKey, DyFM_Msg_Message, DyFM_Msg_Participant
4
4
  } from '@futdevpro/fsm-dynamo/messaging';
@@ -95,7 +95,7 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
95
95
  // Channel operations
96
96
  async getChannelByName(name: string): Promise<DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>> {
97
97
  if (this.channelCache.has(name)) {
98
- return this.wrapChannel(this.channelCache.get(name));
98
+ return await this.wrapChannel(this.channelCache.get(name));
99
99
  }
100
100
 
101
101
  const conversationService: DyNTS_Msg_Conversation_DataService = new DyNTS_Msg_Conversation_DataService({
@@ -116,12 +116,12 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
116
116
  }
117
117
 
118
118
  this.channelCache.set(name, conversation);
119
- return this.wrapChannel(conversation);
119
+ return await this.wrapChannel(conversation);
120
120
  }
121
121
 
122
122
  async getChannelById(id: string): Promise<DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>> {
123
123
  if (this.channelCache.has(id)) {
124
- return this.wrapChannel(this.channelCache.get(id));
124
+ return await this.wrapChannel(this.channelCache.get(id));
125
125
  }
126
126
 
127
127
  const conversationService: DyNTS_Msg_Conversation_DataService = new DyNTS_Msg_Conversation_DataService({
@@ -138,13 +138,13 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
138
138
  }
139
139
 
140
140
  this.channelCache.set(id, conversation);
141
- return this.wrapChannel(conversation);
141
+ return await this.wrapChannel(conversation);
142
142
  }
143
143
 
144
144
  async sendMessageToChannel(channel: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>, message: string, issuer: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
145
145
  const msg: DyFM_Msg_Message = await this.messaging_CS.sendMessage(channel.id, { content: message }, this.botId, issuer);
146
146
 
147
- return this.wrapMessage(msg);
147
+ return await this.wrapMessage(msg);
148
148
  }
149
149
 
150
150
  async sendMessageToChannelByName(channelName: string, message: string, issuer: string): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
@@ -200,7 +200,7 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
200
200
  $limit: limit
201
201
  });
202
202
 
203
- return messages.map((msg: DyFM_Msg_Message) => this.wrapMessage(msg));
203
+ return await DyFM_Array.asyncMap(messages, async (msg: DyFM_Msg_Message) => await this.wrapMessage(msg));
204
204
  }
205
205
 
206
206
  async fetchMessagesById(id: string, limit: number): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
@@ -215,7 +215,7 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
215
215
  $limit: limit
216
216
  });
217
217
 
218
- return messages.map((msg: DyFM_Msg_Message) => this.wrapMessage(msg));
218
+ return await DyFM_Array.asyncMap(messages, async (msg: DyFM_Msg_Message) => await this.wrapMessage(msg));
219
219
  }
220
220
 
221
221
  async fetchMessagesForMessage(messageWrapper: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>, limit: number): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>[]> {
@@ -244,7 +244,7 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
244
244
  joinedAt: new Date()
245
245
  };
246
246
 
247
- return this.wrapUser(userData);
247
+ return await this.wrapUser(userData);
248
248
  }
249
249
 
250
250
  getUserMention(userId: string): string {
@@ -255,7 +255,7 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
255
255
  const channelWrapper: DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> = await this.getChannelByName(channelName);
256
256
  const participants: DyFM_Msg_Participant[] = channelWrapper.rawPlatformChannel.participants || [];
257
257
 
258
- return participants.map(participant => this.wrapUser(participant));
258
+ return await DyFM_Array.asyncMap(participants, async (participant: DyFM_Msg_Participant) => await this.wrapUser(participant));
259
259
  }
260
260
 
261
261
  async readMemberNamesInChannel(channelName: string): Promise<string[]> {
@@ -364,9 +364,9 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
364
364
  }
365
365
 
366
366
  // Event binding
367
- create_onMessageEventListener(
368
- handler: (message: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>, issuer: string) => void
369
- ): void {
367
+ async create_onMessageEventListener(
368
+ handler: (message: DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>, issuer: string) => Promise<void>
369
+ ): Promise<void> {
370
370
  // TODO: Implement message event listener for messaging system
371
371
  DyFM_Log.info('Message event listener created (messaging integration)');
372
372
  }
@@ -389,7 +389,7 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
389
389
  );
390
390
  }
391
391
 
392
- wrapMessage(msgMessage: DyFM_Msg_Message): DyNTS_Bot_MessageWrapper<DyFM_Msg_Message> {
392
+ async wrapMessage(msgMessage: DyFM_Msg_Message): Promise<DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>> {
393
393
  return new DyNTS_Bot_MessageWrapper<DyFM_Msg_Message>({
394
394
  id: msgMessage._id,
395
395
  content: msgMessage.content,
@@ -418,10 +418,10 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
418
418
  });
419
419
  }
420
420
 
421
- wrapChannel(conversation: any): DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation> {
421
+ async wrapChannel(conversation: DyFM_Msg_Conversation): Promise<DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>> {
422
422
  return new DyNTS_Bot_ChannelWrapper<DyFM_Msg_Conversation>({
423
- id: conversation._id || conversation.id,
424
- name: conversation.name || conversation.platformChannelId || 'unknown',
423
+ id: conversation._id,
424
+ name: conversation.title || conversation.platformChannelId || 'unknown',
425
425
  isTextBased: true,
426
426
  isDM: conversation.type === 'direct',
427
427
  isVoiceBased: false,
@@ -430,12 +430,12 @@ export class DyNTS_DyB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
430
430
  });
431
431
  }
432
432
 
433
- wrapUser(user: any): DyNTS_Bot_UserWrapper<DyFM_Msg_Participant> {
433
+ async wrapUser(user: DyFM_Msg_Participant): Promise<DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>> {
434
434
  return new DyNTS_Bot_UserWrapper<DyFM_Msg_Participant>({
435
- id: user.userId || user.id,
436
- username: user.username || user.userId || user.id,
437
- displayName: user.displayName || user.username || user.userId,
438
- isBot: user.isBot || false,
435
+ id: user.userId,
436
+ username: user.username,
437
+ displayName: user.displayName,
438
+ isBot: false,
439
439
  rawPlatformUser: user,
440
440
  provider: this
441
441
  });
@@ -161,9 +161,9 @@ export class DyNTS_SlB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
161
161
  }
162
162
 
163
163
  // Event binding
164
- create_onMessageEventListener(
165
- handler: (message: DyNTS_Bot_MessageWrapper<SlackMessage>, issuer: string) => void
166
- ): void {
164
+ async create_onMessageEventListener(
165
+ handler: (message: DyNTS_Bot_MessageWrapper<SlackMessage>, issuer: string) => Promise<void>
166
+ ): Promise<void> {
167
167
  throw new Error('Slack provider not yet implemented');
168
168
  }
169
169
 
@@ -179,15 +179,15 @@ export class DyNTS_SlB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
179
179
  throw new Error('Slack provider not yet implemented');
180
180
  }
181
181
 
182
- wrapMessage(message: SlackMessage): DyNTS_Bot_MessageWrapper<SlackMessage> {
182
+ wrapMessage(message: SlackMessage): Promise<DyNTS_Bot_MessageWrapper<SlackMessage>> {
183
183
  throw new Error('Slack provider not yet implemented');
184
184
  }
185
185
 
186
- wrapChannel(channel: SlackChannel): DyNTS_Bot_ChannelWrapper<SlackChannel> {
186
+ wrapChannel(channel: SlackChannel): Promise<DyNTS_Bot_ChannelWrapper<SlackChannel>> {
187
187
  throw new Error('Slack provider not yet implemented');
188
188
  }
189
189
 
190
- wrapUser(user: SlackUser): DyNTS_Bot_UserWrapper<SlackUser> {
190
+ wrapUser(user: SlackUser): Promise<DyNTS_Bot_UserWrapper<SlackUser>> {
191
191
  throw new Error('Slack provider not yet implemented');
192
192
  }
193
193
  }
@@ -161,9 +161,9 @@ export class DyNTS_TeB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
161
161
  }
162
162
 
163
163
  // Event binding
164
- create_onMessageEventListener(
165
- handler: (message: DyNTS_Bot_MessageWrapper<TeamsMessage>, issuer: string) => void
166
- ): void {
164
+ async create_onMessageEventListener(
165
+ handler: (message: DyNTS_Bot_MessageWrapper<TeamsMessage>, issuer: string) => Promise<void>
166
+ ): Promise<void> {
167
167
  throw new Error('Teams provider not yet implemented');
168
168
  }
169
169
 
@@ -179,15 +179,15 @@ export class DyNTS_TeB_MessagingProvider_ControlService extends DyNTS_Bot_Messag
179
179
  throw new Error('Teams provider not yet implemented');
180
180
  }
181
181
 
182
- wrapMessage(message: TeamsMessage): DyNTS_Bot_MessageWrapper<TeamsMessage> {
182
+ wrapMessage(message: TeamsMessage): Promise<DyNTS_Bot_MessageWrapper<TeamsMessage>> {
183
183
  throw new Error('Teams provider not yet implemented');
184
184
  }
185
185
 
186
- wrapChannel(channel: TeamsChannel): DyNTS_Bot_ChannelWrapper<TeamsChannel> {
186
+ wrapChannel(channel: TeamsChannel): Promise<DyNTS_Bot_ChannelWrapper<TeamsChannel>> {
187
187
  throw new Error('Teams provider not yet implemented');
188
188
  }
189
189
 
190
- wrapUser(user: TeamsUser): DyNTS_Bot_UserWrapper<TeamsUser> {
190
+ wrapUser(user: TeamsUser): Promise<DyNTS_Bot_UserWrapper<TeamsUser>> {
191
191
  throw new Error('Teams provider not yet implemented');
192
192
  }
193
193
  }
@@ -202,9 +202,9 @@ export abstract class DyNTS_Bot_Main_ControlService<
202
202
  DyFM_Log.success(`${provider.name} Error event registered`);
203
203
  }
204
204
 
205
- provider.create_onMessageEventListener((message: DyNTS_Bot_MessageWrapper<any>, messageIssuer: string) => {
205
+ provider.create_onMessageEventListener(async (message: DyNTS_Bot_MessageWrapper<any>, messageIssuer: string) => {
206
206
  try {
207
- this.botIO_CS._handleNewMessage(message, messageIssuer)
207
+ await this.botIO_CS._handleNewMessage(message, messageIssuer)
208
208
  } catch (error) {
209
209
  DyFM_Error.logSimple(`${provider.name} error handling new message:`, error);
210
210
  DyNTS_GlobalService.globalErrorHandler(error);
@@ -133,17 +133,17 @@ export abstract class DyNTS_Bot_MessagingProvider_ServiceBase<
133
133
  // /* handler: (message: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string, providerId?: string) => void */
134
134
  //): Promise<DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>>; /* void; */
135
135
  abstract create_onMessageEventListener(
136
- handler: (message: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string) => void
137
- ): void;
136
+ handler: (message: DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>, issuer: string) => Promise<void>
137
+ ): Promise<void>;
138
138
  //abstract create_onReadyEventListener(handler: () => void): void;
139
139
  abstract create_onErrorEventListener(handler: (error: DyFM_AnyError) => void): void;
140
140
 
141
141
  abstract sendReport(message: string): Promise<DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>>;
142
142
  abstract sendReportIn(message: string): Promise<DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>>;
143
143
 
144
- abstract wrapMessage(message: T_MessagingPlatformMessage): DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>;
145
- abstract wrapChannel(channel: T_MessagingPlatformChannel): DyNTS_Bot_ChannelWrapper<T_MessagingPlatformChannel>;
146
- abstract wrapUser(user: T_MessagingPlatformUser): DyNTS_Bot_UserWrapper<T_MessagingPlatformUser>;
144
+ abstract wrapMessage(message: T_MessagingPlatformMessage): Promise<DyNTS_Bot_MessageWrapper<T_MessagingPlatformMessage>>;
145
+ abstract wrapChannel(channel: T_MessagingPlatformChannel): Promise<DyNTS_Bot_ChannelWrapper<T_MessagingPlatformChannel>>;
146
+ abstract wrapUser(user: T_MessagingPlatformUser): Promise<DyNTS_Bot_UserWrapper<T_MessagingPlatformUser>>;
147
147
 
148
148
  /* abstract channelIsTextBased(channel: T_MessagingPlatformChannel): boolean;
149
149
  abstract channelIsVoiceBased(channel: T_MessagingPlatformChannel): boolean;
@@ -1989,9 +1989,15 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1989
1989
  (searchString: string): string => searchString.toLowerCase()
1990
1990
  );
1991
1991
 
1992
- return (dataProperty: string): boolean => lowerCaseSearchValueArray.some(
1993
- (searchString: string): boolean => dataProperty?.toLowerCase().includes(searchString)
1994
- );
1992
+ return (dataProperty: string): boolean => {
1993
+ // Convert to string if not already a string (handles numbers, etc.)
1994
+ const dataPropertyAsString: string =
1995
+ dataProperty != null ? String(dataProperty) : '';
1996
+ return lowerCaseSearchValueArray.some(
1997
+ (searchString: string): boolean =>
1998
+ dataPropertyAsString?.toLowerCase().includes(searchString)
1999
+ );
2000
+ };
1995
2001
  } else {
1996
2002
  const lowerCaseSearchValue: string = (searchValue as string)?.toLowerCase();
1997
2003
 
@@ -1999,8 +2005,12 @@ export class DyNTS_DataService<T extends DyFM_Metadata> {
1999
2005
  return (dataProperty: string): boolean => !dataProperty;
2000
2006
  }
2001
2007
 
2002
- return (dataProperty: string): boolean =>
2003
- dataProperty?.toLowerCase().includes(lowerCaseSearchValue);
2008
+ return (dataProperty: string): boolean => {
2009
+ // Convert to string if not already a string (handles numbers, etc.)
2010
+ const dataPropertyAsString: string =
2011
+ dataProperty != null ? String(dataProperty) : '';
2012
+ return dataPropertyAsString?.toLowerCase().includes(lowerCaseSearchValue);
2013
+ };
2004
2014
  }
2005
2015
 
2006
2016
  case DyFM_BasicProperty_Type.date: