@metatell/bot-core 0.0.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.
- package/dist/CoreServiceFactory.d.ts +25 -0
- package/dist/CoreServiceFactory.d.ts.map +1 -0
- package/dist/CoreServiceFactory.js +102 -0
- package/dist/CoreServiceFactory.js.map +1 -0
- package/dist/ServiceContainer.d.ts +87 -0
- package/dist/ServiceContainer.d.ts.map +1 -0
- package/dist/ServiceContainer.js +119 -0
- package/dist/ServiceContainer.js.map +1 -0
- package/dist/ServiceIdentifier.d.ts +28 -0
- package/dist/ServiceIdentifier.d.ts.map +1 -0
- package/dist/ServiceIdentifier.js +18 -0
- package/dist/ServiceIdentifier.js.map +1 -0
- package/dist/builders/NafMessageBuilder.d.ts +242 -0
- package/dist/builders/NafMessageBuilder.d.ts.map +1 -0
- package/dist/builders/NafMessageBuilder.js +288 -0
- package/dist/builders/NafMessageBuilder.js.map +1 -0
- package/dist/errors/animation-errors.d.ts +41 -0
- package/dist/errors/animation-errors.d.ts.map +1 -0
- package/dist/errors/animation-errors.js +60 -0
- package/dist/errors/animation-errors.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IAnimationService.d.ts +42 -0
- package/dist/interfaces/IAnimationService.d.ts.map +1 -0
- package/dist/interfaces/IAnimationService.js +5 -0
- package/dist/interfaces/IAnimationService.js.map +1 -0
- package/dist/interfaces/IAppSettings.d.ts +11 -0
- package/dist/interfaces/IAppSettings.d.ts.map +1 -0
- package/dist/interfaces/IAppSettings.js +5 -0
- package/dist/interfaces/IAppSettings.js.map +1 -0
- package/dist/interfaces/IAuthenticationService.d.ts +20 -0
- package/dist/interfaces/IAuthenticationService.d.ts.map +1 -0
- package/dist/interfaces/IAuthenticationService.js +5 -0
- package/dist/interfaces/IAuthenticationService.js.map +1 -0
- package/dist/interfaces/IAvatarController.d.ts +54 -0
- package/dist/interfaces/IAvatarController.d.ts.map +1 -0
- package/dist/interfaces/IAvatarController.js +5 -0
- package/dist/interfaces/IAvatarController.js.map +1 -0
- package/dist/interfaces/IConfigurationProvider.d.ts +39 -0
- package/dist/interfaces/IConfigurationProvider.d.ts.map +1 -0
- package/dist/interfaces/IConfigurationProvider.js +5 -0
- package/dist/interfaces/IConfigurationProvider.js.map +1 -0
- package/dist/interfaces/IConnectionManager.d.ts +23 -0
- package/dist/interfaces/IConnectionManager.d.ts.map +1 -0
- package/dist/interfaces/IConnectionManager.js +5 -0
- package/dist/interfaces/IConnectionManager.js.map +1 -0
- package/dist/interfaces/IEventBus.d.ts +28 -0
- package/dist/interfaces/IEventBus.d.ts.map +1 -0
- package/dist/interfaces/IEventBus.js +31 -0
- package/dist/interfaces/IEventBus.js.map +1 -0
- package/dist/interfaces/IMessageService.d.ts +25 -0
- package/dist/interfaces/IMessageService.d.ts.map +1 -0
- package/dist/interfaces/IMessageService.js +5 -0
- package/dist/interfaces/IMessageService.js.map +1 -0
- package/dist/interfaces/IOrganizationService.d.ts +58 -0
- package/dist/interfaces/IOrganizationService.d.ts.map +1 -0
- package/dist/interfaces/IOrganizationService.js +5 -0
- package/dist/interfaces/IOrganizationService.js.map +1 -0
- package/dist/interfaces/IPresenceManager.d.ts +20 -0
- package/dist/interfaces/IPresenceManager.d.ts.map +1 -0
- package/dist/interfaces/IPresenceManager.js +5 -0
- package/dist/interfaces/IPresenceManager.js.map +1 -0
- package/dist/interfaces/IUserAvatarManager.d.ts +88 -0
- package/dist/interfaces/IUserAvatarManager.d.ts.map +1 -0
- package/dist/interfaces/IUserAvatarManager.js +5 -0
- package/dist/interfaces/IUserAvatarManager.js.map +1 -0
- package/dist/interfaces/IWebSocketConnectionManager.d.ts +14 -0
- package/dist/interfaces/IWebSocketConnectionManager.d.ts.map +1 -0
- package/dist/interfaces/IWebSocketConnectionManager.js +2 -0
- package/dist/interfaces/IWebSocketConnectionManager.js.map +1 -0
- package/dist/logging/LogEventEmitter.d.ts +38 -0
- package/dist/logging/LogEventEmitter.d.ts.map +1 -0
- package/dist/logging/LogEventEmitter.js +54 -0
- package/dist/logging/LogEventEmitter.js.map +1 -0
- package/dist/logging/index.d.ts +22 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +10 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/providers/default.d.ts +22 -0
- package/dist/logging/providers/default.d.ts.map +1 -0
- package/dist/logging/providers/default.js +175 -0
- package/dist/logging/providers/default.js.map +1 -0
- package/dist/logging/spi.d.ts +35 -0
- package/dist/logging/spi.d.ts.map +1 -0
- package/dist/logging/spi.js +25 -0
- package/dist/logging/spi.js.map +1 -0
- package/dist/services/AnimationService.d.ts +38 -0
- package/dist/services/AnimationService.d.ts.map +1 -0
- package/dist/services/AnimationService.js +157 -0
- package/dist/services/AnimationService.js.map +1 -0
- package/dist/services/AppSettings.d.ts +14 -0
- package/dist/services/AppSettings.d.ts.map +1 -0
- package/dist/services/AppSettings.js +48 -0
- package/dist/services/AppSettings.js.map +1 -0
- package/dist/services/AuthenticationService.d.ts +13 -0
- package/dist/services/AuthenticationService.d.ts.map +1 -0
- package/dist/services/AuthenticationService.js +44 -0
- package/dist/services/AuthenticationService.js.map +1 -0
- package/dist/services/AvatarController.d.ts +50 -0
- package/dist/services/AvatarController.d.ts.map +1 -0
- package/dist/services/AvatarController.js +409 -0
- package/dist/services/AvatarController.js.map +1 -0
- package/dist/services/ChannelService.d.ts +19 -0
- package/dist/services/ChannelService.d.ts.map +1 -0
- package/dist/services/ChannelService.js +113 -0
- package/dist/services/ChannelService.js.map +1 -0
- package/dist/services/ConfigurationProvider.d.ts +13 -0
- package/dist/services/ConfigurationProvider.d.ts.map +1 -0
- package/dist/services/ConfigurationProvider.js +49 -0
- package/dist/services/ConfigurationProvider.js.map +1 -0
- package/dist/services/EventBus.d.ts +11 -0
- package/dist/services/EventBus.d.ts.map +1 -0
- package/dist/services/EventBus.js +54 -0
- package/dist/services/EventBus.js.map +1 -0
- package/dist/services/IChannelService.d.ts +57 -0
- package/dist/services/IChannelService.d.ts.map +1 -0
- package/dist/services/IChannelService.js +6 -0
- package/dist/services/IChannelService.js.map +1 -0
- package/dist/services/MessageService.d.ts +23 -0
- package/dist/services/MessageService.d.ts.map +1 -0
- package/dist/services/MessageService.js +141 -0
- package/dist/services/MessageService.js.map +1 -0
- package/dist/services/OrganizationService.d.ts +11 -0
- package/dist/services/OrganizationService.d.ts.map +1 -0
- package/dist/services/OrganizationService.js +121 -0
- package/dist/services/OrganizationService.js.map +1 -0
- package/dist/services/PresenceManager.d.ts +21 -0
- package/dist/services/PresenceManager.d.ts.map +1 -0
- package/dist/services/PresenceManager.js +143 -0
- package/dist/services/PresenceManager.js.map +1 -0
- package/dist/services/UserAvatarManager.d.ts +61 -0
- package/dist/services/UserAvatarManager.d.ts.map +1 -0
- package/dist/services/UserAvatarManager.js +466 -0
- package/dist/services/UserAvatarManager.js.map +1 -0
- package/dist/services/WebSocketConnectionManager.d.ts +26 -0
- package/dist/services/WebSocketConnectionManager.d.ts.map +1 -0
- package/dist/services/WebSocketConnectionManager.js +223 -0
- package/dist/services/WebSocketConnectionManager.js.map +1 -0
- package/dist/services/resolvers/CompositeUserIdResolver.d.ts +20 -0
- package/dist/services/resolvers/CompositeUserIdResolver.d.ts.map +1 -0
- package/dist/services/resolvers/CompositeUserIdResolver.js +46 -0
- package/dist/services/resolvers/CompositeUserIdResolver.js.map +1 -0
- package/dist/services/resolvers/CreatorMatchResolver.d.ts +15 -0
- package/dist/services/resolvers/CreatorMatchResolver.d.ts.map +1 -0
- package/dist/services/resolvers/CreatorMatchResolver.js +31 -0
- package/dist/services/resolvers/CreatorMatchResolver.js.map +1 -0
- package/dist/services/resolvers/ExactMatchResolver.d.ts +15 -0
- package/dist/services/resolvers/ExactMatchResolver.d.ts.map +1 -0
- package/dist/services/resolvers/ExactMatchResolver.js +28 -0
- package/dist/services/resolvers/ExactMatchResolver.js.map +1 -0
- package/dist/services/resolvers/IUserIdResolver.d.ts +53 -0
- package/dist/services/resolvers/IUserIdResolver.d.ts.map +1 -0
- package/dist/services/resolvers/IUserIdResolver.js +6 -0
- package/dist/services/resolvers/IUserIdResolver.js.map +1 -0
- package/dist/services/resolvers/OwnerMatchResolver.d.ts +15 -0
- package/dist/services/resolvers/OwnerMatchResolver.d.ts.map +1 -0
- package/dist/services/resolvers/OwnerMatchResolver.js +31 -0
- package/dist/services/resolvers/OwnerMatchResolver.js.map +1 -0
- package/dist/services/resolvers/PrefixMatchResolver.d.ts +17 -0
- package/dist/services/resolvers/PrefixMatchResolver.d.ts.map +1 -0
- package/dist/services/resolvers/PrefixMatchResolver.js +36 -0
- package/dist/services/resolvers/PrefixMatchResolver.js.map +1 -0
- package/dist/services/resolvers/index.d.ts +10 -0
- package/dist/services/resolvers/index.d.ts.map +1 -0
- package/dist/services/resolvers/index.js +9 -0
- package/dist/services/resolvers/index.js.map +1 -0
- package/dist/types/animation.d.ts +92 -0
- package/dist/types/animation.d.ts.map +1 -0
- package/dist/types/animation.js +31 -0
- package/dist/types/animation.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/naf.d.ts +229 -0
- package/dist/types/naf.d.ts.map +1 -0
- package/dist/types/naf.js +93 -0
- package/dist/types/naf.js.map +1 -0
- package/dist/utils/nafParser.d.ts +64 -0
- package/dist/utils/nafParser.d.ts.map +1 -0
- package/dist/utils/nafParser.js +99 -0
- package/dist/utils/nafParser.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
// WebSocket polyfill for Node.js environment
|
|
2
|
+
import WebSocketImpl from 'ws';
|
|
3
|
+
// Set WebSocket globally in Node.js environment if not already defined
|
|
4
|
+
// Phoenix.js expects the browser's WebSocket API to be available globally
|
|
5
|
+
if (typeof global !== 'undefined') {
|
|
6
|
+
const g = global;
|
|
7
|
+
if (!g.WebSocket) {
|
|
8
|
+
// biome-ignore lint/suspicious/noExplicitAny: ws library provides a compatible WebSocket implementation for Node.js
|
|
9
|
+
g.WebSocket = WebSocketImpl;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
import { Socket } from 'phoenix';
|
|
13
|
+
import { SystemEvents } from '../interfaces/IEventBus.js';
|
|
14
|
+
import { getLogger } from '../logging/index.js';
|
|
15
|
+
export class WebSocketConnectionManager {
|
|
16
|
+
eventBus;
|
|
17
|
+
configProvider;
|
|
18
|
+
appSettings;
|
|
19
|
+
socket = null;
|
|
20
|
+
hubChannel = null;
|
|
21
|
+
sessionId = null;
|
|
22
|
+
logger = getLogger('WebSocketConnectionManager');
|
|
23
|
+
constructor(eventBus, configProvider, appSettings) {
|
|
24
|
+
this.eventBus = eventBus;
|
|
25
|
+
this.configProvider = configProvider;
|
|
26
|
+
this.appSettings = appSettings;
|
|
27
|
+
if (this.appSettings.debugMode) {
|
|
28
|
+
this.logger.debug('Debug mode is ON');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async connect(config) {
|
|
32
|
+
try {
|
|
33
|
+
// Create Phoenix socket (no authentication here, just connect)
|
|
34
|
+
const socketUrl = new URL(config.serverUrl);
|
|
35
|
+
socketUrl.pathname = '/socket';
|
|
36
|
+
// プロトコルがhttpまたはhttpsの場合のみ変換
|
|
37
|
+
if (socketUrl.protocol === 'http:') {
|
|
38
|
+
socketUrl.protocol = 'ws:';
|
|
39
|
+
}
|
|
40
|
+
else if (socketUrl.protocol === 'https:') {
|
|
41
|
+
socketUrl.protocol = 'wss:';
|
|
42
|
+
}
|
|
43
|
+
// すでにws:またはwss:の場合はそのまま使用
|
|
44
|
+
this.socket = new Socket(socketUrl.toString(), {
|
|
45
|
+
params: {
|
|
46
|
+
session_token: null,
|
|
47
|
+
perms_token: null,
|
|
48
|
+
},
|
|
49
|
+
reconnectAfterMs: (tries) => {
|
|
50
|
+
const delay = [1000, 2000, 5000, 10000][tries - 1] || 10000;
|
|
51
|
+
this.logger.debug(`Reconnecting in ${delay}ms... (attempt ${tries})`);
|
|
52
|
+
return delay;
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
// Set up socket event handlers
|
|
56
|
+
this.socket.onOpen(() => {
|
|
57
|
+
this.logger.debug('WebSocket connected');
|
|
58
|
+
this.eventBus.emit(SystemEvents.CONNECTION_ESTABLISHED);
|
|
59
|
+
});
|
|
60
|
+
this.socket.onClose(() => {
|
|
61
|
+
this.logger.debug('WebSocket disconnected');
|
|
62
|
+
this.eventBus.emit(SystemEvents.CONNECTION_LOST);
|
|
63
|
+
});
|
|
64
|
+
this.socket.onError((error) => {
|
|
65
|
+
this.logger.debug('WebSocket error:', { error });
|
|
66
|
+
this.eventBus.emit(SystemEvents.CONNECTION_ERROR, error);
|
|
67
|
+
});
|
|
68
|
+
// Connect socket
|
|
69
|
+
this.socket.connect();
|
|
70
|
+
// Wait for connection
|
|
71
|
+
await this.waitForConnection();
|
|
72
|
+
// Join ret channel first (required by Metatell backend)
|
|
73
|
+
await this.joinRetChannel(config.hubId);
|
|
74
|
+
// Join hub channel
|
|
75
|
+
this.logger.debug('About to join hub:', { hubId: config.hubId });
|
|
76
|
+
await this.joinHub(config.hubId);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.logger.error(`Connection failed: ${error}`);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async joinRetChannel(hubId) {
|
|
84
|
+
if (!this.socket) {
|
|
85
|
+
throw new Error('Socket not connected');
|
|
86
|
+
}
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
const retChannel = this.socket?.channel('ret', { hub_id: hubId });
|
|
89
|
+
if (!retChannel) {
|
|
90
|
+
reject(new Error('Failed to create ret channel'));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
retChannel
|
|
94
|
+
.join()
|
|
95
|
+
.receive('ok', () => {
|
|
96
|
+
this.logger.debug('Successfully joined ret channel');
|
|
97
|
+
resolve();
|
|
98
|
+
})
|
|
99
|
+
.receive('error', (error) => {
|
|
100
|
+
this.logger.error('Failed to join ret channel:', error);
|
|
101
|
+
reject(new Error(`Failed to join ret channel: ${JSON.stringify(error)}`));
|
|
102
|
+
})
|
|
103
|
+
.receive('timeout', () => {
|
|
104
|
+
this.logger.error('Timeout joining ret channel');
|
|
105
|
+
reject(new Error('Timeout joining ret channel'));
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
async joinHub(hubId) {
|
|
110
|
+
if (!this.socket) {
|
|
111
|
+
throw new Error('Socket not connected');
|
|
112
|
+
}
|
|
113
|
+
return new Promise((resolve, reject) => {
|
|
114
|
+
// Get profile and context from configuration provider
|
|
115
|
+
const config = this.configProvider.getConfiguration();
|
|
116
|
+
// Build channel parameters
|
|
117
|
+
// Note: Don't send auth_token/perms_token if they're null
|
|
118
|
+
// The backend has issues handling null tokens
|
|
119
|
+
const channelParams = {
|
|
120
|
+
profile: config.profile,
|
|
121
|
+
context: config.context || {},
|
|
122
|
+
};
|
|
123
|
+
// Add bot_access_key if provided
|
|
124
|
+
if (config.botAccessKey) {
|
|
125
|
+
channelParams.bot_access_key = config.botAccessKey;
|
|
126
|
+
}
|
|
127
|
+
this.logger.debug('Attempting to join hub with:', {
|
|
128
|
+
channel: `hub:${hubId}`,
|
|
129
|
+
params: channelParams,
|
|
130
|
+
});
|
|
131
|
+
this.hubChannel = this.socket?.channel(`hub:${hubId}`, channelParams) || null;
|
|
132
|
+
if (this.hubChannel) {
|
|
133
|
+
// デバッグモードの場合、主要なイベントを監視
|
|
134
|
+
if (this.appSettings.debugMode) {
|
|
135
|
+
// PhoenixのChannelは特定のイベントに対してのみリスナーを設定可能
|
|
136
|
+
// 全てのイベントを監視するには、個別にリスナーを追加する必要がある
|
|
137
|
+
const debugEvents = [
|
|
138
|
+
'phx_reply',
|
|
139
|
+
'presence_state',
|
|
140
|
+
'presence_diff',
|
|
141
|
+
'message',
|
|
142
|
+
'naf',
|
|
143
|
+
'nafr',
|
|
144
|
+
'event',
|
|
145
|
+
'events:entering',
|
|
146
|
+
'events:entered',
|
|
147
|
+
'events:leaving',
|
|
148
|
+
'events:left',
|
|
149
|
+
'hub:member_update',
|
|
150
|
+
'hub:avatar_update',
|
|
151
|
+
'hub:scene_update',
|
|
152
|
+
];
|
|
153
|
+
debugEvents.forEach((event) => {
|
|
154
|
+
this.hubChannel?.on(event, (payload) => {
|
|
155
|
+
this.logger.debug('[WS_RECEIVE]', { event, payload });
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
this.hubChannel
|
|
160
|
+
.join()
|
|
161
|
+
.receive('ok', (response) => {
|
|
162
|
+
this.logger.debug('Joined hub channel:', { response });
|
|
163
|
+
// session_idまたはsessionIdを探す
|
|
164
|
+
const sessionResponse = response;
|
|
165
|
+
this.sessionId =
|
|
166
|
+
(sessionResponse.session_id ||
|
|
167
|
+
sessionResponse.sessionId ||
|
|
168
|
+
sessionResponse.id) || null;
|
|
169
|
+
this.eventBus.emit(SystemEvents.ROOM_JOINED, response);
|
|
170
|
+
resolve();
|
|
171
|
+
})
|
|
172
|
+
.receive('error', (error) => {
|
|
173
|
+
this.logger.error(`Failed to join hub: ${error}`);
|
|
174
|
+
reject(new Error(`Failed to join hub: ${JSON.stringify(error)}`));
|
|
175
|
+
})
|
|
176
|
+
.receive('timeout', () => {
|
|
177
|
+
this.logger.error('Hub join timeout');
|
|
178
|
+
reject(new Error('Hub join timeout'));
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
reject(new Error('Failed to create hub channel'));
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
async disconnect() {
|
|
187
|
+
if (this.hubChannel) {
|
|
188
|
+
this.hubChannel.leave();
|
|
189
|
+
this.hubChannel = null;
|
|
190
|
+
}
|
|
191
|
+
if (this.socket) {
|
|
192
|
+
this.socket.disconnect();
|
|
193
|
+
this.socket = null;
|
|
194
|
+
}
|
|
195
|
+
this.sessionId = null;
|
|
196
|
+
this.eventBus.emit(SystemEvents.CONNECTION_LOST);
|
|
197
|
+
}
|
|
198
|
+
isConnected() {
|
|
199
|
+
return this.socket?.isConnected() ?? false;
|
|
200
|
+
}
|
|
201
|
+
getSocket() {
|
|
202
|
+
return this.socket;
|
|
203
|
+
}
|
|
204
|
+
getHubChannel() {
|
|
205
|
+
return this.hubChannel;
|
|
206
|
+
}
|
|
207
|
+
async waitForConnection(timeout = 30000) {
|
|
208
|
+
const startTime = Date.now();
|
|
209
|
+
while (!this.isConnected()) {
|
|
210
|
+
if (Date.now() - startTime > timeout) {
|
|
211
|
+
throw new Error('Connection timeout');
|
|
212
|
+
}
|
|
213
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
on(event, callback) {
|
|
217
|
+
this.hubChannel?.on(event, callback);
|
|
218
|
+
}
|
|
219
|
+
getSessionId() {
|
|
220
|
+
return this.sessionId;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=WebSocketConnectionManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketConnectionManager.js","sourceRoot":"","sources":["../../src/services/WebSocketConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite resolver that chains multiple resolvers
|
|
3
|
+
* Implements the Chain of Responsibility pattern
|
|
4
|
+
*/
|
|
5
|
+
import type { PresenceUser } from '../../interfaces/IPresenceManager.js';
|
|
6
|
+
import type { NAFComponent } from '../../types/index.js';
|
|
7
|
+
import type { ICompositeUserIdResolver, IdResolutionResult, IUserIdResolver } from './IUserIdResolver.js';
|
|
8
|
+
export declare class CompositeUserIdResolver implements ICompositeUserIdResolver {
|
|
9
|
+
private readonly resolvers;
|
|
10
|
+
private sortedResolvers;
|
|
11
|
+
constructor(resolvers?: IUserIdResolver[]);
|
|
12
|
+
addResolver(resolver: IUserIdResolver): void;
|
|
13
|
+
removeResolver(name: string): void;
|
|
14
|
+
getResolvers(): ReadonlyArray<IUserIdResolver>;
|
|
15
|
+
resolve(networkId: string, users: ReadonlyArray<PresenceUser>, nafData?: NAFComponent): IdResolutionResult;
|
|
16
|
+
getName(): string;
|
|
17
|
+
getPriority(): number;
|
|
18
|
+
private updateSortedResolvers;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=CompositeUserIdResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeUserIdResolver.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/CompositeUserIdResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EACV,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAE7B,qBAAa,uBAAwB,YAAW,wBAAwB;IACtE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,eAAe,CAAwB;gBAEnC,SAAS,GAAE,eAAe,EAAO;IAM7C,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAK5C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC,YAAY,IAAI,aAAa,CAAC,eAAe,CAAC;IAI9C,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAClC,OAAO,CAAC,EAAE,YAAY,GACrB,kBAAkB;IAerB,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,qBAAqB;CAK9B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composite resolver that chains multiple resolvers
|
|
3
|
+
* Implements the Chain of Responsibility pattern
|
|
4
|
+
*/
|
|
5
|
+
export class CompositeUserIdResolver {
|
|
6
|
+
resolvers = new Map();
|
|
7
|
+
sortedResolvers = [];
|
|
8
|
+
constructor(resolvers = []) {
|
|
9
|
+
for (const resolver of resolvers) {
|
|
10
|
+
this.addResolver(resolver);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
addResolver(resolver) {
|
|
14
|
+
this.resolvers.set(resolver.getName(), resolver);
|
|
15
|
+
this.updateSortedResolvers();
|
|
16
|
+
}
|
|
17
|
+
removeResolver(name) {
|
|
18
|
+
this.resolvers.delete(name);
|
|
19
|
+
this.updateSortedResolvers();
|
|
20
|
+
}
|
|
21
|
+
getResolvers() {
|
|
22
|
+
return [...this.sortedResolvers];
|
|
23
|
+
}
|
|
24
|
+
resolve(networkId, users, nafData) {
|
|
25
|
+
for (const resolver of this.sortedResolvers) {
|
|
26
|
+
const result = resolver.resolve(networkId, users, nafData);
|
|
27
|
+
// Return first successful resolution
|
|
28
|
+
if (result.userId && result.confidence !== 'none') {
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
confidence: 'none',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
getName() {
|
|
37
|
+
return 'composite';
|
|
38
|
+
}
|
|
39
|
+
getPriority() {
|
|
40
|
+
return 0; // Highest priority as the main resolver
|
|
41
|
+
}
|
|
42
|
+
updateSortedResolvers() {
|
|
43
|
+
this.sortedResolvers = Array.from(this.resolvers.values()).sort((a, b) => a.getPriority() - b.getPriority());
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=CompositeUserIdResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeUserIdResolver.js","sourceRoot":"","sources":["../../../src/services/resolvers/CompositeUserIdResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,OAAO,uBAAuB;IACjB,SAAS,GAAiC,IAAI,GAAG,EAAE,CAAA;IAC5D,eAAe,GAAsB,EAAE,CAAA;IAE/C,YAAY,YAA+B,EAAE;QAC3C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,QAAyB;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;QAChD,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAA;IAClC,CAAC;IAED,OAAO,CACL,SAAiB,EACjB,KAAkC,EAClC,OAAsB;QAEtB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YAE1D,qCAAqC;YACrC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;gBAClD,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM;SACnB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,WAAW;QACT,OAAO,CAAC,CAAA,CAAC,wCAAwC;IACnD,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC7D,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAC5C,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator match ID resolver
|
|
3
|
+
* Matches based on NAF component creator field
|
|
4
|
+
*/
|
|
5
|
+
import type { PresenceUser } from '../../interfaces/IPresenceManager.js';
|
|
6
|
+
import type { NAFComponent } from '../../types/index.js';
|
|
7
|
+
import type { IdResolutionResult, IUserIdResolver } from './IUserIdResolver.js';
|
|
8
|
+
export declare class CreatorMatchResolver implements IUserIdResolver {
|
|
9
|
+
private readonly name;
|
|
10
|
+
private readonly priority;
|
|
11
|
+
resolve(_networkId: string, users: ReadonlyArray<PresenceUser>, nafData?: NAFComponent): IdResolutionResult;
|
|
12
|
+
getName(): string;
|
|
13
|
+
getPriority(): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=CreatorMatchResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreatorMatchResolver.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/CreatorMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/E,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkB;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAI;IAE7B,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAClC,OAAO,CAAC,EAAE,YAAY,GACrB,kBAAkB;IAoBrB,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator match ID resolver
|
|
3
|
+
* Matches based on NAF component creator field
|
|
4
|
+
*/
|
|
5
|
+
export class CreatorMatchResolver {
|
|
6
|
+
name = 'creator-match';
|
|
7
|
+
priority = 2;
|
|
8
|
+
resolve(_networkId, users, nafData) {
|
|
9
|
+
if (!nafData?.creator) {
|
|
10
|
+
return { confidence: 'none' };
|
|
11
|
+
}
|
|
12
|
+
const user = users.find((u) => u.id === nafData.creator);
|
|
13
|
+
if (user) {
|
|
14
|
+
return {
|
|
15
|
+
userId: user.id,
|
|
16
|
+
strategy: this.name,
|
|
17
|
+
confidence: 'high',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
confidence: 'none',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
getName() {
|
|
25
|
+
return this.name;
|
|
26
|
+
}
|
|
27
|
+
getPriority() {
|
|
28
|
+
return this.priority;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=CreatorMatchResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreatorMatchResolver.js","sourceRoot":"","sources":["../../../src/services/resolvers/CreatorMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,OAAO,oBAAoB;IACd,IAAI,GAAG,eAAe,CAAA;IACtB,QAAQ,GAAG,CAAC,CAAA;IAE7B,OAAO,CACL,UAAkB,EAClB,KAAkC,EAClC,OAAsB;QAEtB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAExD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,MAAM;aACnB,CAAA;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM;SACnB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact match ID resolver
|
|
3
|
+
* Highest confidence resolution strategy
|
|
4
|
+
*/
|
|
5
|
+
import type { PresenceUser } from '../../interfaces/IPresenceManager.js';
|
|
6
|
+
import type { NAFComponent } from '../../types/index.js';
|
|
7
|
+
import type { IdResolutionResult, IUserIdResolver } from './IUserIdResolver.js';
|
|
8
|
+
export declare class ExactMatchResolver implements IUserIdResolver {
|
|
9
|
+
private readonly name;
|
|
10
|
+
private readonly priority;
|
|
11
|
+
resolve(networkId: string, users: ReadonlyArray<PresenceUser>, _nafData?: NAFComponent): IdResolutionResult;
|
|
12
|
+
getName(): string;
|
|
13
|
+
getPriority(): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ExactMatchResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExactMatchResolver.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/ExactMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/E,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAI;IAE7B,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAClC,QAAQ,CAAC,EAAE,YAAY,GACtB,kBAAkB;IAgBrB,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact match ID resolver
|
|
3
|
+
* Highest confidence resolution strategy
|
|
4
|
+
*/
|
|
5
|
+
export class ExactMatchResolver {
|
|
6
|
+
name = 'exact-match';
|
|
7
|
+
priority = 1;
|
|
8
|
+
resolve(networkId, users, _nafData) {
|
|
9
|
+
const user = users.find((u) => u.id === networkId);
|
|
10
|
+
if (user) {
|
|
11
|
+
return {
|
|
12
|
+
userId: user.id,
|
|
13
|
+
strategy: this.name,
|
|
14
|
+
confidence: 'exact',
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
confidence: 'none',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
getName() {
|
|
22
|
+
return this.name;
|
|
23
|
+
}
|
|
24
|
+
getPriority() {
|
|
25
|
+
return this.priority;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ExactMatchResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExactMatchResolver.js","sourceRoot":"","sources":["../../../src/services/resolvers/ExactMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,OAAO,kBAAkB;IACZ,IAAI,GAAG,aAAa,CAAA;IACpB,QAAQ,GAAG,CAAC,CAAA;IAE7B,OAAO,CACL,SAAiB,EACjB,KAAkC,EAClC,QAAuB;QAEvB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAA;QAElD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,OAAO;aACpB,CAAA;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM;SACnB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for user ID resolution strategies
|
|
3
|
+
* This separates the concern of ID resolution from avatar management
|
|
4
|
+
*/
|
|
5
|
+
import type { PresenceUser } from '../../interfaces/IPresenceManager.js';
|
|
6
|
+
import type { NAFComponent } from '../../types/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Result of ID resolution attempt
|
|
9
|
+
*/
|
|
10
|
+
export interface IdResolutionResult {
|
|
11
|
+
userId?: string;
|
|
12
|
+
strategy?: string;
|
|
13
|
+
confidence: 'exact' | 'high' | 'medium' | 'low' | 'none';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Interface for user ID resolvers
|
|
17
|
+
*/
|
|
18
|
+
export interface IUserIdResolver {
|
|
19
|
+
/**
|
|
20
|
+
* Resolve a network ID to a user ID
|
|
21
|
+
* @param networkId The network ID to resolve
|
|
22
|
+
* @param users Available users to match against
|
|
23
|
+
* @param nafData Optional NAF component data for additional context
|
|
24
|
+
* @returns Resolution result with confidence level
|
|
25
|
+
*/
|
|
26
|
+
resolve(networkId: string, users: ReadonlyArray<PresenceUser>, nafData?: NAFComponent): IdResolutionResult;
|
|
27
|
+
/**
|
|
28
|
+
* Get resolver name for debugging/metrics
|
|
29
|
+
*/
|
|
30
|
+
getName(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Get resolver priority (lower number = higher priority)
|
|
33
|
+
*/
|
|
34
|
+
getPriority(): number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Composite resolver that chains multiple resolvers
|
|
38
|
+
*/
|
|
39
|
+
export interface ICompositeUserIdResolver extends IUserIdResolver {
|
|
40
|
+
/**
|
|
41
|
+
* Add a resolver to the chain
|
|
42
|
+
*/
|
|
43
|
+
addResolver(resolver: IUserIdResolver): void;
|
|
44
|
+
/**
|
|
45
|
+
* Remove a resolver from the chain
|
|
46
|
+
*/
|
|
47
|
+
removeResolver(name: string): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get all registered resolvers
|
|
50
|
+
*/
|
|
51
|
+
getResolvers(): ReadonlyArray<IUserIdResolver>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=IUserIdResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IUserIdResolver.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/IUserIdResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAA;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;OAMG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAClC,OAAO,CAAC,EAAE,YAAY,GACrB,kBAAkB,CAAA;IAErB;;OAEG;IACH,OAAO,IAAI,MAAM,CAAA;IAEjB;;OAEG;IACH,WAAW,IAAI,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;IAE5C;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAElC;;OAEG;IACH,YAAY,IAAI,aAAa,CAAC,eAAe,CAAC,CAAA;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IUserIdResolver.js","sourceRoot":"","sources":["../../../src/services/resolvers/IUserIdResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner match ID resolver
|
|
3
|
+
* Matches based on NAF component owner field
|
|
4
|
+
*/
|
|
5
|
+
import type { PresenceUser } from '../../interfaces/IPresenceManager.js';
|
|
6
|
+
import type { NAFComponent } from '../../types/index.js';
|
|
7
|
+
import type { IdResolutionResult, IUserIdResolver } from './IUserIdResolver.js';
|
|
8
|
+
export declare class OwnerMatchResolver implements IUserIdResolver {
|
|
9
|
+
private readonly name;
|
|
10
|
+
private readonly priority;
|
|
11
|
+
resolve(_networkId: string, users: ReadonlyArray<PresenceUser>, nafData?: NAFComponent): IdResolutionResult;
|
|
12
|
+
getName(): string;
|
|
13
|
+
getPriority(): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=OwnerMatchResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnerMatchResolver.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/OwnerMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/E,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAI;IAE7B,OAAO,CACL,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAClC,OAAO,CAAC,EAAE,YAAY,GACrB,kBAAkB;IAoBrB,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner match ID resolver
|
|
3
|
+
* Matches based on NAF component owner field
|
|
4
|
+
*/
|
|
5
|
+
export class OwnerMatchResolver {
|
|
6
|
+
name = 'owner-match';
|
|
7
|
+
priority = 3;
|
|
8
|
+
resolve(_networkId, users, nafData) {
|
|
9
|
+
if (!nafData?.owner) {
|
|
10
|
+
return { confidence: 'none' };
|
|
11
|
+
}
|
|
12
|
+
const user = users.find((u) => u.id === nafData.owner);
|
|
13
|
+
if (user) {
|
|
14
|
+
return {
|
|
15
|
+
userId: user.id,
|
|
16
|
+
strategy: this.name,
|
|
17
|
+
confidence: 'high',
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
confidence: 'none',
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
getName() {
|
|
25
|
+
return this.name;
|
|
26
|
+
}
|
|
27
|
+
getPriority() {
|
|
28
|
+
return this.priority;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=OwnerMatchResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnerMatchResolver.js","sourceRoot":"","sources":["../../../src/services/resolvers/OwnerMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,OAAO,kBAAkB;IACZ,IAAI,GAAG,aAAa,CAAA;IACpB,QAAQ,GAAG,CAAC,CAAA;IAE7B,OAAO,CACL,UAAkB,EAClB,KAAkC,EAClC,OAAsB;QAEtB,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACpB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;QAC/B,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAA;QAEtD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,MAAM;aACnB,CAAA;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM;SACnB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prefix match ID resolver
|
|
3
|
+
* Matches based on ID prefix (UUID format assumption)
|
|
4
|
+
*/
|
|
5
|
+
import type { PresenceUser } from '../../interfaces/IPresenceManager.js';
|
|
6
|
+
import type { NAFComponent } from '../../types/index.js';
|
|
7
|
+
import type { IdResolutionResult, IUserIdResolver } from './IUserIdResolver.js';
|
|
8
|
+
export declare class PrefixMatchResolver implements IUserIdResolver {
|
|
9
|
+
private readonly name;
|
|
10
|
+
private readonly priority;
|
|
11
|
+
private readonly minLength;
|
|
12
|
+
constructor(minLength?: number);
|
|
13
|
+
resolve(networkId: string, users: ReadonlyArray<PresenceUser>, _nafData?: NAFComponent): IdResolutionResult;
|
|
14
|
+
getName(): string;
|
|
15
|
+
getPriority(): number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=PrefixMatchResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrefixMatchResolver.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/PrefixMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/E,qBAAa,mBAAoB,YAAW,eAAe;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAI;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEtB,SAAS,SAAK;IAI1B,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,EAClC,QAAQ,CAAC,EAAE,YAAY,GACtB,kBAAkB;IAuBrB,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;CAGtB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prefix match ID resolver
|
|
3
|
+
* Matches based on ID prefix (UUID format assumption)
|
|
4
|
+
*/
|
|
5
|
+
export class PrefixMatchResolver {
|
|
6
|
+
name = 'prefix-match';
|
|
7
|
+
priority = 4;
|
|
8
|
+
minLength;
|
|
9
|
+
constructor(minLength = 16) {
|
|
10
|
+
this.minLength = minLength;
|
|
11
|
+
}
|
|
12
|
+
resolve(networkId, users, _nafData) {
|
|
13
|
+
if (!networkId || networkId.length < this.minLength) {
|
|
14
|
+
return { confidence: 'none' };
|
|
15
|
+
}
|
|
16
|
+
const prefix = networkId.substring(0, this.minLength);
|
|
17
|
+
const user = users.find((u) => u.id && u.id.length >= this.minLength && u.id.substring(0, this.minLength) === prefix);
|
|
18
|
+
if (user) {
|
|
19
|
+
return {
|
|
20
|
+
userId: user.id,
|
|
21
|
+
strategy: this.name,
|
|
22
|
+
confidence: 'medium',
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
confidence: 'none',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
getName() {
|
|
30
|
+
return this.name;
|
|
31
|
+
}
|
|
32
|
+
getPriority() {
|
|
33
|
+
return this.priority;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=PrefixMatchResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrefixMatchResolver.js","sourceRoot":"","sources":["../../../src/services/resolvers/PrefixMatchResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,OAAO,mBAAmB;IACb,IAAI,GAAG,cAAc,CAAA;IACrB,QAAQ,GAAG,CAAC,CAAA;IACZ,SAAS,CAAQ;IAElC,YAAY,SAAS,GAAG,EAAE;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,OAAO,CACL,SAAiB,EACjB,KAAkC,EAClC,QAAuB;QAEvB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACpD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;QAC/B,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,CAC7F,CAAA;QAED,IAAI,IAAI,EAAE,CAAC;YACT,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,QAAQ;aACrB,CAAA;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE,MAAM;SACnB,CAAA;IACH,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User ID resolver exports
|
|
3
|
+
*/
|
|
4
|
+
export { CompositeUserIdResolver } from './CompositeUserIdResolver.js';
|
|
5
|
+
export { CreatorMatchResolver } from './CreatorMatchResolver.js';
|
|
6
|
+
export { ExactMatchResolver } from './ExactMatchResolver.js';
|
|
7
|
+
export type { ICompositeUserIdResolver, IdResolutionResult, IUserIdResolver, } from './IUserIdResolver.js';
|
|
8
|
+
export { OwnerMatchResolver } from './OwnerMatchResolver.js';
|
|
9
|
+
export { PrefixMatchResolver } from './PrefixMatchResolver.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/resolvers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,GAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User ID resolver exports
|
|
3
|
+
*/
|
|
4
|
+
export { CompositeUserIdResolver } from './CompositeUserIdResolver.js';
|
|
5
|
+
export { CreatorMatchResolver } from './CreatorMatchResolver.js';
|
|
6
|
+
export { ExactMatchResolver } from './ExactMatchResolver.js';
|
|
7
|
+
export { OwnerMatchResolver } from './OwnerMatchResolver.js';
|
|
8
|
+
export { PrefixMatchResolver } from './PrefixMatchResolver.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/resolvers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAM5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA"}
|