warscript 0.0.1-dev.f5421e8 → 0.0.1-dev.f594e71

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 (331) hide show
  1. package/attributes.d.ts +6 -0
  2. package/attributes.lua +17 -1
  3. package/core/types/frame.d.ts +1 -0
  4. package/core/types/frame.lua +136 -58
  5. package/core/types/handle.lua +9 -9
  6. package/core/types/item.d.ts +1 -0
  7. package/core/types/item.lua +1 -0
  8. package/core/types/player.d.ts +18 -1
  9. package/core/types/player.lua +76 -26
  10. package/core/types/playerCamera.d.ts +2 -0
  11. package/core/types/playerCamera.lua +123 -5
  12. package/core/types/playerColor.lua +4 -3
  13. package/core/types/sound.d.ts +1 -1
  14. package/core/types/sound.lua +19 -9
  15. package/core/types/tileCell.d.ts +11 -1
  16. package/core/types/tileCell.lua +97 -0
  17. package/core/types/timer.d.ts +3 -1
  18. package/core/types/timer.lua +27 -2
  19. package/core/types/unit.d.ts +4 -0
  20. package/core/types/unit.lua +4 -0
  21. package/decl/native.d.ts +1718 -964
  22. package/destroyable.d.ts +1 -0
  23. package/destroyable.lua +9 -0
  24. package/engine/behavior.d.ts +14 -1
  25. package/engine/behavior.lua +230 -70
  26. package/engine/behaviour/ability/apply-buff.lua +5 -5
  27. package/engine/behaviour/ability/damage.d.ts +9 -3
  28. package/engine/behaviour/ability/damage.lua +40 -49
  29. package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
  30. package/engine/behaviour/ability/emulate-impact.lua +23 -7
  31. package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
  32. package/engine/behaviour/ability/remove-buffs.lua +21 -0
  33. package/engine/behaviour/ability/restore-mana.d.ts +1 -1
  34. package/engine/behaviour/ability/restore-mana.lua +6 -6
  35. package/engine/behaviour/ability.d.ts +12 -6
  36. package/engine/behaviour/ability.lua +49 -17
  37. package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
  38. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  39. package/engine/behaviour/unit.d.ts +40 -3
  40. package/engine/behaviour/unit.lua +270 -6
  41. package/engine/buff.d.ts +75 -28
  42. package/engine/buff.lua +433 -196
  43. package/engine/index.d.ts +2 -1
  44. package/engine/internal/ability.d.ts +11 -1
  45. package/engine/internal/ability.lua +100 -41
  46. package/engine/internal/item/ability.lua +63 -11
  47. package/engine/internal/item/fields.d.ts +12 -0
  48. package/engine/internal/item/fields.lua +33 -0
  49. package/engine/internal/item+owner.d.ts +1 -0
  50. package/engine/internal/item+owner.lua +19 -6
  51. package/engine/internal/item.d.ts +28 -16
  52. package/engine/internal/item.lua +241 -82
  53. package/engine/internal/mechanics/cast-ability.lua +6 -3
  54. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  55. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  56. package/engine/internal/misc/frame-coordinates.lua +21 -0
  57. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  58. package/engine/internal/misc/get-terrain-z.lua +11 -0
  59. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  60. package/engine/internal/misc/player-local-handle.lua +5 -0
  61. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  62. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  63. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  64. package/engine/internal/object-data/health-bonus.lua +16 -0
  65. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  66. package/engine/internal/object-data/mana-bonus.lua +16 -0
  67. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  68. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  69. package/engine/internal/unit/ability.d.ts +35 -0
  70. package/engine/internal/unit/ability.lua +113 -12
  71. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  72. package/engine/internal/unit/allowed-targets.lua +9 -1
  73. package/engine/internal/unit/appearance.d.ts +15 -0
  74. package/engine/internal/unit/appearance.lua +85 -0
  75. package/engine/internal/unit/attributes.d.ts +17 -0
  76. package/engine/internal/unit/attributes.lua +46 -0
  77. package/engine/internal/unit/bag.d.ts +18 -0
  78. package/engine/internal/unit/bag.lua +63 -0
  79. package/engine/internal/unit/bonus.d.ts +6 -0
  80. package/engine/internal/unit/bonus.lua +33 -3
  81. package/engine/internal/unit/buff.d.ts +2 -2
  82. package/engine/internal/unit/buff.lua +34 -19
  83. package/engine/internal/unit/equipment.d.ts +36 -0
  84. package/engine/internal/unit/equipment.lua +169 -0
  85. package/engine/internal/unit/fly-height.d.ts +7 -0
  86. package/engine/internal/unit/fly-height.lua +20 -0
  87. package/engine/internal/unit/interrupts.d.ts +12 -0
  88. package/engine/internal/unit/interrupts.lua +28 -0
  89. package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
  90. package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
  91. package/engine/internal/unit/main-selected.lua +12 -27
  92. package/engine/internal/unit/order.d.ts +20 -0
  93. package/engine/internal/unit/order.lua +136 -0
  94. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  95. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  96. package/engine/internal/unit/range-event.d.ts +12 -0
  97. package/engine/internal/unit/range-event.lua +90 -0
  98. package/engine/internal/unit/scale.d.ts +7 -0
  99. package/engine/internal/unit/scale.lua +20 -0
  100. package/engine/internal/unit+ability.lua +10 -1
  101. package/engine/internal/unit+bonus.lua +3 -3
  102. package/engine/internal/unit+damage.d.ts +11 -11
  103. package/engine/internal/unit+damage.lua +43 -14
  104. package/engine/internal/unit+spellSteal.lua +1 -2
  105. package/engine/internal/unit-missile-data.lua +58 -32
  106. package/engine/internal/unit-missile-launch.lua +52 -14
  107. package/engine/internal/unit.d.ts +39 -27
  108. package/engine/internal/unit.lua +382 -269
  109. package/engine/local-client.d.ts +27 -0
  110. package/engine/local-client.lua +370 -54
  111. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  112. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  113. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  114. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  115. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  116. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  117. package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
  118. package/engine/object-data/auxiliary/equipment-type.lua +2 -0
  119. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  120. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  121. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  122. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  123. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  124. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  125. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  126. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  127. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  128. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  129. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  130. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  131. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  132. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  133. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  134. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  135. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  136. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  137. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  138. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  139. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  140. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  141. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  142. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
  143. package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
  144. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  145. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  146. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  147. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  148. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  149. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  150. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  151. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  152. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  153. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  154. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  155. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  156. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  157. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  158. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  159. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  160. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  161. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  162. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  163. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  164. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  165. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  166. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  167. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  168. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  169. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  170. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  171. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  172. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  173. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  174. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  175. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  176. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  177. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  178. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  179. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  180. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  181. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  182. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  183. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  184. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  185. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  186. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  187. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  188. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  189. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  190. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  191. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  192. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  193. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  194. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  195. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  196. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  197. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  198. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  199. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  200. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  201. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  202. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  203. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  204. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  205. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  206. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  207. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  208. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  209. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  210. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  211. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  212. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  213. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  214. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  215. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  216. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  217. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  218. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  219. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  220. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  221. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  222. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  223. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  224. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  225. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  226. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  227. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  228. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  229. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  230. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  231. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  232. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  233. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  234. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  235. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  236. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  237. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  238. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  239. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  240. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  241. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  242. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  243. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  244. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  245. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  246. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  247. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  248. package/engine/object-data/entry/ability-type.d.ts +12 -3
  249. package/engine/object-data/entry/ability-type.lua +148 -7
  250. package/engine/object-data/entry/buff-type/applicable.lua +113 -104
  251. package/engine/object-data/entry/buff-type.d.ts +10 -12
  252. package/engine/object-data/entry/buff-type.lua +37 -27
  253. package/engine/object-data/entry/destructible-type.d.ts +32 -2
  254. package/engine/object-data/entry/destructible-type.lua +181 -0
  255. package/engine/object-data/entry/item-type.d.ts +12 -3
  256. package/engine/object-data/entry/item-type.lua +52 -0
  257. package/engine/object-data/entry/lightning-type.d.ts +2 -2
  258. package/engine/object-data/entry/sound-preset.d.ts +2 -2
  259. package/engine/object-data/entry/unit-type.d.ts +64 -6
  260. package/engine/object-data/entry/unit-type.lua +531 -85
  261. package/engine/object-data/entry/upgrade.d.ts +2 -2
  262. package/engine/object-data/entry.d.ts +4 -1
  263. package/engine/object-field/ability.d.ts +4 -4
  264. package/engine/object-field/ability.lua +9 -8
  265. package/engine/object-field/item.d.ts +22 -0
  266. package/engine/object-field/item.lua +118 -0
  267. package/engine/object-field/unit.d.ts +72 -3
  268. package/engine/object-field/unit.lua +268 -7
  269. package/engine/object-field.d.ts +26 -7
  270. package/engine/object-field.lua +360 -119
  271. package/engine/random.d.ts +10 -0
  272. package/engine/random.lua +21 -0
  273. package/engine/standard/entries/ability-type.d.ts +3102 -7
  274. package/engine/standard/entries/ability-type.lua +0 -6
  275. package/engine/standard/entries/buff-type.d.ts +3 -0
  276. package/engine/standard/entries/buff-type.lua +3 -0
  277. package/engine/standard/entries/item-type.d.ts +1299 -0
  278. package/engine/standard/entries/item-type.lua +2 -0
  279. package/engine/standard/entries/unit-type.d.ts +5 -0
  280. package/engine/standard/entries/unit-type.lua +5 -0
  281. package/engine/standard/fields/ability.d.ts +2 -2
  282. package/engine/standard/fields/ability.lua +2 -2
  283. package/engine/standard/fields/item.d.ts +4 -0
  284. package/engine/standard/fields/item.lua +6 -0
  285. package/engine/standard/fields/unit.d.ts +12 -0
  286. package/engine/standard/fields/unit.lua +20 -0
  287. package/engine/synchronization.d.ts +11 -0
  288. package/engine/synchronization.lua +77 -0
  289. package/engine/text-tag.d.ts +36 -2
  290. package/engine/text-tag.lua +250 -10
  291. package/engine/unit.d.ts +10 -1
  292. package/engine/unit.lua +10 -1
  293. package/event.d.ts +1 -1
  294. package/lualib_bundle.lua +1 -1
  295. package/math.d.ts +2 -0
  296. package/math.lua +14 -0
  297. package/net/socket.lua +1 -1
  298. package/network.lua +25 -1
  299. package/objutil/buff.lua +11 -10
  300. package/objutil/object.lua +1 -1
  301. package/operation.d.ts +8 -1
  302. package/operation.lua +38 -18
  303. package/package.json +3 -23
  304. package/patch-lua.lua +15 -0
  305. package/patch-lualib.lua +1 -1
  306. package/utility/arrays.d.ts +2 -0
  307. package/utility/arrays.lua +11 -0
  308. package/utility/callback-array.d.ts +17 -0
  309. package/utility/callback-array.lua +61 -0
  310. package/utility/functions.d.ts +8 -0
  311. package/utility/functions.lua +13 -0
  312. package/utility/linked-map.d.ts +35 -0
  313. package/utility/linked-map.lua +107 -0
  314. package/utility/linked-set.d.ts +5 -1
  315. package/utility/linked-set.lua +49 -1
  316. package/utility/lua-maps.d.ts +15 -2
  317. package/utility/lua-maps.lua +53 -2
  318. package/utility/lua-sets.d.ts +2 -0
  319. package/utility/lua-sets.lua +7 -0
  320. package/utility/random.d.ts +102 -0
  321. package/utility/random.lua +273 -0
  322. package/utility/records.lua +20 -1
  323. package/utility/types.d.ts +3 -0
  324. package/utility/unordered-map.d.ts +27 -0
  325. package/utility/unordered-map.lua +99 -0
  326. package/core/types/order.d.ts +0 -25
  327. package/core/types/order.lua +0 -55
  328. /package/engine/internal/{object-data/armor-increase.d.ts → misc/damage-metadata-by-target.d.ts} +0 -0
  329. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  330. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  331. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
