@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 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/logging/providers/default.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4J1E;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;;IAQ1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKlC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIlC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIrC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIjC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;CAGpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,GAAG,IAAI,CAErD"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default LoggerProvider implementation
|
|
3
|
+
*/
|
|
4
|
+
import { getLogEventEmitter } from '../LogEventEmitter.js';
|
|
5
|
+
/**
|
|
6
|
+
* Simple ring buffer implementation
|
|
7
|
+
*/
|
|
8
|
+
class RingBuffer {
|
|
9
|
+
capacity;
|
|
10
|
+
buffer = [];
|
|
11
|
+
writeIndex = 0;
|
|
12
|
+
wrapped = false;
|
|
13
|
+
readIndex = 0;
|
|
14
|
+
constructor(capacity = 1000) {
|
|
15
|
+
this.capacity = capacity;
|
|
16
|
+
}
|
|
17
|
+
write(record) {
|
|
18
|
+
this.buffer[this.writeIndex] = record;
|
|
19
|
+
this.writeIndex = (this.writeIndex + 1) % this.capacity;
|
|
20
|
+
if (this.writeIndex === 0) {
|
|
21
|
+
this.wrapped = true;
|
|
22
|
+
}
|
|
23
|
+
// Emit event for new log
|
|
24
|
+
const eventEmitter = getLogEventEmitter();
|
|
25
|
+
eventEmitter.emitNewLogs([record]);
|
|
26
|
+
}
|
|
27
|
+
drain() {
|
|
28
|
+
if (!this.wrapped && this.writeIndex === 0) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const result = this.wrapped
|
|
32
|
+
? [...this.buffer.slice(this.writeIndex), ...this.buffer.slice(0, this.writeIndex)]
|
|
33
|
+
: this.buffer.slice(0, this.writeIndex);
|
|
34
|
+
this.clear();
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
drainNew() {
|
|
38
|
+
const newRecords = [];
|
|
39
|
+
while (this.readIndex !== this.writeIndex ||
|
|
40
|
+
(this.wrapped && this.readIndex === this.writeIndex)) {
|
|
41
|
+
newRecords.push(this.buffer[this.readIndex]);
|
|
42
|
+
this.readIndex = (this.readIndex + 1) % this.capacity;
|
|
43
|
+
if (this.readIndex === 0) {
|
|
44
|
+
this.wrapped = false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return newRecords;
|
|
48
|
+
}
|
|
49
|
+
clear() {
|
|
50
|
+
this.buffer = [];
|
|
51
|
+
this.writeIndex = 0;
|
|
52
|
+
this.wrapped = false;
|
|
53
|
+
this.readIndex = 0;
|
|
54
|
+
}
|
|
55
|
+
size() {
|
|
56
|
+
if (!this.wrapped) {
|
|
57
|
+
return this.writeIndex;
|
|
58
|
+
}
|
|
59
|
+
return this.capacity;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Global state
|
|
63
|
+
let globalRingBuffer = null;
|
|
64
|
+
let globalMinLevel = 'info';
|
|
65
|
+
let globalConsoleEnabled = true;
|
|
66
|
+
const globalSinks = new Set();
|
|
67
|
+
/**
|
|
68
|
+
* Default logger implementation
|
|
69
|
+
*/
|
|
70
|
+
class DefaultLogger {
|
|
71
|
+
name;
|
|
72
|
+
constructor(name) {
|
|
73
|
+
this.name = name;
|
|
74
|
+
}
|
|
75
|
+
shouldLog(level) {
|
|
76
|
+
const levels = ['debug', 'info', 'warn', 'error'];
|
|
77
|
+
const currentLevelIndex = levels.indexOf(globalMinLevel);
|
|
78
|
+
const messageLevelIndex = levels.indexOf(level);
|
|
79
|
+
return messageLevelIndex >= currentLevelIndex;
|
|
80
|
+
}
|
|
81
|
+
log(level, message, meta) {
|
|
82
|
+
if (!this.shouldLog(level))
|
|
83
|
+
return;
|
|
84
|
+
const record = {
|
|
85
|
+
ts: Date.now(),
|
|
86
|
+
level,
|
|
87
|
+
module: this.name,
|
|
88
|
+
msg: message,
|
|
89
|
+
meta,
|
|
90
|
+
};
|
|
91
|
+
// Write to ring buffer
|
|
92
|
+
if (globalRingBuffer) {
|
|
93
|
+
globalRingBuffer.write(record);
|
|
94
|
+
}
|
|
95
|
+
// Write to sinks (convert LogRecord to LogEvent)
|
|
96
|
+
for (const sink of globalSinks) {
|
|
97
|
+
sink.write({
|
|
98
|
+
ts: record.ts,
|
|
99
|
+
level: record.level,
|
|
100
|
+
module: record.module,
|
|
101
|
+
message: record.msg,
|
|
102
|
+
attributes: record.meta,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// Write to console if enabled
|
|
106
|
+
if (globalConsoleEnabled) {
|
|
107
|
+
const timestamp = new Date(record.ts).toISOString();
|
|
108
|
+
const metaStr = meta ? ` ${JSON.stringify(meta)}` : '';
|
|
109
|
+
const logMessage = `[${timestamp}] [${level.toUpperCase()}] [${this.name}] ${message}${metaStr}`;
|
|
110
|
+
switch (level) {
|
|
111
|
+
case 'debug':
|
|
112
|
+
console.debug(logMessage);
|
|
113
|
+
break;
|
|
114
|
+
case 'info':
|
|
115
|
+
console.info(logMessage);
|
|
116
|
+
break;
|
|
117
|
+
case 'warn':
|
|
118
|
+
console.warn(logMessage);
|
|
119
|
+
break;
|
|
120
|
+
case 'error':
|
|
121
|
+
console.error(logMessage);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
debug(message, meta) {
|
|
127
|
+
this.log('debug', message, meta);
|
|
128
|
+
}
|
|
129
|
+
info(message, meta) {
|
|
130
|
+
this.log('info', message, meta);
|
|
131
|
+
}
|
|
132
|
+
warn(message, meta) {
|
|
133
|
+
this.log('warn', message, meta);
|
|
134
|
+
}
|
|
135
|
+
error(message, meta) {
|
|
136
|
+
this.log('error', message, meta);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Default LoggerProvider implementation
|
|
141
|
+
*/
|
|
142
|
+
export class DefaultLoggerProvider {
|
|
143
|
+
constructor() {
|
|
144
|
+
// Initialize global ring buffer if not already created
|
|
145
|
+
if (!globalRingBuffer) {
|
|
146
|
+
globalRingBuffer = new RingBuffer(1000);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
getLogger(name) {
|
|
150
|
+
return new DefaultLogger(name);
|
|
151
|
+
}
|
|
152
|
+
setMinLevel(level) {
|
|
153
|
+
globalMinLevel = level;
|
|
154
|
+
}
|
|
155
|
+
// 後方互換性のため
|
|
156
|
+
setLogLevel(level) {
|
|
157
|
+
this.setMinLevel(level);
|
|
158
|
+
}
|
|
159
|
+
enableConsole(enabled) {
|
|
160
|
+
globalConsoleEnabled = enabled;
|
|
161
|
+
}
|
|
162
|
+
registerSink(sink) {
|
|
163
|
+
globalSinks.add(sink);
|
|
164
|
+
}
|
|
165
|
+
unregisterSink(sink) {
|
|
166
|
+
globalSinks.delete(sink);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get the global ring buffer (for CLI compatibility)
|
|
171
|
+
*/
|
|
172
|
+
export function getRingBuffer() {
|
|
173
|
+
return globalRingBuffer;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/logging/providers/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging SPI (Service Provider Interface) for SDK
|
|
3
|
+
* Allows applications to plug in their own logging implementations
|
|
4
|
+
*/
|
|
5
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
6
|
+
export interface LogEvent {
|
|
7
|
+
ts: number;
|
|
8
|
+
level: LogLevel;
|
|
9
|
+
module: string;
|
|
10
|
+
message: string;
|
|
11
|
+
attributes?: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface Logger {
|
|
14
|
+
debug(msg: string, attributes?: unknown): void;
|
|
15
|
+
info(msg: string, attributes?: unknown): void;
|
|
16
|
+
warn(msg: string, attributes?: unknown): void;
|
|
17
|
+
error(msg: string, attributes?: unknown): void;
|
|
18
|
+
}
|
|
19
|
+
export interface LogSink {
|
|
20
|
+
write(event: LogEvent): void;
|
|
21
|
+
}
|
|
22
|
+
export interface LoggerProvider {
|
|
23
|
+
getLogger(module: string): Logger;
|
|
24
|
+
addSink?(sink: LogSink): void;
|
|
25
|
+
setMinLevel?(level: LogLevel): void;
|
|
26
|
+
enableConsole?(debug?: boolean): void;
|
|
27
|
+
}
|
|
28
|
+
export interface RegisterOptions {
|
|
29
|
+
allowOverwrite?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function registerLoggerProvider(provider: LoggerProvider, options?: RegisterOptions): void;
|
|
32
|
+
export declare function resetLoggerProvider(): void;
|
|
33
|
+
export declare function getLogger(module: string): Logger;
|
|
34
|
+
export declare function getLoggerProvider(): LoggerProvider | null;
|
|
35
|
+
//# sourceMappingURL=spi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spi.d.ts","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACjC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7B,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACtC;AAKD,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAOhG;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging SPI (Service Provider Interface) for SDK
|
|
3
|
+
* Allows applications to plug in their own logging implementations
|
|
4
|
+
*/
|
|
5
|
+
// Global provider registry
|
|
6
|
+
let _provider = null;
|
|
7
|
+
export function registerLoggerProvider(provider, options) {
|
|
8
|
+
if (_provider && !options?.allowOverwrite) {
|
|
9
|
+
throw new Error('LoggerProvider is already registered. Use { allowOverwrite: true } to replace.');
|
|
10
|
+
}
|
|
11
|
+
_provider = provider;
|
|
12
|
+
}
|
|
13
|
+
export function resetLoggerProvider() {
|
|
14
|
+
_provider = null;
|
|
15
|
+
}
|
|
16
|
+
export function getLogger(module) {
|
|
17
|
+
if (!_provider) {
|
|
18
|
+
throw new Error('LoggerProvider not registered. Call registerLoggerProvider() first.');
|
|
19
|
+
}
|
|
20
|
+
return _provider.getLogger(module);
|
|
21
|
+
}
|
|
22
|
+
export function getLoggerProvider() {
|
|
23
|
+
return _provider;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=spi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spi.js","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,2BAA2B;AAC3B,IAAI,SAAS,GAA0B,IAAI,CAAA;AAM3C,MAAM,UAAU,sBAAsB,CAAC,QAAwB,EAAE,OAAyB;IACxF,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAA;IACH,CAAC;IACD,SAAS,GAAG,QAAQ,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,SAAS,GAAG,IAAI,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;IACxF,CAAC;IACD,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { IAnimationService } from '../interfaces/IAnimationService.js';
|
|
2
|
+
import type { Logger } from '../logging/spi.js';
|
|
3
|
+
import type { VRMAnimation } from '../types/animation.js';
|
|
4
|
+
/**
|
|
5
|
+
* Service for managing VRM animations
|
|
6
|
+
*/
|
|
7
|
+
export declare class AnimationService implements IAnimationService {
|
|
8
|
+
private logger;
|
|
9
|
+
private apiBaseUrl;
|
|
10
|
+
private animationCache;
|
|
11
|
+
private avatarAnimationsCache;
|
|
12
|
+
constructor(logger: Logger, apiBaseUrl: string);
|
|
13
|
+
/**
|
|
14
|
+
* Get available animations for an avatar
|
|
15
|
+
*/
|
|
16
|
+
getAvailableAnimations(avatarId: string): Promise<VRMAnimation[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Load animation data
|
|
19
|
+
*/
|
|
20
|
+
loadAnimation(animationId: string): Promise<VRMAnimation>;
|
|
21
|
+
/**
|
|
22
|
+
* Validate if animation exists
|
|
23
|
+
*/
|
|
24
|
+
validateAnimation(animationId: string): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Get default preset animations
|
|
27
|
+
*/
|
|
28
|
+
getDefaultAnimations(): VRMAnimation[];
|
|
29
|
+
/**
|
|
30
|
+
* Clear all caches
|
|
31
|
+
*/
|
|
32
|
+
clearCache(): void;
|
|
33
|
+
/**
|
|
34
|
+
* Set current avatar ID for animation context
|
|
35
|
+
*/
|
|
36
|
+
setCurrentAvatarId(avatarId: string): void;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=AnimationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationService.d.ts","sourceRoot":"","sources":["../../src/services/AnimationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IAKtD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,qBAAqB,CAAyC;gBAG5D,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;IAG5B;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA2EvE;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6C/D;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAiBtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAO3C"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { PresetAnimationId } from '../types/animation.js';
|
|
2
|
+
/**
|
|
3
|
+
* Service for managing VRM animations
|
|
4
|
+
*/
|
|
5
|
+
export class AnimationService {
|
|
6
|
+
logger;
|
|
7
|
+
apiBaseUrl;
|
|
8
|
+
animationCache = new Map();
|
|
9
|
+
avatarAnimationsCache = new Map();
|
|
10
|
+
constructor(logger, apiBaseUrl) {
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
this.apiBaseUrl = apiBaseUrl;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get available animations for an avatar
|
|
16
|
+
*/
|
|
17
|
+
async getAvailableAnimations(avatarId) {
|
|
18
|
+
// Check cache first
|
|
19
|
+
const cached = this.avatarAnimationsCache.get(avatarId);
|
|
20
|
+
if (cached) {
|
|
21
|
+
return cached;
|
|
22
|
+
}
|
|
23
|
+
// デフォルトアニメーション
|
|
24
|
+
const defaultAnimations = this.getDefaultAnimations();
|
|
25
|
+
try {
|
|
26
|
+
// アバター情報を取得して利用可能なアニメーションを確認
|
|
27
|
+
const avatarUrl = `${this.apiBaseUrl}/api/v1/avatars/${avatarId}`;
|
|
28
|
+
this.logger.debug('Fetching avatar animations', { avatarUrl });
|
|
29
|
+
const response = await fetch(avatarUrl);
|
|
30
|
+
this.logger.debug('Avatar API response', {
|
|
31
|
+
avatarUrl,
|
|
32
|
+
status: response.status,
|
|
33
|
+
ok: response.ok,
|
|
34
|
+
});
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
// 404の場合は組織アバターの可能性があるのでデフォルトを返す
|
|
37
|
+
if (response.status === 404) {
|
|
38
|
+
this.logger.debug('Avatar not found in individual avatars, might be organization avatar', { avatarId });
|
|
39
|
+
this.avatarAnimationsCache.set(avatarId, defaultAnimations);
|
|
40
|
+
return defaultAnimations;
|
|
41
|
+
}
|
|
42
|
+
throw new Error(`Failed to fetch avatar info: ${response.status}`);
|
|
43
|
+
}
|
|
44
|
+
const avatarData = (await response.json());
|
|
45
|
+
// アバター固有のアニメーションをVRMAnimation形式に変換
|
|
46
|
+
const customAnimations = (avatarData.animations || []).map((anim) => ({
|
|
47
|
+
id: anim.id,
|
|
48
|
+
name: anim.alias || anim.name,
|
|
49
|
+
vrmaFilePath: anim.vrmaFilePath,
|
|
50
|
+
type: 'custom',
|
|
51
|
+
loop: false, // デフォルトはループなし
|
|
52
|
+
}));
|
|
53
|
+
// デフォルトアニメーションとカスタムアニメーションを結合
|
|
54
|
+
const allAnimations = [...defaultAnimations, ...customAnimations];
|
|
55
|
+
this.logger.debug('Avatar animations loaded', {
|
|
56
|
+
avatarId,
|
|
57
|
+
defaultCount: defaultAnimations.length,
|
|
58
|
+
customCount: customAnimations.length,
|
|
59
|
+
});
|
|
60
|
+
this.avatarAnimationsCache.set(avatarId, allAnimations);
|
|
61
|
+
return allAnimations;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
this.logger.warn('Failed to fetch avatar animations, returning defaults', { avatarId, error });
|
|
65
|
+
this.avatarAnimationsCache.set(avatarId, defaultAnimations);
|
|
66
|
+
return defaultAnimations;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Load animation data
|
|
71
|
+
*/
|
|
72
|
+
async loadAnimation(animationId) {
|
|
73
|
+
// Check cache
|
|
74
|
+
const cached = this.animationCache.get(animationId);
|
|
75
|
+
if (cached) {
|
|
76
|
+
return cached;
|
|
77
|
+
}
|
|
78
|
+
// Check if it's a preset animation
|
|
79
|
+
const presetAnimation = this.getDefaultAnimations().find((a) => a.id === animationId);
|
|
80
|
+
if (presetAnimation) {
|
|
81
|
+
this.animationCache.set(animationId, presetAnimation);
|
|
82
|
+
return presetAnimation;
|
|
83
|
+
}
|
|
84
|
+
// For custom animations, we need to fetch from API
|
|
85
|
+
try {
|
|
86
|
+
const response = await fetch(`${this.apiBaseUrl}/api/v1/animations/${animationId}`);
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
throw new Error(`Animation not found: ${animationId}`);
|
|
89
|
+
}
|
|
90
|
+
const animationData = (await response.json());
|
|
91
|
+
const animation = {
|
|
92
|
+
id: animationData.id,
|
|
93
|
+
name: animationData.name,
|
|
94
|
+
vrmaFilePath: animationData.vrmaFilePath,
|
|
95
|
+
type: 'custom',
|
|
96
|
+
duration: animationData.duration,
|
|
97
|
+
loop: animationData.loop,
|
|
98
|
+
};
|
|
99
|
+
this.animationCache.set(animationId, animation);
|
|
100
|
+
return animation;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
this.logger.error('Failed to load animation', { animationId, error });
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Validate if animation exists
|
|
109
|
+
*/
|
|
110
|
+
async validateAnimation(animationId) {
|
|
111
|
+
try {
|
|
112
|
+
await this.loadAnimation(animationId);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get default preset animations
|
|
121
|
+
*/
|
|
122
|
+
getDefaultAnimations() {
|
|
123
|
+
return [
|
|
124
|
+
{
|
|
125
|
+
id: PresetAnimationId.IDLE,
|
|
126
|
+
name: 'Idle',
|
|
127
|
+
type: 'preset',
|
|
128
|
+
loop: true,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
id: PresetAnimationId.WALKING,
|
|
132
|
+
name: 'Walking',
|
|
133
|
+
type: 'preset',
|
|
134
|
+
loop: true,
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Clear all caches
|
|
140
|
+
*/
|
|
141
|
+
clearCache() {
|
|
142
|
+
this.animationCache.clear();
|
|
143
|
+
this.avatarAnimationsCache.clear();
|
|
144
|
+
this.logger.debug('Animation cache cleared');
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Set current avatar ID for animation context
|
|
148
|
+
*/
|
|
149
|
+
setCurrentAvatarId(avatarId) {
|
|
150
|
+
// アバターIDが変更された場合、そのアバターのアニメーションを事前取得
|
|
151
|
+
this.getAvailableAnimations(avatarId).catch((error) => {
|
|
152
|
+
this.logger.warn('Failed to preload avatar animations', { avatarId, error });
|
|
153
|
+
});
|
|
154
|
+
this.logger.debug('Current avatar ID set', { avatarId });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=AnimationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationService.js","sourceRoot":"","sources":["../../src/services/AnimationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IAppSettings } from '../interfaces/IAppSettings.js';
|
|
2
|
+
export declare class AppSettings implements IAppSettings {
|
|
3
|
+
private _debugMode;
|
|
4
|
+
private _logLevel;
|
|
5
|
+
private debugCallbacks;
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(debugMode?: boolean, logLevel?: 'debug' | 'info' | 'warn' | 'error');
|
|
8
|
+
get debugMode(): boolean;
|
|
9
|
+
get logLevel(): 'debug' | 'info' | 'warn' | 'error';
|
|
10
|
+
onDebugModeChanged(callback: (enabled: boolean) => void): void;
|
|
11
|
+
setDebugMode(enabled: boolean): void;
|
|
12
|
+
setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=AppSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppSettings.d.ts","sourceRoot":"","sources":["../../src/services/AppSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGjE,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,MAAM,CAA2B;gBAE7B,SAAS,UAAQ,EAAE,QAAQ,GAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAgB;IAWrF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,QAAQ,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAElD;IAED,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI9D,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAepC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;CAS9D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getLogger, getLoggerProvider } from '../logging/index.js';
|
|
2
|
+
export class AppSettings {
|
|
3
|
+
_debugMode;
|
|
4
|
+
_logLevel;
|
|
5
|
+
debugCallbacks = [];
|
|
6
|
+
logger = getLogger('AppSettings');
|
|
7
|
+
constructor(debugMode = false, logLevel = 'info') {
|
|
8
|
+
this._debugMode = debugMode;
|
|
9
|
+
this._logLevel = logLevel;
|
|
10
|
+
// LoggerProviderのログレベルを初期設定
|
|
11
|
+
const provider = getLoggerProvider();
|
|
12
|
+
if (provider?.setMinLevel) {
|
|
13
|
+
provider.setMinLevel(logLevel);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get debugMode() {
|
|
17
|
+
return this._debugMode;
|
|
18
|
+
}
|
|
19
|
+
get logLevel() {
|
|
20
|
+
return this._logLevel;
|
|
21
|
+
}
|
|
22
|
+
onDebugModeChanged(callback) {
|
|
23
|
+
this.debugCallbacks.push(callback);
|
|
24
|
+
}
|
|
25
|
+
setDebugMode(enabled) {
|
|
26
|
+
if (this._debugMode !== enabled) {
|
|
27
|
+
this._debugMode = enabled;
|
|
28
|
+
// 全てのコールバックに通知
|
|
29
|
+
for (const callback of this.debugCallbacks) {
|
|
30
|
+
try {
|
|
31
|
+
callback(enabled);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
this.logger.error('Error in debug mode callback', { error });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
setLogLevel(level) {
|
|
40
|
+
this._logLevel = level;
|
|
41
|
+
// LoggerProviderのログレベルも更新
|
|
42
|
+
const provider = getLoggerProvider();
|
|
43
|
+
if (provider?.setMinLevel) {
|
|
44
|
+
provider.setMinLevel(level);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=AppSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppSettings.js","sourceRoot":"","sources":["../../src/services/AppSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAElE,MAAM,OAAO,WAAW;IACd,UAAU,CAAS;IACnB,SAAS,CAAqC;IAC9C,cAAc,GAAmC,EAAE,CAAA;IACnD,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA;IAEzC,YAAY,SAAS,GAAG,KAAK,EAAE,WAAgD,MAAM;QACnF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;QACpC,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC1B,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,kBAAkB,CAAC,QAAoC;QACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,YAAY,CAAC,OAAgB;QAC3B,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAA;YAEzB,eAAe;YACf,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACnB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAA0C;QACpD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QAEtB,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;QACpC,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC1B,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AuthCredentials, AuthToken, IAuthenticationService } from '../interfaces/IAuthenticationService.js';
|
|
2
|
+
import type { IConfigurationProvider } from '../interfaces/IConfigurationProvider.js';
|
|
3
|
+
export declare class AuthenticationService implements IAuthenticationService {
|
|
4
|
+
private token;
|
|
5
|
+
private configProvider;
|
|
6
|
+
constructor(configProvider: IConfigurationProvider);
|
|
7
|
+
authenticate(credentials: AuthCredentials): Promise<AuthToken>;
|
|
8
|
+
refreshToken(): Promise<AuthToken>;
|
|
9
|
+
getToken(): AuthToken | null;
|
|
10
|
+
isAuthenticated(): boolean;
|
|
11
|
+
logout(): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=AuthenticationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticationService.d.ts","sourceRoot":"","sources":["../../src/services/AuthenticationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,sBAAsB,EACvB,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAErF,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,cAAc,CAAwB;gBAElC,cAAc,EAAE,sBAAsB;IAI5C,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAuB9D,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAKxC,QAAQ,IAAI,SAAS,GAAG,IAAI;IAQ5B,eAAe,IAAI,OAAO;IAI1B,MAAM,IAAI,IAAI;CAGf"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export class AuthenticationService {
|
|
2
|
+
token = null;
|
|
3
|
+
configProvider;
|
|
4
|
+
constructor(configProvider) {
|
|
5
|
+
this.configProvider = configProvider;
|
|
6
|
+
}
|
|
7
|
+
async authenticate(credentials) {
|
|
8
|
+
// If token is provided directly
|
|
9
|
+
if (credentials.token) {
|
|
10
|
+
this.token = {
|
|
11
|
+
token: credentials.token,
|
|
12
|
+
expiresAt: Date.now() + 24 * 60 * 60 * 1000, // 24 hours
|
|
13
|
+
};
|
|
14
|
+
return this.token;
|
|
15
|
+
}
|
|
16
|
+
// Get auth configuration from config provider
|
|
17
|
+
const config = this.configProvider.getConfiguration();
|
|
18
|
+
// For now, generate a mock token since the auth endpoint is not fully implemented
|
|
19
|
+
// In production, this should make a real API call to the authentication server
|
|
20
|
+
this.token = {
|
|
21
|
+
token: `mock-token-${Date.now()}-${config.hubId || 'default'}`,
|
|
22
|
+
expiresAt: Date.now() + 24 * 60 * 60 * 1000,
|
|
23
|
+
};
|
|
24
|
+
return this.token;
|
|
25
|
+
}
|
|
26
|
+
async refreshToken() {
|
|
27
|
+
// Re-authenticate to get new token
|
|
28
|
+
return this.authenticate({});
|
|
29
|
+
}
|
|
30
|
+
getToken() {
|
|
31
|
+
// Check if token is expired
|
|
32
|
+
if (this.token?.expiresAt && this.token.expiresAt < Date.now()) {
|
|
33
|
+
this.token = null;
|
|
34
|
+
}
|
|
35
|
+
return this.token;
|
|
36
|
+
}
|
|
37
|
+
isAuthenticated() {
|
|
38
|
+
return this.getToken() !== null;
|
|
39
|
+
}
|
|
40
|
+
logout() {
|
|
41
|
+
this.token = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=AuthenticationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthenticationService.js","sourceRoot":"","sources":["../../src/services/AuthenticationService.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,qBAAqB;IACxB,KAAK,GAAqB,IAAI,CAAA;IAC9B,cAAc,CAAwB;IAE9C,YAAY,cAAsC;QAChD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAA4B;QAC7C,gCAAgC;QAChC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG;gBACX,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;aACzD,CAAA;YACD,OAAO,IAAI,CAAC,KAAK,CAAA;QACnB,CAAC;QAED,8CAA8C;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAA;QAErD,kFAAkF;QAClF,+EAA+E;QAC/E,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE;YAC9D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SAC5C,CAAA;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,mCAAmC;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,4BAA4B;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAA;IACjC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IAnimationService } from '../interfaces/IAnimationService.js';
|
|
2
|
+
import type { AvatarState, IAvatarController, Position, Rotation } from '../interfaces/IAvatarController.js';
|
|
3
|
+
import type { IConfigurationProvider } from '../interfaces/IConfigurationProvider.js';
|
|
4
|
+
import { type IEventBus } from '../interfaces/IEventBus.js';
|
|
5
|
+
import type { IMessageService } from '../interfaces/IMessageService.js';
|
|
6
|
+
import type { AnimationPlaybackResult, AnimationPlayOptions } from '../types/animation.js';
|
|
7
|
+
export declare class AvatarController implements IAvatarController {
|
|
8
|
+
private messageService;
|
|
9
|
+
private configProvider;
|
|
10
|
+
private eventBus;
|
|
11
|
+
private animationService?;
|
|
12
|
+
private state;
|
|
13
|
+
private sessionId;
|
|
14
|
+
private currentAnimation;
|
|
15
|
+
private logger;
|
|
16
|
+
constructor(messageService: IMessageService, configProvider: IConfigurationProvider, eventBus: IEventBus, animationService?: IAnimationService | undefined);
|
|
17
|
+
spawn(avatarId: string, position?: Position, avatarSrc?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Determine storage URL based on hub URL environment
|
|
20
|
+
*/
|
|
21
|
+
private determineStorageUrl;
|
|
22
|
+
/**
|
|
23
|
+
* Check if avatar ID is organization avatar (UUID format)
|
|
24
|
+
*/
|
|
25
|
+
private isOrganizationAvatar;
|
|
26
|
+
move(position: Position): Promise<void>;
|
|
27
|
+
rotate(rotation: Rotation): Promise<void>;
|
|
28
|
+
private quaternionToEuler;
|
|
29
|
+
updateState(state: Partial<AvatarState>): Promise<void>;
|
|
30
|
+
getState(): AvatarState | null;
|
|
31
|
+
destroy(): Promise<void>;
|
|
32
|
+
resyncAvatar(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Play animation on the avatar
|
|
35
|
+
*/
|
|
36
|
+
playAnimation(animationId: string, options?: AnimationPlayOptions): Promise<AnimationPlaybackResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Get current animation
|
|
39
|
+
*/
|
|
40
|
+
getCurrentAnimation(): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Stop current animation
|
|
43
|
+
*/
|
|
44
|
+
stopAnimation(): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Calculate expected animation duration
|
|
47
|
+
*/
|
|
48
|
+
private calculateExpectedDuration;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=AvatarController.d.ts.map
|