@rpgjs/client 5.0.0-beta.2 → 5.0.0-beta.22

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 (325) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/dist/Game/AnimationManager.d.ts +2 -1
  3. package/dist/Game/AnimationManager.js +21 -9
  4. package/dist/Game/AnimationManager.js.map +1 -1
  5. package/dist/Game/AnimationManager.spec.d.ts +1 -0
  6. package/dist/Game/ClientVisuals.d.ts +61 -0
  7. package/dist/Game/ClientVisuals.js +96 -0
  8. package/dist/Game/ClientVisuals.js.map +1 -0
  9. package/dist/Game/ClientVisuals.spec.d.ts +1 -0
  10. package/dist/Game/Event.js.map +1 -1
  11. package/dist/Game/EventComponentResolver.d.ts +16 -0
  12. package/dist/Game/EventComponentResolver.js +52 -0
  13. package/dist/Game/EventComponentResolver.js.map +1 -0
  14. package/dist/Game/EventComponentResolver.spec.d.ts +1 -0
  15. package/dist/Game/Map.d.ts +9 -1
  16. package/dist/Game/Map.js +83 -5
  17. package/dist/Game/Map.js.map +1 -1
  18. package/dist/Game/Object.d.ts +49 -15
  19. package/dist/Game/Object.js +101 -42
  20. package/dist/Game/Object.js.map +1 -1
  21. package/dist/Game/Object.spec.d.ts +1 -0
  22. package/dist/Game/Player.js.map +1 -1
  23. package/dist/Game/ProjectileManager.d.ts +98 -0
  24. package/dist/Game/ProjectileManager.js +196 -0
  25. package/dist/Game/ProjectileManager.js.map +1 -0
  26. package/dist/Game/ProjectileManager.spec.d.ts +1 -0
  27. package/dist/Gui/Gui.d.ts +20 -6
  28. package/dist/Gui/Gui.js +132 -57
  29. package/dist/Gui/Gui.js.map +1 -1
  30. package/dist/Gui/Gui.spec.d.ts +1 -0
  31. package/dist/Gui/NotificationManager.js.map +1 -1
  32. package/dist/Resource.js +1 -1
  33. package/dist/Resource.js.map +1 -1
  34. package/dist/RpgClient.d.ts +194 -15
  35. package/dist/RpgClientEngine.d.ts +191 -19
  36. package/dist/RpgClientEngine.js +693 -74
  37. package/dist/RpgClientEngine.js.map +1 -1
  38. package/dist/Sound.js.map +1 -1
  39. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorate.js +1 -1
  40. package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorateMetadata.js +1 -1
  41. package/dist/_virtual/_rolldown/runtime.js +13 -0
  42. package/dist/components/animations/animation.ce.js +6 -5
  43. package/dist/components/animations/animation.ce.js.map +1 -1
  44. package/dist/components/animations/fx.ce.js +60 -0
  45. package/dist/components/animations/fx.ce.js.map +1 -0
  46. package/dist/components/animations/hit.ce.js +24 -28
  47. package/dist/components/animations/hit.ce.js.map +1 -1
  48. package/dist/components/animations/index.d.ts +1 -0
  49. package/dist/components/animations/index.js +6 -4
  50. package/dist/components/animations/index.js.map +1 -1
  51. package/dist/components/character.ce.js +748 -249
  52. package/dist/components/character.ce.js.map +1 -1
  53. package/dist/components/dynamics/bar.ce.js +99 -0
  54. package/dist/components/dynamics/bar.ce.js.map +1 -0
  55. package/dist/components/dynamics/image.ce.js +26 -0
  56. package/dist/components/dynamics/image.ce.js.map +1 -0
  57. package/dist/components/dynamics/parse-value.d.ts +3 -0
  58. package/dist/components/dynamics/parse-value.js +54 -35
  59. package/dist/components/dynamics/parse-value.js.map +1 -1
  60. package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
  61. package/dist/components/dynamics/shape-utils.d.ts +16 -0
  62. package/dist/components/dynamics/shape-utils.js +73 -0
  63. package/dist/components/dynamics/shape-utils.js.map +1 -0
  64. package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
  65. package/dist/components/dynamics/shape.ce.js +86 -0
  66. package/dist/components/dynamics/shape.ce.js.map +1 -0
  67. package/dist/components/dynamics/text.ce.js +36 -56
  68. package/dist/components/dynamics/text.ce.js.map +1 -1
  69. package/dist/components/gui/box.ce.js +9 -9
  70. package/dist/components/gui/box.ce.js.map +1 -1
  71. package/dist/components/gui/dialogbox/index.ce.js +75 -65
  72. package/dist/components/gui/dialogbox/index.ce.js.map +1 -1
  73. package/dist/components/gui/gameover.ce.js +47 -68
  74. package/dist/components/gui/gameover.ce.js.map +1 -1
  75. package/dist/components/gui/hud/hud.ce.js +23 -31
  76. package/dist/components/gui/hud/hud.ce.js.map +1 -1
  77. package/dist/components/gui/menu/equip-menu.ce.js +121 -172
  78. package/dist/components/gui/menu/equip-menu.ce.js.map +1 -1
  79. package/dist/components/gui/menu/exit-menu.ce.js +15 -10
  80. package/dist/components/gui/menu/exit-menu.ce.js.map +1 -1
  81. package/dist/components/gui/menu/items-menu.ce.js +62 -77
  82. package/dist/components/gui/menu/items-menu.ce.js.map +1 -1
  83. package/dist/components/gui/menu/main-menu.ce.js +89 -104
  84. package/dist/components/gui/menu/main-menu.ce.js.map +1 -1
  85. package/dist/components/gui/menu/options-menu.ce.js +12 -8
  86. package/dist/components/gui/menu/options-menu.ce.js.map +1 -1
  87. package/dist/components/gui/menu/skills-menu.ce.js +17 -19
  88. package/dist/components/gui/menu/skills-menu.ce.js.map +1 -1
  89. package/dist/components/gui/mobile/index.d.ts +51 -2
  90. package/dist/components/gui/mobile/index.js +14 -6
  91. package/dist/components/gui/mobile/index.js.map +1 -1
  92. package/dist/components/gui/mobile/index.spec.d.ts +1 -0
  93. package/dist/components/gui/mobile/mobile.ce.js +309 -59
  94. package/dist/components/gui/mobile/mobile.ce.js.map +1 -1
  95. package/dist/components/gui/notification/notification.ce.js +28 -26
  96. package/dist/components/gui/notification/notification.ce.js.map +1 -1
  97. package/dist/components/gui/save-load.ce.js +81 -256
  98. package/dist/components/gui/save-load.ce.js.map +1 -1
  99. package/dist/components/gui/shop/shop.ce.js +107 -142
  100. package/dist/components/gui/shop/shop.ce.js.map +1 -1
  101. package/dist/components/gui/title-screen.ce.js +50 -73
  102. package/dist/components/gui/title-screen.ce.js.map +1 -1
  103. package/dist/components/index.d.ts +2 -1
  104. package/dist/components/index.js +1 -0
  105. package/dist/components/interaction-components.ce.js +22 -0
  106. package/dist/components/interaction-components.ce.js.map +1 -0
  107. package/dist/components/player-components-utils.d.ts +67 -0
  108. package/dist/components/player-components-utils.js +162 -0
  109. package/dist/components/player-components-utils.js.map +1 -0
  110. package/dist/components/player-components-utils.spec.d.ts +1 -0
  111. package/dist/components/player-components.ce.js +191 -0
  112. package/dist/components/player-components.ce.js.map +1 -0
  113. package/dist/components/prebuilt/hp-bar.ce.js +45 -45
  114. package/dist/components/prebuilt/hp-bar.ce.js.map +1 -1
  115. package/dist/components/prebuilt/light-halo.ce.js +39 -60
  116. package/dist/components/prebuilt/light-halo.ce.js.map +1 -1
  117. package/dist/components/scenes/canvas.ce.js +205 -27
  118. package/dist/components/scenes/canvas.ce.js.map +1 -1
  119. package/dist/components/scenes/draw-map.ce.js +39 -39
  120. package/dist/components/scenes/draw-map.ce.js.map +1 -1
  121. package/dist/components/scenes/event-layer.ce.js +51 -10
  122. package/dist/components/scenes/event-layer.ce.js.map +1 -1
  123. package/dist/core/inject.js +1 -1
  124. package/dist/core/inject.js.map +1 -1
  125. package/dist/core/setup.js +1 -1
  126. package/dist/core/setup.js.map +1 -1
  127. package/dist/decorators/spritesheet.d.ts +1 -0
  128. package/dist/decorators/spritesheet.js +11 -0
  129. package/dist/decorators/spritesheet.js.map +1 -0
  130. package/dist/i18n.d.ts +55 -0
  131. package/dist/i18n.js +60 -0
  132. package/dist/i18n.js.map +1 -0
  133. package/dist/i18n.spec.d.ts +1 -0
  134. package/dist/index.d.ts +8 -0
  135. package/dist/index.js +29 -21
  136. package/dist/module.js +45 -4
  137. package/dist/module.js.map +1 -1
  138. package/dist/node_modules/.pnpm/{@signe_di@2.9.0 → @signe_di@3.1.0}/node_modules/@signe/di/dist/index.js +7 -117
  139. package/dist/node_modules/.pnpm/@signe_di@3.1.0/node_modules/@signe/di/dist/index.js.map +1 -0
  140. package/dist/node_modules/.pnpm/@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js +239 -0
  141. package/dist/node_modules/.pnpm/@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js.map +1 -0
  142. package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
  143. package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
  144. package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/index.js +698 -0
  145. package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/index.js.map +1 -0
  146. package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/client/index.js +43 -0
  147. package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/client/index.js.map +1 -0
  148. package/dist/node_modules/.pnpm/{@signe_sync@2.9.0 → @signe_sync@3.1.0_react@19.2.7}/node_modules/@signe/sync/dist/index.js +57 -141
  149. package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/index.js.map +1 -0
  150. package/dist/node_modules/.pnpm/{partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js → partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js} +30 -17
  151. package/dist/node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js.map +1 -0
  152. package/dist/node_modules/.pnpm/{partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js → partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/ws.js} +65 -34
  153. package/dist/node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/ws.js.map +1 -0
  154. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js +13 -0
  155. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js.map +1 -0
  156. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +106 -0
  157. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js.map +1 -0
  158. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +13 -0
  159. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js.map +1 -0
  160. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js +121 -0
  161. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js.map +1 -0
  162. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +10 -0
  163. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
  164. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +110 -0
  165. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
  166. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +99 -0
  167. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js.map +1 -0
  168. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +82 -0
  169. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js.map +1 -0
  170. package/dist/node_modules/.pnpm/{zod@3.24.2/node_modules/zod/lib/index.js → zod@3.25.76/node_modules/zod/v3/types.js} +74 -611
  171. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js.map +1 -0
  172. package/dist/presets/animation.js.map +1 -1
  173. package/dist/presets/faceset.js.map +1 -1
  174. package/dist/presets/icon.js.map +1 -1
  175. package/dist/presets/index.js.map +1 -1
  176. package/dist/presets/lpc.js.map +1 -1
  177. package/dist/presets/rmspritesheet.js.map +1 -1
  178. package/dist/services/AbstractSocket.d.ts +2 -0
  179. package/dist/services/AbstractSocket.js.map +1 -1
  180. package/dist/services/actionInput.d.ts +14 -0
  181. package/dist/services/actionInput.js +59 -0
  182. package/dist/services/actionInput.js.map +1 -0
  183. package/dist/services/actionInput.spec.d.ts +1 -0
  184. package/dist/services/cameraFollow.d.ts +51 -0
  185. package/dist/services/cameraFollow.js +134 -0
  186. package/dist/services/cameraFollow.js.map +1 -0
  187. package/dist/services/cameraFollow.spec.d.ts +1 -0
  188. package/dist/services/interactions.d.ts +159 -0
  189. package/dist/services/interactions.js +460 -0
  190. package/dist/services/interactions.js.map +1 -0
  191. package/dist/services/interactions.spec.d.ts +1 -0
  192. package/dist/services/keyboardControls.d.ts +1 -0
  193. package/dist/services/keyboardControls.js +1 -0
  194. package/dist/services/keyboardControls.js.map +1 -1
  195. package/dist/services/loadMap.d.ts +9 -0
  196. package/dist/services/loadMap.js +1 -1
  197. package/dist/services/loadMap.js.map +1 -1
  198. package/dist/services/mmorpg-connection.d.ts +5 -0
  199. package/dist/services/mmorpg-connection.js +50 -0
  200. package/dist/services/mmorpg-connection.js.map +1 -0
  201. package/dist/services/mmorpg-connection.spec.d.ts +1 -0
  202. package/dist/services/mmorpg.d.ts +11 -4
  203. package/dist/services/mmorpg.js +57 -33
  204. package/dist/services/mmorpg.js.map +1 -1
  205. package/dist/services/pointerContext.d.ts +11 -0
  206. package/dist/services/pointerContext.js +48 -0
  207. package/dist/services/pointerContext.js.map +1 -0
  208. package/dist/services/pointerContext.spec.d.ts +1 -0
  209. package/dist/services/save.js.map +1 -1
  210. package/dist/services/save.spec.d.ts +1 -0
  211. package/dist/services/standalone-message.d.ts +1 -0
  212. package/dist/services/standalone-message.js +9 -0
  213. package/dist/services/standalone-message.js.map +1 -0
  214. package/dist/services/standalone.d.ts +4 -1
  215. package/dist/services/standalone.js +36 -16
  216. package/dist/services/standalone.js.map +1 -1
  217. package/dist/services/standalone.spec.d.ts +1 -0
  218. package/dist/utils/getEntityProp.js +4 -3
  219. package/dist/utils/getEntityProp.js.map +1 -1
  220. package/dist/utils/getEntityProp.spec.d.ts +1 -0
  221. package/dist/utils/mapId.d.ts +1 -0
  222. package/dist/utils/mapId.js +6 -0
  223. package/dist/utils/mapId.js.map +1 -0
  224. package/dist/utils/readPropValue.d.ts +2 -0
  225. package/dist/utils/readPropValue.js +13 -0
  226. package/dist/utils/readPropValue.js.map +1 -0
  227. package/package.json +13 -13
  228. package/src/Game/AnimationManager.spec.ts +30 -0
  229. package/src/Game/AnimationManager.ts +26 -10
  230. package/src/Game/ClientVisuals.spec.ts +56 -0
  231. package/src/Game/ClientVisuals.ts +184 -0
  232. package/src/Game/EventComponentResolver.spec.ts +84 -0
  233. package/src/Game/EventComponentResolver.ts +74 -0
  234. package/src/Game/Map.ts +134 -2
  235. package/src/Game/Object.spec.ts +59 -0
  236. package/src/Game/Object.ts +181 -77
  237. package/src/Game/ProjectileManager.spec.ts +449 -0
  238. package/src/Game/ProjectileManager.ts +346 -0
  239. package/src/Gui/Gui.spec.ts +359 -0
  240. package/src/Gui/Gui.ts +178 -67
  241. package/src/Resource.ts +1 -2
  242. package/src/RpgClient.ts +220 -17
  243. package/src/RpgClientEngine.ts +995 -133
  244. package/src/components/animations/fx.ce +101 -0
  245. package/src/components/animations/index.ts +4 -2
  246. package/src/components/character.ce +839 -45
  247. package/src/components/dynamics/bar.ce +88 -0
  248. package/src/components/dynamics/image.ce +21 -0
  249. package/src/components/dynamics/parse-value.spec.ts +83 -0
  250. package/src/components/dynamics/parse-value.ts +111 -37
  251. package/src/components/dynamics/shape-utils.spec.ts +46 -0
  252. package/src/components/dynamics/shape-utils.ts +61 -0
  253. package/src/components/dynamics/shape.ce +90 -0
  254. package/src/components/dynamics/text.ce +35 -149
  255. package/src/components/gui/dialogbox/index.ce +52 -21
  256. package/src/components/gui/gameover.ce +6 -4
  257. package/src/components/gui/menu/equip-menu.ce +11 -9
  258. package/src/components/gui/menu/exit-menu.ce +6 -4
  259. package/src/components/gui/menu/items-menu.ce +11 -9
  260. package/src/components/gui/menu/main-menu.ce +14 -12
  261. package/src/components/gui/menu/options-menu.ce +4 -3
  262. package/src/components/gui/menu/skills-menu.ce +2 -1
  263. package/src/components/gui/mobile/index.spec.ts +94 -0
  264. package/src/components/gui/mobile/index.ts +74 -6
  265. package/src/components/gui/mobile/mobile.ce +347 -65
  266. package/src/components/gui/notification/notification.ce +7 -1
  267. package/src/components/gui/save-load.ce +13 -11
  268. package/src/components/gui/shop/shop.ce +20 -18
  269. package/src/components/gui/title-screen.ce +6 -4
  270. package/src/components/index.ts +2 -1
  271. package/src/components/interaction-components.ce +23 -0
  272. package/src/components/player-components-utils.spec.ts +109 -0
  273. package/src/components/player-components-utils.ts +205 -0
  274. package/src/components/player-components.ce +222 -0
  275. package/src/components/prebuilt/hp-bar.ce +4 -3
  276. package/src/components/prebuilt/light-halo.ce +2 -2
  277. package/src/components/scenes/canvas.ce +219 -15
  278. package/src/components/scenes/draw-map.ce +34 -22
  279. package/src/components/scenes/event-layer.ce +55 -4
  280. package/src/core/setup.ts +2 -2
  281. package/src/decorators/spritesheet.ts +8 -0
  282. package/src/i18n.spec.ts +39 -0
  283. package/src/i18n.ts +59 -0
  284. package/src/index.ts +19 -0
  285. package/src/module.ts +61 -11
  286. package/src/services/AbstractSocket.ts +3 -0
  287. package/src/services/actionInput.spec.ts +155 -0
  288. package/src/services/actionInput.ts +120 -0
  289. package/src/services/cameraFollow.spec.ts +220 -0
  290. package/src/services/cameraFollow.ts +222 -0
  291. package/src/services/interactions.spec.ts +175 -0
  292. package/src/services/interactions.ts +722 -0
  293. package/src/services/keyboardControls.ts +2 -1
  294. package/src/services/loadMap.ts +5 -1
  295. package/src/services/mmorpg-connection.spec.ts +99 -0
  296. package/src/services/mmorpg-connection.ts +69 -0
  297. package/src/services/mmorpg.ts +70 -36
  298. package/src/services/pointerContext.spec.ts +36 -0
  299. package/src/services/pointerContext.ts +84 -0
  300. package/src/services/save.spec.ts +127 -0
  301. package/src/services/standalone-message.ts +7 -0
  302. package/src/services/standalone.spec.ts +54 -0
  303. package/src/services/standalone.ts +44 -12
  304. package/src/utils/getEntityProp.spec.ts +96 -0
  305. package/src/utils/getEntityProp.ts +4 -3
  306. package/src/utils/mapId.ts +2 -0
  307. package/src/utils/readPropValue.ts +16 -0
  308. package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +0 -1
  309. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +0 -457
  310. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +0 -1
  311. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +0 -463
  312. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +0 -1
  313. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +0 -2191
  314. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +0 -1
  315. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +0 -10
  316. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +0 -1
  317. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +0 -91
  318. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +0 -1
  319. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +0 -1
  320. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +0 -14
  321. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +0 -1
  322. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +0 -1
  323. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +0 -1
  324. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/index.js +0 -2
  325. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +0 -1
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ import { I18nConfig } from '@rpgjs/common';
2
+ export declare const RpgClientBuiltinI18n: {
3
+ en: {
4
+ "rpg.menu.title": string;
5
+ "rpg.menu.status": string;
6
+ "rpg.menu.level": string;
7
+ "rpg.menu.gold": string;
8
+ "rpg.menu.parameters": string;
9
+ "rpg.menu.items": string;
10
+ "rpg.menu.skills": string;
11
+ "rpg.menu.equip": string;
12
+ "rpg.menu.options": string;
13
+ "rpg.menu.save": string;
14
+ "rpg.menu.exit": string;
15
+ "rpg.menu.weapons": string;
16
+ "rpg.menu.armor": string;
17
+ "rpg.menu.use": string;
18
+ "rpg.menu.cancel": string;
19
+ "rpg.menu.unequip": string;
20
+ "rpg.menu.remove-equipment": string;
21
+ "rpg.menu.empty": string;
22
+ "rpg.menu.leave-game": string;
23
+ "rpg.menu.exit-help": string;
24
+ "rpg.menu.options-help": string;
25
+ "rpg.save.title": string;
26
+ "rpg.save.subtitle": string;
27
+ "rpg.load.title": string;
28
+ "rpg.load.subtitle": string;
29
+ "rpg.save.auto": string;
30
+ "rpg.save.slot": string;
31
+ "rpg.save.empty-slot": string;
32
+ "rpg.save.level": string;
33
+ "rpg.save.exp": string;
34
+ "rpg.save.map": string;
35
+ "rpg.save.date": string;
36
+ "rpg.title.default": string;
37
+ "rpg.title.start": string;
38
+ "rpg.title.load": string;
39
+ "rpg.gameover.title": string;
40
+ "rpg.gameover.title-screen": string;
41
+ "rpg.gameover.load-game": string;
42
+ "rpg.shop.default-message": string;
43
+ "rpg.shop.choose-action": string;
44
+ "rpg.shop.buy": string;
45
+ "rpg.shop.sell": string;
46
+ "rpg.shop.back": string;
47
+ "rpg.shop.equipped": string;
48
+ "rpg.shop.already-equipped": string;
49
+ "rpg.shop.qty": string;
50
+ "rpg.shop.available": string;
51
+ "rpg.shop.quantity": string;
52
+ "rpg.shop.total": string;
53
+ };
54
+ };
55
+ export declare function provideI18n(config?: I18nConfig): import('@signe/di').FactoryProvider;
package/dist/i18n.js ADDED
@@ -0,0 +1,60 @@
1
+ import { createI18nProvider } from "@rpgjs/common";
2
+ //#region src/i18n.ts
3
+ var RpgClientBuiltinI18n = { en: {
4
+ "rpg.menu.title": "Menu",
5
+ "rpg.menu.status": "Status",
6
+ "rpg.menu.level": "Level",
7
+ "rpg.menu.gold": "Gold",
8
+ "rpg.menu.parameters": "Parameters",
9
+ "rpg.menu.items": "Items",
10
+ "rpg.menu.skills": "Skills",
11
+ "rpg.menu.equip": "Equip",
12
+ "rpg.menu.options": "Options",
13
+ "rpg.menu.save": "Save",
14
+ "rpg.menu.exit": "Exit",
15
+ "rpg.menu.weapons": "Weapons",
16
+ "rpg.menu.armor": "Armor",
17
+ "rpg.menu.use": "Use",
18
+ "rpg.menu.cancel": "Cancel",
19
+ "rpg.menu.unequip": "Unequip",
20
+ "rpg.menu.remove-equipment": "Remove the current equipment",
21
+ "rpg.menu.empty": "Empty",
22
+ "rpg.menu.leave-game": "Leave the game?",
23
+ "rpg.menu.exit-help": "Press Action to confirm or Escape to go back.",
24
+ "rpg.menu.options-help": "Configure your preferences here.",
25
+ "rpg.save.title": "Save Game",
26
+ "rpg.save.subtitle": "Choose a slot to overwrite or create.",
27
+ "rpg.load.title": "Load Game",
28
+ "rpg.load.subtitle": "Select a slot to load your progress.",
29
+ "rpg.save.auto": "Auto Save",
30
+ "rpg.save.slot": "Slot {index}",
31
+ "rpg.save.empty-slot": "Empty Slot",
32
+ "rpg.save.level": "Level",
33
+ "rpg.save.exp": "Exp",
34
+ "rpg.save.map": "Map",
35
+ "rpg.save.date": "Date",
36
+ "rpg.title.default": "RPG",
37
+ "rpg.title.start": "Start",
38
+ "rpg.title.load": "Load",
39
+ "rpg.gameover.title": "Game Over",
40
+ "rpg.gameover.title-screen": "Title Screen",
41
+ "rpg.gameover.load-game": "Load Game",
42
+ "rpg.shop.default-message": "Welcome to my shop!",
43
+ "rpg.shop.choose-action": "Choose an action",
44
+ "rpg.shop.buy": "Buy",
45
+ "rpg.shop.sell": "Sell",
46
+ "rpg.shop.back": "Back",
47
+ "rpg.shop.equipped": "Equipped",
48
+ "rpg.shop.already-equipped": "Already equipped",
49
+ "rpg.shop.qty": "Qty",
50
+ "rpg.shop.available": "Available",
51
+ "rpg.shop.quantity": "Quantity",
52
+ "rpg.shop.total": "Total"
53
+ } };
54
+ function provideI18n(config = {}) {
55
+ return createI18nProvider(config);
56
+ }
57
+ //#endregion
58
+ export { RpgClientBuiltinI18n, provideI18n };
59
+
60
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","names":[],"sources":["../src/i18n.ts"],"sourcesContent":["import { createI18nProvider, type I18nConfig } from \"@rpgjs/common\";\n\nexport const RpgClientBuiltinI18n = {\n en: {\n \"rpg.menu.title\": \"Menu\",\n \"rpg.menu.status\": \"Status\",\n \"rpg.menu.level\": \"Level\",\n \"rpg.menu.gold\": \"Gold\",\n \"rpg.menu.parameters\": \"Parameters\",\n \"rpg.menu.items\": \"Items\",\n \"rpg.menu.skills\": \"Skills\",\n \"rpg.menu.equip\": \"Equip\",\n \"rpg.menu.options\": \"Options\",\n \"rpg.menu.save\": \"Save\",\n \"rpg.menu.exit\": \"Exit\",\n \"rpg.menu.weapons\": \"Weapons\",\n \"rpg.menu.armor\": \"Armor\",\n \"rpg.menu.use\": \"Use\",\n \"rpg.menu.cancel\": \"Cancel\",\n \"rpg.menu.unequip\": \"Unequip\",\n \"rpg.menu.remove-equipment\": \"Remove the current equipment\",\n \"rpg.menu.empty\": \"Empty\",\n \"rpg.menu.leave-game\": \"Leave the game?\",\n \"rpg.menu.exit-help\": \"Press Action to confirm or Escape to go back.\",\n \"rpg.menu.options-help\": \"Configure your preferences here.\",\n \"rpg.save.title\": \"Save Game\",\n \"rpg.save.subtitle\": \"Choose a slot to overwrite or create.\",\n \"rpg.load.title\": \"Load Game\",\n \"rpg.load.subtitle\": \"Select a slot to load your progress.\",\n \"rpg.save.auto\": \"Auto Save\",\n \"rpg.save.slot\": \"Slot {index}\",\n \"rpg.save.empty-slot\": \"Empty Slot\",\n \"rpg.save.level\": \"Level\",\n \"rpg.save.exp\": \"Exp\",\n \"rpg.save.map\": \"Map\",\n \"rpg.save.date\": \"Date\",\n \"rpg.title.default\": \"RPG\",\n \"rpg.title.start\": \"Start\",\n \"rpg.title.load\": \"Load\",\n \"rpg.gameover.title\": \"Game Over\",\n \"rpg.gameover.title-screen\": \"Title Screen\",\n \"rpg.gameover.load-game\": \"Load Game\",\n \"rpg.shop.default-message\": \"Welcome to my shop!\",\n \"rpg.shop.choose-action\": \"Choose an action\",\n \"rpg.shop.buy\": \"Buy\",\n \"rpg.shop.sell\": \"Sell\",\n \"rpg.shop.back\": \"Back\",\n \"rpg.shop.equipped\": \"Equipped\",\n \"rpg.shop.already-equipped\": \"Already equipped\",\n \"rpg.shop.qty\": \"Qty\",\n \"rpg.shop.available\": \"Available\",\n \"rpg.shop.quantity\": \"Quantity\",\n \"rpg.shop.total\": \"Total\",\n },\n};\n\nexport function provideI18n(config: I18nConfig = {}) {\n return createI18nProvider(config);\n}\n"],"mappings":";;AAEA,IAAa,uBAAuB,EAClC,IAAI;CACF,kBAAkB;CAClB,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,uBAAuB;CACvB,kBAAkB;CAClB,mBAAmB;CACnB,kBAAkB;CAClB,oBAAoB;CACpB,iBAAiB;CACjB,iBAAiB;CACjB,oBAAoB;CACpB,kBAAkB;CAClB,gBAAgB;CAChB,mBAAmB;CACnB,oBAAoB;CACpB,6BAA6B;CAC7B,kBAAkB;CAClB,uBAAuB;CACvB,sBAAsB;CACtB,yBAAyB;CACzB,kBAAkB;CAClB,qBAAqB;CACrB,kBAAkB;CAClB,qBAAqB;CACrB,iBAAiB;CACjB,iBAAiB;CACjB,uBAAuB;CACvB,kBAAkB;CAClB,gBAAgB;CAChB,gBAAgB;CAChB,iBAAiB;CACjB,qBAAqB;CACrB,mBAAmB;CACnB,kBAAkB;CAClB,sBAAsB;CACtB,6BAA6B;CAC7B,0BAA0B;CAC1B,4BAA4B;CAC5B,0BAA0B;CAC1B,gBAAgB;CAChB,iBAAiB;CACjB,iBAAiB;CACjB,qBAAqB;CACrB,6BAA6B;CAC7B,gBAAgB;CAChB,sBAAsB;CACtB,qBAAqB;CACrB,kBAAkB;AACpB,EACF;AAEA,SAAgB,YAAY,SAAqB,CAAC,GAAG;CACnD,OAAO,mBAAmB,MAAM;AAClC"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.d.ts CHANGED
@@ -6,6 +6,9 @@ export * from './services/save';
6
6
  export * from './core/setup';