@@ -0,0 +1,107 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__Class = ____lualib.__TS__Class
3
+ local __TS__New = ____lualib.__TS__New
4
+ local __TS__SetDescriptor = ____lualib.__TS__SetDescriptor
5
+ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
6
+ local ____exports = {}
7
+ local ____linked_2Dset = require("utility.linked-set")
8
+ local LinkedSet = ____linked_2Dset.LinkedSet
9
+ local ____exception = require("exception")
10
+ local UnsupportedOperationException = ____exception.UnsupportedOperationException
11
+ local function linkedMapNext(state)
12
+ local n = state.n
13
+ state.n = state.t[n]
14
+ return n, state.v[n]
15
+ end
16
+ ____exports.LinkedMap = __TS__Class()
17
+ local LinkedMap = ____exports.LinkedMap
18
+ LinkedMap.name = "LinkedMap"
19
+ function LinkedMap.prototype.____constructor(self)
20
+ self.k = __TS__New(LinkedSet)
21
+ self.v = {}
22
+ end
23
+ function LinkedMap.prototype.get(self, key)
24
+ return self.v[key]
25
+ end
26
+ function LinkedMap.prototype.getOrPut(self, key, defaultValue)
27
+ local value = self.v[key]
28
+ if value ~= nil then
29
+ return value
30
+ end
31
+ value = defaultValue()
32
+ self.k:add(key)
33
+ self.v[key] = value
34
+ return value
35
+ end
36
+ function LinkedMap.prototype.put(self, key, value)
37
+ self.k:add(key)
38
+ self.v[key] = value
39
+ end
40
+ function LinkedMap.prototype.remove(self, key)
41
+ if self.k:remove(key) then
42
+ self.v[key] = nil
43
+ return true
44
+ end
45
+ return false
46
+ end
47
+ function LinkedMap.prototype.contains(self, key)
48
+ return self.keys:contains(key)
49
+ end
50
+ function LinkedMap.prototype.__len(self)
51
+ return self.keys.size
52
+ end
53
+ function LinkedMap.prototype.__pairs(self)
54
+ return linkedMapNext, {n = self.k.f, t = self.k.n, v = self.v}, nil
55
+ end
56
+ __TS__SetDescriptor(
57
+ LinkedMap.prototype,
58
+ "keys",
59
+ {get = function(self)
60
+ return self.k
61
+ end},
62
+ true
63
+ )
64
+ __TS__SetDescriptor(
65
+ LinkedMap.prototype,
66
+ "size",
67
+ {get = function(self)
68
+ return self.keys.size
69
+ end},
70
+ true
71
+ )
72
+ local emptyIteratorState = {t = {}, v = {}}
73
+ local EmptyLinkedMap = __TS__Class()
74
+ EmptyLinkedMap.name = "EmptyLinkedMap"
75
+ __TS__ClassExtends(EmptyLinkedMap, ____exports.LinkedMap)
76
+ function EmptyLinkedMap.prototype.getOrPut(self)
77
+ error(
78
+ __TS__New(UnsupportedOperationException),
79
+ 0
80
+ )
81
+ end
82
+ function EmptyLinkedMap.prototype.put(self)
83
+ error(
84
+ __TS__New(UnsupportedOperationException),
85
+ 0
86
+ )
87
+ end
88
+ function EmptyLinkedMap.prototype.remove(self)
89
+ error(
90
+ __TS__New(UnsupportedOperationException),
91
+ 0
92
+ )
93
+ end
94
+ function EmptyLinkedMap.prototype.__len(self)
95
+ return 0
96
+ end
97
+ function EmptyLinkedMap.prototype.__pairs(self)
98
+ return linkedMapNext, emptyIteratorState, nil
99
+ end
100
+ local EMPTY_LINKED_MAP = __TS__New(EmptyLinkedMap)
101
+ ____exports.emptyLinkedMap = function()
102
+ return EMPTY_LINKED_MAP
103
+ end
104
+ ____exports.mutableLinkedMap = function()
105
+ return __TS__New(____exports.LinkedMap)
106
+ end
107
+ return ____exports
@@ -14,7 +14,7 @@ export interface ReadonlyLinkedSet<T extends AnyNotNil> extends LuaPairsKeyItera
14
14
  next(key: T): T | undefined;
