@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.
Files changed (185) hide show
  1. package/dist/CoreServiceFactory.d.ts +25 -0
  2. package/dist/CoreServiceFactory.d.ts.map +1 -0
  3. package/dist/CoreServiceFactory.js +102 -0
  4. package/dist/CoreServiceFactory.js.map +1 -0
  5. package/dist/ServiceContainer.d.ts +87 -0
  6. package/dist/ServiceContainer.d.ts.map +1 -0
  7. package/dist/ServiceContainer.js +119 -0
  8. package/dist/ServiceContainer.js.map +1 -0
  9. package/dist/ServiceIdentifier.d.ts +28 -0
  10. package/dist/ServiceIdentifier.d.ts.map +1 -0
  11. package/dist/ServiceIdentifier.js +18 -0
  12. package/dist/ServiceIdentifier.js.map +1 -0
  13. package/dist/builders/NafMessageBuilder.d.ts +242 -0
  14. package/dist/builders/NafMessageBuilder.d.ts.map +1 -0
  15. package/dist/builders/NafMessageBuilder.js +288 -0
  16. package/dist/builders/NafMessageBuilder.js.map +1 -0
  17. package/dist/errors/animation-errors.d.ts +41 -0
  18. package/dist/errors/animation-errors.d.ts.map +1 -0
  19. package/dist/errors/animation-errors.js +60 -0
  20. package/dist/errors/animation-errors.js.map +1 -0
  21. package/dist/index.d.ts +32 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +27 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/interfaces/IAnimationService.d.ts +42 -0
  26. package/dist/interfaces/IAnimationService.d.ts.map +1 -0
  27. package/dist/interfaces/IAnimationService.js +5 -0
  28. package/dist/interfaces/IAnimationService.js.map +1 -0
  29. package/dist/interfaces/IAppSettings.d.ts +11 -0
  30. package/dist/interfaces/IAppSettings.d.ts.map +1 -0
  31. package/dist/interfaces/IAppSettings.js +5 -0
  32. package/dist/interfaces/IAppSettings.js.map +1 -0
  33. package/dist/interfaces/IAuthenticationService.d.ts +20 -0
  34. package/dist/interfaces/IAuthenticationService.d.ts.map +1 -0
  35. package/dist/interfaces/IAuthenticationService.js +5 -0
  36. package/dist/interfaces/IAuthenticationService.js.map +1 -0
  37. package/dist/interfaces/IAvatarController.d.ts +54 -0
  38. package/dist/interfaces/IAvatarController.d.ts.map +1 -0
  39. package/dist/interfaces/IAvatarController.js +5 -0
  40. package/dist/interfaces/IAvatarController.js.map +1 -0
  41. package/dist/interfaces/IConfigurationProvider.d.ts +39 -0
  42. package/dist/interfaces/IConfigurationProvider.d.ts.map +1 -0
  43. package/dist/interfaces/IConfigurationProvider.js +5 -0
  44. package/dist/interfaces/IConfigurationProvider.js.map +1 -0
  45. package/dist/interfaces/IConnectionManager.d.ts +23 -0
  46. package/dist/interfaces/IConnectionManager.d.ts.map +1 -0
  47. package/dist/interfaces/IConnectionManager.js +5 -0
  48. package/dist/interfaces/IConnectionManager.js.map +1 -0
  49. package/dist/interfaces/IEventBus.d.ts +28 -0
  50. package/dist/interfaces/IEventBus.d.ts.map +1 -0
  51. package/dist/interfaces/IEventBus.js +31 -0
  52. package/dist/interfaces/IEventBus.js.map +1 -0
  53. package/dist/interfaces/IMessageService.d.ts +25 -0
  54. package/dist/interfaces/IMessageService.d.ts.map +1 -0
  55. package/dist/interfaces/IMessageService.js +5 -0
  56. package/dist/interfaces/IMessageService.js.map +1 -0
  57. package/dist/interfaces/IOrganizationService.d.ts +58 -0
  58. package/dist/interfaces/IOrganizationService.d.ts.map +1 -0
  59. package/dist/interfaces/IOrganizationService.js +5 -0
  60. package/dist/interfaces/IOrganizationService.js.map +1 -0
  61. package/dist/interfaces/IPresenceManager.d.ts +20 -0
  62. package/dist/interfaces/IPresenceManager.d.ts.map +1 -0
  63. package/dist/interfaces/IPresenceManager.js +5 -0
  64. package/dist/interfaces/IPresenceManager.js.map +1 -0
  65. package/dist/interfaces/IUserAvatarManager.d.ts +88 -0
  66. package/dist/interfaces/IUserAvatarManager.d.ts.map +1 -0
  67. package/dist/interfaces/IUserAvatarManager.js +5 -0
  68. package/dist/interfaces/IUserAvatarManager.js.map +1 -0
  69. package/dist/interfaces/IWebSocketConnectionManager.d.ts +14 -0
  70. package/dist/interfaces/IWebSocketConnectionManager.d.ts.map +1 -0
  71. package/dist/interfaces/IWebSocketConnectionManager.js +2 -0
  72. package/dist/interfaces/IWebSocketConnectionManager.js.map +1 -0
  73. package/dist/logging/LogEventEmitter.d.ts +38 -0
  74. package/dist/logging/LogEventEmitter.d.ts.map +1 -0
  75. package/dist/logging/LogEventEmitter.js +54 -0
  76. package/dist/logging/LogEventEmitter.js.map +1 -0
  77. package/dist/logging/index.d.ts +22 -0
  78. package/dist/logging/index.d.ts.map +1 -0
  79. package/dist/logging/index.js +10 -0
  80. package/dist/logging/index.js.map +1 -0
  81. package/dist/logging/providers/default.d.ts +22 -0
  82. package/dist/logging/providers/default.d.ts.map +1 -0
  83. package/dist/logging/providers/default.js +175 -0
  84. package/dist/logging/providers/default.js.map +1 -0
  85. package/dist/logging/spi.d.ts +35 -0
  86. package/dist/logging/spi.d.ts.map +1 -0
  87. package/dist/logging/spi.js +25 -0
  88. package/dist/logging/spi.js.map +1 -0
  89. package/dist/services/AnimationService.d.ts +38 -0
  90. package/dist/services/AnimationService.d.ts.map +1 -0
  91. package/dist/services/AnimationService.js +157 -0
  92. package/dist/services/AnimationService.js.map +1 -0
  93. package/dist/services/AppSettings.d.ts +14 -0
  94. package/dist/services/AppSettings.d.ts.map +1 -0
  95. package/dist/services/AppSettings.js +48 -0
  96. package/dist/services/AppSettings.js.map +1 -0
  97. package/dist/services/AuthenticationService.d.ts +13 -0
  98. package/dist/services/AuthenticationService.d.ts.map +1 -0
  99. package/dist/services/AuthenticationService.js +44 -0
  100. package/dist/services/AuthenticationService.js.map +1 -0
  101. package/dist/services/AvatarController.d.ts +50 -0
  102. package/dist/services/AvatarController.d.ts.map +1 -0
  103. package/dist/services/AvatarController.js +409 -0
  104. package/dist/services/AvatarController.js.map +1 -0
  105. package/dist/services/ChannelService.d.ts +19 -0
  106. package/dist/services/ChannelService.d.ts.map +1 -0
  107. package/dist/services/ChannelService.js +113 -0
  108. package/dist/services/ChannelService.js.map +1 -0
  109. package/dist/services/ConfigurationProvider.d.ts +13 -0
  110. package/dist/services/ConfigurationProvider.d.ts.map +1 -0
  111. package/dist/services/ConfigurationProvider.js +49 -0
  112. package/dist/services/ConfigurationProvider.js.map +1 -0
  113. package/dist/services/EventBus.d.ts +11 -0
  114. package/dist/services/EventBus.d.ts.map +1 -0
  115. package/dist/services/EventBus.js +54 -0
  116. package/dist/services/EventBus.js.map +1 -0
  117. package/dist/services/IChannelService.d.ts +57 -0
  118. package/dist/services/IChannelService.d.ts.map +1 -0
  119. package/dist/services/IChannelService.js +6 -0
  120. package/dist/services/IChannelService.js.map +1 -0
  121. package/dist/services/MessageService.d.ts +23 -0
  122. package/dist/services/MessageService.d.ts.map +1 -0
  123. package/dist/services/MessageService.js +141 -0
  124. package/dist/services/MessageService.js.map +1 -0
  125. package/dist/services/OrganizationService.d.ts +11 -0
  126. package/dist/services/OrganizationService.d.ts.map +1 -0
  127. package/dist/services/OrganizationService.js +121 -0
  128. package/dist/services/OrganizationService.js.map +1 -0
  129. package/dist/services/PresenceManager.d.ts +21 -0
  130. package/dist/services/PresenceManager.d.ts.map +1 -0
  131. package/dist/services/PresenceManager.js +143 -0
  132. package/dist/services/PresenceManager.js.map +1 -0
  133. package/dist/services/UserAvatarManager.d.ts +61 -0
  134. package/dist/services/UserAvatarManager.d.ts.map +1 -0
  135. package/dist/services/UserAvatarManager.js +466 -0
  136. package/dist/services/UserAvatarManager.js.map +1 -0
  137. package/dist/services/WebSocketConnectionManager.d.ts +26 -0
  138. package/dist/services/WebSocketConnectionManager.d.ts.map +1 -0
  139. package/dist/services/WebSocketConnectionManager.js +223 -0
  140. package/dist/services/WebSocketConnectionManager.js.map +1 -0
  141. package/dist/services/resolvers/CompositeUserIdResolver.d.ts +20 -0
  142. package/dist/services/resolvers/CompositeUserIdResolver.d.ts.map +1 -0
  143. package/dist/services/resolvers/CompositeUserIdResolver.js +46 -0
  144. package/dist/services/resolvers/CompositeUserIdResolver.js.map +1 -0
  145. package/dist/services/resolvers/CreatorMatchResolver.d.ts +15 -0
  146. package/dist/services/resolvers/CreatorMatchResolver.d.ts.map +1 -0
  147. package/dist/services/resolvers/CreatorMatchResolver.js +31 -0
  148. package/dist/services/resolvers/CreatorMatchResolver.js.map +1 -0
  149. package/dist/services/resolvers/ExactMatchResolver.d.ts +15 -0
  150. package/dist/services/resolvers/ExactMatchResolver.d.ts.map +1 -0
  151. package/dist/services/resolvers/ExactMatchResolver.js +28 -0
  152. package/dist/services/resolvers/ExactMatchResolver.js.map +1 -0
  153. package/dist/services/resolvers/IUserIdResolver.d.ts +53 -0
  154. package/dist/services/resolvers/IUserIdResolver.d.ts.map +1 -0
  155. package/dist/services/resolvers/IUserIdResolver.js +6 -0
  156. package/dist/services/resolvers/IUserIdResolver.js.map +1 -0
  157. package/dist/services/resolvers/OwnerMatchResolver.d.ts +15 -0
  158. package/dist/services/resolvers/OwnerMatchResolver.d.ts.map +1 -0
  159. package/dist/services/resolvers/OwnerMatchResolver.js +31 -0
  160. package/dist/services/resolvers/OwnerMatchResolver.js.map +1 -0
  161. package/dist/services/resolvers/PrefixMatchResolver.d.ts +17 -0
  162. package/dist/services/resolvers/PrefixMatchResolver.d.ts.map +1 -0
  163. package/dist/services/resolvers/PrefixMatchResolver.js +36 -0
  164. package/dist/services/resolvers/PrefixMatchResolver.js.map +1 -0
  165. package/dist/services/resolvers/index.d.ts +10 -0
  166. package/dist/services/resolvers/index.d.ts.map +1 -0
  167. package/dist/services/resolvers/index.js +9 -0
  168. package/dist/services/resolvers/index.js.map +1 -0
  169. package/dist/types/animation.d.ts +92 -0
  170. package/dist/types/animation.d.ts.map +1 -0
  171. package/dist/types/animation.js +31 -0
  172. package/dist/types/animation.js.map +1 -0
  173. package/dist/types/index.d.ts +14 -0
  174. package/dist/types/index.d.ts.map +1 -0
  175. package/dist/types/index.js +5 -0
  176. package/dist/types/index.js.map +1 -0
  177. package/dist/types/naf.d.ts +229 -0
  178. package/dist/types/naf.d.ts.map +1 -0
  179. package/dist/types/naf.js +93 -0
  180. package/dist/types/naf.js.map +1 -0
  181. package/dist/utils/nafParser.d.ts +64 -0
  182. package/dist/utils/nafParser.d.ts.map +1 -0
  183. package/dist/utils/nafParser.js +99 -0
  184. package/dist/utils/nafParser.js.map +1 -0
  185. package/package.json +37 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * VRM Animation Types and Interfaces