7
7
  export * from './core/inject';
8
8
  export * from './services/loadMap';
9
+ export * from './services/actionInput';
10
+ export * from './services/pointerContext';
11
+ export * from './services/interactions';
9
12
  export * from './module';
10
13
  export * from './Gui/Gui';
11
14
  export * from './components/gui';
@@ -16,6 +19,7 @@ export * from './components';
16
19
  export * from './components/gui';
17
20
  export * from './Sound';
18
21
  export * from './Resource';
22
+ export * from './decorators/spritesheet';
19
23
  export * from './utils/getEntityProp';
20
24
  export { Context } from '@signe/di';
21
25
  export { KeyboardControls, Input } from 'canvasengine';
@@ -23,5 +27,9 @@ export { Control } from './services/keyboardControls';
23
27
  export { RpgClientObject } from './Game/Object';
24
28
  export { RpgClientPlayer } from './Game/Player';
25
29
  export { RpgClientEvent } from './Game/Event';
30
+ export * from './Game/ProjectileManager';
31
+ export * from './Game/ClientVisuals';
26
32
  export { withMobile } from './components/gui/mobile';
33
+ export type { MobileButtonComponentProps, MobileGuiButtonOptions, MobileGuiComponentsOptions, MobileGuiEnabled, MobileGuiJoystickOptions, MobileGuiJoystickSide, MobileGuiLayoutOptions, MobileGuiMargin, MobileGuiOptions, MobileJoystickComponentProps, } from './components/gui/mobile';
27
34
  export * from './services/AbstractSocket';