15
15
  previous(key: T): T | undefined;
16
16
  contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
17
- size: number;
17
+ readonly size: number;
18
18
  forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
19
19
  toArray(): T[];
20
20
  sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
@@ -36,9 +36,11 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
36
36
  copyOf(): LinkedSet<T>;
37
37
  first(): T | undefined;
38
38
  last(): T | undefined;
39
+ pop(): T | undefined;
39
40
  next(key: T): T | undefined;
40
41
  previous(key: T): T | undefined;
41
42
  add(key: T): boolean;
43
+ protected addBefore(value: T, key: T): boolean;
42
44
  remove(key: T): boolean;
43
45
  contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
44
46
  clear(): void;
@@ -47,9 +49,11 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
47
49
  toArray(): T[];
48
50
  sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
49
51
  sortBy<R>(selector: ((value: T) => R) | KeysOfType<T, R>): void;
52
+ protected __len(): number;
50
53
  protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
51
54
  }
52
55
  export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
56
+ export declare const mutableLinkedSet: <T extends AnyNotNil>() => LinkedSet<T>;
53
57
  export declare const mutableLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => LinkedSet<T>;
54
58
  export declare const mutableLinkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
55
59
  export declare const linkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
@@ -42,6 +42,23 @@ end
42
42
  function LinkedSet.prototype.last(self)
