@armoyu/core 1.0.0

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 (232) hide show
  1. package/dist/api/ApiClient.d.ts +16 -0
  2. package/dist/api/ApiClient.d.ts.map +1 -0
  3. package/dist/api/ApiClient.js +50 -0
  4. package/dist/api/ApiClient.js.map +1 -0
  5. package/dist/index.d.ts +18 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +25 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/models/auth/Role.d.ts +14 -0
  10. package/dist/models/auth/Role.d.ts.map +1 -0
  11. package/dist/models/auth/Role.js +28 -0
  12. package/dist/models/auth/Role.js.map +1 -0
  13. package/dist/models/auth/Session.d.ts +23 -0
  14. package/dist/models/auth/Session.d.ts.map +1 -0
  15. package/dist/models/auth/Session.js +43 -0
  16. package/dist/models/auth/Session.js.map +1 -0
  17. package/dist/models/auth/User.d.ts +52 -0
  18. package/dist/models/auth/User.d.ts.map +1 -0
  19. package/dist/models/auth/User.js +98 -0
  20. package/dist/models/auth/User.js.map +1 -0
  21. package/dist/models/community/Classroom.d.ts +18 -0
  22. package/dist/models/community/Classroom.d.ts.map +1 -0
  23. package/dist/models/community/Classroom.js +35 -0
  24. package/dist/models/community/Classroom.js.map +1 -0
  25. package/dist/models/community/Event.d.ts +26 -0
  26. package/dist/models/community/Event.d.ts.map +1 -0
  27. package/dist/models/community/Event.js +34 -0
  28. package/dist/models/community/Event.js.map +1 -0
  29. package/dist/models/community/Faculty.d.ts +16 -0
  30. package/dist/models/community/Faculty.d.ts.map +1 -0
  31. package/dist/models/community/Faculty.js +31 -0
  32. package/dist/models/community/Faculty.js.map +1 -0
  33. package/dist/models/community/Forum.d.ts +25 -0
  34. package/dist/models/community/Forum.d.ts.map +1 -0
  35. package/dist/models/community/Forum.js +37 -0
  36. package/dist/models/community/Forum.js.map +1 -0
  37. package/dist/models/community/Giveaway.d.ts +21 -0
  38. package/dist/models/community/Giveaway.d.ts.map +1 -0
  39. package/dist/models/community/Giveaway.js +40 -0
  40. package/dist/models/community/Giveaway.js.map +1 -0
  41. package/dist/models/community/Group.d.ts +37 -0
  42. package/dist/models/community/Group.d.ts.map +1 -0
  43. package/dist/models/community/Group.js +77 -0
  44. package/dist/models/community/Group.js.map +1 -0
  45. package/dist/models/community/School.d.ts +27 -0
  46. package/dist/models/community/School.d.ts.map +1 -0
  47. package/dist/models/community/School.js +50 -0
  48. package/dist/models/community/School.js.map +1 -0
  49. package/dist/models/community/SchoolTeam.d.ts +26 -0
  50. package/dist/models/community/SchoolTeam.d.ts.map +1 -0
  51. package/dist/models/community/SchoolTeam.js +43 -0
  52. package/dist/models/community/SchoolTeam.js.map +1 -0
  53. package/dist/models/community/Station.d.ts +68 -0
  54. package/dist/models/community/Station.d.ts.map +1 -0
  55. package/dist/models/community/Station.js +130 -0
  56. package/dist/models/community/Station.js.map +1 -0
  57. package/dist/models/community/Survey.d.ts +26 -0
  58. package/dist/models/community/Survey.d.ts.map +1 -0
  59. package/dist/models/community/Survey.js +53 -0
  60. package/dist/models/community/Survey.js.map +1 -0
  61. package/dist/models/community/SurveyAnswer.d.ts +14 -0
  62. package/dist/models/community/SurveyAnswer.d.ts.map +1 -0
  63. package/dist/models/community/SurveyAnswer.js +28 -0
  64. package/dist/models/community/SurveyAnswer.js.map +1 -0
  65. package/dist/models/community/Team.d.ts +12 -0
  66. package/dist/models/community/Team.d.ts.map +1 -0
  67. package/dist/models/community/Team.js +26 -0
  68. package/dist/models/community/Team.js.map +1 -0
  69. package/dist/models/community/Workplace.d.ts +17 -0
  70. package/dist/models/community/Workplace.d.ts.map +1 -0
  71. package/dist/models/community/Workplace.js +34 -0
  72. package/dist/models/community/Workplace.js.map +1 -0
  73. package/dist/models/content/Game.d.ts +18 -0
  74. package/dist/models/content/Game.d.ts.map +1 -0
  75. package/dist/models/content/Game.js +41 -0
  76. package/dist/models/content/Game.js.map +1 -0
  77. package/dist/models/content/Media.d.ts +16 -0
  78. package/dist/models/content/Media.d.ts.map +1 -0
  79. package/dist/models/content/Media.js +32 -0
  80. package/dist/models/content/Media.js.map +1 -0
  81. package/dist/models/content/Mod.d.ts +20 -0
  82. package/dist/models/content/Mod.d.ts.map +1 -0
  83. package/dist/models/content/Mod.js +39 -0
  84. package/dist/models/content/Mod.js.map +1 -0
  85. package/dist/models/content/News.d.ts +23 -0
  86. package/dist/models/content/News.d.ts.map +1 -0
  87. package/dist/models/content/News.js +43 -0
  88. package/dist/models/content/News.js.map +1 -0
  89. package/dist/models/content/Project.d.ts +26 -0
  90. package/dist/models/content/Project.d.ts.map +1 -0
  91. package/dist/models/content/Project.js +45 -0
  92. package/dist/models/content/Project.js.map +1 -0
  93. package/dist/models/core/PlatformStats.d.ts +41 -0
  94. package/dist/models/core/PlatformStats.d.ts.map +1 -0
  95. package/dist/models/core/PlatformStats.js +61 -0
  96. package/dist/models/core/PlatformStats.js.map +1 -0
  97. package/dist/models/core/SystemSettings.d.ts +33 -0
  98. package/dist/models/core/SystemSettings.d.ts.map +1 -0
  99. package/dist/models/core/SystemSettings.js +42 -0
  100. package/dist/models/core/SystemSettings.js.map +1 -0
  101. package/dist/models/index.d.ts +37 -0
  102. package/dist/models/index.d.ts.map +1 -0
  103. package/dist/models/index.js +53 -0
  104. package/dist/models/index.js.map +1 -0
  105. package/dist/models/shop/CartItem.d.ts +13 -0
  106. package/dist/models/shop/CartItem.d.ts.map +1 -0
  107. package/dist/models/shop/CartItem.js +27 -0
  108. package/dist/models/shop/CartItem.js.map +1 -0
  109. package/dist/models/shop/Order.d.ts +19 -0
  110. package/dist/models/shop/Order.d.ts.map +1 -0
  111. package/dist/models/shop/Order.js +40 -0
  112. package/dist/models/shop/Order.js.map +1 -0
  113. package/dist/models/shop/Product.d.ts +19 -0
  114. package/dist/models/shop/Product.d.ts.map +1 -0
  115. package/dist/models/shop/Product.js +52 -0
  116. package/dist/models/shop/Product.js.map +1 -0
  117. package/dist/models/social/Chat.d.ts +25 -0
  118. package/dist/models/social/Chat.d.ts.map +1 -0
  119. package/dist/models/social/Chat.js +48 -0
  120. package/dist/models/social/Chat.js.map +1 -0
  121. package/dist/models/social/ChatMessage.d.ts +16 -0
  122. package/dist/models/social/ChatMessage.d.ts.map +1 -0
  123. package/dist/models/social/ChatMessage.js +31 -0
  124. package/dist/models/social/ChatMessage.js.map +1 -0
  125. package/dist/models/social/Comment.d.ts +20 -0
  126. package/dist/models/social/Comment.d.ts.map +1 -0
  127. package/dist/models/social/Comment.js +38 -0
  128. package/dist/models/social/Comment.js.map +1 -0
  129. package/dist/models/social/Group.d.ts +30 -0
  130. package/dist/models/social/Group.d.ts.map +1 -0
  131. package/dist/models/social/Group.js +66 -0
  132. package/dist/models/social/Group.js.map +1 -0
  133. package/dist/models/social/Leaderboard.d.ts +24 -0
  134. package/dist/models/social/Leaderboard.d.ts.map +1 -0
  135. package/dist/models/social/Leaderboard.js +56 -0
  136. package/dist/models/social/Leaderboard.js.map +1 -0
  137. package/dist/models/social/Note.d.ts +15 -0
  138. package/dist/models/social/Note.d.ts.map +1 -0
  139. package/dist/models/social/Note.js +29 -0
  140. package/dist/models/social/Note.js.map +1 -0
  141. package/dist/models/social/Notification.d.ts +30 -0
  142. package/dist/models/social/Notification.d.ts.map +1 -0
  143. package/dist/models/social/Notification.js +88 -0
  144. package/dist/models/social/Notification.js.map +1 -0
  145. package/dist/models/social/NotificationSender.d.ts +18 -0
  146. package/dist/models/social/NotificationSender.d.ts.map +1 -0
  147. package/dist/models/social/NotificationSender.js +27 -0
  148. package/dist/models/social/NotificationSender.js.map +1 -0
  149. package/dist/models/social/Post.d.ts +41 -0
  150. package/dist/models/social/Post.d.ts.map +1 -0
  151. package/dist/models/social/Post.js +53 -0
  152. package/dist/models/social/Post.js.map +1 -0
  153. package/dist/models/social/Story.d.ts +16 -0
  154. package/dist/models/social/Story.d.ts.map +1 -0
  155. package/dist/models/social/Story.js +31 -0
  156. package/dist/models/social/Story.js.map +1 -0
  157. package/dist/models/social/SupportTicket.d.ts +20 -0
  158. package/dist/models/social/SupportTicket.d.ts.map +1 -0
  159. package/dist/models/social/SupportTicket.js +38 -0
  160. package/dist/models/social/SupportTicket.js.map +1 -0
  161. package/dist/models/store/StoreItem.d.ts +17 -0
  162. package/dist/models/store/StoreItem.d.ts.map +1 -0
  163. package/dist/models/store/StoreItem.js +34 -0
  164. package/dist/models/store/StoreItem.js.map +1 -0
  165. package/dist/services/AuthService.d.ts +30 -0
  166. package/dist/services/AuthService.d.ts.map +1 -0
  167. package/dist/services/AuthService.js +88 -0
  168. package/dist/services/AuthService.js.map +1 -0
  169. package/dist/services/SocialService.d.ts +28 -0
  170. package/dist/services/SocialService.d.ts.map +1 -0
  171. package/dist/services/SocialService.js +91 -0
  172. package/dist/services/SocialService.js.map +1 -0
  173. package/dist/services/SocketService.d.ts +20 -0
  174. package/dist/services/SocketService.d.ts.map +1 -0
  175. package/dist/services/SocketService.js +122 -0
  176. package/dist/services/SocketService.js.map +1 -0
  177. package/dist/services/UserService.d.ts +23 -0
  178. package/dist/services/UserService.d.ts.map +1 -0
  179. package/dist/services/UserService.js +73 -0
  180. package/dist/services/UserService.js.map +1 -0
  181. package/dist/types/stats.d.ts +17 -0
  182. package/dist/types/stats.d.ts.map +1 -0
  183. package/dist/types/stats.js +2 -0
  184. package/dist/types/stats.js.map +1 -0
  185. package/package.json +21 -0
  186. package/src/api/ApiClient.ts +57 -0
  187. package/src/index.ts +24 -0
  188. package/src/models/auth/Role.ts +26 -0
  189. package/src/models/auth/Session.ts +50 -0
  190. package/src/models/auth/User.ts +111 -0
  191. package/src/models/community/Classroom.ts +34 -0
  192. package/src/models/community/Event.ts +32 -0
  193. package/src/models/community/Faculty.ts +30 -0
  194. package/src/models/community/Forum.ts +42 -0
  195. package/src/models/community/Giveaway.ts +39 -0
  196. package/src/models/community/Group.ts +78 -0
  197. package/src/models/community/School.ts +51 -0
  198. package/src/models/community/SchoolTeam.ts +49 -0
  199. package/src/models/community/Station.ts +145 -0
  200. package/src/models/community/Survey.ts +53 -0
  201. package/src/models/community/SurveyAnswer.ts +26 -0
  202. package/src/models/community/Team.ts +24 -0
  203. package/src/models/community/Workplace.ts +32 -0
  204. package/src/models/content/Game.ts +39 -0
  205. package/src/models/content/Media.ts +30 -0
  206. package/src/models/content/Mod.ts +38 -0
  207. package/src/models/content/News.ts +43 -0
  208. package/src/models/content/Project.ts +49 -0
  209. package/src/models/core/PlatformStats.ts +74 -0
  210. package/src/models/core/SystemSettings.ts +59 -0
  211. package/src/models/index.ts +37 -0
  212. package/src/models/shop/CartItem.ts +31 -0
  213. package/src/models/shop/Order.ts +48 -0
  214. package/src/models/shop/Product.ts +61 -0
  215. package/src/models/social/Chat.ts +47 -0
  216. package/src/models/social/ChatMessage.ts +30 -0
  217. package/src/models/social/Comment.ts +38 -0
  218. package/src/models/social/Group.ts +63 -0
  219. package/src/models/social/Leaderboard.ts +57 -0
  220. package/src/models/social/Note.ts +28 -0
  221. package/src/models/social/Notification.ts +99 -0
  222. package/src/models/social/NotificationSender.ts +36 -0
  223. package/src/models/social/Post.ts +75 -0
  224. package/src/models/social/Story.ts +30 -0
  225. package/src/models/social/SupportTicket.ts +38 -0
  226. package/src/models/store/StoreItem.ts +32 -0
  227. package/src/services/AuthService.ts +91 -0
  228. package/src/services/SocialService.ts +92 -0
  229. package/src/services/SocketService.ts +112 -0
  230. package/src/services/UserService.ts +69 -0
  231. package/src/types/stats.ts +17 -0
  232. package/tsconfig.json +16 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Story.js","sourceRoot":"","sources":["../../../src/models/social/Story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,KAAK;IAChB,EAAE,GAAW,EAAE,CAAC;IAChB,IAAI,GAAgB,IAAI,CAAC;IACzB,KAAK,GAAW,EAAE,CAAC;IACnB,SAAS,GAAY,KAAK,CAAC;IAC3B,IAAI,GAAY,KAAK,CAAC;IAEtB,YAAY,IAAoB;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,CAAC,IAAyB;QACvC,OAAO,IAAI,KAAK,CAAC;YACf,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAChI,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;SACzB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { User } from '../auth/User';