35
+ export * from './i18n';
package/dist/index.js CHANGED
@@ -1,24 +1,26 @@
1
- import { Context } from "./node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js";
1
+ import { Context } from "./node_modules/.pnpm/@signe_di@3.1.0/node_modules/@signe/di/dist/index.js";
2
2
  import { clearInject, context, inject, setInject } from "./core/inject.js";
3
3
  import { AbstractWebsocket, WebSocketToken } from "./services/AbstractSocket.js";
4
- import component$2 from "./components/gui/dialogbox/index.ce.js";
5
- import component from "./components/gui/box.ce.js";
6
- import component$15 from "./components/gui/shop/shop.ce.js";
4
+ import { getKeyboardControlBind, isKeyboardActionConfig, keyboardEventMatchesBind, normalizeActionInput, resolveKeyboardActionInput, resolveKeyboardDirectionInput } from "./services/actionInput.js";
5
+ import __ce_component$2 from "./components/gui/dialogbox/index.ce.js";
6
+ import __ce_component from "./components/gui/box.ce.js";
7
+ import __ce_component$16 from "./components/gui/shop/shop.ce.js";
7
8
  import { getEntityProp } from "./utils/getEntityProp.js";
8
- import component$8 from "./components/gui/hud/hud.ce.js";
9
+ import __ce_component$8 from "./components/gui/hud/hud.ce.js";
9
10
  import { SaveClientService, SaveClientToken, provideSaveClient } from "./services/save.js";