43
43
  return self.l
44
44
  end
45
+ function LinkedSet.prototype.pop(self)
46
+ local f = self.f
47
+ if f == nil then
48
+ return nil
49
+ end
50
+ local n = self.n
51
+ local next = n[f]
52
+ n[f] = nil
53
+ self.f = next
54
+ if next ~= nil then
55
+ self.p[next] = nil
56
+ else
57
+ self.l = nil
58
+ end
59
+ self.s = self.s - 1
60
+ return f
61
+ end
45
62
  function LinkedSet.prototype.next(self, key)
46
63
  return self.n[key]
47
64
  end
@@ -68,6 +85,23 @@ function LinkedSet.prototype.add(self, key)
68
85
  end
69
86
  return true
70
87
  end
88
+ function LinkedSet.prototype.addBefore(self, value, key)
89
+ local n = self.n
90
+ local p = self.p
91
+ local previous = p[value]
92
+ if previous ~= nil then
93
+ n[previous] = key
94
+ p[key] = previous
95
+ elseif value == self.f then
96
+ self.f = key
97
+ else
98
+ return false
99
+ end
100
+ n[key] = value
101
+ p[value] = key
102
+ self.s = self.s + 1
103
+ return true
104
+ end
71
105
  function LinkedSet.prototype.remove(self, key)