3
+ */
4
+ /**
5
+ * VRM animation definition
6
+ */
7
+ export interface VRMAnimation {
8
+ id: string;
9
+ name?: string;
10
+ vrmaFilePath?: string;
11
+ type: 'preset' | 'custom';
12
+ duration?: number;
13
+ loop?: boolean;
14
+ }
15
+ /**
16
+ * Animation playback options
17
+ */
18
+ export interface AnimationPlayOptions {
19
+ loop?: boolean;
20
+ fadeIn?: number;
21
+ fadeOut?: number;
22
+ timeScale?: number;
23
+ startTime?: number;
24
+ }
25
+ /**
26
+ * Animation playback result
27
+ */
28
+ export interface AnimationPlaybackResult {
29
+ playbackId: string;
30
+ animationId: string;
31
+ startedAt: number;
32
+ expectedDuration?: number;
33
+ }
34
+ /**
35
+ * Animation event
36
+ */
37
+ export interface AnimationEvent {
38
+ type: 'started' | 'completed' | 'failed';
39
+ playbackId: string;
40
+ animationId: string;
41
+ timestamp: number;
42
+ error?: Error;
43
+ }
44
+ /**
45
+ * Animation NAF message structure
46
+ */
47
+ export interface AnimationNAFMessage {
48
+ dataType: 'animation';
49
+ data: {
50
+ networkId: string;
51
+ owner: string;
52
+ animationId: string;
53
+ playbackId: string;
54
+ options?: AnimationPlayOptions;
55
+ timestamp: number;
56
+ };
57
+ }
58
+ /**
59
+ * Animation loop behavior
60
+ */
61
+ export declare enum AnimationLoopBehavior {
62
+ NONE = "none",
63
+ LOOP = "loop",
64
+ PING_PONG = "pingPong"
65
+ }
66
+ /**
67
+ * Preset animation IDs
68
+ */
69
+ export declare enum PresetAnimationId {
70
+ IDLE = "idle",
71
+ WALKING = "walking",
72
+ GREETING = "greeting",
73
+ THANKFUL = "thankful",
74
+ JUMPING = "jumping",
75
+ JUMPING_UP = "jumping_up",
76
+ JUMPING_DOWN = "jumping_down",
77
+ CROUCH = "crouch",
78
+ DANCE = "dance",
79
+ WAVE = "wave",
80
+ NOD = "nod",
81
+ SHAKE_HEAD = "shake_head"
82
+ }
83
+ /**
84
+ * Animation configuration for SDK
85
+ */
86
+ export interface AnimationConfig {
87
+ fallbackAnimations?: VRMAnimation[];
88
+ defaultLoopBehavior?: AnimationLoopBehavior;
89
+ enableAnimationEvents?: boolean;
90
+ animationTimeout?: number;
91
+ }
92
+ //# sourceMappingURL=animation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../src/types/animation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAA;IACrB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,oBAAoB,CAAA;QAC9B,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,aAAa;CACvB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,UAAU,eAAe;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kBAAkB,CAAC,EAAE,YAAY,EAAE,CAAA;IACnC,mBAAmB,CAAC,EAAE,qBAAqB,CAAA;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * VRM Animation Types and Interfaces
3
+ */
4
+ /**
5
+ * Animation loop behavior
6
+ */
7
+ export var AnimationLoopBehavior;
8
+ (function (AnimationLoopBehavior) {
9
+ AnimationLoopBehavior["NONE"] = "none";
10
+ AnimationLoopBehavior["LOOP"] = "loop";
11
+ AnimationLoopBehavior["PING_PONG"] = "pingPong";
12
+ })(AnimationLoopBehavior || (AnimationLoopBehavior = {}));
13
+ /**
14
+ * Preset animation IDs
15
+ */
16
+ export var PresetAnimationId;
17
+ (function (PresetAnimationId) {
18
+ PresetAnimationId["IDLE"] = "idle";
19
+ PresetAnimationId["WALKING"] = "walking";
20
+ PresetAnimationId["GREETING"] = "greeting";
21
+ PresetAnimationId["THANKFUL"] = "thankful";
22
+ PresetAnimationId["JUMPING"] = "jumping";
23
+ PresetAnimationId["JUMPING_UP"] = "jumping_up";
24
+ PresetAnimationId["JUMPING_DOWN"] = "jumping_down";
25
+ PresetAnimationId["CROUCH"] = "crouch";
26
+ PresetAnimationId["DANCE"] = "dance";
27
+ PresetAnimationId["WAVE"] = "wave";
28
+ PresetAnimationId["NOD"] = "nod";
29
+ PresetAnimationId["SHAKE_HEAD"] = "shake_head";
30
+ })(PresetAnimationId || (PresetAnimationId = {}));
31
+ //# sourceMappingURL=animation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation.js","sourceRoot":"","sources":["../../src/types/animation.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6DH;;GAEG;AACH,MAAM,CAAN,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,sCAAa,CAAA;IACb,sCAAa,CAAA;IACb,+CAAsB,CAAA;AACxB,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IAC3B,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;IACrB,0CAAqB,CAAA;IACrB,wCAAmB,CAAA;IACnB,8CAAyB,CAAA;IACzB,kDAA6B,CAAA;IAC7B,sCAAiB,CAAA;IACjB,oCAAe,CAAA;IACf,kCAAa,CAAA;IACb,gCAAW,CAAA;IACX,8CAAyB,CAAA;AAC3B,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core types used across the SDK
3
+ */
4
+ /**
5
+ * NAF (Networked A-Frame) component data
6
+ */
7
+ export interface NAFComponent {
8
+ networkId: string;
9
+ owner: string;
10
+ creator: string;
11
+ template: string;
12
+ components: Record<string, unknown>;
13
+ }
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Core types used across the SDK
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Comprehensive NAF (Networked A-Frame) type definitions
3
+ * Provides type-safe interfaces for all NAF message components
4
+ */
5
+ import { NafComponentId } from '../builders/NafMessageBuilder.js';
6
+ /**
7
+ * 3D position in world space
8
+ */
9
+ export interface Position3D {
10
+ x: number;
11
+ y: number;
12
+ z: number;
13
+ }
14
+ /**
15
+ * Quaternion rotation
16
+ */
17
+ export interface Quaternion {
18
+ x: number;
19
+ y: number;
20
+ z: number;
21
+ w: number;
22
+ }
23
+ /**
24
+ * Euler angles rotation (in radians)
25
+ */
26
+ export interface EulerRotation {
27
+ x: number;
28
+ y: number;
29
+ z: number;
30
+ }
31
+ /**
32
+ * 3D scale factors
33
+ */
34
+ export interface Scale3D {
35
+ x: number;
36
+ y: number;
37
+ z: number;
38
+ }
39
+ /**
40
+ * Avatar component configuration
41
+ */
42
+ export interface AvatarComponentData {
43
+ avatarSrc: string;
44
+ avatarType?: string;
45
+ muted?: boolean;
46
+ isSharingAvatarCamera?: boolean;
47
+ }
48
+ /**
49
+ * Face snapshot data
50
+ */
51
+ export interface FaceSnapshotData {
52
+ imageData: string;
53
+ timestamp: number;
54
+ }
55
+ /**
56
+ * Base structure for a NAF component
57
+ */
58
+ export interface NAFComponent<T = unknown> {
59
+ components?: T;
60
+ forceRender?: boolean;
61
+ }
62
+ /**
63
+ * Position component (ID: 0)
64
+ */
65
+ export interface PositionComponent extends NAFComponent<[number, number, number]> {
66
+ }
67
+ /**
68
+ * Velocity component (ID: 1)
69
+ */
70
+ export interface VelocityComponent extends NAFComponent<[number, number, number]> {
71
+ }
72
+ /**
73
+ * Scale component (ID: 2)
74
+ */
75
+ export interface ScaleComponent extends NAFComponent<[number, number, number]> {
76
+ }
77
+ /**
78
+ * Avatar component (ID: 3)
79
+ */
80
+ export interface AvatarComponent extends NAFComponent<AvatarComponentData | string> {
81
+ }
82
+ /**
83
+ * Head rotation component (ID: 4)
84
+ */
85
+ export interface HeadRotationComponent extends NAFComponent<[number, number, number]> {
86
+ }
87
+ /**
88
+ * Hand rotation components (IDs: 5, 6)
89
+ */
90
+ export interface HandRotationComponent extends NAFComponent<[number, number, number, number]> {
91
+ }
92
+ /**
93
+ * Hand position components (IDs: 7, 8)
94
+ */
95
+ export interface HandPositionComponent extends NAFComponent<[number, number, number]> {
96
+ }
97
+ /**
98
+ * Hand raised component (ID: 9)
99
+ */
100
+ export interface HandRaisedComponent extends NAFComponent<boolean> {
101
+ }
102
+ /**
103
+ * Pin position component (ID: 10)
104
+ */
105
+ export interface PinPositionComponent extends NAFComponent<[number, number, number]> {
106
+ }
107
+ /**
108
+ * Pin scale component (ID: 11)
109
+ */
110
+ export interface PinScaleComponent extends NAFComponent<[number, number, number]> {
111
+ }
112
+ /**
113
+ * Face snapshot enabled component (ID: 12)
114
+ */
115
+ export interface FaceSnapshotEnabledComponent extends NAFComponent<boolean> {
116
+ }
117
+ /**
118
+ * Face snapshot component (ID: 13)
119
+ */
120
+ export interface FaceSnapshotComponent extends NAFComponent<FaceSnapshotData> {
121
+ }
122
+ /**
123
+ * Body rotation component (ID: 14)
124
+ */
125
+ export interface BodyRotationComponent extends NAFComponent<[number, number, number]> {
126
+ }
127
+ /**
128
+ * Type-safe mapping of component IDs to their respective types
129
+ */
130
+ export interface NAFComponentMap {
131
+ [NafComponentId.Position]?: PositionComponent;
132
+ [NafComponentId.Velocity]?: VelocityComponent;
133
+ [NafComponentId.Scale]?: ScaleComponent;
134
+ [NafComponentId.Avatar]?: AvatarComponent;
135
+ [NafComponentId.HeadRotation]?: HeadRotationComponent;
136
+ [NafComponentId.LeftHandRotation]?: HandRotationComponent;
137
+ [NafComponentId.RightHandRotation]?: HandRotationComponent;
138
+ [NafComponentId.LeftHandPosition]?: HandPositionComponent;
139
+ [NafComponentId.RightHandPosition]?: HandPositionComponent;
140
+ [NafComponentId.HandRaised]?: HandRaisedComponent;
141
+ [NafComponentId.PinPosition]?: PinPositionComponent;
142
+ [NafComponentId.PinScale]?: PinScaleComponent;
143
+ [NafComponentId.FaceSnapshotEnabled]?: FaceSnapshotEnabledComponent;
144
+ [NafComponentId.FaceSnapshot]?: FaceSnapshotComponent;
145
+ [NafComponentId.BodyRotation]?: BodyRotationComponent;
146
+ }
147
+ /**
148
+ * NAF message data types
149
+ * - 'u': Create/update entity
150
+ * - 'um': Update multiple entities
151
+ * - 'r': Remove entity
152
+ */
153
+ export type NAFDataType = 'u' | 'um' | 'r';
154
+ /**
155
+ * Base NAF entity data
156
+ */
157
+ export interface NAFEntityData {
158
+ networkId: string;
159
+ owner: string;
160
+ creator: string;
161
+ lastOwnerTime: number;
162
+ template: string;
163
+ persistent: boolean;
164
+ parent?: unknown;
165
+ components: NAFComponentMap;
166
+ }
167
+ /**
168
+ * NAF create/update message ('u' type)
169
+ */
170
+ export interface NAFCreateMessage {
171
+ dataType: 'u';
172
+ data: NAFEntityData & {
173
+ isFirstSync?: boolean;
174
+ forceRender?: boolean;
175
+ megaphone?: boolean;
176
+ temporaryMegaphone?: boolean;
177
+ };
178
+ }
179
+ /**
180
+ * NAF multi-update message ('um' type)
181
+ */
182
+ export interface NAFMultiUpdateMessage {
183
+ dataType: 'um';
184
+ data: {
185
+ d: NAFEntityData[];
186
+ };
187
+ }
188
+ /**
189
+ * NAF remove message ('r' type)
190
+ */
191
+ export interface NAFRemoveMessage {
192
+ dataType: 'r';
193
+ data: {
194
+ networkId: string;
195
+ };
196
+ }
197
+ /**
198
+ * Union type for all NAF message types
199
+ */
200
+ export type TypedNAFMessage = NAFCreateMessage | NAFMultiUpdateMessage | NAFRemoveMessage;
201
+ /**
202
+ * Type guard for NAF create message
203
+ */
204
+ export declare function isNAFCreateMessage(msg: unknown): msg is NAFCreateMessage;
205
+ /**
206
+ * Type guard for NAF multi-update message
207
+ */
208
+ export declare function isNAFMultiUpdateMessage(msg: unknown): msg is NAFMultiUpdateMessage;
209
+ /**
210
+ * Type guard for NAF remove message
211
+ */
212
+ export declare function isNAFRemoveMessage(msg: unknown): msg is NAFRemoveMessage;
213
+ /**
214
+ * Type guard for any typed NAF message
215
+ */
216
+ export declare function isTypedNAFMessage(msg: unknown): msg is TypedNAFMessage;
217
+ /**
218
+ * Extract position from NAF components
219
+ */
220
+ export declare function extractPosition(components: NAFComponentMap): Position3D | undefined;
221
+ /**
222
+ * Extract avatar data from NAF components
223
+ */
224
+ export declare function extractAvatarData(components: NAFComponentMap): AvatarComponentData | undefined;
225
+ /**
226
+ * Extract body rotation from NAF components
227
+ */
228
+ export declare function extractBodyRotation(components: NAFComponentMap): EulerRotation | undefined;
229
+ //# sourceMappingURL=naf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naf.d.ts","sourceRoot":"","sources":["../../src/types/naf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Comprehensive NAF (Networked A-Frame) type definitions
3
+ * Provides type-safe interfaces for all NAF message components
4
+ */
5
+ import { NafComponentId } from '../builders/NafMessageBuilder.js';
6
+ // ============================================================================
7
+ // Type Guards
8
+ // ============================================================================
9
+ /**
10
+ * Type guard for NAF create message
11
+ */
12
+ export function isNAFCreateMessage(msg) {
13
+ return (typeof msg === 'object' &&
14
+ msg !== null &&
15
+ 'dataType' in msg &&
16
+ msg.dataType === 'u' &&
17
+ 'data' in msg &&
18
+ typeof msg.data === 'object');
19
+ }
20
+ /**
21
+ * Type guard for NAF multi-update message
22
+ */
23
+ export function isNAFMultiUpdateMessage(msg) {
24
+ return (typeof msg === 'object' &&
25
+ msg !== null &&
26
+ 'dataType' in msg &&
27
+ msg.dataType === 'um' &&
28
+ 'data' in msg &&
29
+ typeof msg.data === 'object' &&
30
+ msg.data !== null &&
31
+ 'd' in msg.data &&
32
+ Array.isArray(msg.data.d));
33
+ }
34
+ /**
35
+ * Type guard for NAF remove message
36
+ */
37
+ export function isNAFRemoveMessage(msg) {
38
+ return (typeof msg === 'object' &&
39
+ msg !== null &&
40
+ 'dataType' in msg &&
41
+ msg.dataType === 'r' &&
42
+ 'data' in msg &&
43
+ typeof msg.data === 'object' &&
44
+ msg.data !== null &&
45
+ 'networkId' in msg.data);
46
+ }
47
+ /**
48
+ * Type guard for any typed NAF message
49
+ */
50
+ export function isTypedNAFMessage(msg) {
51
+ return isNAFCreateMessage(msg) || isNAFMultiUpdateMessage(msg) || isNAFRemoveMessage(msg);
52
+ }
53
+ // ============================================================================
54
+ // Helper Functions
55
+ // ============================================================================
56
+ /**
57
+ * Extract position from NAF components
58
+ */
59
+ export function extractPosition(components) {
60
+ const posComponent = components[NafComponentId.Position];
61
+ if (posComponent?.components && Array.isArray(posComponent.components)) {
62
+ const [x = 0, y = 0, z = 0] = posComponent.components;
63
+ return { x, y, z };
64
+ }
65
+ return undefined;
66
+ }
67
+ /**
68
+ * Extract avatar data from NAF components
69
+ */
70
+ export function extractAvatarData(components) {
71
+ const avatarComponent = components[NafComponentId.Avatar];
72
+ if (avatarComponent?.components) {
73
+ if (typeof avatarComponent.components === 'string') {
74
+ return { avatarSrc: avatarComponent.components };
75
+ }
76
+ if (typeof avatarComponent.components === 'object') {
77
+ return avatarComponent.components;
78
+ }
79
+ }
80
+ return undefined;
81
+ }
82
+ /**
83
+ * Extract body rotation from NAF components
84
+ */
85
+ export function extractBodyRotation(components) {
86
+ const rotComponent = components[NafComponentId.BodyRotation];
87
+ if (rotComponent?.components && Array.isArray(rotComponent.components)) {
88
+ const [x = 0, y = 0, z = 0] = rotComponent.components;
89
+ return { x, y, z };
90
+ }
91
+ return undefined;
92
+ }
93
+ //# sourceMappingURL=naf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"naf.js","sourceRoot":"","sources":["../../src/types/naf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * NAF (Networked A-Frame) message parser utilities
3
+ * Uses strongly-typed NAF component definitions for type-safe parsing
4
+ */
5
+ import type { EulerRotation, NAFComponentMap, Position3D, Quaternion } from '../types/naf.js';
6
+ export interface ParsedNAFData {
7
+ position?: Position3D;
8
+ rotation?: Quaternion;
9
+ avatarId?: string;
10
+ nickname?: string;
11
+ headRotation?: EulerRotation;
12
+ bodyRotation?: EulerRotation;
13
+ }
14
+ /**
15
+ * Parse NAF message components into structured data
16
+ * @param components The components object from NAF message
17
+ * @returns Parsed NAF data
18
+ */
19
+ export declare function parseNAFComponents(components: Record<string, unknown> | NAFComponentMap): ParsedNAFData;
20
+ /**
21
+ * Convert Euler angles to quaternion
22
+ * @param x Rotation around X axis (radians)
23
+ * @param y Rotation around Y axis (radians)
24
+ * @param z Rotation around Z axis (radians)
25
+ * @returns Quaternion representation
26
+ */
27
+ export declare function eulerToQuaternion(x: number, y: number, z: number): {
28
+ x: number;
29
+ y: number;
30
+ z: number;
31
+ w: number;
32
+ };
33
+ /**
34
+ * Normalize a quaternion
35
+ * @param q Quaternion to normalize
36
+ * @returns Normalized quaternion
37
+ */
38
+ export declare function normalizeQuaternion(q: {
39
+ x: number;
40
+ y: number;
41
+ z: number;
42
+ w: number;
43
+ }): {
44
+ x: number;
45
+ y: number;
46
+ z: number;
47
+ w: number;
48
+ };
49
+ /**
50
+ * Calculate distance between two 3D positions
51
+ * @param pos1 First position
52
+ * @param pos2 Second position
53
+ * @returns Distance between positions
54
+ */
55
+ export declare function calculateDistance(pos1: {
56
+ x: number;
57
+ y: number;
58
+ z: number;
59
+ }, pos2: {
60
+ x: number;
61
+ y: number;
62
+ z: number;
63
+ }): number;
64
+ //# sourceMappingURL=nafParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nafParser.d.ts","sourceRoot":"","sources":["../../src/utils/nafParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG7F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,GACpD,aAAa,CAqCf;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBhD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IACtF,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAaA;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACzC,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAKR"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * NAF (Networked A-Frame) message parser utilities
3
+ * Uses strongly-typed NAF component definitions for type-safe parsing
4
+ */
5
+ import { NafComponentId } from '../builders/NafMessageBuilder.js';
6
+ import { extractAvatarData, extractBodyRotation, extractPosition } from '../types/naf.js';
7
+ /**
8
+ * Parse NAF message components into structured data
9
+ * @param components The components object from NAF message
10
+ * @returns Parsed NAF data
11
+ */
12
+ export function parseNAFComponents(components) {
13
+ const result = {};
14
+ // Use type-safe component map
15
+ const typedComponents = components;
16
+ // Parse position using type-safe helper
17
+ result.position = extractPosition(typedComponents);
18
+ // Parse head rotation
19
+ const headRotComponent = typedComponents[NafComponentId.HeadRotation];
20
+ if (headRotComponent?.components && Array.isArray(headRotComponent.components)) {
21
+ const [x = 0, y = 0, z = 0] = headRotComponent.components;
22
+ result.headRotation = { x, y, z };
23
+ }
24
+ // Parse body rotation and convert to quaternion
25
+ const bodyRotation = extractBodyRotation(typedComponents);
26
+ if (bodyRotation) {
27
+ result.bodyRotation = bodyRotation;
28
+ result.rotation = eulerToQuaternion(bodyRotation.x, bodyRotation.y, bodyRotation.z);
29
+ }
30
+ // Parse avatar component using type-safe helper
31
+ const avatarData = extractAvatarData(typedComponents);
32
+ if (avatarData) {
33
+ // Extract avatar ID from src URL if present
34
+ const match = avatarData.avatarSrc.match(/avatar_id=([^&]+)/);
35
+ if (match) {
36
+ result.avatarId = match[1];
37
+ }
38
+ }
39
+ // Note: Nickname is not part of standard NAF components in our schema
40
+ // It may be in a custom component or separate message
41
+ return result;
42
+ }
43
+ /**
44
+ * Convert Euler angles to quaternion
45
+ * @param x Rotation around X axis (radians)
46
+ * @param y Rotation around Y axis (radians)
47
+ * @param z Rotation around Z axis (radians)
48
+ * @returns Quaternion representation
49
+ */
50
+ export function eulerToQuaternion(x, y, z) {
51
+ // Half angles
52
+ const hx = x * 0.5;
53
+ const hy = y * 0.5;
54
+ const hz = z * 0.5;
55
+ // Trigonometric values
56
+ const cx = Math.cos(hx);
57
+ const cy = Math.cos(hy);
58
+ const cz = Math.cos(hz);
59
+ const sx = Math.sin(hx);
60
+ const sy = Math.sin(hy);
61
+ const sz = Math.sin(hz);
62
+ // Quaternion components
63
+ return {
64
+ x: sx * cy * cz - cx * sy * sz,
65
+ y: cx * sy * cz + sx * cy * sz,
66
+ z: cx * cy * sz - sx * sy * cz,
67
+ w: cx * cy * cz + sx * sy * sz,
68
+ };
69
+ }
70
+ /**
71
+ * Normalize a quaternion
72
+ * @param q Quaternion to normalize
73
+ * @returns Normalized quaternion
74
+ */
75
+ export function normalizeQuaternion(q) {
76
+ const magnitude = Math.sqrt(q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w);
77
+ if (magnitude === 0) {
78
+ return { x: 0, y: 0, z: 0, w: 1 };
79
+ }
80
+ return {
81
+ x: q.x / magnitude,
82
+ y: q.y / magnitude,
83
+ z: q.z / magnitude,
84
+ w: q.w / magnitude,
85
+ };
86
+ }
87
+ /**
88
+ * Calculate distance between two 3D positions
89
+ * @param pos1 First position
90
+ * @param pos2 Second position
91
+ * @returns Distance between positions
92
+ */
93
+ export function calculateDistance(pos1, pos2) {
94
+ const dx = pos1.x - pos2.x;
95
+ const dy = pos1.y - pos2.y;
96
+ const dz = pos1.z - pos2.z;
97
+ return Math.sqrt(dx * dx + dy * dy + dz * dz);
98
+ }
99
+ //# sourceMappingURL=nafParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nafParser.js","sourceRoot":"","sources":["../../src/utils/nafParser.ts"],"names":[],"mappings":"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"}