10
- import component$14 from "./components/gui/save-load.ce.js";
11
- import component$9 from "./components/gui/menu/items-menu.ce.js";
12
- import component$16 from "./components/gui/menu/skills-menu.ce.js";
13
- import component$3 from "./components/gui/menu/equip-menu.ce.js";
14
- import component$13 from "./components/gui/menu/options-menu.ce.js";
15
- import component$5 from "./components/gui/menu/exit-menu.ce.js";
16
- import component$11 from "./components/gui/menu/main-menu.ce.js";
17
- import component$12 from "./components/gui/notification/notification.ce.js";
18
- import component$17 from "./components/gui/title-screen.ce.js";
19
- import component$6 from "./components/gui/gameover.ce.js";
11
+ import __ce_component$14 from "./components/gui/save-load.ce.js";
12
+ import __ce_component$9 from "./components/gui/menu/items-menu.ce.js";
13
+ import __ce_component$17 from "./components/gui/menu/skills-menu.ce.js";
14
+ import __ce_component$3 from "./components/gui/menu/equip-menu.ce.js";
15
+ import __ce_component$13 from "./components/gui/menu/options-menu.ce.js";
16
+ import __ce_component$5 from "./components/gui/menu/exit-menu.ce.js";
17
+ import __ce_component$11 from "./components/gui/menu/main-menu.ce.js";
18
+ import __ce_component$12 from "./components/gui/notification/notification.ce.js";
19
+ import __ce_component$18 from "./components/gui/title-screen.ce.js";
20
+ import __ce_component$6 from "./components/gui/gameover.ce.js";
20
21
  import "./components/gui/index.js";
21
22
  import { RpgGui } from "./Gui/Gui.js";
23
+ import __ce_component$15 from "./components/scenes/draw-map.ce.js";
22
24
  import { LoadMapService, LoadMapToken, provideLoadMap } from "./services/loadMap.js";
23
25
  import { RpgSound, Sound, getSoundMetadata } from "./Sound.js";
24
26
  import { RpgResource } from "./Resource.js";
@@ -27,18 +29,24 @@ import { RpgClientPlayer } from "./Game/Player.js";
27
29
  import { RpgClientEvent } from "./Game/Event.js";
28
30
  import { GlobalConfigToken, provideClientGlobalConfig, provideClientModules, provideGlobalConfig } from "./module.js";
29
31
  import { PrebuiltComponentAnimations } from "./components/animations/index.js";
32
+ import { ProjectileManager } from "./Game/ProjectileManager.js";
33
+ import { ClientVisualRegistry } from "./Game/ClientVisuals.js";
34
+ import { createClientPointerContext } from "./services/pointerContext.js";
35
+ import { RpgClientInteractions, dragToTile, draggable, hoverPopover, selectable } from "./services/interactions.js";
36
+ import { RpgClientBuiltinI18n, provideI18n } from "./i18n.js";
30
37
  import { RpgClientEngine } from "./RpgClientEngine.js";
31
38
  import { Control } from "./services/keyboardControls.js";
32
39
  import { provideRpg } from "./services/standalone.js";
33
- import { provideMmorpg } from "./services/mmorpg.js";
40
+ import { BridgeWebsocket, provideMmorpg } from "./services/mmorpg.js";
34
41
  import { startGame } from "./core/setup.js";
35
- import component$7 from "./components/prebuilt/hp-bar.ce.js";
36
- import component$10 from "./components/prebuilt/light-halo.ce.js";
42
+ import __ce_component$7 from "./components/prebuilt/hp-bar.ce.js";
43
+ import __ce_component$10 from "./components/prebuilt/light-halo.ce.js";
37
44
  import "./components/prebuilt/index.js";
38
45
  import { Presets } from "./presets/index.js";
39
- import component$1 from "./components/character.ce.js";
40
- import component$4 from "./components/scenes/event-layer.ce.js";
46
+ import __ce_component$1 from "./components/character.ce.js";
47
+ import __ce_component$4 from "./components/scenes/event-layer.ce.js";
41
48
  import "./components/index.js";
49
+ import { Spritesheet } from "./decorators/spritesheet.js";
42
50
  import { withMobile } from "./components/gui/mobile/index.js";
43
51
  import { Input, KeyboardControls } from "canvasengine";