72
106
  local n = self.n
73
107
  local next = n[key]
@@ -107,8 +141,9 @@ function LinkedSet.prototype.forEach(self, action, ...)
107
141
  local n = self.n
108
142
  local c = self.f
109
143
  while c ~= nil do
144
+ local next = n[c]
110
145
  action(c, ...)
111
- c = n[c]
146
+ c = next
112
147
  end
113
148
  end
114
149
  function LinkedSet.prototype.toArray(self)
@@ -153,6 +188,9 @@ function LinkedSet.prototype.sortBy(self, selector)
153
188
  self.f = array[1]
154
189
  self.l = array[s]
155
190
  end
191
+ function LinkedSet.prototype.__len(self)
192
+ return self.s
193
+ end
156
194
  function LinkedSet.prototype.__pairs(self)
157
195
  return linkedSetNext, {t = self.n, n = self.f}, nil
158
196
  end
@@ -164,6 +202,7 @@ __TS__SetDescriptor(
164
202
  end},
165
203
  true
166
204
  )
205
+ local emptyIteratorState = {t = {}}
167
206
  local EmptyLinkedSet = __TS__Class()
168
207
  EmptyLinkedSet.name = "EmptyLinkedSet"
169
208
  __TS__ClassExtends(EmptyLinkedSet, ____exports.LinkedSet)
@@ -173,10 +212,19 @@ function EmptyLinkedSet.prototype.add(self)
173
212
  0
174
213
  )
175
214
  end
