@arken/node 1.5.1 → 1.5.3

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 (640) hide show
  1. package/.rush/temp/shrinkwrap-deps.json +39 -82
  2. package/build/api.js.map +1 -0
  3. package/build/array.js.map +1 -0
  4. package/build/browser.js.map +1 -0
  5. package/build/codebase.js.map +1 -0
  6. package/build/config.js.map +1 -0
  7. package/build/db.d.ts +41 -0
  8. package/build/db.js +234 -0
  9. package/build/db.js.map +1 -0
  10. package/build/{util/decoder.js → decoder.js} +3 -3
  11. package/build/decoder.js.map +1 -0
  12. package/build/format.js.map +1 -0
  13. package/build/guid.js.map +1 -0
  14. package/build/index.d.ts +70 -18
  15. package/build/index.js +216 -18
  16. package/build/index.js.map +1 -1
  17. package/build/json.js.map +1 -0
  18. package/build/legacy/data/items.js +1 -1
  19. package/build/legacy/data/items.js.map +1 -1
  20. package/build/log.d.ts +5 -0
  21. package/build/log.js +28 -0
  22. package/build/log.js.map +1 -0
  23. package/build/math.js.map +1 -0
  24. package/build/{util/merkle.js → merkle.js} +1 -1
  25. package/build/merkle.js.map +1 -0
  26. package/build/{util/mongo.js → mongo.js} +1 -1
  27. package/build/mongo.js.map +1 -0
  28. package/build/number.js.map +1 -0
  29. package/build/object.js.map +1 -0
  30. package/build/otp.js.map +1 -0
  31. package/build/package.json +3 -3
  32. package/build/physics.js.map +1 -0
  33. package/build/{util/process.js → process.js} +1 -1
  34. package/build/process.js.map +1 -0
  35. package/build/rpc.js.map +1 -0
  36. package/build/schema.d.ts +42 -51
  37. package/build/seer.js.map +1 -0
  38. package/build/string.js.map +1 -0
  39. package/build/text.js.map +1 -0
  40. package/build/time/date.js.map +1 -0
  41. package/build/time/fancyTimeFormat.js.map +1 -0
  42. package/build/time/index.js.map +1 -0
  43. package/build/time/now.js.map +1 -0
  44. package/build/trpc/socketLink.d.ts +62 -0
  45. package/build/trpc/socketLink.js +261 -0
  46. package/build/trpc/socketLink.js.map +1 -0
  47. package/build/trpc/socketServer.d.ts +15 -0
  48. package/build/trpc/socketServer.js +47 -0
  49. package/build/trpc/socketServer.js.map +1 -0
  50. package/build/tsconfig.tsbuildinfo +1 -1
  51. package/build/util.d.ts +1 -0
  52. package/build/util.js +2 -0
  53. package/build/util.js.map +1 -0
  54. package/build/web3/httpProvider.js.map +1 -0
  55. package/build/{util/web3.js → web3.js} +1 -1
  56. package/build/web3.js.map +1 -0
  57. package/build/{util/websocket.js → websocket.js} +1 -1
  58. package/build/websocket.js.map +1 -0
  59. package/build/zk.js.map +1 -0
  60. package/build/{util/zod.d.ts → zod.d.ts} +2 -0
  61. package/build/{util/zod.js → zod.js} +1 -0
  62. package/build/zod.js.map +1 -0
  63. package/db.ts +76 -1
  64. package/{util/decoder.ts → decoder.ts} +3 -3
  65. package/index.ts +306 -18
  66. package/legacy/data/items.ts +1 -1
  67. package/log.ts +51 -0
  68. package/{util/merkle.ts → merkle.ts} +3 -1
  69. package/{util/mongo.ts → mongo.ts} +1 -1
  70. package/package.json +3 -3
  71. package/{util/process.ts → process.ts} +1 -1
  72. package/trpc/socketLink.ts +2 -2
  73. package/trpc/socketServer.ts +1 -1
  74. package/tsconfig.json +35 -6
  75. package/util.ts +1 -0
  76. package/{util/web3.ts → web3.ts} +2 -1
  77. package/{util/websocket.ts → websocket.ts} +1 -1
  78. package/{util/zod.ts → zod.ts} +2 -0
  79. package/build/modules/area/area.models.d.ts +0 -6
  80. package/build/modules/area/area.models.js +0 -11
  81. package/build/modules/area/area.models.js.map +0 -1
  82. package/build/modules/area/area.router.d.ts +0 -274
  83. package/build/modules/area/area.router.js +0 -59
  84. package/build/modules/area/area.router.js.map +0 -1
  85. package/build/modules/area/area.schema.d.ts +0 -245
  86. package/build/modules/area/area.schema.js +0 -13
  87. package/build/modules/area/area.schema.js.map +0 -1
  88. package/build/modules/area/area.service.d.ts +0 -12
  89. package/build/modules/area/area.service.js +0 -95
  90. package/build/modules/area/area.service.js.map +0 -1
  91. package/build/modules/area/area.types.d.ts +0 -20
  92. package/build/modules/area/area.types.js +0 -2
  93. package/build/modules/area/area.types.js.map +0 -1
  94. package/build/modules/area/index.d.ts +0 -5
  95. package/build/modules/area/index.js +0 -6
  96. package/build/modules/area/index.js.map +0 -1
  97. package/build/modules/asset/asset.models.d.ts +0 -5
  98. package/build/modules/asset/asset.models.js +0 -44
  99. package/build/modules/asset/asset.models.js.map +0 -1
  100. package/build/modules/asset/asset.router.d.ts +0 -189
  101. package/build/modules/asset/asset.router.js +0 -41
  102. package/build/modules/asset/asset.router.js.map +0 -1
  103. package/build/modules/asset/asset.schema.d.ts +0 -207
  104. package/build/modules/asset/asset.schema.js +0 -19
  105. package/build/modules/asset/asset.schema.js.map +0 -1
  106. package/build/modules/asset/asset.service.d.ts +0 -9
  107. package/build/modules/asset/asset.service.js +0 -68
  108. package/build/modules/asset/asset.service.js.map +0 -1
  109. package/build/modules/asset/asset.types.d.ts +0 -17
  110. package/build/modules/asset/asset.types.js +0 -2
  111. package/build/modules/asset/asset.types.js.map +0 -1
  112. package/build/modules/asset/index.d.ts +0 -5
  113. package/build/modules/asset/index.js +0 -6
  114. package/build/modules/asset/index.js.map +0 -1
  115. package/build/modules/chain/chain.models.d.ts +0 -6
  116. package/build/modules/chain/chain.models.js +0 -42
  117. package/build/modules/chain/chain.models.js.map +0 -1
  118. package/build/modules/chain/chain.router.d.ts +0 -364
  119. package/build/modules/chain/chain.router.js +0 -84
  120. package/build/modules/chain/chain.router.js.map +0 -1
  121. package/build/modules/chain/chain.schema.d.ts +0 -323
  122. package/build/modules/chain/chain.schema.js +0 -41
  123. package/build/modules/chain/chain.schema.js.map +0 -1
  124. package/build/modules/chain/chain.service.d.ts +0 -15
  125. package/build/modules/chain/chain.service.js +0 -115
  126. package/build/modules/chain/chain.service.js.map +0 -1
  127. package/build/modules/chain/chain.types.d.ts +0 -20
  128. package/build/modules/chain/chain.types.js +0 -2
  129. package/build/modules/chain/chain.types.js.map +0 -1
  130. package/build/modules/chain/index.d.ts +0 -5
  131. package/build/modules/chain/index.js +0 -6
  132. package/build/modules/chain/index.js.map +0 -1
  133. package/build/modules/character/character.models.d.ts +0 -14
  134. package/build/modules/character/character.models.js +0 -123
  135. package/build/modules/character/character.models.js.map +0 -1
  136. package/build/modules/character/character.router.d.ts +0 -945
  137. package/build/modules/character/character.router.js +0 -246
  138. package/build/modules/character/character.router.js.map +0 -1
  139. package/build/modules/character/character.schema.d.ts +0 -1239
  140. package/build/modules/character/character.schema.js +0 -67
  141. package/build/modules/character/character.schema.js.map +0 -1
  142. package/build/modules/character/character.service.d.ts +0 -73
  143. package/build/modules/character/character.service.js +0 -533
  144. package/build/modules/character/character.service.js.map +0 -1
  145. package/build/modules/character/character.types.d.ts +0 -48
  146. package/build/modules/character/character.types.js +0 -2
  147. package/build/modules/character/character.types.js.map +0 -1
  148. package/build/modules/character/index.d.ts +0 -5
  149. package/build/modules/character/index.js +0 -6
  150. package/build/modules/character/index.js.map +0 -1
  151. package/build/modules/chat/chat.models.d.ts +0 -4
  152. package/build/modules/chat/chat.models.js +0 -35
  153. package/build/modules/chat/chat.models.js.map +0 -1
  154. package/build/modules/chat/chat.router.d.ts +0 -223
  155. package/build/modules/chat/chat.router.js +0 -51
  156. package/build/modules/chat/chat.router.js.map +0 -1
  157. package/build/modules/chat/chat.schema.d.ts +0 -183
  158. package/build/modules/chat/chat.schema.js +0 -29
  159. package/build/modules/chat/chat.schema.js.map +0 -1
  160. package/build/modules/chat/chat.service.d.ts +0 -12
  161. package/build/modules/chat/chat.service.js +0 -85
  162. package/build/modules/chat/chat.service.js.map +0 -1
  163. package/build/modules/chat/chat.types.d.ts +0 -14
  164. package/build/modules/chat/chat.types.js +0 -2
  165. package/build/modules/chat/chat.types.js.map +0 -1
  166. package/build/modules/chat/index.d.ts +0 -5
  167. package/build/modules/chat/index.js +0 -6
  168. package/build/modules/chat/index.js.map +0 -1
  169. package/build/modules/collection/collection.models.d.ts +0 -9
  170. package/build/modules/collection/collection.models.js +0 -69
  171. package/build/modules/collection/collection.models.js.map +0 -1
  172. package/build/modules/collection/collection.router.d.ts +0 -361
  173. package/build/modules/collection/collection.router.js +0 -71
  174. package/build/modules/collection/collection.router.js.map +0 -1
  175. package/build/modules/collection/collection.schema.d.ts +0 -676
  176. package/build/modules/collection/collection.schema.js +0 -70
  177. package/build/modules/collection/collection.schema.js.map +0 -1
  178. package/build/modules/collection/collection.service.d.ts +0 -15
  179. package/build/modules/collection/collection.service.js +0 -117
  180. package/build/modules/collection/collection.service.js.map +0 -1
  181. package/build/modules/collection/collection.types.d.ts +0 -29
  182. package/build/modules/collection/collection.types.js +0 -2
  183. package/build/modules/collection/collection.types.js.map +0 -1
  184. package/build/modules/collection/index.d.ts +0 -5
  185. package/build/modules/collection/index.js +0 -6
  186. package/build/modules/collection/index.js.map +0 -1
  187. package/build/modules/core/core.models.d.ts +0 -123
  188. package/build/modules/core/core.models.js +0 -811
  189. package/build/modules/core/core.models.js.map +0 -1
  190. package/build/modules/core/core.router.d.ts +0 -5297
  191. package/build/modules/core/core.router.js +0 -1372
  192. package/build/modules/core/core.router.js.map +0 -1
  193. package/build/modules/core/core.schema.d.ts +0 -5918
  194. package/build/modules/core/core.schema.js +0 -519
  195. package/build/modules/core/core.schema.js.map +0 -1
  196. package/build/modules/core/core.service.d.ts +0 -270
  197. package/build/modules/core/core.service.js +0 -2515
  198. package/build/modules/core/core.service.js.map +0 -1
  199. package/build/modules/core/core.types.d.ts +0 -251
  200. package/build/modules/core/core.types.js +0 -2
  201. package/build/modules/core/core.types.js.map +0 -1
  202. package/build/modules/core/index.d.ts +0 -5
  203. package/build/modules/core/index.js +0 -6
  204. package/build/modules/core/index.js.map +0 -1
  205. package/build/modules/core/mail/applyPatchesOrMail.d.ts +0 -72
  206. package/build/modules/core/mail/applyPatchesOrMail.js +0 -416
  207. package/build/modules/core/mail/applyPatchesOrMail.js.map +0 -1
  208. package/build/modules/core/mail/mailClaimablePatchesBatch.d.ts +0 -51
  209. package/build/modules/core/mail/mailClaimablePatchesBatch.js +0 -239
  210. package/build/modules/core/mail/mailClaimablePatchesBatch.js.map +0 -1
  211. package/build/modules/game/game.models.d.ts +0 -6
  212. package/build/modules/game/game.models.js +0 -29
  213. package/build/modules/game/game.models.js.map +0 -1
  214. package/build/modules/game/game.router.d.ts +0 -428
  215. package/build/modules/game/game.router.js +0 -90
  216. package/build/modules/game/game.router.js.map +0 -1
  217. package/build/modules/game/game.schema.d.ts +0 -344
  218. package/build/modules/game/game.schema.js +0 -14
  219. package/build/modules/game/game.schema.js.map +0 -1
  220. package/build/modules/game/game.service.d.ts +0 -16
  221. package/build/modules/game/game.service.js +0 -111
  222. package/build/modules/game/game.service.js.map +0 -1
  223. package/build/modules/game/game.types.d.ts +0 -20
  224. package/build/modules/game/game.types.js +0 -2
  225. package/build/modules/game/game.types.js.map +0 -1
  226. package/build/modules/game/index.d.ts +0 -5
  227. package/build/modules/game/index.js +0 -5
  228. package/build/modules/game/index.js.map +0 -1
  229. package/build/modules/interface/index.d.ts +0 -5
  230. package/build/modules/interface/index.js +0 -6
  231. package/build/modules/interface/index.js.map +0 -1
  232. package/build/modules/interface/interface.canonicalize.d.ts +0 -2
  233. package/build/modules/interface/interface.canonicalize.js +0 -241
  234. package/build/modules/interface/interface.canonicalize.js.map +0 -1
  235. package/build/modules/interface/interface.models.d.ts +0 -6
  236. package/build/modules/interface/interface.models.js +0 -30
  237. package/build/modules/interface/interface.models.js.map +0 -1
  238. package/build/modules/interface/interface.router.d.ts +0 -472
  239. package/build/modules/interface/interface.router.js +0 -113
  240. package/build/modules/interface/interface.router.js.map +0 -1
  241. package/build/modules/interface/interface.schema.d.ts +0 -313
  242. package/build/modules/interface/interface.schema.js +0 -36
  243. package/build/modules/interface/interface.schema.js.map +0 -1
  244. package/build/modules/interface/interface.service.d.ts +0 -19
  245. package/build/modules/interface/interface.service.js +0 -168
  246. package/build/modules/interface/interface.service.js.map +0 -1
  247. package/build/modules/interface/interface.types.d.ts +0 -19
  248. package/build/modules/interface/interface.types.js +0 -2
  249. package/build/modules/interface/interface.types.js.map +0 -1
  250. package/build/modules/item/index.d.ts +0 -5
  251. package/build/modules/item/index.js +0 -6
  252. package/build/modules/item/index.js.map +0 -1
  253. package/build/modules/item/item.models.d.ts +0 -16
  254. package/build/modules/item/item.models.js +0 -101
  255. package/build/modules/item/item.models.js.map +0 -1
  256. package/build/modules/item/item.router.d.ts +0 -263
  257. package/build/modules/item/item.router.js +0 -70
  258. package/build/modules/item/item.router.js.map +0 -1
  259. package/build/modules/item/item.schema.d.ts +0 -778
  260. package/build/modules/item/item.schema.js +0 -56
  261. package/build/modules/item/item.schema.js.map +0 -1
  262. package/build/modules/item/item.service.d.ts +0 -13
  263. package/build/modules/item/item.service.js +0 -116
  264. package/build/modules/item/item.service.js.map +0 -1
  265. package/build/modules/item/item.types.d.ts +0 -55
  266. package/build/modules/item/item.types.js +0 -2
  267. package/build/modules/item/item.types.js.map +0 -1
  268. package/build/modules/job/index.d.ts +0 -5
  269. package/build/modules/job/index.js +0 -6
  270. package/build/modules/job/index.js.map +0 -1
  271. package/build/modules/job/job.models.d.ts +0 -3
  272. package/build/modules/job/job.models.js +0 -9
  273. package/build/modules/job/job.models.js.map +0 -1
  274. package/build/modules/job/job.router.d.ts +0 -146
  275. package/build/modules/job/job.router.js +0 -32
  276. package/build/modules/job/job.router.js.map +0 -1
  277. package/build/modules/job/job.schema.d.ts +0 -67
  278. package/build/modules/job/job.schema.js +0 -7
  279. package/build/modules/job/job.schema.js.map +0 -1
  280. package/build/modules/job/job.service.d.ts +0 -7
  281. package/build/modules/job/job.service.js +0 -144
  282. package/build/modules/job/job.service.js.map +0 -1
  283. package/build/modules/job/job.types.d.ts +0 -16
  284. package/build/modules/job/job.types.js +0 -2
  285. package/build/modules/job/job.types.js.map +0 -1
  286. package/build/modules/market/index.d.ts +0 -5
  287. package/build/modules/market/index.js +0 -6
  288. package/build/modules/market/index.js.map +0 -1
  289. package/build/modules/market/market.models.d.ts +0 -14
  290. package/build/modules/market/market.models.js +0 -98
  291. package/build/modules/market/market.models.js.map +0 -1
  292. package/build/modules/market/market.router.d.ts +0 -230
  293. package/build/modules/market/market.router.js +0 -56
  294. package/build/modules/market/market.router.js.map +0 -1
  295. package/build/modules/market/market.schema.d.ts +0 -949
  296. package/build/modules/market/market.schema.js +0 -101
  297. package/build/modules/market/market.schema.js.map +0 -1
  298. package/build/modules/market/market.service.d.ts +0 -12
  299. package/build/modules/market/market.service.js +0 -88
  300. package/build/modules/market/market.service.js.map +0 -1
  301. package/build/modules/market/market.types.d.ts +0 -49
  302. package/build/modules/market/market.types.js +0 -2
  303. package/build/modules/market/market.types.js.map +0 -1
  304. package/build/modules/product/index.d.ts +0 -5
  305. package/build/modules/product/index.js +0 -6
  306. package/build/modules/product/index.js.map +0 -1
  307. package/build/modules/product/product.models.d.ts +0 -4
  308. package/build/modules/product/product.models.js +0 -113
  309. package/build/modules/product/product.models.js.map +0 -1
  310. package/build/modules/product/product.router.d.ts +0 -447
  311. package/build/modules/product/product.router.js +0 -71
  312. package/build/modules/product/product.router.js.map +0 -1
  313. package/build/modules/product/product.schema.d.ts +0 -654
  314. package/build/modules/product/product.schema.js +0 -117
  315. package/build/modules/product/product.schema.js.map +0 -1
  316. package/build/modules/product/product.service.d.ts +0 -15
  317. package/build/modules/product/product.service.js +0 -115
  318. package/build/modules/product/product.service.js.map +0 -1
  319. package/build/modules/product/product.types.d.ts +0 -28
  320. package/build/modules/product/product.types.js +0 -2
  321. package/build/modules/product/product.types.js.map +0 -1
  322. package/build/modules/profile/index.d.ts +0 -5
  323. package/build/modules/profile/index.js +0 -6
  324. package/build/modules/profile/index.js.map +0 -1
  325. package/build/modules/profile/profile.models.d.ts +0 -2
  326. package/build/modules/profile/profile.models.js +0 -165
  327. package/build/modules/profile/profile.models.js.map +0 -1
  328. package/build/modules/profile/profile.router.d.ts +0 -163
  329. package/build/modules/profile/profile.router.js +0 -54
  330. package/build/modules/profile/profile.router.js.map +0 -1
  331. package/build/modules/profile/profile.schema.d.ts +0 -1
  332. package/build/modules/profile/profile.schema.js +0 -138
  333. package/build/modules/profile/profile.schema.js.map +0 -1
  334. package/build/modules/profile/profile.service.d.ts +0 -11
  335. package/build/modules/profile/profile.service.js +0 -120
  336. package/build/modules/profile/profile.service.js.map +0 -1
  337. package/build/modules/profile/profile.types.d.ts +0 -16
  338. package/build/modules/profile/profile.types.js +0 -2
  339. package/build/modules/profile/profile.types.js.map +0 -1
  340. package/build/modules/raffle/index.d.ts +0 -5
  341. package/build/modules/raffle/index.js +0 -6
  342. package/build/modules/raffle/index.js.map +0 -1
  343. package/build/modules/raffle/raffle.models.d.ts +0 -6
  344. package/build/modules/raffle/raffle.models.js +0 -36
  345. package/build/modules/raffle/raffle.models.js.map +0 -1
  346. package/build/modules/raffle/raffle.router.d.ts +0 -299
  347. package/build/modules/raffle/raffle.router.js +0 -71
  348. package/build/modules/raffle/raffle.router.js.map +0 -1
  349. package/build/modules/raffle/raffle.schema.d.ts +0 -265
  350. package/build/modules/raffle/raffle.schema.js +0 -21
  351. package/build/modules/raffle/raffle.schema.js.map +0 -1
  352. package/build/modules/raffle/raffle.service.d.ts +0 -15
  353. package/build/modules/raffle/raffle.service.js +0 -115
  354. package/build/modules/raffle/raffle.service.js.map +0 -1
  355. package/build/modules/raffle/raffle.types.d.ts +0 -25
  356. package/build/modules/raffle/raffle.types.js +0 -2
  357. package/build/modules/raffle/raffle.types.js.map +0 -1
  358. package/build/modules/skill/index.d.ts +0 -5
  359. package/build/modules/skill/index.js +0 -6
  360. package/build/modules/skill/index.js.map +0 -1
  361. package/build/modules/skill/skill.models.d.ts +0 -9
  362. package/build/modules/skill/skill.models.js +0 -9
  363. package/build/modules/skill/skill.models.js.map +0 -1
  364. package/build/modules/skill/skill.router.d.ts +0 -659
  365. package/build/modules/skill/skill.router.js +0 -152
  366. package/build/modules/skill/skill.router.js.map +0 -1
  367. package/build/modules/skill/skill.schema.d.ts +0 -548
  368. package/build/modules/skill/skill.schema.js +0 -26
  369. package/build/modules/skill/skill.schema.js.map +0 -1
  370. package/build/modules/skill/skill.service.d.ts +0 -32
  371. package/build/modules/skill/skill.service.js +0 -279
  372. package/build/modules/skill/skill.service.js.map +0 -1
  373. package/build/modules/skill/skill.types.d.ts +0 -29
  374. package/build/modules/skill/skill.types.js +0 -2
  375. package/build/modules/skill/skill.types.js.map +0 -1
  376. package/build/modules/video/index.d.ts +0 -5
  377. package/build/modules/video/index.js +0 -6
  378. package/build/modules/video/index.js.map +0 -1
  379. package/build/modules/video/video.models.d.ts +0 -7
  380. package/build/modules/video/video.models.js +0 -19
  381. package/build/modules/video/video.models.js.map +0 -1
  382. package/build/modules/video/video.router.d.ts +0 -563
  383. package/build/modules/video/video.router.js +0 -112
  384. package/build/modules/video/video.router.js.map +0 -1
  385. package/build/modules/video/video.schema.d.ts +0 -456
  386. package/build/modules/video/video.schema.js +0 -31
  387. package/build/modules/video/video.schema.js.map +0 -1
  388. package/build/modules/video/video.service.d.ts +0 -23
  389. package/build/modules/video/video.service.js +0 -197
  390. package/build/modules/video/video.service.js.map +0 -1
  391. package/build/modules/video/video.types.d.ts +0 -28
  392. package/build/modules/video/video.types.js +0 -2
  393. package/build/modules/video/video.types.js.map +0 -1
  394. package/build/router.d.ts +0 -10406
  395. package/build/router.js +0 -44
  396. package/build/router.js.map +0 -1
  397. package/build/types.d.ts +0 -164
  398. package/build/types.js +0 -19
  399. package/build/types.js.map +0 -1
  400. package/build/util/api.js.map +0 -1
  401. package/build/util/array.js.map +0 -1
  402. package/build/util/browser.js.map +0 -1
  403. package/build/util/codebase.js.map +0 -1
  404. package/build/util/config.js.map +0 -1
  405. package/build/util/db/index.d.ts +0 -5
  406. package/build/util/db/index.js +0 -7
  407. package/build/util/db/index.js.map +0 -1
  408. package/build/util/db/isPostgresError.d.ts +0 -2
  409. package/build/util/db/isPostgresError.js +0 -8
  410. package/build/util/db/isPostgresError.js.map +0 -1
  411. package/build/util/db/isUniqueConstraintViolation.d.ts +0 -2
  412. package/build/util/db/isUniqueConstraintViolation.js +0 -3
  413. package/build/util/db/isUniqueConstraintViolation.js.map +0 -1
  414. package/build/util/db.d.ts +0 -6
  415. package/build/util/db.js +0 -51
  416. package/build/util/db.js.map +0 -1
  417. package/build/util/decoder.js.map +0 -1
  418. package/build/util/decoder.test.d.ts +0 -1
  419. package/build/util/decoder.test.js +0 -7
  420. package/build/util/decoder.test.js.map +0 -1
  421. package/build/util/format.js.map +0 -1
  422. package/build/util/guid.js.map +0 -1
  423. package/build/util/index.d.ts +0 -74
  424. package/build/util/index.js +0 -239
  425. package/build/util/index.js.map +0 -1
  426. package/build/util/json.js.map +0 -1
  427. package/build/util/log.d.ts +0 -1
  428. package/build/util/log.js +0 -6
  429. package/build/util/log.js.map +0 -1
  430. package/build/util/math.js.map +0 -1
  431. package/build/util/merkle.js.map +0 -1
  432. package/build/util/mongo.js.map +0 -1
  433. package/build/util/number.js.map +0 -1
  434. package/build/util/object.js.map +0 -1
  435. package/build/util/otp.js.map +0 -1
  436. package/build/util/physics.js.map +0 -1
  437. package/build/util/process.js.map +0 -1
  438. package/build/util/rpc.js.map +0 -1
  439. package/build/util/seer.js.map +0 -1
  440. package/build/util/string.js.map +0 -1
  441. package/build/util/text.js.map +0 -1
  442. package/build/util/time/date.js.map +0 -1
  443. package/build/util/time/fancyTimeFormat.js.map +0 -1
  444. package/build/util/time/index.js.map +0 -1
  445. package/build/util/time/now.js.map +0 -1
  446. package/build/util/web3/httpProvider.js.map +0 -1
  447. package/build/util/web3.js.map +0 -1
  448. package/build/util/websocket.js.map +0 -1
  449. package/build/util/zk.js.map +0 -1
  450. package/build/util/zod.js.map +0 -1
  451. package/modules/area/area.models.ts +0 -15
  452. package/modules/area/area.router.ts +0 -74
  453. package/modules/area/area.schema.ts +0 -22
  454. package/modules/area/area.service.ts +0 -124
  455. package/modules/area/area.types.ts +0 -26
  456. package/modules/area/index.ts +0 -5
  457. package/modules/asset/asset.models.ts +0 -59
  458. package/modules/asset/asset.router.ts +0 -55
  459. package/modules/asset/asset.schema.ts +0 -27
  460. package/modules/asset/asset.service.ts +0 -85
  461. package/modules/asset/asset.types.ts +0 -22
  462. package/modules/asset/index.ts +0 -5
  463. package/modules/chain/chain.models.ts +0 -50
  464. package/modules/chain/chain.router.ts +0 -104
  465. package/modules/chain/chain.schema.ts +0 -52
  466. package/modules/chain/chain.service.ts +0 -167
  467. package/modules/chain/chain.types.ts +0 -24
  468. package/modules/chain/index.ts +0 -5
  469. package/modules/character/character.models.ts +0 -174
  470. package/modules/character/character.router.ts +0 -314
  471. package/modules/character/character.schema.ts +0 -147
  472. package/modules/character/character.service.ts +0 -876
  473. package/modules/character/character.types.ts +0 -64
  474. package/modules/character/index.ts +0 -5
  475. package/modules/chat/chat.models.ts +0 -43
  476. package/modules/chat/chat.router.ts +0 -67
  477. package/modules/chat/chat.schema.ts +0 -36
  478. package/modules/chat/chat.service.ts +0 -128
  479. package/modules/chat/chat.types.ts +0 -20
  480. package/modules/chat/index.ts +0 -5
  481. package/modules/collection/collection.models.ts +0 -76
  482. package/modules/collection/collection.router.ts +0 -91
  483. package/modules/collection/collection.schema.ts +0 -90
  484. package/modules/collection/collection.service.ts +0 -192
  485. package/modules/collection/collection.types.ts +0 -36
  486. package/modules/collection/index.ts +0 -5
  487. package/modules/core/core.models.ts +0 -1380
  488. package/modules/core/core.router.ts +0 -1781
  489. package/modules/core/core.schema.ts +0 -847
  490. package/modules/core/core.service.ts +0 -2824
  491. package/modules/core/core.types.ts +0 -340
  492. package/modules/core/index.ts +0 -5
  493. package/modules/core/mail/applyPatchesOrMail.ts +0 -568
  494. package/modules/core/mail/mailClaimablePatchesBatch.ts +0 -381
  495. package/modules/game/game.models.ts +0 -53
  496. package/modules/game/game.router.ts +0 -110
  497. package/modules/game/game.schema.ts +0 -23
  498. package/modules/game/game.service.ts +0 -143
  499. package/modules/game/game.types.ts +0 -28
  500. package/modules/game/index.ts +0 -5
  501. package/modules/interface/index.ts +0 -5
  502. package/modules/interface/interface.canonicalize.ts +0 -279
  503. package/modules/interface/interface.models.ts +0 -40
  504. package/modules/interface/interface.router.ts +0 -175
  505. package/modules/interface/interface.schema.ts +0 -59
  506. package/modules/interface/interface.service.ts +0 -356
  507. package/modules/interface/interface.types.ts +0 -25
  508. package/modules/item/index.ts +0 -5
  509. package/modules/item/item.models.ts +0 -124
  510. package/modules/item/item.router.ts +0 -103
  511. package/modules/item/item.schema.ts +0 -120
  512. package/modules/item/item.service.ts +0 -167
  513. package/modules/item/item.types.ts +0 -74
  514. package/modules/job/index.ts +0 -5
  515. package/modules/job/job.models.ts +0 -14
  516. package/modules/job/job.router.ts +0 -44
  517. package/modules/job/job.schema.ts +0 -9
  518. package/modules/job/job.service.ts +0 -243
  519. package/modules/job/job.types.ts +0 -23
  520. package/modules/market/index.ts +0 -5
  521. package/modules/market/market.models.ts +0 -113
  522. package/modules/market/market.router.ts +0 -73
  523. package/modules/market/market.schema.ts +0 -140
  524. package/modules/market/market.service.ts +0 -122
  525. package/modules/market/market.types.ts +0 -56
  526. package/modules/product/index.ts +0 -5
  527. package/modules/product/product.models.ts +0 -166
  528. package/modules/product/product.router.ts +0 -93
  529. package/modules/product/product.schema.ts +0 -149
  530. package/modules/product/product.service.ts +0 -160
  531. package/modules/product/product.types.ts +0 -33
  532. package/modules/profile/index.ts +0 -5
  533. package/modules/profile/profile.models.ts +0 -214
  534. package/modules/profile/profile.router.ts +0 -72
  535. package/modules/profile/profile.schema.ts +0 -156
  536. package/modules/profile/profile.service.ts +0 -149
  537. package/modules/profile/profile.types.ts +0 -22
  538. package/modules/raffle/index.ts +0 -5
  539. package/modules/raffle/raffle.models.ts +0 -44
  540. package/modules/raffle/raffle.router.ts +0 -90
  541. package/modules/raffle/raffle.schema.ts +0 -32
  542. package/modules/raffle/raffle.service.ts +0 -167
  543. package/modules/raffle/raffle.types.ts +0 -30
  544. package/modules/skill/index.ts +0 -5
  545. package/modules/skill/skill.models.ts +0 -16
  546. package/modules/skill/skill.router.ts +0 -201
  547. package/modules/skill/skill.schema.ts +0 -40
  548. package/modules/skill/skill.service.ts +0 -390
  549. package/modules/skill/skill.types.ts +0 -33
  550. package/modules/video/index.ts +0 -5
  551. package/modules/video/video.models.ts +0 -25
  552. package/modules/video/video.router.ts +0 -143
  553. package/modules/video/video.schema.ts +0 -46
  554. package/modules/video/video.service.ts +0 -274
  555. package/modules/video/video.types.ts +0 -33
  556. package/router.ts +0 -49
  557. package/types.ts +0 -183
  558. package/util/db/index.ts +0 -7
  559. package/util/db/isPostgresError.ts +0 -9
  560. package/util/db/isUniqueConstraintViolation.ts +0 -3
  561. package/util/db.ts +0 -62
  562. package/util/index.ts +0 -351
  563. package/util/log.ts +0 -5
  564. /package/{util/api.ts → api.ts} +0 -0
  565. /package/{util/array.ts → array.ts} +0 -0
  566. /package/{util/browser.ts → browser.ts} +0 -0
  567. /package/build/{util/api.d.ts → api.d.ts} +0 -0
  568. /package/build/{util/api.js → api.js} +0 -0
  569. /package/build/{util/array.d.ts → array.d.ts} +0 -0
  570. /package/build/{util/array.js → array.js} +0 -0
  571. /package/build/{util/browser.d.ts → browser.d.ts} +0 -0
  572. /package/build/{util/browser.js → browser.js} +0 -0
  573. /package/build/{util/codebase.d.ts → codebase.d.ts} +0 -0
  574. /package/build/{util/codebase.js → codebase.js} +0 -0
  575. /package/build/{util/config.d.ts → config.d.ts} +0 -0
  576. /package/build/{util/config.js → config.js} +0 -0
  577. /package/build/{util/decoder.d.ts → decoder.d.ts} +0 -0
  578. /package/build/{util/format.d.ts → format.d.ts} +0 -0
  579. /package/build/{util/format.js → format.js} +0 -0
  580. /package/build/{util/guid.d.ts → guid.d.ts} +0 -0
  581. /package/build/{util/guid.js → guid.js} +0 -0
  582. /package/build/{util/json.d.ts → json.d.ts} +0 -0
  583. /package/build/{util/json.js → json.js} +0 -0
  584. /package/build/{util/math.d.ts → math.d.ts} +0 -0
  585. /package/build/{util/math.js → math.js} +0 -0
  586. /package/build/{util/merkle.d.ts → merkle.d.ts} +0 -0
  587. /package/build/{util/mongo.d.ts → mongo.d.ts} +0 -0
  588. /package/build/{util/number.d.ts → number.d.ts} +0 -0
  589. /package/build/{util/number.js → number.js} +0 -0
  590. /package/build/{util/object.d.ts → object.d.ts} +0 -0
  591. /package/build/{util/object.js → object.js} +0 -0
  592. /package/build/{util/otp.d.ts → otp.d.ts} +0 -0
  593. /package/build/{util/otp.js → otp.js} +0 -0
  594. /package/build/{util/physics.d.ts → physics.d.ts} +0 -0
  595. /package/build/{util/physics.js → physics.js} +0 -0
  596. /package/build/{util/process.d.ts → process.d.ts} +0 -0
  597. /package/build/{util/rpc.d.ts → rpc.d.ts} +0 -0
  598. /package/build/{util/rpc.js → rpc.js} +0 -0
  599. /package/build/{util/seer.d.ts → seer.d.ts} +0 -0
  600. /package/build/{util/seer.js → seer.js} +0 -0
  601. /package/build/{util/string.d.ts → string.d.ts} +0 -0
  602. /package/build/{util/string.js → string.js} +0 -0
  603. /package/build/{util/text.d.ts → text.d.ts} +0 -0
  604. /package/build/{util/text.js → text.js} +0 -0
  605. /package/build/{util/time → time}/date.d.ts +0 -0
  606. /package/build/{util/time → time}/date.js +0 -0
  607. /package/build/{util/time → time}/fancyTimeFormat.d.ts +0 -0
  608. /package/build/{util/time → time}/fancyTimeFormat.js +0 -0
  609. /package/build/{util/time → time}/index.d.ts +0 -0
  610. /package/build/{util/time → time}/index.js +0 -0
  611. /package/build/{util/time → time}/now.d.ts +0 -0
  612. /package/build/{util/time → time}/now.js +0 -0
  613. /package/build/{util/web3 → web3}/httpProvider.d.ts +0 -0
  614. /package/build/{util/web3 → web3}/httpProvider.js +0 -0
  615. /package/build/{util/web3.d.ts → web3.d.ts} +0 -0
  616. /package/build/{util/websocket.d.ts → websocket.d.ts} +0 -0
  617. /package/build/{util/zk.d.ts → zk.d.ts} +0 -0
  618. /package/build/{util/zk.js → zk.js} +0 -0
  619. /package/{util/codebase.ts → codebase.ts} +0 -0
  620. /package/{util/config.ts → config.ts} +0 -0
  621. /package/{util/decoder.test.ts → decoder.test.ts} +0 -0
  622. /package/{util/format.ts → format.ts} +0 -0
  623. /package/{util/guid.ts → guid.ts} +0 -0
  624. /package/{util/json.ts → json.ts} +0 -0
  625. /package/{util/math.ts → math.ts} +0 -0
  626. /package/{util/number.ts → number.ts} +0 -0
  627. /package/{util/object.ts → object.ts} +0 -0
  628. /package/{util/otp.ts → otp.ts} +0 -0
  629. /package/{util/physics.ts → physics.ts} +0 -0
  630. /package/{util/rpc.ts → rpc.ts} +0 -0
  631. /package/{util/seer.ts → seer.ts} +0 -0
  632. /package/{util/string.ts → string.ts} +0 -0
  633. /package/{util/text.ts → text.ts} +0 -0
  634. /package/{util/time → time}/date.ts +0 -0
  635. /package/{util/time → time}/fancyTimeFormat.ts +0 -0
  636. /package/{util/time → time}/index.ts +0 -0
  637. /package/{util/time → time}/now.ts +0 -0
  638. /package/{util/types → types}/mongo.d.ts +0 -0
  639. /package/{util/web3 → web3}/httpProvider.ts +0 -0
  640. /package/{util/zk.ts → zk.ts} +0 -0