44
- export { AbstractWebsocket, component as BoxComponent, component$1 as CharacterComponent, Context, Control, component$2 as DialogboxComponent, component$3 as EquipMenuComponent, component$4 as EventLayerComponent, component$5 as ExitMenuComponent, component$6 as GameoverComponent, GlobalConfigToken, component$7 as HpBar, component$8 as HudComponent, Input, component$9 as ItemsMenuComponent, KeyboardControls, component$10 as LightHalo, LoadMapService, LoadMapToken, component$11 as MainMenuComponent, component$12 as NotificationComponent, component$13 as OptionsMenuComponent, PrebuiltComponentAnimations, Presets, RpgClientEngine, RpgClientEvent, RpgClientObject, RpgClientPlayer, RpgGui, RpgResource, RpgSound, SaveClientService, SaveClientToken, component$14 as SaveLoadComponent, component$15 as ShopComponent, component$16 as SkillsMenuComponent, Sound, component$17 as TitleScreenComponent, WebSocketToken, clearInject, context, getEntityProp, getSoundMetadata, inject, provideClientGlobalConfig, provideClientModules, provideGlobalConfig, provideLoadMap, provideMmorpg, provideRpg, provideSaveClient, setInject, startGame, withMobile };
52
+ export { AbstractWebsocket, __ce_component as BoxComponent, BridgeWebsocket, __ce_component$1 as CharacterComponent, ClientVisualRegistry, Context, Control, __ce_component$2 as DialogboxComponent, __ce_component$3 as EquipMenuComponent, __ce_component$4 as EventLayerComponent, __ce_component$5 as ExitMenuComponent, __ce_component$6 as GameoverComponent, GlobalConfigToken, __ce_component$7 as HpBar, __ce_component$8 as HudComponent, Input, __ce_component$9 as ItemsMenuComponent, KeyboardControls, __ce_component$10 as LightHalo, LoadMapService, LoadMapToken, __ce_component$11 as MainMenuComponent, __ce_component$12 as NotificationComponent, __ce_component$13 as OptionsMenuComponent, PrebuiltComponentAnimations, Presets, ProjectileManager, RpgClientBuiltinI18n, RpgClientEngine, RpgClientEvent, RpgClientInteractions, RpgClientObject, RpgClientPlayer, RpgGui, RpgResource, RpgSound, SaveClientService, SaveClientToken, __ce_component$14 as SaveLoadComponent, __ce_component$15 as SceneMap, __ce_component$16 as ShopComponent, __ce_component$17 as SkillsMenuComponent, Sound, Spritesheet, __ce_component$18 as TitleScreenComponent, WebSocketToken, clearInject, context, createClientPointerContext, dragToTile, draggable, getEntityProp, getKeyboardControlBind, getSoundMetadata, hoverPopover, inject, isKeyboardActionConfig, keyboardEventMatchesBind, normalizeActionInput, provideClientGlobalConfig, provideClientModules, provideGlobalConfig, provideI18n, provideLoadMap, provideMmorpg, provideRpg, provideSaveClient, resolveKeyboardActionInput, resolveKeyboardDirectionInput, selectable, setInject, startGame, withMobile };
package/dist/module.js CHANGED
@@ -1,7 +1,7 @@
1
- import { inject } from "./node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js";
1
+ import { inject } from "./node_modules/.pnpm/@signe_di@3.1.0/node_modules/@signe/di/dist/index.js";
2
2
  import { RpgGui } from "./Gui/Gui.js";
3
3
  import { getSoundMetadata } from "./Sound.js";
4
- import { findModules, provideModules } from "@rpgjs/common";
4
+ import { findModules, provideModules, registerI18nMessages } from "@rpgjs/common";
5
5
  //#region src/module.ts