215
+ function EmptyLinkedSet.prototype.__len(self)
216
+ return 0
217
+ end
218
+ function EmptyLinkedSet.prototype.__pairs(self)
219
+ return linkedSetNext, emptyIteratorState, nil
220
+ end
176
221
  local EMPTY_LINKED_SET = __TS__New(EmptyLinkedSet)
177
222
  ____exports.emptyLinkedSet = function()
178
223
  return EMPTY_LINKED_SET
179
224
  end
225
+ ____exports.mutableLinkedSet = function()
226
+ return __TS__New(____exports.LinkedSet)
227
+ end
180
228
  ____exports.mutableLinkedSetOf = function(...)
181
229
  local linkedSet = __TS__New(____exports.LinkedSet)
182
230
  for i = 1, select("#", ...) do
@@ -1,5 +1,18 @@
1
1
  /** @noSelfInFile */
2
2
  import { Flatten, TupleOf } from "./types";
3
+ export declare const emptyLuaMap: <K extends AnyNotNil, V>() => ReadonlyLuaMap<K, V>;
4
+ export declare const mutableLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
5
+ export declare const mutableWeakLuaMap: <K extends AnyNotNil, V>() => LuaMap<K, V>;
3
6
  export declare const luaMapOf: <K extends AnyNotNil, V>(...pairs: Flatten<TupleOf<[K, V], 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40>>) => LuaMap<K, V>;
4
- export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: LuaMap<K, V>) => LuaMap<V, K>;
5
- export declare const mapValues: <K extends AnyNotNil, V1, V2>(luaMap: LuaMap<K, V1>, transform: (value: V1) => V2) => LuaMap<K, V2>;
7
+ export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: ReadonlyLuaMap<K, V | undefined | null>) => LuaMap<V, K>;
8
+ export declare const toLuaMap: <K extends PropertyKey, V>(record: Record<K, V>) => LuaMap<K, V>;
9
+ export declare const flattenKeys: <K extends AnyNotNil, V>(luaMap: ReadonlyLuaMap<readonly K[], V> | ReadonlyLuaMap<K[], V>) => LuaMap<K, V>;
10
+ export declare const mapKeys: {
11
+ <K1 extends AnyNotNil, K2 extends AnyNotNil, V>(luaMap: ReadonlyLuaMap<K1, V>, transform: (value: K1) => K2): LuaMap<K2, V>;
12
+ <K1 extends AnyNotNil, K2 extends keyof K1, V>(luaMap: ReadonlyLuaMap<K1, V>, key: K2): K1[K2] extends AnyNotNil ? LuaMap<K1[K2], V> : never;
13
+ };
14
+ export declare const mapValues: {
15
+ <K extends AnyNotNil, V1, V2>(luaMap: ReadonlyLuaMap<K, V1>, transform: (value: V1) => V2): LuaMap<K, V2>;
16
+ <K extends AnyNotNil, V1, V2 extends keyof V1>(luaMap: ReadonlyLuaMap<K, V1>, key: V2): LuaMap<K, V1[V2]>;
17
+ };
18
+ export declare const getOrPut: <K extends AnyNotNil, V>(luaMap: LuaMap<K, V>, key: K, defaultValue: () => V) => V;
@@ -1,5 +1,17 @@
1
1
  local ____exports = {}
2
2
  local select = _G.select
3
+ local setmetatable = _G.setmetatable
4
+ local weakKeysMetatable = {__mode = "k"}
5
+ local EMPTY_LUA_MAP = {}
6
+ ____exports.emptyLuaMap = function()
7
+ return EMPTY_LUA_MAP
8
+ end
9
+ ____exports.mutableLuaMap = function()
10
+ return {}
11
+ end
12
+ ____exports.mutableWeakLuaMap = function()
13
+ return setmetatable({}, weakKeysMetatable)
14
+ end
3
15
  ____exports.luaMapOf = function(...)
4
16
  local luaMap = {}
5
17
  for i = 1, select("#", ...), 2 do
@@ -15,11 +27,50 @@ ____exports.luaMapInvert = function(luaMap)
15
27
  end
16
28
  return invertLuaMap
17
29
  end
