@nolag/core 0.4.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 (292) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +28 -0
  3. package/README.md +244 -0
  4. package/dist/common/entities/base.entity.d.ts +12 -0
  5. package/dist/common/entities/base.entity.d.ts.map +1 -0
  6. package/dist/common/entities/base.entity.js +31 -0
  7. package/dist/common/pagination.d.ts +34 -0
  8. package/dist/common/pagination.d.ts.map +1 -0
  9. package/dist/common/pagination.js +100 -0
  10. package/dist/common/utils/secretCipher.d.ts +3 -0
  11. package/dist/common/utils/secretCipher.d.ts.map +1 -0
  12. package/dist/common/utils/secretCipher.js +45 -0
  13. package/dist/common/utils/secretHash.d.ts +15 -0
  14. package/dist/common/utils/secretHash.d.ts.map +1 -0
  15. package/dist/common/utils/secretHash.js +46 -0
  16. package/dist/common/utils/ttlCache.d.ts +13 -0
  17. package/dist/common/utils/ttlCache.d.ts.map +1 -0
  18. package/dist/common/utils/ttlCache.js +47 -0
  19. package/dist/common/validators/isValidTopicName.validator.d.ts +7 -0
  20. package/dist/common/validators/isValidTopicName.validator.d.ts.map +1 -0
  21. package/dist/common/validators/isValidTopicName.validator.js +44 -0
  22. package/dist/core.config.d.ts +10 -0
  23. package/dist/core.config.d.ts.map +1 -0
  24. package/dist/core.config.js +41 -0
  25. package/dist/core.module.d.ts +6 -0
  26. package/dist/core.module.d.ts.map +1 -0
  27. package/dist/core.module.js +67 -0
  28. package/dist/core.options.d.ts +26 -0
  29. package/dist/core.options.d.ts.map +1 -0
  30. package/dist/core.options.js +10 -0
  31. package/dist/index.d.ts +55 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +123 -0
  34. package/dist/migrations/1786323955167-InitialSchema.d.ts +7 -0
  35. package/dist/migrations/1786323955167-InitialSchema.d.ts.map +1 -0
  36. package/dist/migrations/1786323955167-InitialSchema.js +106 -0
  37. package/dist/modules/accessScopeModule/accessScope.entity.d.ts +15 -0
  38. package/dist/modules/accessScopeModule/accessScope.entity.d.ts.map +1 -0
  39. package/dist/modules/accessScopeModule/accessScope.entity.js +78 -0
  40. package/dist/modules/accessScopeModule/accessScope.facade.d.ts +22 -0
  41. package/dist/modules/accessScopeModule/accessScope.facade.d.ts.map +1 -0
  42. package/dist/modules/accessScopeModule/accessScope.facade.js +103 -0
  43. package/dist/modules/accessScopeModule/accessScope.module.d.ts +3 -0
  44. package/dist/modules/accessScopeModule/accessScope.module.d.ts.map +1 -0
  45. package/dist/modules/accessScopeModule/accessScope.module.js +34 -0
  46. package/dist/modules/accessScopeModule/accessScope.repository.d.ts +7 -0
  47. package/dist/modules/accessScopeModule/accessScope.repository.d.ts.map +1 -0
  48. package/dist/modules/accessScopeModule/accessScope.repository.js +35 -0
  49. package/dist/modules/accessScopeModule/accessScope.service.d.ts +15 -0
  50. package/dist/modules/accessScopeModule/accessScope.service.d.ts.map +1 -0
  51. package/dist/modules/accessScopeModule/accessScope.service.js +87 -0
  52. package/dist/modules/accessScopeModule/dto/accessScope.dto.d.ts +13 -0
  53. package/dist/modules/accessScopeModule/dto/accessScope.dto.d.ts.map +1 -0
  54. package/dist/modules/accessScopeModule/dto/accessScope.dto.js +88 -0
  55. package/dist/modules/accessScopeModule/query/accessScope.query.d.ts +8 -0
  56. package/dist/modules/accessScopeModule/query/accessScope.query.d.ts.map +1 -0
  57. package/dist/modules/accessScopeModule/query/accessScope.query.js +35 -0
  58. package/dist/modules/accessScopeModule/query/accessScope.query.service.d.ts +10 -0
  59. package/dist/modules/accessScopeModule/query/accessScope.query.service.d.ts.map +1 -0
  60. package/dist/modules/accessScopeModule/query/accessScope.query.service.js +47 -0
  61. package/dist/modules/actorTokenModule/actorAppAccess.entity.d.ts +19 -0
  62. package/dist/modules/actorTokenModule/actorAppAccess.entity.d.ts.map +1 -0
  63. package/dist/modules/actorTokenModule/actorAppAccess.entity.js +92 -0
  64. package/dist/modules/actorTokenModule/actorToken.entity.d.ts +23 -0
  65. package/dist/modules/actorTokenModule/actorToken.entity.d.ts.map +1 -0
  66. package/dist/modules/actorTokenModule/actorToken.entity.js +117 -0
  67. package/dist/modules/actorTokenModule/actorToken.facade.d.ts +35 -0
  68. package/dist/modules/actorTokenModule/actorToken.facade.d.ts.map +1 -0
  69. package/dist/modules/actorTokenModule/actorToken.facade.js +123 -0
  70. package/dist/modules/actorTokenModule/actorToken.module.d.ts +3 -0
  71. package/dist/modules/actorTokenModule/actorToken.module.d.ts.map +1 -0
  72. package/dist/modules/actorTokenModule/actorToken.module.js +41 -0
  73. package/dist/modules/actorTokenModule/actorToken.repository.d.ts +11 -0
  74. package/dist/modules/actorTokenModule/actorToken.repository.d.ts.map +1 -0
  75. package/dist/modules/actorTokenModule/actorToken.repository.js +41 -0
  76. package/dist/modules/actorTokenModule/actorToken.service.d.ts +26 -0
  77. package/dist/modules/actorTokenModule/actorToken.service.d.ts.map +1 -0
  78. package/dist/modules/actorTokenModule/actorToken.service.js +169 -0
  79. package/dist/modules/actorTokenModule/actorTokenState.entity.d.ts +31 -0
  80. package/dist/modules/actorTokenModule/actorTokenState.entity.d.ts.map +1 -0
  81. package/dist/modules/actorTokenModule/actorTokenState.entity.js +77 -0
  82. package/dist/modules/actorTokenModule/actorTokenState.repository.d.ts +10 -0
  83. package/dist/modules/actorTokenModule/actorTokenState.repository.d.ts.map +1 -0
  84. package/dist/modules/actorTokenModule/actorTokenState.repository.js +54 -0
  85. package/dist/modules/actorTokenModule/dto/actorToken.dto.d.ts +21 -0
  86. package/dist/modules/actorTokenModule/dto/actorToken.dto.d.ts.map +1 -0
  87. package/dist/modules/actorTokenModule/dto/actorToken.dto.js +99 -0
  88. package/dist/modules/actorTokenModule/enum/EAccessPermission.enum.d.ts +6 -0
  89. package/dist/modules/actorTokenModule/enum/EAccessPermission.enum.d.ts.map +1 -0
  90. package/dist/modules/actorTokenModule/enum/EAccessPermission.enum.js +9 -0
  91. package/dist/modules/actorTokenModule/enum/EActorTokenPrefix.enum.d.ts +5 -0
  92. package/dist/modules/actorTokenModule/enum/EActorTokenPrefix.enum.d.ts.map +1 -0
  93. package/dist/modules/actorTokenModule/enum/EActorTokenPrefix.enum.js +8 -0
  94. package/dist/modules/actorTokenModule/enum/EActorTokenStatus.enum.d.ts +5 -0
  95. package/dist/modules/actorTokenModule/enum/EActorTokenStatus.enum.d.ts.map +1 -0
  96. package/dist/modules/actorTokenModule/enum/EActorTokenStatus.enum.js +8 -0
  97. package/dist/modules/actorTokenModule/enum/EActorType.enum.d.ts +11 -0
  98. package/dist/modules/actorTokenModule/enum/EActorType.enum.d.ts.map +1 -0
  99. package/dist/modules/actorTokenModule/enum/EActorType.enum.js +17 -0
  100. package/dist/modules/actorTokenModule/query/actorToken.query.d.ts +10 -0
  101. package/dist/modules/actorTokenModule/query/actorToken.query.d.ts.map +1 -0
  102. package/dist/modules/actorTokenModule/query/actorToken.query.js +41 -0
  103. package/dist/modules/actorTokenModule/query/actorToken.query.service.d.ts +10 -0
  104. package/dist/modules/actorTokenModule/query/actorToken.query.service.d.ts.map +1 -0
  105. package/dist/modules/actorTokenModule/query/actorToken.query.service.js +47 -0
  106. package/dist/modules/authzModule/adapters/brokerResponse.adapter.d.ts +128 -0
  107. package/dist/modules/authzModule/adapters/brokerResponse.adapter.d.ts.map +1 -0
  108. package/dist/modules/authzModule/adapters/brokerResponse.adapter.js +103 -0
  109. package/dist/modules/authzModule/authz.facade.d.ts +18 -0
  110. package/dist/modules/authzModule/authz.facade.d.ts.map +1 -0
  111. package/dist/modules/authzModule/authz.facade.js +52 -0
  112. package/dist/modules/authzModule/authz.module.d.ts +3 -0
  113. package/dist/modules/authzModule/authz.module.d.ts.map +1 -0
  114. package/dist/modules/authzModule/authz.module.js +50 -0
  115. package/dist/modules/authzModule/authz.service.d.ts +34 -0
  116. package/dist/modules/authzModule/authz.service.d.ts.map +1 -0
  117. package/dist/modules/authzModule/authz.service.js +654 -0
  118. package/dist/modules/authzModule/dto/authz.dto.d.ts +99 -0
  119. package/dist/modules/authzModule/dto/authz.dto.d.ts.map +1 -0
  120. package/dist/modules/authzModule/dto/authz.dto.js +236 -0
  121. package/dist/modules/lobbyModule/dto/lobby.dto.d.ts +12 -0
  122. package/dist/modules/lobbyModule/dto/lobby.dto.d.ts.map +1 -0
  123. package/dist/modules/lobbyModule/dto/lobby.dto.js +79 -0
  124. package/dist/modules/lobbyModule/lobby.entity.d.ts +16 -0
  125. package/dist/modules/lobbyModule/lobby.entity.d.ts.map +1 -0
  126. package/dist/modules/lobbyModule/lobby.entity.js +79 -0
  127. package/dist/modules/lobbyModule/lobby.facade.d.ts +40 -0
  128. package/dist/modules/lobbyModule/lobby.facade.d.ts.map +1 -0
  129. package/dist/modules/lobbyModule/lobby.facade.js +199 -0
  130. package/dist/modules/lobbyModule/lobby.module.d.ts +3 -0
  131. package/dist/modules/lobbyModule/lobby.module.d.ts.map +1 -0
  132. package/dist/modules/lobbyModule/lobby.module.js +36 -0
  133. package/dist/modules/lobbyModule/lobby.repository.d.ts +9 -0
  134. package/dist/modules/lobbyModule/lobby.repository.d.ts.map +1 -0
  135. package/dist/modules/lobbyModule/lobby.repository.js +42 -0
  136. package/dist/modules/lobbyModule/lobby.service.d.ts +41 -0
  137. package/dist/modules/lobbyModule/lobby.service.d.ts.map +1 -0
  138. package/dist/modules/lobbyModule/lobby.service.js +159 -0
  139. package/dist/modules/lobbyModule/lobbyRoom.entity.d.ts +11 -0
  140. package/dist/modules/lobbyModule/lobbyRoom.entity.d.ts.map +1 -0
  141. package/dist/modules/lobbyModule/lobbyRoom.entity.js +52 -0
  142. package/dist/modules/lobbyModule/lobbyRoom.repository.d.ts +8 -0
  143. package/dist/modules/lobbyModule/lobbyRoom.repository.d.ts.map +1 -0
  144. package/dist/modules/lobbyModule/lobbyRoom.repository.js +36 -0
  145. package/dist/modules/lobbyModule/query/lobby.query.d.ts +7 -0
  146. package/dist/modules/lobbyModule/query/lobby.query.d.ts.map +1 -0
  147. package/dist/modules/lobbyModule/query/lobby.query.js +32 -0
  148. package/dist/modules/lobbyModule/query/lobby.query.service.d.ts +10 -0
  149. package/dist/modules/lobbyModule/query/lobby.query.service.d.ts.map +1 -0
  150. package/dist/modules/lobbyModule/query/lobby.query.service.js +42 -0
  151. package/dist/modules/platformAppModule/dto/platformApp.dto.d.ts +28 -0
  152. package/dist/modules/platformAppModule/dto/platformApp.dto.d.ts.map +1 -0
  153. package/dist/modules/platformAppModule/dto/platformApp.dto.js +180 -0
  154. package/dist/modules/platformAppModule/enum/EAppAccessMode.enum.d.ts +5 -0
  155. package/dist/modules/platformAppModule/enum/EAppAccessMode.enum.d.ts.map +1 -0
  156. package/dist/modules/platformAppModule/enum/EAppAccessMode.enum.js +8 -0
  157. package/dist/modules/platformAppModule/enum/EAppStatus.enum.d.ts +6 -0
  158. package/dist/modules/platformAppModule/enum/EAppStatus.enum.d.ts.map +1 -0
  159. package/dist/modules/platformAppModule/enum/EAppStatus.enum.js +9 -0
  160. package/dist/modules/platformAppModule/platformApp.entity.d.ts +32 -0
  161. package/dist/modules/platformAppModule/platformApp.entity.d.ts.map +1 -0
  162. package/dist/modules/platformAppModule/platformApp.entity.js +113 -0
  163. package/dist/modules/platformAppModule/platformApp.facade.d.ts +25 -0
  164. package/dist/modules/platformAppModule/platformApp.facade.d.ts.map +1 -0
  165. package/dist/modules/platformAppModule/platformApp.facade.js +188 -0
  166. package/dist/modules/platformAppModule/platformApp.module.d.ts +3 -0
  167. package/dist/modules/platformAppModule/platformApp.module.d.ts.map +1 -0
  168. package/dist/modules/platformAppModule/platformApp.module.js +29 -0
  169. package/dist/modules/platformAppModule/platformApp.repository.d.ts +10 -0
  170. package/dist/modules/platformAppModule/platformApp.repository.d.ts.map +1 -0
  171. package/dist/modules/platformAppModule/platformApp.repository.js +45 -0
  172. package/dist/modules/platformAppModule/query/platformApp.query.d.ts +9 -0
  173. package/dist/modules/platformAppModule/query/platformApp.query.d.ts.map +1 -0
  174. package/dist/modules/platformAppModule/query/platformApp.query.js +40 -0
  175. package/dist/modules/platformAppModule/query/platformApp.query.service.d.ts +10 -0
  176. package/dist/modules/platformAppModule/query/platformApp.query.service.d.ts.map +1 -0
  177. package/dist/modules/platformAppModule/query/platformApp.query.service.js +45 -0
  178. package/dist/modules/projectConfigModule/dto/projectConfig.dto.d.ts +116 -0
  179. package/dist/modules/projectConfigModule/dto/projectConfig.dto.d.ts.map +1 -0
  180. package/dist/modules/projectConfigModule/dto/projectConfig.dto.js +566 -0
  181. package/dist/modules/projectConfigModule/projectConfig.facade.d.ts +18 -0
  182. package/dist/modules/projectConfigModule/projectConfig.facade.d.ts.map +1 -0
  183. package/dist/modules/projectConfigModule/projectConfig.facade.js +71 -0
  184. package/dist/modules/projectConfigModule/projectConfig.module.d.ts +3 -0
  185. package/dist/modules/projectConfigModule/projectConfig.module.d.ts.map +1 -0
  186. package/dist/modules/projectConfigModule/projectConfig.module.js +23 -0
  187. package/dist/modules/projectConfigModule/projectConfig.service.d.ts +12 -0
  188. package/dist/modules/projectConfigModule/projectConfig.service.d.ts.map +1 -0
  189. package/dist/modules/projectConfigModule/projectConfig.service.js +411 -0
  190. package/dist/modules/projectModule/dto/project.dto.d.ts +15 -0
  191. package/dist/modules/projectModule/dto/project.dto.d.ts.map +1 -0
  192. package/dist/modules/projectModule/dto/project.dto.js +86 -0
  193. package/dist/modules/projectModule/project.entity.d.ts +14 -0
  194. package/dist/modules/projectModule/project.entity.d.ts.map +1 -0
  195. package/dist/modules/projectModule/project.entity.js +74 -0
  196. package/dist/modules/projectModule/project.facade.d.ts +27 -0
  197. package/dist/modules/projectModule/project.facade.d.ts.map +1 -0
  198. package/dist/modules/projectModule/project.facade.js +150 -0
  199. package/dist/modules/projectModule/project.module.d.ts +3 -0
  200. package/dist/modules/projectModule/project.module.d.ts.map +1 -0
  201. package/dist/modules/projectModule/project.module.js +25 -0
  202. package/dist/modules/projectModule/project.repository.d.ts +9 -0
  203. package/dist/modules/projectModule/project.repository.d.ts.map +1 -0
  204. package/dist/modules/projectModule/project.repository.js +42 -0
  205. package/dist/modules/projectModule/query/project.query.d.ts +7 -0
  206. package/dist/modules/projectModule/query/project.query.d.ts.map +1 -0
  207. package/dist/modules/projectModule/query/project.query.js +32 -0
  208. package/dist/modules/projectModule/query/project.query.service.d.ts +10 -0
  209. package/dist/modules/projectModule/query/project.query.service.d.ts.map +1 -0
  210. package/dist/modules/projectModule/query/project.query.service.js +43 -0
  211. package/dist/modules/roomModule/dto/room.dto.d.ts +17 -0
  212. package/dist/modules/roomModule/dto/room.dto.d.ts.map +1 -0
  213. package/dist/modules/roomModule/dto/room.dto.js +123 -0
  214. package/dist/modules/roomModule/dto/roomActorAccess.dto.d.ts +21 -0
  215. package/dist/modules/roomModule/dto/roomActorAccess.dto.d.ts.map +1 -0
  216. package/dist/modules/roomModule/dto/roomActorAccess.dto.js +135 -0
  217. package/dist/modules/roomModule/enum/ERoomStatus.enum.d.ts +5 -0
  218. package/dist/modules/roomModule/enum/ERoomStatus.enum.d.ts.map +1 -0
  219. package/dist/modules/roomModule/enum/ERoomStatus.enum.js +8 -0
  220. package/dist/modules/roomModule/query/room.query.d.ts +9 -0
  221. package/dist/modules/roomModule/query/room.query.d.ts.map +1 -0
  222. package/dist/modules/roomModule/query/room.query.js +40 -0
  223. package/dist/modules/roomModule/query/room.query.service.d.ts +10 -0
  224. package/dist/modules/roomModule/query/room.query.service.d.ts.map +1 -0
  225. package/dist/modules/roomModule/query/room.query.service.js +45 -0
  226. package/dist/modules/roomModule/room.entity.d.ts +17 -0
  227. package/dist/modules/roomModule/room.entity.d.ts.map +1 -0
  228. package/dist/modules/roomModule/room.entity.js +90 -0
  229. package/dist/modules/roomModule/room.facade.d.ts +30 -0
  230. package/dist/modules/roomModule/room.facade.d.ts.map +1 -0
  231. package/dist/modules/roomModule/room.facade.js +154 -0
  232. package/dist/modules/roomModule/room.module.d.ts +3 -0
  233. package/dist/modules/roomModule/room.module.d.ts.map +1 -0
  234. package/dist/modules/roomModule/room.module.js +39 -0
  235. package/dist/modules/roomModule/room.repository.d.ts +10 -0
  236. package/dist/modules/roomModule/room.repository.d.ts.map +1 -0
  237. package/dist/modules/roomModule/room.repository.js +48 -0
  238. package/dist/modules/roomModule/room.service.d.ts +26 -0
  239. package/dist/modules/roomModule/room.service.d.ts.map +1 -0
  240. package/dist/modules/roomModule/room.service.js +130 -0
  241. package/dist/modules/roomModule/roomActorAccess.entity.d.ts +22 -0
  242. package/dist/modules/roomModule/roomActorAccess.entity.d.ts.map +1 -0
  243. package/dist/modules/roomModule/roomActorAccess.entity.js +101 -0
  244. package/dist/modules/roomModule/roomActorAccess.facade.d.ts +20 -0
  245. package/dist/modules/roomModule/roomActorAccess.facade.d.ts.map +1 -0
  246. package/dist/modules/roomModule/roomActorAccess.facade.js +134 -0
  247. package/dist/modules/roomModule/roomActorAccess.repository.d.ts +15 -0
  248. package/dist/modules/roomModule/roomActorAccess.repository.d.ts.map +1 -0
  249. package/dist/modules/roomModule/roomActorAccess.repository.js +81 -0
  250. package/dist/modules/signingKeyModule/dto/signingKey.dto.d.ts +14 -0
  251. package/dist/modules/signingKeyModule/dto/signingKey.dto.d.ts.map +1 -0
  252. package/dist/modules/signingKeyModule/dto/signingKey.dto.js +57 -0
  253. package/dist/modules/signingKeyModule/enum/ESigningKeyPrefix.enum.d.ts +5 -0
  254. package/dist/modules/signingKeyModule/enum/ESigningKeyPrefix.enum.d.ts.map +1 -0
  255. package/dist/modules/signingKeyModule/enum/ESigningKeyPrefix.enum.js +8 -0
  256. package/dist/modules/signingKeyModule/enum/ESigningKeyStatus.enum.d.ts +5 -0
  257. package/dist/modules/signingKeyModule/enum/ESigningKeyStatus.enum.d.ts.map +1 -0
  258. package/dist/modules/signingKeyModule/enum/ESigningKeyStatus.enum.js +8 -0
  259. package/dist/modules/signingKeyModule/query/signingKey.query.d.ts +8 -0
  260. package/dist/modules/signingKeyModule/query/signingKey.query.d.ts.map +1 -0
  261. package/dist/modules/signingKeyModule/query/signingKey.query.js +33 -0
  262. package/dist/modules/signingKeyModule/query/signingKey.query.service.d.ts +10 -0
  263. package/dist/modules/signingKeyModule/query/signingKey.query.service.d.ts.map +1 -0
  264. package/dist/modules/signingKeyModule/query/signingKey.query.service.js +52 -0
  265. package/dist/modules/signingKeyModule/signingKey.entity.d.ts +16 -0
  266. package/dist/modules/signingKeyModule/signingKey.entity.d.ts.map +1 -0
  267. package/dist/modules/signingKeyModule/signingKey.entity.js +85 -0
  268. package/dist/modules/signingKeyModule/signingKey.facade.d.ts +25 -0
  269. package/dist/modules/signingKeyModule/signingKey.facade.d.ts.map +1 -0
  270. package/dist/modules/signingKeyModule/signingKey.facade.js +90 -0
  271. package/dist/modules/signingKeyModule/signingKey.module.d.ts +3 -0
  272. package/dist/modules/signingKeyModule/signingKey.module.d.ts.map +1 -0
  273. package/dist/modules/signingKeyModule/signingKey.module.js +35 -0
  274. package/dist/modules/signingKeyModule/signingKey.repository.d.ts +11 -0
  275. package/dist/modules/signingKeyModule/signingKey.repository.d.ts.map +1 -0
  276. package/dist/modules/signingKeyModule/signingKey.repository.js +39 -0
  277. package/dist/modules/signingKeyModule/signingKey.service.d.ts +40 -0
  278. package/dist/modules/signingKeyModule/signingKey.service.d.ts.map +1 -0
  279. package/dist/modules/signingKeyModule/signingKey.service.js +259 -0
  280. package/dist/schema.d.ts +19 -0
  281. package/dist/schema.d.ts.map +1 -0
  282. package/dist/schema.js +33 -0
  283. package/dist/utils/clientToken.d.ts +2 -0
  284. package/dist/utils/clientToken.d.ts.map +1 -0
  285. package/dist/utils/clientToken.js +6 -0
  286. package/dist/utils/exceptions.d.ts +16 -0
  287. package/dist/utils/exceptions.d.ts.map +1 -0
  288. package/dist/utils/exceptions.js +24 -0
  289. package/dist/utils/guid.d.ts +4 -0
  290. package/dist/utils/guid.d.ts.map +1 -0
  291. package/dist/utils/guid.js +16 -0
  292. package/package.json +127 -0
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var LobbyFacade_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.LobbyFacade = void 0;
17
+ const typeorm_1 = require("@nestjs/typeorm");
18
+ const common_1 = require("@nestjs/common");
19
+ const typeorm_2 = require("typeorm");
20
+ const ttlCache_1 = require("../../common/utils/ttlCache");
21
+ const exceptions_1 = require("../../utils/exceptions");
22
+ const lobby_service_1 = require("./lobby.service");
23
+ const lobby_query_service_1 = require("./query/lobby.query.service");
24
+ const MAX_LOBBIES_PER_ROOM = 10;
25
+ const MEMBERSHIP_CACHE_TTL_MS = 120_000;
26
+ let LobbyFacade = LobbyFacade_1 = class LobbyFacade {
27
+ _service;
28
+ _queryService;
29
+ _dataSource;
30
+ _logger = new common_1.Logger(LobbyFacade_1.name);
31
+ _lobbiesForRoomCache = new ttlCache_1.TtlCache(MEMBERSHIP_CACHE_TTL_MS);
32
+ _lobbyRoomsCache = new ttlCache_1.TtlCache(MEMBERSHIP_CACHE_TTL_MS);
33
+ constructor(_service, _queryService, _dataSource) {
34
+ this._service = _service;
35
+ this._queryService = _queryService;
36
+ this._dataSource = _dataSource;
37
+ }
38
+ listLobbies(appId, query) {
39
+ return this._queryService.findPaginated(query, appId);
40
+ }
41
+ async getLobby(lobbyId, appId) {
42
+ const lobby = await this._service.findByIdAndApp(lobbyId, appId);
43
+ if (!lobby) {
44
+ throw (0, exceptions_1.notFoundException)(this._logger, {
45
+ errorMsgUser: `Lobby ${lobbyId} not found`,
46
+ });
47
+ }
48
+ return lobby;
49
+ }
50
+ async getLobbyBySlug(slug, appId) {
51
+ const lobby = await this._service.findBySlugAndApp(slug, appId);
52
+ if (!lobby) {
53
+ throw (0, exceptions_1.notFoundException)(this._logger, {
54
+ errorMsgUser: `Lobby "${slug}" not found`,
55
+ });
56
+ }
57
+ return lobby;
58
+ }
59
+ createLobby(appId, data) {
60
+ return this._dataSource.transaction(async (manager) => {
61
+ const slug = data.slug ?? this._generateSlug(data.name);
62
+ const exists = await this._service.slugExists(slug, appId, manager);
63
+ if (exists) {
64
+ throw (0, exceptions_1.conflictException)(this._logger, {
65
+ errorMsgUser: `Lobby with slug "${slug}" already exists`,
66
+ });
67
+ }
68
+ return this._service.createLobby(appId, { ...data, slug }, manager);
69
+ });
70
+ }
71
+ updateLobby(lobbyId, appId, data) {
72
+ return this._dataSource.transaction(async (manager) => {
73
+ const existing = await this._service.updateLock(lobbyId, appId, manager);
74
+ if (!existing) {
75
+ throw (0, exceptions_1.notFoundException)(this._logger, {
76
+ errorMsgUser: `Lobby ${lobbyId} not found`,
77
+ });
78
+ }
79
+ return this._service.patchLobby(existing, data, manager);
80
+ });
81
+ }
82
+ async deleteLobby(lobbyId, appId) {
83
+ const result = await this._dataSource.transaction(async (manager) => {
84
+ const existing = await this._service.updateLock(lobbyId, appId, manager);
85
+ if (!existing) {
86
+ throw (0, exceptions_1.notFoundException)(this._logger, {
87
+ errorMsgUser: `Lobby ${lobbyId} not found`,
88
+ });
89
+ }
90
+ return this._service.removeLobby(lobbyId, appId, manager);
91
+ });
92
+ this._lobbyRoomsCache.delete(lobbyId);
93
+ this._lobbiesForRoomCache.clear();
94
+ return result;
95
+ }
96
+ async listLobbyRooms(lobbyId, appId) {
97
+ await this.getLobby(lobbyId, appId);
98
+ return this._service.listLobbyRooms(lobbyId);
99
+ }
100
+ async addRoomToLobby(lobbyId, roomId, appId) {
101
+ const result = await this._dataSource.transaction(async (manager) => {
102
+ const check = await this._service.validateAddRoomToLobby(lobbyId, roomId, appId, manager);
103
+ if (!check.lobbyExists) {
104
+ throw (0, exceptions_1.notFoundException)(this._logger, {
105
+ errorMsgUser: `Lobby ${lobbyId} not found`,
106
+ });
107
+ }
108
+ if (!check.roomExists) {
109
+ throw (0, exceptions_1.notFoundException)(this._logger, {
110
+ errorMsgUser: `Room ${roomId} not found in this app`,
111
+ });
112
+ }
113
+ if (check.alreadyInLobby) {
114
+ throw (0, exceptions_1.conflictException)(this._logger, {
115
+ errorMsgUser: `Room ${roomId} is already in lobby ${lobbyId}`,
116
+ });
117
+ }
118
+ if (check.lobbyCountForRoom >= MAX_LOBBIES_PER_ROOM) {
119
+ throw (0, exceptions_1.badRequestException)(this._logger, {
120
+ errorMsgUser: `Room ${roomId} is already in ${MAX_LOBBIES_PER_ROOM} lobbies, ` +
121
+ `which is the maximum.`,
122
+ });
123
+ }
124
+ return this._service.addRoomToLobby(lobbyId, roomId, manager);
125
+ });
126
+ this._lobbiesForRoomCache.delete(roomId);
127
+ this._lobbyRoomsCache.delete(lobbyId);
128
+ return result;
129
+ }
130
+ async removeRoomFromLobby(lobbyId, roomId, appId) {
131
+ await this._dataSource.transaction(async (manager) => {
132
+ const lobby = await this._service.findByIdAndApp(lobbyId, appId, manager);
133
+ if (!lobby) {
134
+ throw (0, exceptions_1.notFoundException)(this._logger, {
135
+ errorMsgUser: `Lobby ${lobbyId} not found`,
136
+ });
137
+ }
138
+ await this._service.removeRoomFromLobby(lobbyId, roomId, manager);
139
+ });
140
+ this._lobbiesForRoomCache.delete(roomId);
141
+ this._lobbyRoomsCache.delete(lobbyId);
142
+ }
143
+ async findLobbiesForRoom(roomId) {
144
+ const cached = this._lobbiesForRoomCache.get(roomId);
145
+ if (cached) {
146
+ return cached;
147
+ }
148
+ const rows = await this._service.findLobbiesForRoom(roomId);
149
+ this._lobbiesForRoomCache.set(roomId, rows);
150
+ return rows;
151
+ }
152
+ async listLobbyRoomsCached(lobbyId) {
153
+ const cached = this._lobbyRoomsCache.get(lobbyId);
154
+ if (cached) {
155
+ return cached;
156
+ }
157
+ const rows = await this._service.listLobbyRooms(lobbyId);
158
+ this._lobbyRoomsCache.set(lobbyId, rows);
159
+ return rows;
160
+ }
161
+ async createStaticLobbiesFromConfig(appId, lobbies, createdRooms, manager) {
162
+ const run = async (m) => {
163
+ const created = await this._service.createStaticLobbies(appId, lobbies, m);
164
+ const roomsBySlug = new Map(createdRooms.map((r) => [r.slug, r]));
165
+ for (let i = 0; i < created.length; i++) {
166
+ const lobby = created[i];
167
+ for (const slug of lobbies[i]?.rooms ?? []) {
168
+ const room = roomsBySlug.get(slug);
169
+ if (!room) {
170
+ this._logger.warn(`createStaticLobbiesFromConfig: lobby "${lobby.slug}" references unknown room slug "${slug}", skipping`);
171
+ continue;
172
+ }
173
+ await this._service.addRoomToLobby(lobby.lobbyId, room.roomId, m);
174
+ }
175
+ }
176
+ return created;
177
+ };
178
+ return manager ? run(manager) : this._dataSource.transaction(run);
179
+ }
180
+ async resolveLobbySlug(slug) {
181
+ const lobby = await this._service.findBySlug(slug);
182
+ return lobby?.lobbyId ?? null;
183
+ }
184
+ _generateSlug(name) {
185
+ return name
186
+ .toLowerCase()
187
+ .trim()
188
+ .replace(/[^a-z0-9]+/g, "-")
189
+ .replace(/^-+|-+$/g, "");
190
+ }
191
+ };
192
+ exports.LobbyFacade = LobbyFacade;
193
+ exports.LobbyFacade = LobbyFacade = LobbyFacade_1 = __decorate([
194
+ (0, common_1.Injectable)(),
195
+ __param(2, (0, typeorm_1.InjectDataSource)()),
196
+ __metadata("design:paramtypes", [lobby_service_1.LobbyService,
197
+ lobby_query_service_1.LobbyQueryService,
198
+ typeorm_2.DataSource])
199
+ ], LobbyFacade);
@@ -0,0 +1,3 @@
1
+ export declare class LobbyModule {
2
+ }
3
+ //# sourceMappingURL=lobby.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobby.module.d.ts","sourceRoot":"","sources":["../../../src/modules/lobbyModule/lobby.module.ts"],"names":[],"mappings":"AAUA,qBAaa,WAAW;CAAG"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LobbyModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const typeorm_1 = require("@nestjs/typeorm");
12
+ const lobby_entity_1 = require("./lobby.entity");
13
+ const lobby_facade_1 = require("./lobby.facade");
14
+ const lobby_repository_1 = require("./lobby.repository");
15
+ const lobby_service_1 = require("./lobby.service");
16
+ const lobbyRoom_entity_1 = require("./lobbyRoom.entity");
17
+ const lobbyRoom_repository_1 = require("./lobbyRoom.repository");
18
+ const lobby_query_service_1 = require("./query/lobby.query.service");
19
+ let LobbyModule = class LobbyModule {
20
+ };
21
+ exports.LobbyModule = LobbyModule;
22
+ exports.LobbyModule = LobbyModule = __decorate([
23
+ (0, common_1.Module)({
24
+ imports: [
25
+ typeorm_1.TypeOrmModule.forFeature([lobby_entity_1.LobbyEntity, lobbyRoom_entity_1.LobbyRoomEntity]),
26
+ ],
27
+ providers: [
28
+ lobby_service_1.LobbyService,
29
+ lobby_query_service_1.LobbyQueryService,
30
+ lobby_facade_1.LobbyFacade,
31
+ lobby_repository_1.LobbyRepository,
32
+ lobbyRoom_repository_1.LobbyRoomRepository,
33
+ ],
34
+ exports: [lobby_facade_1.LobbyFacade],
35
+ })
36
+ ], LobbyModule);
@@ -0,0 +1,9 @@
1
+ import { Repository } from "typeorm";
2
+ import { LobbyEntity } from "./lobby.entity";
3
+ export declare class LobbyRepository extends Repository<LobbyEntity> {
4
+ constructor(repository: Repository<LobbyEntity>);
5
+ findByAppId(appId: string): Promise<LobbyEntity[]>;
6
+ findByIdAndApp(lobbyId: string, appId: string): Promise<LobbyEntity | null>;
7
+ findBySlugAndApp(slug: string, appId: string): Promise<LobbyEntity | null>;
8
+ }
9
+ //# sourceMappingURL=lobby.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobby.repository.d.ts","sourceRoot":"","sources":["../../../src/modules/lobbyModule/lobby.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBACa,eAAgB,SAAQ,UAAU,CAAC,WAAW,CAAC;gBAOxD,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC;IAKrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOlD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI3E,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CAG3E"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LobbyRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const typeorm_1 = require("@nestjs/typeorm");
18
+ const typeorm_2 = require("typeorm");
19
+ const lobby_entity_1 = require("./lobby.entity");
20
+ let LobbyRepository = class LobbyRepository extends typeorm_2.Repository {
21
+ constructor(repository) {
22
+ super(repository.target, repository.manager, repository.queryRunner);
23
+ }
24
+ findByAppId(appId) {
25
+ return this.find({
26
+ where: { appId, deletedAt: (0, typeorm_2.IsNull)() },
27
+ order: { createdAt: "ASC" },
28
+ });
29
+ }
30
+ findByIdAndApp(lobbyId, appId) {
31
+ return this.findOne({ where: { lobbyId, appId, deletedAt: (0, typeorm_2.IsNull)() } });
32
+ }
33
+ findBySlugAndApp(slug, appId) {
34
+ return this.findOne({ where: { slug, appId, deletedAt: (0, typeorm_2.IsNull)() } });
35
+ }
36
+ };
37
+ exports.LobbyRepository = LobbyRepository;
38
+ exports.LobbyRepository = LobbyRepository = __decorate([
39
+ (0, common_1.Injectable)(),
40
+ __param(0, (0, typeorm_1.InjectRepository)(lobby_entity_1.LobbyEntity)),
41
+ __metadata("design:paramtypes", [typeorm_2.Repository])
42
+ ], LobbyRepository);
@@ -0,0 +1,41 @@
1
+ import { EntityManager, UpdateResult } from "typeorm";
2
+ import { LobbyCreateDto, LobbyPatchDto } from "./dto/lobby.dto";
3
+ import { LobbyEntity } from "./lobby.entity";
4
+ import { LobbyRepository } from "./lobby.repository";
5
+ import { LobbyRoomEntity } from "./lobbyRoom.entity";
6
+ import { LobbyRoomRepository } from "./lobbyRoom.repository";
7
+ export declare class LobbyService {
8
+ private readonly _lobbyRepository;
9
+ private readonly _lobbyRoomRepository;
10
+ private readonly _logger;
11
+ constructor(_lobbyRepository: LobbyRepository, _lobbyRoomRepository: LobbyRoomRepository);
12
+ private _lobbies;
13
+ private _members;
14
+ findByIdAndApp(lobbyId: string, appId: string, manager?: EntityManager): Promise<LobbyEntity | null>;
15
+ findBySlugAndApp(slug: string, appId: string, manager?: EntityManager): Promise<LobbyEntity | null>;
16
+ findBySlug(slug: string, manager?: EntityManager): Promise<LobbyEntity | null>;
17
+ listByAppId(appId: string): Promise<LobbyEntity[]>;
18
+ slugExists(slug: string, appId: string, manager?: EntityManager): Promise<boolean>;
19
+ createLobby(appId: string, data: LobbyCreateDto, manager?: EntityManager): Promise<LobbyEntity>;
20
+ createStaticLobbies(appId: string, lobbies: Array<{
21
+ slug: string;
22
+ name: string;
23
+ description?: string;
24
+ }>, manager: EntityManager): Promise<LobbyEntity[]>;
25
+ updateLock(lobbyId: string, appId: string, manager: EntityManager): Promise<LobbyEntity | null>;
26
+ patchLobby(existing: LobbyEntity, data: LobbyPatchDto, manager: EntityManager): Promise<LobbyEntity>;
27
+ removeLobby(lobbyId: string, appId: string, manager?: EntityManager): Promise<UpdateResult>;
28
+ validateAddRoomToLobby(lobbyId: string, roomId: string, appId: string, manager: EntityManager): Promise<{
29
+ lobbyExists: boolean;
30
+ roomExists: boolean;
31
+ alreadyInLobby: boolean;
32
+ lobbyCountForRoom: number;
33
+ }>;
34
+ listLobbyRooms(lobbyId: string): Promise<LobbyRoomEntity[]>;
35
+ findLobbiesForRoom(roomId: string): Promise<LobbyRoomEntity[]>;
36
+ countLobbiesForRoom(roomId: string, manager?: EntityManager): Promise<number>;
37
+ addRoomToLobby(lobbyId: string, roomId: string, manager?: EntityManager): Promise<LobbyRoomEntity>;
38
+ roomInLobby(lobbyId: string, roomId: string, manager?: EntityManager): Promise<boolean>;
39
+ removeRoomFromLobby(lobbyId: string, roomId: string, manager?: EntityManager): Promise<void>;
40
+ }
41
+ //# sourceMappingURL=lobby.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobby.service.d.ts","sourceRoot":"","sources":["../../../src/modules/lobbyModule/lobby.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var LobbyService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LobbyService = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const typeorm_1 = require("typeorm");
16
+ const exceptions_1 = require("../../utils/exceptions");
17
+ const lobby_entity_1 = require("./lobby.entity");
18
+ const lobby_repository_1 = require("./lobby.repository");
19
+ const lobbyRoom_entity_1 = require("./lobbyRoom.entity");
20
+ const lobbyRoom_repository_1 = require("./lobbyRoom.repository");
21
+ let LobbyService = LobbyService_1 = class LobbyService {
22
+ _lobbyRepository;
23
+ _lobbyRoomRepository;
24
+ _logger = new common_1.Logger(LobbyService_1.name);
25
+ constructor(_lobbyRepository, _lobbyRoomRepository) {
26
+ this._lobbyRepository = _lobbyRepository;
27
+ this._lobbyRoomRepository = _lobbyRoomRepository;
28
+ }
29
+ _lobbies(manager) {
30
+ return manager ? manager.getRepository(lobby_entity_1.LobbyEntity) : this._lobbyRepository;
31
+ }
32
+ _members(manager) {
33
+ return manager
34
+ ? manager.getRepository(lobbyRoom_entity_1.LobbyRoomEntity)
35
+ : this._lobbyRoomRepository;
36
+ }
37
+ findByIdAndApp(lobbyId, appId, manager) {
38
+ return this._lobbies(manager).findOne({
39
+ where: { lobbyId, appId, deletedAt: (0, typeorm_1.IsNull)() },
40
+ });
41
+ }
42
+ findBySlugAndApp(slug, appId, manager) {
43
+ return this._lobbies(manager).findOne({
44
+ where: { slug, appId, deletedAt: (0, typeorm_1.IsNull)() },
45
+ });
46
+ }
47
+ findBySlug(slug, manager) {
48
+ return this._lobbies(manager).findOne({
49
+ where: { slug, deletedAt: (0, typeorm_1.IsNull)() },
50
+ });
51
+ }
52
+ listByAppId(appId) {
53
+ return this._lobbyRepository.findByAppId(appId);
54
+ }
55
+ async slugExists(slug, appId, manager) {
56
+ const count = await this._lobbies(manager).count({
57
+ where: { slug, appId, deletedAt: (0, typeorm_1.IsNull)() },
58
+ });
59
+ return count > 0;
60
+ }
61
+ createLobby(appId, data, manager) {
62
+ if (!data.slug) {
63
+ throw (0, exceptions_1.badRequestException)(this._logger, {
64
+ errorMsgUser: "Lobby slug is required",
65
+ errorMsgSystem: "LobbyService:createLobby:slug_required",
66
+ });
67
+ }
68
+ const entity = new lobby_entity_1.LobbyEntity();
69
+ entity.appId = appId;
70
+ entity.slug = data.slug;
71
+ entity.name = data.name;
72
+ entity.description = data.description ?? null;
73
+ entity.metadata = data.metadata ?? null;
74
+ return this._lobbies(manager).save(entity);
75
+ }
76
+ createStaticLobbies(appId, lobbies, manager) {
77
+ const entities = lobbies.map((lobby) => {
78
+ const entity = new lobby_entity_1.LobbyEntity();
79
+ entity.appId = appId;
80
+ entity.slug = lobby.slug;
81
+ entity.name = lobby.name;
82
+ entity.description = lobby.description ?? null;
83
+ return entity;
84
+ });
85
+ return this._lobbies(manager).save(entities);
86
+ }
87
+ updateLock(lobbyId, appId, manager) {
88
+ const alias = lobby_entity_1.LobbyEntity.entityName();
89
+ return manager
90
+ .createQueryBuilder(lobby_entity_1.LobbyEntity, alias)
91
+ .where(`${alias}.lobbyId = :lobbyId AND ${alias}.appId = :appId`, {
92
+ lobbyId,
93
+ appId,
94
+ })
95
+ .andWhere(`${alias}.deletedAt IS NULL`)
96
+ .setLock("pessimistic_read")
97
+ .getOne();
98
+ }
99
+ patchLobby(existing, data, manager) {
100
+ if (data.name !== undefined)
101
+ existing.name = data.name;
102
+ if (data.description !== undefined)
103
+ existing.description = data.description;
104
+ if (data.metadata !== undefined)
105
+ existing.metadata = data.metadata;
106
+ return manager.save(lobby_entity_1.LobbyEntity, existing);
107
+ }
108
+ removeLobby(lobbyId, appId, manager) {
109
+ return this._lobbies(manager).softDelete({
110
+ lobbyId,
111
+ appId,
112
+ deletedAt: (0, typeorm_1.IsNull)(),
113
+ });
114
+ }
115
+ async validateAddRoomToLobby(lobbyId, roomId, appId, manager) {
116
+ const rows = await manager.query(`SELECT
117
+ (SELECT COUNT(*)::int FROM lobby WHERE lobby_id = $1 AND app_id = $3 AND deleted_at IS NULL) AS lobby_exists,
118
+ (SELECT COUNT(*)::int FROM room WHERE room_id = $2 AND app_id = $3 AND deleted_at IS NULL) AS room_exists,
119
+ (SELECT COUNT(*)::int FROM lobby_room WHERE lobby_id = $1 AND room_id = $2) AS already_in_lobby,
120
+ (SELECT COUNT(*)::int FROM lobby_room WHERE room_id = $2) AS lobby_count_for_room`, [lobbyId, roomId, appId]);
121
+ const row = rows[0];
122
+ return {
123
+ lobbyExists: row.lobby_exists > 0,
124
+ roomExists: row.room_exists > 0,
125
+ alreadyInLobby: row.already_in_lobby > 0,
126
+ lobbyCountForRoom: row.lobby_count_for_room,
127
+ };
128
+ }
129
+ listLobbyRooms(lobbyId) {
130
+ return this._lobbyRoomRepository.findByLobbyId(lobbyId);
131
+ }
132
+ findLobbiesForRoom(roomId) {
133
+ return this._lobbyRoomRepository.findByRoomId(roomId);
134
+ }
135
+ countLobbiesForRoom(roomId, manager) {
136
+ return this._members(manager).count({ where: { roomId } });
137
+ }
138
+ addRoomToLobby(lobbyId, roomId, manager) {
139
+ const entity = new lobbyRoom_entity_1.LobbyRoomEntity();
140
+ entity.lobbyId = lobbyId;
141
+ entity.roomId = roomId;
142
+ return this._members(manager).save(entity);
143
+ }
144
+ async roomInLobby(lobbyId, roomId, manager) {
145
+ const count = await this._members(manager).count({
146
+ where: { lobbyId, roomId },
147
+ });
148
+ return count > 0;
149
+ }
150
+ async removeRoomFromLobby(lobbyId, roomId, manager) {
151
+ await this._members(manager).delete({ lobbyId, roomId });
152
+ }
153
+ };
154
+ exports.LobbyService = LobbyService;
155
+ exports.LobbyService = LobbyService = LobbyService_1 = __decorate([
156
+ (0, common_1.Injectable)(),
157
+ __metadata("design:paramtypes", [lobby_repository_1.LobbyRepository,
158
+ lobbyRoom_repository_1.LobbyRoomRepository])
159
+ ], LobbyService);
@@ -0,0 +1,11 @@
1
+ import { BaseTimeEntity } from "../../common/entities/base.entity";
2
+ import { RoomEntity } from "../roomModule/room.entity";
3
+ import { LobbyEntity } from "./lobby.entity";
4
+ export declare class LobbyRoomEntity extends BaseTimeEntity {
5
+ static entityName(): string;
6
+ lobbyId: string;
7
+ roomId: string;
8
+ lobby: LobbyEntity;
9
+ room: RoomEntity;
10
+ }
11
+ //# sourceMappingURL=lobbyRoom.entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobbyRoom.entity.d.ts","sourceRoot":"","sources":["../../../src/modules/lobbyModule/lobbyRoom.entity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAU7C,qBAGa,eAAgB,SAAQ,cAAc;IACjD,MAAM,CAAC,UAAU;IAKjB,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE,MAAM,CAAC;IAOf,KAAK,EAAG,WAAW,CAAC;IAIpB,IAAI,EAAG,UAAU,CAAC;CACnB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LobbyRoomEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const base_entity_1 = require("../../common/entities/base.entity");
15
+ const room_entity_1 = require("../roomModule/room.entity");
16
+ const lobby_entity_1 = require("./lobby.entity");
17
+ const entityName = "lobby_room";
18
+ let LobbyRoomEntity = class LobbyRoomEntity extends base_entity_1.BaseTimeEntity {
19
+ static entityName() {
20
+ return entityName;
21
+ }
22
+ lobbyId;
23
+ roomId;
24
+ lobby;
25
+ room;
26
+ };
27
+ exports.LobbyRoomEntity = LobbyRoomEntity;
28
+ __decorate([
29
+ (0, typeorm_1.PrimaryColumn)({ type: "uuid", name: "lobby_id" }),
30
+ __metadata("design:type", String)
31
+ ], LobbyRoomEntity.prototype, "lobbyId", void 0);
32
+ __decorate([
33
+ (0, typeorm_1.PrimaryColumn)({ type: "uuid", name: "room_id" }),
34
+ __metadata("design:type", String)
35
+ ], LobbyRoomEntity.prototype, "roomId", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.ManyToOne)(() => lobby_entity_1.LobbyEntity, (lobby) => lobby.lobbyRooms, {
38
+ onDelete: "CASCADE",
39
+ }),
40
+ (0, typeorm_1.JoinColumn)({ name: "lobby_id" }),
41
+ __metadata("design:type", lobby_entity_1.LobbyEntity)
42
+ ], LobbyRoomEntity.prototype, "lobby", void 0);
43
+ __decorate([
44
+ (0, typeorm_1.ManyToOne)(() => room_entity_1.RoomEntity, { onDelete: "CASCADE" }),
45
+ (0, typeorm_1.JoinColumn)({ name: "room_id" }),
46
+ __metadata("design:type", room_entity_1.RoomEntity)
47
+ ], LobbyRoomEntity.prototype, "room", void 0);
48
+ exports.LobbyRoomEntity = LobbyRoomEntity = __decorate([
49
+ (0, typeorm_1.Entity)(entityName),
50
+ (0, typeorm_1.Index)(["lobbyId", "roomId"], { unique: true }),
51
+ (0, typeorm_1.Index)(["roomId"])
52
+ ], LobbyRoomEntity);
@@ -0,0 +1,8 @@
1
+ import { Repository } from "typeorm";
2
+ import { LobbyRoomEntity } from "./lobbyRoom.entity";
3
+ export declare class LobbyRoomRepository extends Repository<LobbyRoomEntity> {
4
+ constructor(repository: Repository<LobbyRoomEntity>);
5
+ findByLobbyId(lobbyId: string): Promise<LobbyRoomEntity[]>;
6
+ findByRoomId(roomId: string): Promise<LobbyRoomEntity[]>;
7
+ }
8
+ //# sourceMappingURL=lobbyRoom.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobbyRoom.repository.d.ts","sourceRoot":"","sources":["../../../src/modules/lobbyModule/lobbyRoom.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASrD,qBACa,mBAAoB,SAAQ,UAAU,CAAC,eAAe,CAAC;gBAOhE,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC;IAKzC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI1D,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAGzD"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.LobbyRoomRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const typeorm_1 = require("@nestjs/typeorm");
18
+ const typeorm_2 = require("typeorm");
19
+ const lobbyRoom_entity_1 = require("./lobbyRoom.entity");
20
+ let LobbyRoomRepository = class LobbyRoomRepository extends typeorm_2.Repository {
21
+ constructor(repository) {
22
+ super(repository.target, repository.manager, repository.queryRunner);
23
+ }
24
+ findByLobbyId(lobbyId) {
25
+ return this.find({ where: { lobbyId } });
26
+ }
27
+ findByRoomId(roomId) {
28
+ return this.find({ where: { roomId } });
29
+ }
30
+ };
31
+ exports.LobbyRoomRepository = LobbyRoomRepository;
32
+ exports.LobbyRoomRepository = LobbyRoomRepository = __decorate([
33
+ (0, common_1.Injectable)(),
34
+ __param(0, (0, typeorm_1.InjectRepository)(lobbyRoom_entity_1.LobbyRoomEntity)),
35
+ __metadata("design:paramtypes", [typeorm_2.Repository])
36
+ ], LobbyRoomRepository);
@@ -0,0 +1,7 @@
1
+ import { BaseQuery } from "../../../common/pagination";
2
+ import { LobbyEntity } from "../lobby.entity";
3
+ export declare class LobbyQuery extends BaseQuery<LobbyEntity> {
4
+ name?: string;
5
+ slug?: string;
6
+ }
7
+ //# sourceMappingURL=lobby.query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lobby.query.d.ts","sourceRoot":"","sources":["../../../../src/modules/lobbyModule/query/lobby.query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,qBAAa,UAAW,SAAQ,SAAS,CAAC,WAAW,CAAC;IAIpD,IAAI,CAAC,EAAE,MAAM,CAAC;IAKd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}