6
6
  /**
7
7
  * Provides client modules configuration to Dependency Injection
@@ -49,6 +49,7 @@ function provideClientModules(modules) {
49
49
  module = moduleObj;
50
50
  }
51
51
  if ("client" in module) module = module.client;
52
+ if (module.i18n) registerI18nMessages(context, module.i18n, "client-module", 10);
52
53
  if (module.spritesheets) {
53
54
  const spritesheets = [...module.spritesheets];
54
55
  module.spritesheets = { load: (engine) => {
@@ -112,6 +113,40 @@ function provideClientModules(modules) {
112
113
  });
113
114
  } };
114
115
  }
116
+ if (module.clientVisuals) {
117
+ const clientVisuals = { ...module.clientVisuals };
118
+ module.clientVisuals = { load: (engine) => {
119
+ engine.registerClientVisuals(clientVisuals);
120
+ } };
121
+ }
122
+ if (module.projectiles) {
123
+ const projectiles = { ...module.projectiles };
124
+ module.projectiles = {
125
+ ...projectiles,
126
+ load: (engine) => {
127
+ if (projectiles.components) Object.entries(projectiles.components).forEach(([type, component]) => {
128
+ engine.registerProjectileComponent(type, component);
129
+ });
130
+ }
131
+ };
132
+ }
133
+ if (module.interactions) {
134
+ const interactions = module.interactions;
135
+ module.interactions = {
136
+ ...interactions,
137
+ load: (engine) => {
138
+ if (typeof interactions === "function") {
139
+ interactions(engine);
140
+ return;
141
+ }
142
+ interactions.load?.(engine);
143
+ interactions.setup?.(engine);
144
+ if (Array.isArray(interactions.use)) interactions.use.forEach(([matcher, behavior]) => {
145
+ engine.interactions.use(matcher, behavior);
146
+ });
147
+ }
148
+ };
149
+ }
115
150
  if (module.transitions) {
116
151
  const transitions = [...module.transitions];
117
152
  module.transitions = { load: (engine) => {
@@ -144,6 +179,10 @@ function provideClientModules(modules) {
144
179
  if (sprite.componentsInFront) sprite.componentsInFront.forEach((component) => {
145
180
  engine.addSpriteComponentInFront(component);
146
181
  });
182
+ if (sprite.components) Object.entries(sprite.components).forEach(([id, component]) => {
183
+ engine.registerSpriteComponent(id, component);
184
+ });
185
+ if (sprite.eventComponent) engine.addEventComponentResolver(sprite.eventComponent);
147
186
  }
148
187
  };
149
188
  }
@@ -160,13 +199,15 @@ function provideGlobalConfig(config) {
160
199
  };
161
200
  }
162
201
  function provideClientGlobalConfig(config = {}) {
163
- if (!config.keyboardControls) config.keyboardControls = {
202
+ config.keyboardControls = {
164
203
  up: "up",
165
204
  down: "down",
166
205
  left: "left",
167
206
  right: "right",
168
207
  action: "space",
169
- escape: "escape"
208
+ dash: "shift",
209
+ escape: "escape",
210
+ ...config.keyboardControls ?? {}
170
211
  };
171
212
  return provideGlobalConfig(config);
172
213
  }
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","names":[],"sources":["../src/module.ts"],"sourcesContent":["import { findModules, provideModules } from \"@rpgjs/common\";\nimport { FactoryProvider } from \"@signe/di\";\nimport { RpgClientEngine } from \"./RpgClientEngine\";\nimport { RpgClient } from \"./RpgClient\";\nimport { inject } from \"@signe/di\";\nimport { RpgGui } from \"./Gui/Gui\";\nimport { getSoundMetadata } from \"./Sound\";\n\n/**\n * Type for client modules that can be either:\n * - An object implementing RpgClient interface\n * - A class decorated with @RpgModule decorator\n */\nexport type RpgClientModule = RpgClient | (new () => any);\n\n/**\n * Provides client modules configuration to Dependency Injection\n * \n * This function accepts an array of client modules that can be either:\n * - Objects implementing the RpgClient interface\n * - Classes decorated with the @RpgModule decorator (which will be instantiated)\n * \n * @param modules - Array of client modules (objects or classes)\n * @returns FactoryProvider configuration for DI\n * @example\n * ```ts\n * // Using an object\n * provideClientModules([\n * {\n * engine: {\n * onConnected(engine) {\n * console.log('Client connected')\n * }\n * }\n * }\n * ])\n * \n * // Using a decorated class\n * @RpgModule<RpgClient>({\n * engine: {\n * onStart(engine) {\n * console.log('Client started')\n * }\n * }\n * })\n * class MyClientModule {}\n * \n * provideClientModules([MyClientModule])\n * ```\n */\nexport function provideClientModules(modules: RpgClientModule[]): FactoryProvider {\n return provideModules(modules, \"client\", (modules, context) => {\n const mainModuleClient = findModules(context, 'Client')\n modules = [...mainModuleClient, ...modules]\n modules = modules.map((module) => {\n // If module is a class (constructor function), instantiate it\n // The RpgModule decorator adds properties to the prototype, which will be accessible via the instance\n if (typeof module === 'function') {\n const instance = new module() as any;\n // Copy all enumerable properties (including from prototype) to a plain object\n const moduleObj: any = {};\n for (const key in instance) {\n moduleObj[key] = instance[key];\n }\n module = moduleObj;\n }\n if ('client' in module) {\n module = module.client as any;\n }\n if (module.spritesheets) {\n const spritesheets = [...module.spritesheets];\n module.spritesheets = {\n load: (engine: RpgClientEngine) => {\n spritesheets.forEach((spritesheet) => {\n engine.addSpriteSheet(spritesheet);\n });\n },\n };\n }\n if (module.spritesheetResolver) {\n const resolver = module.spritesheetResolver;\n module.spritesheetResolver = {\n load: (engine: RpgClientEngine) => {\n engine.setSpritesheetResolver(resolver);\n },\n };\n }\n if (module.sounds) {\n const sounds = [...module.sounds];\n module.sounds = {\n load: (engine: RpgClientEngine) => {\n sounds.forEach((sound) => {\n // Check if it's a class decorated with @Sound\n if (typeof sound === 'function' || (sound && sound.constructor && sound.constructor !== Object)) {\n const metadata = getSoundMetadata(sound);\n if (metadata) {\n // Handle single sound\n if (metadata.id && metadata.sound) {\n engine.addSound({\n id: metadata.id,\n src: metadata.sound,\n loop: metadata.loop,\n volume: metadata.volume,\n });\n }\n // Handle multiple sounds\n if (metadata.sounds) {\n Object.entries(metadata.sounds).forEach(([soundId, soundSrc]) => {\n engine.addSound({\n id: soundId,\n src: soundSrc,\n loop: metadata.loop,\n volume: metadata.volume,\n });\n });\n }\n } else {\n // Not a decorated class, treat as regular sound object\n engine.addSound(sound);\n }\n } else {\n // Regular sound object\n engine.addSound(sound);\n }\n });\n },\n };\n }\n if (module.soundResolver) {\n const resolver = module.soundResolver;\n module.soundResolver = {\n load: (engine: RpgClientEngine) => {\n engine.setSoundResolver(resolver);\n },\n };\n }\n if (module.gui) {\n const gui = [...module.gui];\n module.gui = {\n load: (engine: RpgClientEngine) => {\n const guiService = inject(engine.context, RpgGui) as RpgGui;\n gui.forEach((gui) => {\n guiService.add(gui);\n });\n },\n };\n }\n if (module.componentAnimations) {\n const componentAnimations = [...module.componentAnimations];\n module.componentAnimations = {\n load: (engine: RpgClientEngine) => {\n componentAnimations.forEach((componentAnimation) => {\n engine.addComponentAnimation(componentAnimation);\n });\n },\n };\n }\n if (module.transitions) {\n const transitions = [...module.transitions];\n module.transitions = {\n load: (engine: RpgClientEngine) => {\n const guiService = inject(engine.context, RpgGui) as RpgGui;\n transitions.forEach((transition) => {\n guiService.add({\n name: transition.id,\n component: transition.component,\n data: transition.props || {}\n });\n });\n },\n };\n }\n if (module.particles) {\n const particles = [...module.particles];\n module.particles = {\n load: (engine: RpgClientEngine) => {\n particles.forEach((particle) => {\n engine.addParticle(particle);\n });\n },\n };\n }\n if (module.sprite) {\n const sprite = {...module.sprite};\n module.sprite = {\n ...sprite,\n load: (engine: RpgClientEngine) => {\n if (sprite.componentsBehind) {\n sprite.componentsBehind.forEach((component) => {\n engine.addSpriteComponentBehind(component);\n });\n }\n if (sprite.componentsInFront) {\n sprite.componentsInFront.forEach((component) => {\n engine.addSpriteComponentInFront(component);\n });\n }\n },\n };\n }\n return module;\n });\n return modules\n });\n}\n\nexport const GlobalConfigToken = \"GlobalConfigToken\";\n\nexport function provideGlobalConfig(config: any) {\n return {\n provide: GlobalConfigToken,\n useValue: config ?? {},\n };\n}\n\nexport function provideClientGlobalConfig(config: any = {}) {\n if (!config.keyboardControls) {\n config.keyboardControls = {\n up: 'up',\n down: 'down',\n left: 'left',\n right: 'right',\n action: 'space',\n escape: 'escape'\n }\n }\n return provideGlobalConfig(config)\n}\n\n"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","names":[],"sources":["../src/module.ts"],"sourcesContent":["import { findModules, provideModules, registerI18nMessages } from \"@rpgjs/common\";\nimport { FactoryProvider } from \"@signe/di\";\nimport { RpgClientEngine } from \"./RpgClientEngine\";\nimport { RpgClient } from \"./RpgClient\";\nimport { inject } from \"@signe/di\";\nimport { RpgGui } from \"./Gui/Gui\";\nimport { getSoundMetadata } from \"./Sound\";\n\n/**\n * Type for client modules that can be either:\n * - An object implementing RpgClient interface\n * - A class decorated with @RpgModule decorator\n */\nexport type RpgClientModule = RpgClient | (new () => any);\n\n/**\n * Provides client modules configuration to Dependency Injection\n * \n * This function accepts an array of client modules that can be either:\n * - Objects implementing the RpgClient interface\n * - Classes decorated with the @RpgModule decorator (which will be instantiated)\n * \n * @param modules - Array of client modules (objects or classes)\n * @returns FactoryProvider configuration for DI\n * @example\n * ```ts\n * // Using an object\n * provideClientModules([\n * {\n * engine: {\n * onConnected(engine) {\n * console.log('Client connected')\n * }\n * }\n * }\n * ])\n * \n * // Using a decorated class\n * @RpgModule<RpgClient>({\n * engine: {\n * onStart(engine) {\n * console.log('Client started')\n * }\n * }\n * })\n * class MyClientModule {}\n * \n * provideClientModules([MyClientModule])\n * ```\n */\nexport function provideClientModules(modules: RpgClientModule[]): FactoryProvider {\n return provideModules(modules, \"client\", (modules, context) => {\n const mainModuleClient = findModules(context, 'Client')\n modules = [...mainModuleClient, ...modules]\n modules = modules.map((module) => {\n // If module is a class (constructor function), instantiate it\n // The RpgModule decorator adds properties to the prototype, which will be accessible via the instance\n if (typeof module === 'function') {\n const instance = new module() as any;\n // Copy all enumerable properties (including from prototype) to a plain object\n const moduleObj: any = {};\n for (const key in instance) {\n moduleObj[key] = instance[key];\n }\n module = moduleObj;\n }\n if ('client' in module) {\n module = module.client as any;\n }\n if (module.i18n) {\n registerI18nMessages(context, module.i18n, \"client-module\", 10);\n }\n if (module.spritesheets) {\n const spritesheets = [...module.spritesheets];\n module.spritesheets = {\n load: (engine: RpgClientEngine) => {\n spritesheets.forEach((spritesheet) => {\n engine.addSpriteSheet(spritesheet);\n });\n },\n };\n }\n if (module.spritesheetResolver) {\n const resolver = module.spritesheetResolver;\n module.spritesheetResolver = {\n load: (engine: RpgClientEngine) => {\n engine.setSpritesheetResolver(resolver);\n },\n };\n }\n if (module.sounds) {\n const sounds = [...module.sounds];\n module.sounds = {\n load: (engine: RpgClientEngine) => {\n sounds.forEach((sound) => {\n // Check if it's a class decorated with @Sound\n if (typeof sound === 'function' || (sound && sound.constructor && sound.constructor !== Object)) {\n const metadata = getSoundMetadata(sound);\n if (metadata) {\n // Handle single sound\n if (metadata.id && metadata.sound) {\n engine.addSound({\n id: metadata.id,\n src: metadata.sound,\n loop: metadata.loop,\n volume: metadata.volume,\n });\n }\n // Handle multiple sounds\n if (metadata.sounds) {\n Object.entries(metadata.sounds).forEach(([soundId, soundSrc]) => {\n engine.addSound({\n id: soundId,\n src: soundSrc,\n loop: metadata.loop,\n volume: metadata.volume,\n });\n });\n }\n } else {\n // Not a decorated class, treat as regular sound object\n engine.addSound(sound);\n }\n } else {\n // Regular sound object\n engine.addSound(sound);\n }\n });\n },\n };\n }\n if (module.soundResolver) {\n const resolver = module.soundResolver;\n module.soundResolver = {\n load: (engine: RpgClientEngine) => {\n engine.setSoundResolver(resolver);\n },\n };\n }\n if (module.gui) {\n const gui = [...module.gui];\n module.gui = {\n load: (engine: RpgClientEngine) => {\n const guiService = inject(engine.context, RpgGui) as RpgGui;\n gui.forEach((gui) => {\n guiService.add(gui);\n });\n },\n };\n }\n if (module.componentAnimations) {\n const componentAnimations = [...module.componentAnimations];\n module.componentAnimations = {\n load: (engine: RpgClientEngine) => {\n componentAnimations.forEach((componentAnimation) => {\n engine.addComponentAnimation(componentAnimation);\n });\n },\n };\n }\n if (module.clientVisuals) {\n const clientVisuals = { ...module.clientVisuals };\n module.clientVisuals = {\n load: (engine: RpgClientEngine) => {\n engine.registerClientVisuals(clientVisuals);\n },\n };\n }\n if (module.projectiles) {\n const projectiles = { ...module.projectiles };\n module.projectiles = {\n ...projectiles,\n load: (engine: RpgClientEngine) => {\n if (projectiles.components) {\n Object.entries(projectiles.components).forEach(([type, component]) => {\n engine.registerProjectileComponent(type, component);\n });\n }\n },\n };\n }\n if (module.interactions) {\n const interactions = module.interactions;\n module.interactions = {\n ...interactions,\n load: (engine: RpgClientEngine) => {\n if (typeof interactions === \"function\") {\n interactions(engine);\n return;\n }\n interactions.load?.(engine);\n interactions.setup?.(engine);\n if (Array.isArray(interactions.use)) {\n interactions.use.forEach(([matcher, behavior]) => {\n engine.interactions.use(matcher, behavior);\n });\n }\n },\n };\n }\n if (module.transitions) {\n const transitions = [...module.transitions];\n module.transitions = {\n load: (engine: RpgClientEngine) => {\n const guiService = inject(engine.context, RpgGui) as RpgGui;\n transitions.forEach((transition) => {\n guiService.add({\n name: transition.id,\n component: transition.component,\n data: transition.props || {}\n });\n });\n },\n };\n }\n if (module.particles) {\n const particles = [...module.particles];\n module.particles = {\n load: (engine: RpgClientEngine) => {\n particles.forEach((particle) => {\n engine.addParticle(particle);\n });\n },\n };\n }\n if (module.sprite) {\n const sprite = {...module.sprite};\n module.sprite = {\n ...sprite,\n load: (engine: RpgClientEngine) => {\n if (sprite.componentsBehind) {\n sprite.componentsBehind.forEach((component) => {\n engine.addSpriteComponentBehind(component);\n });\n }\n if (sprite.componentsInFront) {\n sprite.componentsInFront.forEach((component) => {\n engine.addSpriteComponentInFront(component);\n });\n }\n if (sprite.components) {\n Object.entries(sprite.components).forEach(([id, component]) => {\n engine.registerSpriteComponent(id, component);\n });\n }\n if (sprite.eventComponent) {\n engine.addEventComponentResolver(sprite.eventComponent);\n }\n },\n };\n }\n return module;\n });\n return modules\n });\n}\n\nexport const GlobalConfigToken = \"GlobalConfigToken\";\n\nexport function provideGlobalConfig(config: any) {\n return {\n provide: GlobalConfigToken,\n useValue: config ?? {},\n };\n}\n\nexport function provideClientGlobalConfig(config: any = {}) {\n config.keyboardControls = {\n up: 'up',\n down: 'down',\n left: 'left',\n right: 'right',\n action: 'space',\n dash: 'shift',\n escape: 'escape',\n ...(config.keyboardControls ?? {}),\n }\n return provideGlobalConfig(config)\n}\n"],"mappings":"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"}
@@ -1,22 +1,14 @@
1
- //#region ../../node_modules/.pnpm/@signe+di@2.9.0/node_modules/@signe/di/dist/index.js
2
- var __defProp = Object.defineProperty;
3
- var __name = (target, value) => __defProp(target, "name", {
4
- value,
5
- configurable: true
6
- });
1
+ //#region ../../node_modules/.pnpm/@signe+di@3.1.0/node_modules/@signe/di/dist/index.js
7
2
  var DEFAULT_INSTANCE_KEY = "__default__";