30
+ ____exports.toLuaMap = function(record)
31
+ return record
32
+ end
33
+ ____exports.flattenKeys = function(luaMap)
34
+ local result = {}
35
+ for keys, value in pairs(luaMap) do
36
+ for ____, key in ipairs(keys) do
37
+ result[key] = value
38
+ end
39
+ end
40
+ return result
41
+ end
42
+ ____exports.mapKeys = function(luaMap, transform)
43
+ local result = {}
44
+ if type(transform) == "function" then
45
+ for key, value in pairs(luaMap) do
46
+ result[transform(key)] = value
47
+ end
48
+ else
49
+ for key, value in pairs(luaMap) do
50
+ result[key[transform]] = value
51
+ end
52
+ end
53
+ return result
54
+ end
18
55
  ____exports.mapValues = function(luaMap, transform)
19
56
  local result = {}
20
- for key, value in pairs(luaMap) do
21
- result[key] = transform(value)
57
+ if type(transform) == "function" then
58
+ for key, value in pairs(luaMap) do
59
+ result[key] = transform(value)
60
+ end
61
+ else
62
+ for key, value in pairs(luaMap) do
63
+ result[key] = value[transform]
64
+ end
22
65
  end
23
66
  return result
24
67
  end
68
+ ____exports.getOrPut = function(luaMap, key, defaultValue)
69
+ local value = luaMap[key]
70
+ if value == nil then
71
+ value = defaultValue()
72
+ luaMap[key] = value
73
+ end
74
+ return value
75
+ end
25
76
  return ____exports
@@ -1,4 +1,6 @@
1
1
  /** @noSelfInFile */
2
+ export declare const emptyLuaSet: <T extends AnyNotNil>() => ReadonlyLuaSet<T>;
3
+ export declare const mutableLuaSet: <T extends AnyNotNil>() => LuaSet<T>;
2
4
  export declare const luaSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LuaSet<T>;
3
5
  export declare const luaSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LuaSet<T>;
4
6
  export declare const luaSetIntersection: <T extends AnyNotNil>(firstLuaSet: ReadonlyLuaSet<T>, secondLuaSet: ReadonlyLuaSet<T>) => LuaSet<T>;
@@ -1,5 +1,12 @@
1
1
  local ____exports = {}
2
2
  local select = _G.select
3
+ local EMPTY_LUA_SET = {}
4
+ ____exports.emptyLuaSet = function()
5
+ return EMPTY_LUA_SET
6
+ end
7
+ ____exports.mutableLuaSet = function()
8
+ return {}
9
+ end
3
10
  ____exports.luaSetOf = function(...)
4
11
  local luaSet = {}
5
12
  for i = 1, select("#", ...) do