@@ -1,381 +0,0 @@
1
- // packages/node/modules/core/mail/mailClaimablePatchesBatch.ts
2
- //
3
- import type { RouterContext } from '../core.types';
4
- import type { EntityPatch } from '../../../types';
5
-
6
- type MailKind = 'mail' | 'dm' | 'group' | 'support' | 'system';
7
-
8
- export type MailPatchMessagePayload = {
9
- kind: 'patch-grant';
10
- source: string;
11
- title?: string;
12
- body?: string;
13
- patches: EntityPatch[];
14
- ui?: {
15
- rewards?: Array<{ type: 'item' | 'token' | 'reward'; id: string; quantity?: number; meta?: any }>;
16
- effects?: Array<{ type: 'stat' | 'flag' | 'effect'; key?: string; delta?: number; value?: any; label?: string }>;
17
- };
18
- };
19
-
20
- export type MailClaimableBatchParams = {
21
- ctx: RouterContext;
22
-
23
- /** If omitted, helper streams all profiles */
24
- profileIds?: string[];
25
-
26
- /** Streaming mode: process all profiles using _id cursor */
27
- streamAllProfiles?: boolean;
28
-
29
- kind?: MailKind; // default 'mail'
30
- source: string;
31
-
32
- title: string;
33
- body: string;
34
-
35
- /**
36
- * Same dedupeKey across all conversations is OK because uniqueness is enforced by:
37
- * (conversationId, claim.dedupeKey)
38
- */
39
- dedupeKey: string;
40
-
41
- /**
42
- * IMPORTANT: These patches should be claimable. Your applyPatchesWithInventoryViaMail
43
- * uses `patch.claimable` to decide mail vs immediate. For broadcast we ALWAYS mail.
44
- */
45
- claimablePatches: EntityPatch[];
46
-
47
- payloadUi?: MailPatchMessagePayload['ui'];
48
-
49
- batchSize?: number; // default 1000
50
-
51
- conversationKey: string; // ✅ REQUIRED
52
- conversationTitle?: string; // optional: used on new convo creation
53
- conversationCategory?: string; // optional
54
- conversationImportance?: number; // optional
55
- };
56
-
57
- export type MailClaimableBatchResult = {
58
- processedProfiles: number;
59
- conversationsFound: number;
60
- conversationsCreated: number;
61
-
62
- messagesExisting: number;
63
- messagesCreated: number;
64
- };
65
-
66
- function chunk<T>(arr: T[], size: number): T[][] {
67
- const out: T[][] = [];
68
- for (let i = 0; i < arr.length; i += size) out.push(arr.slice(i, i + size));
69
- return out;
70
- }
71
-
72
- function toObjectId(mongoose: any, id: string) {
73
- // Works whether id already is ObjectId-like or string
74
- try {
75
- return new mongoose.Types.ObjectId(id);
76
- } catch {
77
- return id;
78
- }
79
- }
80
-
81
- /**
82
- * Bulk-mail claimable patches to many profiles.
83
- *
84
- * Design assumptions:
85
- * - 1 mailbox per profile per kind (kind='mail' for inbox)
86
- * - Conversation can be found by:
87
- * - kind + profileId (back-compat) OR
88
- * - kind + participants.profileId (new)
89
- * - Dedupe per conversation by claim.dedupeKey
90
- */
91
- export async function mailClaimablePatchesBatch(params: MailClaimableBatchParams): Promise<MailClaimableBatchResult> {
92
- const {
93
- ctx,
94
- kind = 'mail',
95
- source,
96
- title,
97
- body,
98
- dedupeKey,
99
- claimablePatches,
100
- payloadUi,
101
- batchSize = 1000,
102
- conversationKey,
103
- } = params;
104
-
105
- const mongoose = (ctx.app as any).db?.mongoose ?? (ctx.app as any).mongoose;
106
- const Profile = (ctx.app as any).model.Profile;
107
- const Conversation = (ctx.app as any).model.Conversation;
108
- const ConversationMessage = (ctx.app as any).model.ConversationMessage;
109
-
110
- if (!Profile || !Conversation || !ConversationMessage) {
111
- throw new Error('mailClaimablePatchesBatch: missing required models (Profile/Conversation/ConversationMessage)');
112
- }
113
-
114
- const payload: MailPatchMessagePayload = {
115
- kind: 'patch-grant',
116
- source,
117
- title,
118
- body,
119
- patches: claimablePatches,
120
- ui: payloadUi,
121
- };
122
-
123
- const preview = `${title} — ${body}`.slice(0, 140);
124
- const now = new Date();
125
-
126
- let processedProfiles = 0;
127
- let conversationsFound = 0;
128
- let conversationsCreated = 0;
129
- let messagesExisting = 0;
130
- let messagesCreated = 0;
131
-
132
- // ----------------------------
133
- // Resolve profile id batches
134
- // ----------------------------
135
- const explicitIds = Array.isArray(params.profileIds) ? params.profileIds.filter(Boolean) : [];
136
-
137
- // If caller gave explicit profileIds, just run those (chunked).
138
- if (explicitIds.length > 0) {
139
- for (const batch of chunk(explicitIds, batchSize)) {
140
- const r = await processProfileIdBatch(batch, ctx);
141
- processedProfiles += r.processedProfiles;
142
- conversationsFound += r.conversationsFound;
143
- conversationsCreated += r.conversationsCreated;
144
- messagesExisting += r.messagesExisting;
145
- messagesCreated += r.messagesCreated;
146
- }
147
-
148
- return { processedProfiles, conversationsFound, conversationsCreated, messagesExisting, messagesCreated };
149
- }
150
-
151
- // Otherwise stream all profiles if requested; default true if neither profileIds nor streamAllProfiles specified.
152
- const streamAll = params.streamAllProfiles ?? true;
153
- if (!streamAll) {
154
- return {
155
- processedProfiles: 0,
156
- conversationsFound: 0,
157
- conversationsCreated: 0,
158
- messagesExisting: 0,
159
- messagesCreated: 0,
160
- };
161
- }
162
-
163
- // Stream profiles by _id cursor to avoid loading everything.
164
- let lastId: any = null;
165
-
166
- // eslint-disable-next-line no-constant-condition
167
- while (true) {
168
- const q: any = lastId ? { _id: { $gt: lastId } } : {};
169
- const docs = await Profile.find(q).select({ _id: 1 }).sort({ _id: 1 }).limit(batchSize).lean().exec();
170
-
171
- if (!docs || docs.length === 0) break;
172
-
173
- const batchIds = docs.map((d: any) => String(d._id));
174
- lastId = docs[docs.length - 1]._id;
175
-
176
- const r = await processProfileIdBatch(batchIds, ctx);
177
- processedProfiles += r.processedProfiles;
178
- conversationsFound += r.conversationsFound;
179
- conversationsCreated += r.conversationsCreated;
180
- messagesExisting += r.messagesExisting;
181
- messagesCreated += r.messagesCreated;
182
- }
183
-
184
- return { processedProfiles, conversationsFound, conversationsCreated, messagesExisting, messagesCreated };
185
-
186
- // ============================================================
187
- // Batch worker: takes string profile ids
188
- // ============================================================
189
- async function processProfileIdBatch(profileIds: string[], ctx: any): Promise<MailClaimableBatchResult> {
190
- const profileObjectIds = profileIds.map((id) => toObjectId(mongoose, id));
191
-
192
- // 1) Find existing inbox conversations for these profiles (both back-compat + participants)
193
- const existingConvos = await ctx.app.model.Conversation.find({
194
- kind,
195
- key: conversationKey, // ✅ NEW
196
- $or: [{ profileId: { $in: profileObjectIds } }, { 'participants.profileId': { $in: profileObjectIds } }],
197
- })
198
- .select({ _id: 1, profileId: 1, participants: 1 })
199
- .lean()
200
- .exec();
201
-
202
- const convoByProfileId = new Map<string, any>();
203
-
204
- for (const c of existingConvos || []) {
205
- // Prefer participant mapping when available
206
- const participants = Array.isArray((c as any).participants) ? (c as any).participants : [];
207
- for (const p of participants) {
208
- if (p?.profileId) convoByProfileId.set(String(p.profileId), c);
209
- }
210
- if ((c as any).profileId) convoByProfileId.set(String((c as any).profileId), c);
211
- }
212
-
213
- const foundCount = convoByProfileId.size;
214
-
215
- // 2) Create missing conversations
216
- const missingProfileIds = profileIds.filter((pid) => !convoByProfileId.has(String(pid)));
217
-
218
- // 2) Create missing conversations (UPSERT)
219
- if (missingProfileIds.length > 0) {
220
- const ops = missingProfileIds.map((pid) => {
221
- const pidObj = toObjectId(mongoose, pid);
222
- return {
223
- updateOne: {
224
- filter: {
225
- applicationId: toObjectId(mongoose, (ctx.app as any).filters.applicationId),
226
- kind,
227
- key: conversationKey,
228
- profileId: pidObj,
229
- status: { $ne: 'Archived' },
230
- },
231
- update: {
232
- $setOnInsert: {
233
- applicationId: toObjectId(mongoose, (ctx.app as any).filters.applicationId),
234
- kind,
235
- key: conversationKey,
236
- profileId: pidObj,
237
- participants: [
238
- {
239
- profileId: pidObj,
240
- role: 'user',
241
- lastReadAt: new Date(0),
242
- unreadCount: 0,
243
- isMuted: false,
244
- isPinned: false,
245
- isArchived: false,
246
- isDeleted: false,
247
- },
248
- ],
249
- isLocked: true,
250
- allowUserSend: false,
251
- name: 'System',
252
- category: 'system',
253
- importance: 0,
254
- lastMessageDate: null,
255
- lastMessagePreview: '',
256
- messageCount: 0,
257
- messages: [],
258
- status: 'Active',
259
- },
260
- },
261
- upsert: true,
262
- },
263
- };
264
- });
265
-
266
- // bulkWrite exists on your wrapper (you already call it later)
267
- const res = await ctx.app.model.Conversation.bulkWrite(ops, { ordered: false });
268
-
269
- // 🔴 REQUIRED: re-read conversations to get _id for newly upserted docs
270
- const convosForBatch = await ctx.app.model.Conversation.find({
271
- kind,
272
- key: conversationKey,
273
- $or: [{ profileId: { $in: profileObjectIds } }, { 'participants.profileId': { $in: profileObjectIds } }],
274
- })
275
- .select({ _id: 1, profileId: 1, participants: 1 })
276
- .lean()
277
- .exec();
278
-
279
- // rebuild convoByProfileId with fresh _id values
280
- convoByProfileId.clear();
281
- for (const c of convosForBatch || []) {
282
- const participants = Array.isArray(c.participants) ? c.participants : [];
283
- for (const p of participants) {
284
- if (p?.profileId) convoByProfileId.set(String(p.profileId), c);
285
- }
286
- if (c.profileId) convoByProfileId.set(String(c.profileId), c);
287
- }
288
-
289
- // Depending on wrapper, it may return { upsertedCount } or { nUpserted }
290
- conversationsCreated += Number((res as any)?.upsertedCount ?? (res as any)?.nUpserted ?? 0);
291
- }
292
-
293
- // 3) Now we have conversation ids for (almost) everyone in the batch
294
- const convoIds = profileIds.map((pid) => convoByProfileId.get(String(pid))?._id).filter(Boolean);
295
-
296
- // If something is still missing, skip those profiles (should be extremely rare)
297
- const convoIdSet = new Set(convoIds.map((id: any) => String(id)));
298
- const uniqueConvoIds = Array.from(convoIdSet).map((id) => toObjectId(mongoose, id));
299
-
300
- // 4) Dedupe: find existing messages with this dedupeKey for these conversations
301
- const existingMsgs = await ctx.app.model.ConversationMessage.find({
302
- conversationId: { $in: uniqueConvoIds },
303
- 'claim.dedupeKey': dedupeKey,
304
- })
305
- .select({ _id: 1, conversationId: 1 })
306
- .lean()
307
- .exec();
308
-
309
- const hasMsgForConvo = new Set<string>((existingMsgs || []).map((m: any) => String(m.conversationId)));
310
- const existingMsgCount = hasMsgForConvo.size;
311
-
312
- // 5) Build inserts for conversations missing the message
313
- const msgsToInsert = uniqueConvoIds
314
- .filter((cid: any) => !hasMsgForConvo.has(String(cid)))
315
- .map((conversationId: any) => ({
316
- conversationId,
317
- role: 'system',
318
- type: 'reward',
319
- content: body ?? '',
320
- payload,
321
- claim: {
322
- isClaimable: true,
323
- claimedDate: null,
324
- claimedByProfileId: null,
325
- dedupeKey,
326
- attachments: [],
327
- revokedDate: null,
328
- revokeReason: null,
329
- },
330
- }));
331
-
332
- let insertedMsgs: any[] = [];
333
- if (msgsToInsert.length > 0) {
334
- try {
335
- insertedMsgs = await ctx.app.model.ConversationMessage.insertMany(msgsToInsert, { ordered: false });
336
- } catch (e: any) {
337
- console.log('error inserting conversation messages', e);
338
- // If some duplicate insert races happened, we ignore and continue.
339
- // console.warn('ConversationMessage.insertMany partial failure', e?.message);
340
- }
341
- }
342
-
343
- // 6) Update conversations listing fields for those where we inserted a message
344
- if (insertedMsgs.length > 0) {
345
- const convoUpdates = insertedMsgs.map((m: any) => ({
346
- updateOne: {
347
- filter: { _id: m.conversationId },
348
- update: {
349
- $set: {
350
- lastMessageDate: now,
351
- lastMessagePreview: preview,
352
- },
353
- $inc: {
354
- messageCount: 1,
355
- // Increment unread count for the user participant if present
356
- 'participants.$[p].unreadCount': 1,
357
- },
358
- // Back-compat array; you said you’re keeping it for now.
359
- $push: { messages: m._id },
360
- },
361
- arrayFilters: [{ 'p.role': 'user' }],
362
- },
363
- }));
364
-
365
- try {
366
- await ctx.app.model.Conversation.bulkWrite(convoUpdates, { ordered: false });
367
- } catch (e: any) {
368
- console.log('error bulk updating conversations', e);
369
- // ignore
370
- }
371
- }
372
-
373
- return {
374
- processedProfiles: profileIds.length,
375
- conversationsFound: foundCount,
376
- conversationsCreated: 0, // tracked at outer scope; keep per-batch minimal
377
- messagesExisting: existingMsgCount,
378
- messagesCreated: insertedMsgs.length,
379
- };
380
- }
381
- }
@@ -1,53 +0,0 @@
1
- import * as mongo from '../../util/mongo';
2
- import type * as Types from './game.types';
3
-
4
- const { addTagVirtuals, addApplicationVirtual } = mongo;
5
-
6
- export const Game = mongo.createModel<Types.GameDocument>(
7
- 'Game',
8
- {
9
- productId: { type: mongo.Schema.Types.ObjectId, ref: 'Product', required: true },
10
- statId: { type: mongo.Schema.Types.ObjectId, ref: 'GameStat' },
11
- },
12
- {
13
- extend: 'EntityFields',
14
- indexes: [{ applicationId: 1, name: 1, unique: true }],
15
- virtuals: [
16
- ...addTagVirtuals('Application'),
17
- { name: 'stat' },
18
- { name: 'stats', ref: 'GameStat', localField: '_id', foreignField: 'gameId' },
19
- { name: 'rounds', ref: 'GameRound', localField: '_id', foreignField: 'gameId' },
20
- // {
21
- // name: 'latestStat',
22
- // ref: 'GameStat',
23
- // localField: '_id',
24
- // foreignField: 'gameId',
25
- // options: { sort: { createdAt: -1 }, limit: 1 },
26
- // },
27
- ],
28
- }
29
- );
30
-
31
- export const GameStat = mongo.createModel<Types.GameStatDocument>(
32
- 'GameStat',
33
- {
34
- gameId: { type: mongo.Schema.Types.ObjectId, ref: 'Game', required: true },
35
- },
36
- {
37
- extend: 'EntityFields',
38
- virtuals: [...addTagVirtuals('Application'), { name: 'game' }],
39
- }
40
- );
41
-
42
- export const GameRound = mongo.createModel<Types.GameRoundDocument>(
43
- 'GameRound',
44
- {
45
- gameId: { type: mongo.Schema.Types.ObjectId, ref: 'Game', required: true },
46
- },
47
- {
48
- extend: 'EntityFields',
49
- virtuals: [...addTagVirtuals('Application'), { name: 'game' }],
50
- }
51
- );
52
-
53
- export const Era = mongo.createModel<Types.EraDocument>('Era', {});
@@ -1,110 +0,0 @@
1
- import { z as zod } from 'zod';
2
- import { initTRPC } from '@trpc/server';
3
- import { customErrorFormatter, hasRole } from '../../util/rpc';
4
- import type { RouterContext } from '../../types';
5
- import { Era, Game, GameStat } from './game.schema';
6
- import { Query, getQueryInput, inferRouterOutputs, inferRouterInputs } from '../../schema';
7
-
8
- export const z = zod;
9
- export const t = initTRPC.context<RouterContext>().create();
10
- export const router = t.router;
11
- export const procedure = t.procedure;
12
-
13
- export const createRouter = () =>
14
- router({
15
- getGame: procedure
16
- .use(hasRole('guest', t))
17
- .use(customErrorFormatter(t))
18
- .input(getQueryInput(Game))
19
- .output(Game)
20
- .query(({ input, ctx }) => (ctx.app.service.Game.getGame as any)(input, ctx)),
21
-
22
- getGames: procedure
23
- .use(hasRole('guest', t))
24
- .use(customErrorFormatter(t))
25
- .input(getQueryInput(Game))
26
- .output(z.array(Game))
27
- .query(({ input, ctx }) => (ctx.app.service.Game.getGames as any)(input, ctx)),
28
-
29
- createGame: procedure
30
- .use(hasRole('guest', t))
31
- .use(customErrorFormatter(t))
32
- .input(getQueryInput(Game))
33
- .output(Game.pick({ id: true }))
34
- .query(({ input, ctx }) => (ctx.app.service.Game.createGame as any)(input, ctx)),
35
-
36
- updateGame: procedure
37
- .use(hasRole('guest', t))
38
- .use(customErrorFormatter(t))
39
- .input(getQueryInput(Game))
40
- .output(Game.pick({ id: true }))
41
- .query(({ input, ctx }) => (ctx.app.service.Game.updateGame as any)(input, ctx)),
42
-
43
- getGameStat: procedure
44
- .use(hasRole('guest', t))
45
- .use(customErrorFormatter(t))
46
- .input(getQueryInput(GameStat))
47
- .output(GameStat)
48
- .query(({ input, ctx }) => (ctx.app.service.Game.getGameStat as any)(input, ctx)),
49
-
50
- getGameStats: procedure
51
- .use(hasRole('guest', t))
52
- .use(customErrorFormatter(t))
53
- .input(getQueryInput(GameStat))
54
- .output(z.array(GameStat))
55
- .query(({ input, ctx }) => (ctx.app.service.Game.getGameStats as any)(input, ctx)),
56
-
57
- createGameStat: procedure
58
- .use(hasRole('guest', t))
59
- .use(customErrorFormatter(t))
60
- .input(getQueryInput(GameStat))
61
- .output(GameStat.pick({ id: true }))
62
- .query(({ input, ctx }) => (ctx.app.service.Game.createGameStat as any)(input, ctx)),
63
-
64
- updateGameStat: procedure
65
- .use(hasRole('guest', t))
66
- .use(customErrorFormatter(t))
67
- .input(getQueryInput(GameStat))
68
- .output(GameStat.pick({ id: true }))
69
- .query(({ input, ctx }) => (ctx.app.service.Game.updateGame as any)(input, ctx)),
70
-
71
- // Era Procedures
72
- getEra: procedure
73
- .use(hasRole('guest', t))
74
- .use(customErrorFormatter(t))
75
- .input(getQueryInput(Era))
76
- .output(Era)
77
- .query(({ input, ctx }) => (ctx.app.service.Game.getEra as any)(input, ctx)),
78
-
79
- getEras: procedure
80
- .use(hasRole('guest', t))
81
- .use(customErrorFormatter(t))
82
- .input(getQueryInput(Era))
83
- .output(z.array(Era))
84
- .query(({ input, ctx }) => (ctx.app.service.Game.getEras as any)(input, ctx)),
85
-
86
- createEra: procedure
87
- .use(hasRole('admin', t))
88
- .use(customErrorFormatter(t))
89
- .input(getQueryInput(Era))
90
- .output(Era.pick({ id: true }))
91
- .mutation(({ input, ctx }) => (ctx.app.service.Game.createEra as any)(input, ctx)),
92
-
93
- updateEra: procedure
94
- .use(hasRole('admin', t))
95
- .use(customErrorFormatter(t))
96
- .input(getQueryInput(Era))
97
- .output(Era.pick({ id: true }))
98
- .mutation(({ input, ctx }) => (ctx.app.service.Game.updateEra as any)(input, ctx)),
99
-
100
- deleteEra: procedure
101
- .use(hasRole('admin', t))
102
- .use(customErrorFormatter(t))
103
- .input(getQueryInput(Era))
104
- .output(Era.pick({ id: true }))
105
- .mutation(({ input, ctx }) => (ctx.app.service.Game.deleteEra as any)(input, ctx)),
106
- });
107
-
108
- export type Router = ReturnType<typeof createRouter>;
109
- export type RouterInput = inferRouterInputs<Router>;
110
- export type RouterOutput = inferRouterOutputs<Router>;
@@ -1,23 +0,0 @@
1
- import { z, ObjectId, Entity } from '../../schema';
2
-
3
- export const GameStat = Entity.merge(
4
- z.object({
5
- gameId: ObjectId,
6
- })
7
- );
8
-
9
- export const Game = Entity.merge(
10
- z.object({
11
- productId: ObjectId,
12
- statId: ObjectId.optional(),
13
- stat: GameStat.nullable().optional(),
14
- })
15
- );
16
-
17
- export const GameRound = Entity.merge(
18
- z.object({
19
- gameId: ObjectId,
20
- })
21
- );
22
-
23
- export const Era = Entity.merge(z.object({}));