8
3
  function toTokenName(token) {
9
4
  return typeof token === "function" ? token.name : token;
10
5
  }
11
- __name(toTokenName, "toTokenName");
12
6
  function toInstanceKey(name) {
13
7
  return name ?? DEFAULT_INSTANCE_KEY;
14
8
  }
15
- __name(toInstanceKey, "toInstanceKey");
16
9
  function getRecord(context, token) {
17
10
  return context.get("inject:" + toTokenName(token));
18
11
  }
19
- __name(getRecord, "getRecord");
20
12
  function ensureRecord(context, token) {
21
13
  const key = "inject:" + toTokenName(token);
22
14
  let record = context.get(key);
@@ -28,7 +20,6 @@ function ensureRecord(context, token) {
28
20
  context.set(key, record);
29
21
  return record;
30
22
  }
31
- __name(ensureRecord, "ensureRecord");
32
23
  function provide(context, token, value, options = {}) {
33
24
  const record = ensureRecord(context, token);
34
25
  const instanceKey = toInstanceKey(options.name);
@@ -37,41 +28,17 @@ function provide(context, token, value, options = {}) {
37
28
  record.values.set(instanceKey, value);
38
29
  return value;
39
30
  }
40
- __name(provide, "provide");
41
- function isInjected(context, token, options = {}) {
42
- const record = getRecord(context, token);
43
- if (!record) return false;
44
- if (options.name) return record.injected.has(toInstanceKey(options.name));
45
- if (record.multi) return record.injected.size > 0;
46
- return record.injected.has(DEFAULT_INSTANCE_KEY);
47
- }
48
- __name(isInjected, "isInjected");
49
- function isProvided(context, token, options = {}) {
50
- const record = getRecord(context, token);
51
- if (!record) return false;
52
- if (options.name) return record.values.has(toInstanceKey(options.name));
53
- if (record.multi) return record.values.size > 0;
54
- return record.values.has(DEFAULT_INSTANCE_KEY);
55
- }
56
- __name(isProvided, "isProvided");
57
- function hasInstance(context, token, options = {}) {
58
- return isProvided(context, token, options);
59
- }
60
- __name(hasInstance, "hasInstance");
61
31
  function handleMissingInjection(token, options) {
62
32
  const name = toTokenName(token);
63
33
  if (options.name) throw new Error(`Injection provider ${name} with name ${options.name} not found`);
64
34
  throw new Error(`Injection provider ${name} not found`);
65
35
  }
66
- __name(handleMissingInjection, "handleMissingInjection");
67
36
  function markInjected(record, key) {
68
37
  record.injected.add(key);
69
38
  }
70
- __name(markInjected, "markInjected");
71
39
  function markAllInjected(record) {
72
40
  for (const key of record.values.keys()) record.injected.add(key);
73
41
  }
74
- __name(markAllInjected, "markAllInjected");
75
42
  function inject(context, token, options = {}) {
76
43
  const record = getRecord(context, token);
77
44
  if (!record) {
@@ -104,78 +71,6 @@ function inject(context, token, options = {}) {
104
71
  markInjected(record, DEFAULT_INSTANCE_KEY);
105
72
  return value;
106
73
  }
107
- __name(inject, "inject");
108
- function override(providers, newProvider, options) {
109
- let { upsert = false, key } = options ?? {};
110
- if (!key) key = typeof newProvider === "function" ? newProvider.name : newProvider.provide;
111
- const flatProviders = providers.flat();
112
- const exists = flatProviders.some((provider) => {
113
- if (typeof provider === "function") return provider.name === key;
114
- else if (typeof provider === "object") return provider.provide === key;
115
- return false;
116
- });
117
- const mappedProviders = flatProviders.map((provider) => {
118
- if (typeof provider === "function" && provider.name === key) return newProvider;
119
- else if (typeof provider === "object" && provider.provide === key) return newProvider;
120
- return provider;
121
- });
122
- if (upsert && !exists) mappedProviders.push(newProvider);
123
- return mappedProviders;
124
- }
125
- __name(override, "override");
126
- function findProviders(providers, name) {
127
- const results = [];
128
- for (const provider of providers) if (Array.isArray(provider)) results.push(...findProviders(provider, name));
129
- else if (findProvider(provider, name)) results.push(provider);
130
- return results;
131
- }
132
- __name(findProviders, "findProviders");
133
- function findProvider(providers, name) {
134
- if (!Array.isArray(providers)) {
135
- if (typeof providers === "object" && "provide" in providers) {
136
- const provider = providers;
137
- const providerName = typeof provider.provide === "function" ? provider.provide.name : provider.provide;
138
- if (name instanceof RegExp) {
139
- if (name.test(providerName)) return providers;
140
- } else if (providerName === name) return providers;
141
- }
142
- return null;
143
- }
144
- for (const provider of providers) {
145
- if (Array.isArray(provider)) {
146
- const found = findProvider(provider, name);
147
- if (found) return found;
148
- continue;
149
- }
150
- if (typeof provider === "object" && "provide" in provider) {
151
- const providerName = typeof provider.provide === "function" ? provider.provide.name : provider.provide;
152
- if (name instanceof RegExp) {
153
- if (name.test(providerName)) return provider;
154
- } else if (providerName === name) return provider;
155
- }
156
- }
157
- return null;
158
- }
159
- __name(findProvider, "findProvider");
160
- function processProvider(mergedConfig, baseConfig, provider) {
161
- if (Array.isArray(provider)) {
162
- for (const nestedProvider of provider) processProvider(mergedConfig, baseConfig, nestedProvider);
163
- return;
164
- }
165
- if (findProvider(baseConfig.providers, provider.provide)) mergedConfig.providers = override(mergedConfig.providers, provider);
166
- else mergedConfig.providers.push(provider);
167
- }
168
- __name(processProvider, "processProvider");
169
- function mergeConfig(baseConfig, config) {
170
- const mergedConfig = {
171
- ...baseConfig,
172
- ...config,
173
- providers: [...baseConfig.providers]
174
- };
175
- for (const provider of config.providers) processProvider(mergedConfig, baseConfig, provider);
176
- return mergedConfig;
177
- }
178
- __name(mergeConfig, "mergeConfig");
179
74
  function extractProvideOptions(source) {
180
75
  if (!source) return;
181
76
  const { multi, name } = source;
@@ -185,14 +80,12 @@ function extractProvideOptions(source) {
185
80
  name
186
81
  };
187
82
  }
188
- __name(extractProvideOptions, "extractProvideOptions");
189
83
  function getDeps(provider) {
190
84
  if (typeof provider === "function") return provider.deps ?? [];
191
85
  return provider.deps ?? [];
192
86
  }
193
- __name(getDeps, "getDeps");
194
87
  function sortProviders(providers) {
195
- const tokenName = /* @__PURE__ */ __name((t) => typeof t === "function" ? t.name : t, "tokenName");
88
+ const tokenName = (t) => typeof t === "function" ? t.name : t;
196
89
  const map = /* @__PURE__ */ new Map();
197
90
  for (const p of providers) {
198
91
  const token = tokenName(typeof p === "function" ? p : p.provide);
@@ -203,7 +96,7 @@ function sortProviders(providers) {
203
96
  const result = [];
204
97
  const visited = /* @__PURE__ */ new Set();
205
98
  const stack = /* @__PURE__ */ new Set();
206
- const visit = /* @__PURE__ */ __name((token) => {
99
+ const visit = (token) => {
207
100
  const name = tokenName(token);
208
101
  if (visited.has(name)) return;
209
102
  if (stack.has(name)) throw new Error(`Circular dependency detected for provider ${name}`);
@@ -217,11 +110,10 @@ function sortProviders(providers) {
217
110
  visited.add(name);
218
111
  }
219
112
  stack.delete(name);
220
- }, "visit");
113
+ };
221
114
  for (const p of providers) visit(typeof p === "function" ? p : p.provide);
222
115
  return result;
223
116
  }
224
- __name(sortProviders, "sortProviders");
225
117
  async function injector(context, providers) {
226
118
  providers = providers.flat();
227
119
  providers = sortProviders(providers);
@@ -247,13 +139,11 @@ async function injector(context, providers) {
247
139
  provide(context, token, instance, options);
248
140
  }
249
141
  }
250
- __name(injector, "injector");
251
142
  var Context = class {
252
- static {
253
- __name(this, "Context");
143
+ constructor() {
144
+ /** Internal storage for injected values */
145
+ this.values = {};
254
146
  }
255
- /** Internal storage for injected values */
256
- values = {};
257
147
  /**
258
148
  * Sets a value in the context
259
149
  * @param key - Unique identifier for the value
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../../../../../../node_modules/.pnpm/@signe+di@3.1.0/node_modules/@signe/di/dist/index.js"],"sourcesContent":["// src/inject.ts\nvar DEFAULT_INSTANCE_KEY = \"__default__\";\nfunction toTokenName(token) {\n return typeof token === \"function\" ? token.name : token;\n}\nfunction toInstanceKey(name) {\n return name ?? DEFAULT_INSTANCE_KEY;\n}\nfunction getRecord(context, token) {\n return context.get(\"inject:\" + toTokenName(token));\n}\nfunction ensureRecord(context, token) {\n const key = \"inject:\" + toTokenName(token);\n let record = context.get(key);\n if (!record) {\n record = {\n multi: false,\n values: /* @__PURE__ */ new Map(),\n injected: /* @__PURE__ */ new Set()\n };\n }\n context.set(key, record);\n return record;\n}\nfunction provide(context, token, value, options = {}) {\n const record = ensureRecord(context, token);\n const instanceKey = toInstanceKey(options.name);\n if (options.multi) {\n record.multi = true;\n }\n if (!record.multi && instanceKey !== DEFAULT_INSTANCE_KEY) {\n record.multi = true;\n }\n record.values.set(instanceKey, value);\n return value;\n}\nfunction isInjected(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.injected.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.injected.size > 0;\n }\n return record.injected.has(DEFAULT_INSTANCE_KEY);\n}\nfunction isProvided(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.values.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.values.size > 0;\n }\n return record.values.has(DEFAULT_INSTANCE_KEY);\n}\nfunction hasInstance(context, token, options = {}) {\n return isProvided(context, token, options);\n}\nfunction handleMissingInjection(token, options) {\n const name = toTokenName(token);\n if (options.name) {\n throw new Error(`Injection provider ${name} with name ${options.name} not found`);\n }\n throw new Error(`Injection provider ${name} not found`);\n}\nfunction markInjected(record, key) {\n record.injected.add(key);\n}\nfunction markAllInjected(record) {\n for (const key of record.values.keys()) {\n record.injected.add(key);\n }\n}\nfunction inject(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n if (options.optional) {\n return options.multi ? [] : void 0;\n }\n return handleMissingInjection(token, options);\n }\n if (options.name) {\n const instanceKey = toInstanceKey(options.name);\n if (!record.values.has(instanceKey)) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n const value2 = record.values.get(instanceKey);\n markInjected(record, instanceKey);\n return value2;\n }\n if (options.multi || record.multi) {\n if (record.values.size === 0) {\n if (options.optional) {\n return [];\n }\n return handleMissingInjection(token, options);\n }\n markAllInjected(record);\n return Array.from(record.values.values());\n }\n const value = record.values.get(DEFAULT_INSTANCE_KEY);\n if (value === void 0) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n markInjected(record, DEFAULT_INSTANCE_KEY);\n return value;\n}\nfunction override(providers, newProvider, options) {\n let { upsert = false, key } = options ?? {};\n if (!key) {\n key = typeof newProvider === \"function\" ? newProvider.name : newProvider.provide;\n }\n const flatProviders = providers.flat();\n const exists = flatProviders.some((provider) => {\n if (typeof provider === \"function\") {\n return provider.name === key;\n } else if (typeof provider === \"object\") {\n return provider.provide === key;\n }\n return false;\n });\n const mappedProviders = flatProviders.map((provider) => {\n if (typeof provider === \"function\" && provider.name === key) {\n return newProvider;\n } else if (typeof provider === \"object\" && provider.provide === key) {\n return newProvider;\n }\n return provider;\n });\n if (upsert && !exists) {\n mappedProviders.push(newProvider);\n }\n return mappedProviders;\n}\nfunction findProviders(providers, name) {\n const results = [];\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n results.push(...findProviders(provider, name));\n } else if (findProvider(provider, name)) {\n results.push(provider);\n }\n }\n return results;\n}\nfunction findProvider(providers, name) {\n if (!Array.isArray(providers)) {\n if (typeof providers === \"object\" && \"provide\" in providers) {\n const provider = providers;\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return providers;\n } else {\n if (providerName === name) return providers;\n }\n }\n return null;\n }\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n const found = findProvider(provider, name);\n if (found) return found;\n continue;\n }\n if (typeof provider === \"object\" && \"provide\" in provider) {\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return provider;\n } else {\n if (providerName === name) return provider;\n }\n }\n }\n return null;\n}\n\n// src/merge-config.ts\nfunction processProvider(mergedConfig, baseConfig, provider) {\n if (Array.isArray(provider)) {\n for (const nestedProvider of provider) {\n processProvider(mergedConfig, baseConfig, nestedProvider);\n }\n return;\n }\n const existingProvider = findProvider(baseConfig.providers, provider.provide);\n if (existingProvider) {\n mergedConfig.providers = override(mergedConfig.providers, provider);\n } else {\n mergedConfig.providers.push(provider);\n }\n}\nfunction mergeConfig(baseConfig, config) {\n const mergedConfig = {\n ...baseConfig,\n ...config,\n providers: [...baseConfig.providers]\n // Start with a copy of base providers\n };\n for (const provider of config.providers) {\n processProvider(mergedConfig, baseConfig, provider);\n }\n return mergedConfig;\n}\n\n// src/provider.ts\nfunction extractProvideOptions(source) {\n if (!source) {\n return void 0;\n }\n const { multi, name } = source;\n if (multi === void 0 && name === void 0) {\n return void 0;\n }\n return { multi, name };\n}\nfunction getDeps(provider) {\n if (typeof provider === \"function\") {\n return provider.deps ?? [];\n }\n return provider.deps ?? [];\n}\nfunction sortProviders(providers) {\n const tokenName = (t) => typeof t === \"function\" ? t.name : t;\n const map = /* @__PURE__ */ new Map();\n for (const p of providers) {\n const token = tokenName(typeof p === \"function\" ? p : p.provide);\n const list = map.get(token);\n if (list) {\n list.push(p);\n } else {\n map.set(token, [p]);\n }\n }\n const result = [];\n const visited = /* @__PURE__ */ new Set();\n const stack = /* @__PURE__ */ new Set();\n const visit = (token) => {\n const name = tokenName(token);\n if (visited.has(name)) return;\n if (stack.has(name)) {\n throw new Error(`Circular dependency detected for provider ${name}`);\n }\n stack.add(name);\n const providersForToken = map.get(name);\n if (providersForToken) {\n for (const provider of providersForToken) {\n for (const dep of getDeps(provider)) {\n visit(dep);\n }\n result.push(provider);\n }\n visited.add(name);\n }\n stack.delete(name);\n };\n for (const p of providers) {\n const token = typeof p === \"function\" ? p : p.provide;\n visit(token);\n }\n return result;\n}\nasync function injector(context, providers) {\n providers = providers.flat();\n providers = sortProviders(providers);\n for (const provider of providers) {\n let token;\n let instance;\n let options;\n if (typeof provider === \"function\") {\n token = provider;\n instance = new provider(context);\n const diOptions = extractProvideOptions(provider.diOptions ?? provider.di);\n options = diOptions;\n } else {\n token = provider.provide;\n options = extractProvideOptions(provider);\n const provideUserClass = provider.useClass;\n const isClass = typeof provideUserClass === \"function\";\n if (isClass) {\n instance = new provideUserClass(context);\n } else if (\"useValue\" in provider) {\n instance = provider.useValue;\n } else if (\"useFactory\" in provider) {\n instance = provider.useFactory?.(context);\n if (instance instanceof Promise) {\n instance = await instance;\n }\n } else if (\"useExisting\" in provider) {\n instance = inject(context, provider.useExisting);\n }\n }\n provide(context, token, instance, options);\n }\n}\n\n// src/context.ts\nvar Context = class {\n constructor() {\n /** Internal storage for injected values */\n this.values = {};\n }\n /**\n * Sets a value in the context\n * @param key - Unique identifier for the value\n * @param value - Value to store\n */\n set(key, value) {\n this.values[key] = value;\n }\n /**\n * Retrieves a value from the context\n * @param key - Unique identifier for the value\n * @returns The stored value or undefined if not found\n */\n get(key) {\n return this.values[key];\n }\n};\nexport {\n Context,\n findProvider,\n findProviders,\n hasInstance,\n inject,\n injector,\n isInjected,\n isProvided,\n mergeConfig,\n override,\n provide\n};\n//# sourceMappingURL=index.js.map"],"x_google_ignoreList":[0],"mappings":"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"}