2
+ /**
3
+ * Represents a Support Ticket in the armoyu platform.
4
+ */
5
+ export declare class SupportTicket {
6
+ id: string;
7
+ subject: string;
8
+ category: string;
9
+ status: string;
10
+ priority: string;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ lastMessage: string;
14
+ author?: User;
15
+ constructor(data: Partial<SupportTicket>);
16
+ /**
17
+ * Instantiates a SupportTicket object from a JSON object.
18
+ */
19
+ static fromJSON(json: Record<string, any>): SupportTicket;
20
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportTicket.d.ts","sourceRoot":"","sources":["../../../src/models/social/SupportTicket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC;;GAEG;AACH,qBAAa,aAAa;IACxB,EAAE,EAAE,MAAM,CAAM;IAChB,OAAO,EAAE,MAAM,CAAM;IACrB,QAAQ,EAAE,MAAM,CAAW;IAC3B,MAAM,EAAE,MAAM,CAAU;IACxB,QAAQ,EAAE,MAAM,CAAY;IAC5B,SAAS,EAAE,MAAM,CAAM;IACvB,SAAS,EAAE,MAAM,CAAM;IACvB,WAAW,EAAE,MAAM,CAAM;IACzB,MAAM,CAAC,EAAE,IAAI,CAAC;gBAEF,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC;IAIxC;;OAEG;IAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa;CAa1D"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SupportTicket = void 0;
4
+ const User_1 = require("../auth/User");
5
+ /**
6
+ * Represents a Support Ticket in the armoyu platform.
7
+ */
8
+ class SupportTicket {
9
+ constructor(data) {
10
+ this.id = '';
11
+ this.subject = '';
12
+ this.category = 'Genel'; // Şikayet, Öneri, Bildiri
13
+ this.status = 'Açık'; // Açık, Cevaplandı, Kapandı
14
+ this.priority = 'Normal'; // Düşük, Normal, Yüksek
15
+ this.createdAt = '';
16
+ this.updatedAt = '';
17
+ this.lastMessage = '';
18
+ Object.assign(this, data);
19
+ }
20
+ /**
21
+ * Instantiates a SupportTicket object from a JSON object.
22
+ */
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ static fromJSON(json) {
25
+ return new SupportTicket({
26
+ id: json.id || '',
27
+ subject: json.subject || '',
28
+ category: json.category || 'Genel',
29
+ status: json.status || 'Açık',
30
+ priority: json.priority || 'Normal',
31
+ createdAt: json.createdAt || json.created_at || '',
32
+ updatedAt: json.updatedAt || json.updated_at || '',
33
+ lastMessage: json.lastMessage || json.last_message || '',
34
+ author: json.author ? User_1.User.fromJSON(json.author) : undefined,
35
+ });
36
+ }
37
+ }
38
+ exports.SupportTicket = SupportTicket;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SupportTicket.js","sourceRoot":"","sources":["../../../src/models/social/SupportTicket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB,EAAE,GAAW,EAAE,CAAC;IAChB,OAAO,GAAW,EAAE,CAAC;IACrB,QAAQ,GAAW,OAAO,CAAC,CAAC,0BAA0B;IACtD,MAAM,GAAW,MAAM,CAAC,CAAC,4BAA4B;IACrD,QAAQ,GAAW,QAAQ,CAAC,CAAC,wBAAwB;IACrD,SAAS,GAAW,EAAE,CAAC;IACvB,SAAS,GAAW,EAAE,CAAC;IACvB,WAAW,GAAW,EAAE,CAAC;IACzB,MAAM,CAAQ;IAEd,YAAY,IAA4B;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,CAAC,IAAyB;QACvC,OAAO,IAAI,aAAa,CAAC;YACvB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO;YAClC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE;YAClD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE;YAClD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7D,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Represents a Store Item (Mağaza Eşyası/Ürün) in the aramizdakioyuncu.com platform.
3
+ */
4
+ export declare class StoreItem {
5
+ id: string;
6
+ name: string;
7
+ category: string;
8
+ price: string;
9
+ image: string;
10
+ isFeatured: boolean;
11
+ badge: string;
12
+ constructor(data: Partial<StoreItem>);
13
+ /**
14
+ * Instantiates a StoreItem object from a JSON object.
15
+ */
16
+ static fromJSON(json: Record<string, any>): StoreItem;
17
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreItem.d.ts","sourceRoot":"","sources":["../../../src/models/store/StoreItem.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,SAAS;IACpB,EAAE,EAAE,MAAM,CAAM;IAChB,IAAI,EAAE,MAAM,CAAM;IAClB,QAAQ,EAAE,MAAM,CAAM;IACtB,KAAK,EAAE,MAAM,CAAM;IACnB,KAAK,EAAE,MAAM,CAAM;IACnB,UAAU,EAAE,OAAO,CAAS;IAC5B,KAAK,EAAE,MAAM,CAAM;gBAEP,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC;IAIpC;;OAEG;IAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS;CAWtD"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreItem = void 0;
4
+ /**
5
+ * Represents a Store Item (Mağaza Eşyası/Ürün) in the aramizdakioyuncu.com platform.
6
+ */
7
+ class StoreItem {
8
+ constructor(data) {
9
+ this.id = '';
10
+ this.name = '';
11
+ this.category = '';
12
+ this.price = '';
13
+ this.image = '';
14
+ this.isFeatured = false;
15
+ this.badge = '';
16
+ Object.assign(this, data);
17
+ }
18
+ /**
19
+ * Instantiates a StoreItem object from a JSON object.
20
+ */
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ static fromJSON(json) {
23
+ return new StoreItem({
24
+ id: json.id || '',
25
+ name: json.name || json.title || '',
26
+ category: json.category || '',
27
+ price: json.price || '',
28
+ image: json.image || '',
29
+ isFeatured: json.isFeatured || false,
30
+ badge: json.badge || '',
31
+ });
32
+ }
33
+ }
34
+ exports.StoreItem = StoreItem;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreItem.js","sourceRoot":"","sources":["../../../src/models/store/StoreItem.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,EAAE,GAAW,EAAE,CAAC;IAChB,IAAI,GAAW,EAAE,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IACtB,KAAK,GAAW,EAAE,CAAC;IACnB,KAAK,GAAW,EAAE,CAAC;IACnB,UAAU,GAAY,KAAK,CAAC;IAC5B,KAAK,GAAW,EAAE,CAAC;IAEnB,YAAY,IAAwB;QAClC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,8DAA8D;IAC9D,MAAM,CAAC,QAAQ,CAAC,IAAyB;QACvC,OAAO,IAAI,SAAS,CAAC;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import { User } from '../models/auth/User';
2
+ import { Session } from '../models/auth/Session';
3
+ export declare class AuthService {
4
+ private static currentUser;
5
+ private static session;
6
+ /**
7
+ * Authenticate a user with username and password.
8
+ */
9
+ static login(username: string, password: string): Promise<{
10
+ user: User;
11
+ session: Session;
12
+ }>;
13
+ /**
14
+ * Register a new user.
15
+ */
16
+ static register(data: any): Promise<{
17
+ user: User;
18
+ }>;
19
+ /**
20
+ * Logout the current user.
21
+ */
22
+ static logout(): Promise<void>;
23
+ /**
24
+ * Get the currently authenticated user's profile.
25
+ */
26
+ static me(): Promise<User | null>;
27
+ static getCurrentUser(): User | null;
28
+ static getSession(): Session | null;
29
+ static isAuthenticated(): boolean;
30
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthService.d.ts","sourceRoot":"","sources":["../../src/services/AuthService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAqB;IAC/C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAwB;IAE9C;;OAEG;WACU,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAsBjG;;OAEG;WACU,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAUzD;;OAEG;WACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpC;;OAEG;WACU,EAAE,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAYvC,MAAM,CAAC,cAAc,IAAI,IAAI,GAAG,IAAI;IAIpC,MAAM,CAAC,UAAU,IAAI,OAAO,GAAG,IAAI;IAInC,MAAM,CAAC,eAAe,IAAI,OAAO;CAGlC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthService = void 0;
4
+ const ApiClient_1 = require("../api/ApiClient");
5
+ const User_1 = require("../models/auth/User");
6
+ const Session_1 = require("../models/auth/Session");
7
+ class AuthService {
8
+ /**
9
+ * Authenticate a user with username and password.
10
+ */
11
+ static async login(username, password) {
12
+ try {
13
+ const response = await ApiClient_1.ApiClient.post('/auth/login', {
14
+ username,
15
+ password
16
+ });
17
+ this.currentUser = User_1.User.fromJSON(response.user);
18
+ this.session = Session_1.Session.fromJSON(response.session);
19
+ // Store token in localStorage if available
20
+ if (typeof window !== 'undefined' && this.session.token) {
21
+ localStorage.setItem('armoyu_token', this.session.token);
22
+ }
23
+ return { user: this.currentUser, session: this.session };
24
+ }
25
+ catch (error) {
26
+ console.error('[AuthService] Login failed:', error);
27
+ throw error;
28
+ }
29
+ }
30
+ /**
31
+ * Register a new user.
32
+ */
33
+ static async register(data) {
34
+ try {
35
+ const response = await ApiClient_1.ApiClient.post('/auth/register', data);
36
+ return { user: User_1.User.fromJSON(response.user) };
37
+ }
38
+ catch (error) {
39
+ console.error('[AuthService] Registration failed:', error);
40
+ throw error;
41
+ }
42
+ }
43
+ /**
44
+ * Logout the current user.
45
+ */
46
+ static async logout() {
47
+ try {
48
+ await ApiClient_1.ApiClient.post('/auth/logout', {});
49
+ }
50
+ catch (error) {
51
+ console.error('[AuthService] Logout API call failed:', error);
52
+ }
53
+ finally {
54
+ this.currentUser = null;
55
+ this.session = null;
56
+ if (typeof window !== 'undefined') {
57
+ localStorage.removeItem('armoyu_token');
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Get the currently authenticated user's profile.
63
+ */
64
+ static async me() {
65
+ try {
66
+ if (this.currentUser)
67
+ return this.currentUser;
68
+ const response = await ApiClient_1.ApiClient.get('/auth/me');
69
+ this.currentUser = User_1.User.fromJSON(response.user);
70
+ return this.currentUser;
71
+ }
72
+ catch (error) {
73
+ return null;
74
+ }
75
+ }
76
+ static getCurrentUser() {
77
+ return this.currentUser;
78
+ }
79
+ static getSession() {
80
+ return this.session;
81
+ }
82
+ static isAuthenticated() {
83
+ return !!this.currentUser;
84
+ }
85
+ }
86
+ exports.AuthService = AuthService;
87
+ AuthService.currentUser = null;
88
+ AuthService.session = null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthService.js","sourceRoot":"","sources":["../../src/services/AuthService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Post } from '../models/social/Post';
2
+ import { Notification } from '../models/social/Notification';
3
+ export declare class SocialService {
4
+ /**
5
+ * Fetch the social feed (posts from follows/groups).
6
+ */
7
+ static getFeed(page?: number): Promise<Post[]>;
8
+ /**
9
+ * Create a new post.
10
+ */
11
+ static createPost(content: string, media?: any[]): Promise<Post | null>;
12
+ /**
13
+ * Like or unlike a post.
14
+ */
15
+ static toggleLike(postId: string): Promise<boolean>;
16
+ /**
17
+ * Add a comment to a post.
18
+ */
19
+ static addComment(postId: string, content: string): Promise<any>;
20
+ /**
21
+ * Get user notifications.
22
+ */
23
+ static getNotifications(): Promise<Notification[]>;
24
+ /**
25
+ * Mark a notification as read.
26
+ */
27
+ static markNotificationAsRead(notificationId: string): Promise<void>;
28
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocialService.d.ts","sourceRoot":"","sources":["../../src/services/SocialService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAI7D,qBAAa,aAAa;IACxB;;OAEG;WACU,OAAO,CAAC,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAUvD;;OAEG;WACU,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAe7E;;OAEG;WACU,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAczD;;OAEG;WACU,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAUtE;;OAEG;WACU,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAUxD;;OAEG;WACU,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO3E"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SocialService = void 0;
4
+ const ApiClient_1 = require("../api/ApiClient");
5
+ const Post_1 = require("../models/social/Post");
6
+ const Notification_1 = require("../models/social/Notification");
7
+ const SocketService_1 = require("./SocketService");
8
+ class SocialService {
9
+ /**
10
+ * Fetch the social feed (posts from follows/groups).
11
+ */
12
+ static async getFeed(page = 1) {
13
+ try {
14
+ const response = await ApiClient_1.ApiClient.get(`/social/feed?page=${page}`);
15
+ return response.map(p => Post_1.Post.fromJSON(p));
16
+ }
17
+ catch (error) {
18
+ console.error('[SocialService] Fetching feed failed:', error);
19
+ return [];
20
+ }
21
+ }
22
+ /**
23
+ * Create a new post.
24
+ */
25
+ static async createPost(content, media) {
26
+ try {
27
+ const response = await ApiClient_1.ApiClient.post('/social/posts', { content, media });
28
+ const post = Post_1.Post.fromJSON(response);
29
+ // Notify via socket
30
+ SocketService_1.socketService.emit('post', post);
31
+ return post;
32
+ }
33
+ catch (error) {
34
+ console.error('[SocialService] Creating post failed:', error);
35
+ return null;
36
+ }
37
+ }
38
+ /**
39
+ * Like or unlike a post.
40
+ */
41
+ static async toggleLike(postId) {
42
+ try {
43
+ const response = await ApiClient_1.ApiClient.post(`/social/posts/${postId}/like`, {});
44
+ // Emit socket event for real-time update
45
+ SocketService_1.socketService.emit('post_like', { postId, liked: response.liked });
46
+ return response.liked;
47
+ }
48
+ catch (error) {
49
+ console.error('[SocialService] Toggle like failed:', error);
50
+ return false;
51
+ }
52
+ }
53
+ /**
54
+ * Add a comment to a post.
55
+ */
56
+ static async addComment(postId, content) {
57
+ try {
58
+ const response = await ApiClient_1.ApiClient.post(`/social/posts/${postId}/comments`, { content });
59
+ return response;
60
+ }
61
+ catch (error) {
62
+ console.error('[SocialService] Adding comment failed:', error);
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Get user notifications.
68
+ */
69
+ static async getNotifications() {
70
+ try {
71
+ const response = await ApiClient_1.ApiClient.get('/social/notifications');
72
+ return response.map(n => Notification_1.Notification.fromJSON(n));
73
+ }
74
+ catch (error) {
75
+ console.error('[SocialService] Fetching notifications failed:', error);
76
+ return [];
77
+ }
78
+ }
79
+ /**
80
+ * Mark a notification as read.
81
+ */
82
+ static async markNotificationAsRead(notificationId) {
83
+ try {
84
+ await ApiClient_1.ApiClient.post(`/social/notifications/${notificationId}/read`, {});
85
+ }
86
+ catch (error) {
87
+ console.error('[SocialService] Marking notification as read failed:', error);
88
+ }
89
+ }
90
+ }
91
+ exports.SocialService = SocialService;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocialService.js","sourceRoot":"","sources":["../../src/services/SocialService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export type SocketEvent = 'message' | 'status' | 'typing' | 'notification' | 'post' | 'post_like' | 'post_repost_count' | 'connect' | 'disconnect';
2
+ type SocketListener = (data: unknown) => void;
3
+ /**
4
+ * A production-ready WebSocket service for the ARMOYU platform.
5
+ * Connects to the standalone armoyu-socket-server.
6
+ */
7
+ declare class SocketService {
8
+ private socket;
9
+ isConnected: boolean;
10
+ private listeners;
11
+ private socketUrl;
12
+ constructor();
13
+ setSocketUrl(url: string): void;
14
+ private connect;
15
+ private emitInternal;
16
+ on(event: SocketEvent, callback: SocketListener): () => void;
17
+ emit(event: SocketEvent, data: unknown): void;
18
+ }
19
+ export declare const socketService: SocketService;
20
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketService.d.ts","sourceRoot":"","sources":["../../src/services/SocketService.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,MAAM,GACN,WAAW,GACX,mBAAmB,GACnB,SAAS,GACT,YAAY,CAAC;AAEjB,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAE9C;;;GAGG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAiB;IACxB,WAAW,EAAE,OAAO,CAAS;IACpC,OAAO,CAAC,SAAS,CAAiD;IAClE,OAAO,CAAC,SAAS,CAAuC;;IASxD,YAAY,CAAC,GAAG,EAAE,MAAM;YAIV,OAAO;IA8CrB,OAAO,CAAC,YAAY;IAKpB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI;IAgB5D,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO;CAQvC;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.socketService = void 0;
37
+ /**
38
+ * A production-ready WebSocket service for the ARMOYU platform.
39
+ * Connects to the standalone armoyu-socket-server.
40
+ */
41
+ class SocketService {
42
+ constructor() {
43
+ this.socket = null;
44
+ this.isConnected = false;
45
+ this.listeners = new Map();
46
+ this.socketUrl = 'https://socket.armoyu.com';
47
+ // Initialize only on the client side
48
+ if (typeof window !== 'undefined') {
49
+ this.connect();
50
+ }
51
+ }
52
+ setSocketUrl(url) {
53
+ this.socketUrl = url;
54
+ }
55
+ async connect() {
56
+ try {
57
+ // Dynamic import to avoid SSR issues
58
+ const { io } = await Promise.resolve().then(() => __importStar(require('socket.io-client')));
59
+ console.log('[SocketService] Connecting to socket server...');
60
+ const sock = io(this.socketUrl, {
61
+ transports: ['websocket'],
62
+ reconnection: true,
63
+ reconnectionAttempts: 10,
64
+ });
65
+ this.socket = sock;
66
+ sock.on('connect', () => {
67
+ console.log('[SocketService] Connected! ID:', sock.id);
68
+ this.isConnected = true;
69
+ this.emitInternal('connect', { status: 'online', socketId: sock.id });
70
+ });
71
+ sock.on('disconnect', () => {
72
+ console.log('[SocketService] Disconnected.');
73
+ this.isConnected = false;
74
+ this.emitInternal('disconnect', { status: 'offline' });
75
+ });
76
+ const events = [
77
+ 'message',
78
+ 'typing',
79
+ 'notification',
80
+ 'status',
81
+ 'post',
82
+ 'post_like',
83
+ 'post_repost_count',
84
+ ];
85
+ events.forEach((event) => {
86
+ sock.on(event, (data) => {
87
+ this.emitInternal(event, data);
88
+ });
89
+ });
90
+ }
91
+ catch (err) {
92
+ console.error('[SocketService] Connection failed:', err);
93
+ }
94
+ }
95
+ emitInternal(event, data) {
96
+ const handlers = this.listeners.get(event) || [];
97
+ handlers.forEach((cb) => cb(data));
98
+ }
99
+ on(event, callback) {
100
+ if (!this.listeners.has(event)) {
101
+ this.listeners.set(event, []);
102
+ }
103
+ this.listeners.get(event).push(callback);
104
+ if (event === 'connect' && this.isConnected) {
105
+ callback({ status: 'online', alreadyConnected: true });
106
+ }
107
+ return () => {
108
+ const cbs = this.listeners.get(event) || [];
109
+ this.listeners.set(event, cbs.filter((cb) => cb !== callback));
110
+ };
111
+ }
112
+ emit(event, data) {
113
+ const sock = this.socket;
114
+ if (sock && (this.isConnected || sock.connected)) {
115
+ sock.emit(event, data);
116
+ }
117
+ else {
118
+ console.warn(`[SocketService] Cannot emit '${event}', not connected.`);
119
+ }
120
+ }
121
+ }
122
+ exports.socketService = new SocketService();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SocketService.js","sourceRoot":"","sources":["../../src/services/SocketService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { User } from '../models/auth/User';
2
+ export declare class UserService {
3
+ /**
4
+ * Search for users based on a query string.
5
+ */
6
+ static search(query: string): Promise<User[]>;
7
+ /**
8
+ * Get a specific user's public profile.
9
+ */
10
+ static getProfile(username: string): Promise<User | null>;
11
+ /**
12
+ * Follow or unfollow a user.
13
+ */
14
+ static toggleFollow(userId: string): Promise<boolean>;
15
+ /**
16
+ * Get a user's friends list.
17
+ */
18
+ static getFriends(userId: string): Promise<User[]>;
19
+ /**
20
+ * Update the current user's profile information.
21
+ */
22
+ static updateProfile(data: Partial<User>): Promise<User | null>;
23
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserService.d.ts","sourceRoot":"","sources":["../../src/services/UserService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C,qBAAa,WAAW;IACtB;;OAEG;WACU,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAUnD;;OAEG;WACU,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAU/D;;OAEG;WACU,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3D;;OAEG;WACU,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAUxD;;OAEG;WACU,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CAStE"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserService = void 0;
4
+ const ApiClient_1 = require("../api/ApiClient");
5
+ const User_1 = require("../models/auth/User");
6
+ class UserService {
7
+ /**
8
+ * Search for users based on a query string.
9
+ */
10
+ static async search(query) {
11
+ try {
12
+ const response = await ApiClient_1.ApiClient.get(`/users/search?q=${encodeURIComponent(query)}`);
13
+ return Array.isArray(response) ? response.map((u) => User_1.User.fromJSON(u)) : [];
14
+ }
15
+ catch (error) {
16
+ console.error('[UserService] User search failed:', error);
17
+ return [];
18
+ }
19
+ }
20
+ /**
21
+ * Get a specific user's public profile.
22
+ */
23
+ static async getProfile(username) {
24
+ try {
25
+ const response = await ApiClient_1.ApiClient.get(`/users/${username}`);
26
+ return response ? User_1.User.fromJSON(response) : null;
27
+ }
28
+ catch (error) {
29
+ console.error(`[UserService] Fetching profile for ${username} failed:`, error);
30
+ return null;
31
+ }
32
+ }
33
+ /**
34
+ * Follow or unfollow a user.
35
+ */
36
+ static async toggleFollow(userId) {
37
+ try {
38
+ const response = await ApiClient_1.ApiClient.post(`/users/${userId}/follow`, {});
39
+ return response.following;
40
+ }
41
+ catch (error) {
42
+ console.error('[UserService] Toggle follow failed:', error);
43
+ return false;
44
+ }
45
+ }
46
+ /**
47
+ * Get a user's friends list.
48
+ */
49
+ static async getFriends(userId) {
50
+ try {
51
+ const response = await ApiClient_1.ApiClient.get(`/users/${userId}/friends`);
52
+ return Array.isArray(response) ? response.map((u) => User_1.User.fromJSON(u)) : [];
53
+ }
54
+ catch (error) {
55
+ console.error('[UserService] Get friends failed:', error);
56
+ return [];
57
+ }
58
+ }
59
+ /**
60
+ * Update the current user's profile information.
61
+ */
62
+ static async updateProfile(data) {
63
+ try {
64
+ const response = await ApiClient_1.ApiClient.post('/users/me/update', data);
65
+ return response ? User_1.User.fromJSON(response) : null;
66
+ }
67
+ catch (error) {
68
+ console.error('[UserService] Update profile failed:', error);
69
+ return null;
70
+ }
71
+ }
72
+ }
73
+ exports.UserService = UserService;