@@ -0,0 +1,102 @@
1
+ /** @noSelfInFile */
2
+ import { ReadonlyNonEmptyArray } from "./types";
3
+ /**
4
+ * A client-local pseudorandom generator that is safe to advance inside a local block.
5
+ *
6
+ * Instances are independent of each other and of the game's synchronous randomness.
7
+ */
8
+ export declare class AsyncRandom {
9
+ private a;
10
+ private b;
11
+ private c;
12
+ private d;
13
+ /**
14
+ * Creates a generator seeded with the given `seed`,
15
+ * or with client-local entropy if no seed is given.
16
+ */
17
+ constructor(seed?: number);
18
+ /** Resets the generator to the state defined by the given `seed`. */
19
+ setSeed(seed: number): void;
20
+ /**
21
+ * Folds freshly gathered client-local entropy, optionally together with the given `value`,
22
+ * into the current state.
23
+ *
24
+ * Useful to make streams of different clients diverge even further, e.g. by mixing in values
25
+ * that are local by definition, such as the local player's id or the local mouse position.
26
+ */
27
+ addEntropy(value?: number | string): void;
28
+ /** Advances the state and returns the next 32-bit word. */
29
+ private next;
30
+ /** Returns a uniformly distributed value in `[0, bound)`, where `bound` is in `[1, 2^32]`. */
31
+ private nextBounded;
32
+ /** Returns the given amount (`0` to `32`) of random bits as a non-negative integer. */
33
+ nextBits(bitCount: number): number;
34
+ /**
35
+ * Returns a uniformly distributed integer, both bounds being inclusive:
36
+ * in `[0, upperBound]` when called with a single bound, in `[lowerBound, upperBound]` otherwise.
37
+ */
38
+ nextInteger(upperBound?: number): number;
39
+ nextInteger(lowerBound: number, upperBound: number): number;
40
+ /**
41
+ * Returns a uniformly distributed float with 53 bits of precision, the upper bound being
42
+ * exclusive: in `[0, upperBound)` when called with a single bound,
43
+ * in `[lowerBound, upperBound)` otherwise.
44
+ */
45
+ nextFloat(upperBound?: number): number;
46
+ nextFloat(lowerBound: number, upperBound: number): number;
47
+ /** Returns `true` with the given `probability`, or with a probability of one half by default. */
48
+ nextBoolean(probability?: number): boolean;
49
+ /** Returns a uniformly distributed angle in degrees, in `[0, 360)`. */
50
+ nextAngle(): number;
51
+ /** Returns a uniformly distributed point within `range` of the given center. */
52
+ nextXY(centerX: number, centerY: number, range: number): LuaMultiReturn<[x: number, y: number]>;
53
+ /** Returns a uniformly distributed element of the given `array`. */
54
+ nextElement<T>(array: ReadonlyNonEmptyArray<T>): T;
55
+ nextElement<T>(array: ReadonlyArray<T>): T | undefined;
56
+ /** Returns a uniformly distributed one of the given `elements`. */
57
+ nextOf<T>(element: T, ...elements: T[]): T;
58
+ nextOf<T>(...elements: T[]): T | undefined;
59
+ /** Shuffles the given `array` in place, each permutation being equally likely. */
60
+ shuffle(array: unknown[]): void;
61
+ }
62
+ /**
63
+ * Folds freshly gathered client-local entropy, optionally together with the given `value`,
64
+ * into the state of the generator backing the `asyncRandom*` functions.
65
+ */
66
+ export declare const addAsyncRandomEntropy: (value?: number | string) => void;
67
+ /** Returns the given amount (`0` to `32`) of random bits as a non-negative integer. */
68
+ export declare const asyncRandomBits: (bitCount: number) => number;
69
+ /**
70
+ * Returns a uniformly distributed integer, both bounds being inclusive:
71
+ * in `[0, upperBound]` when called with a single bound, in `[lowerBound, upperBound]` otherwise.
72
+ */
73
+ export declare const asyncRandomInteger: {
74
+ (upperBound?: number): number;
75
+ (lowerBound: number, upperBound: number): number;
76
+ };
77
+ /**
78
+ * Returns a uniformly distributed float with 53 bits of precision, the upper bound being exclusive:
79
+ * in `[0, upperBound)` when called with a single bound, in `[lowerBound, upperBound)` otherwise.
80
+ */
81
+ export declare const asyncRandomFloat: {
82
+ (upperBound?: number): number;
83
+ (lowerBound: number, upperBound: number): number;
84
+ };
85
+ /** Returns `true` with the given `probability`, or with a probability of one half by default. */
86
+ export declare const asyncRandomBoolean: (probability?: number) => boolean;
87
+ /** Returns a uniformly distributed angle in degrees, in `[0, 360)`. */
88
+ export declare const asyncRandomAngle: () => number;
89
+ /** Returns a uniformly distributed point within `range` of the given center. */
90
+ export declare const asyncRandomXY: (centerX: number, centerY: number, range: number) => LuaMultiReturn<[x: number, y: number]>;
91
+ /** Returns a uniformly distributed element of the given `array`. */
92
+ export declare const asyncRandomElement: {
93
+ <T>(array: ReadonlyNonEmptyArray<T>): T;
94
+ <T>(array: ReadonlyArray<T>): T | undefined;
95
+ };
96
+ /** Returns a uniformly distributed one of the given `elements`. */
97
+ export declare const asyncRandom: {
98
+ <T>(element: T, ...elements: T[]): T;
99
+ <T>(...elements: T[]): T | undefined;
100
+ };
101
+ /** Shuffles the given `array` in place, each permutation being equally likely. */
102
+ export declare const asyncShuffle: (array: unknown[]) => void;