warscript 0.0.1-dev.797e3f9 → 0.0.1-dev.7a5b782

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 (484) hide show
  1. package/attributes.d.ts +6 -1
  2. package/attributes.lua +17 -1
  3. package/binaryreader.d.ts +1 -0
  4. package/binaryreader.lua +3 -0
  5. package/config.d.ts +5 -0
  6. package/config.lua +10 -0
  7. package/core/dummy.lua +4 -2
  8. package/core/types/effect.d.ts +24 -6
  9. package/core/types/effect.lua +169 -107
  10. package/core/types/frame.d.ts +9 -1
  11. package/core/types/frame.lua +193 -23
  12. package/core/types/group.d.ts +0 -1
  13. package/core/types/handle.lua +9 -9
  14. package/core/types/image.d.ts +0 -1
  15. package/core/types/item.d.ts +1 -0
  16. package/core/types/item.lua +1 -0
  17. package/core/types/missile.d.ts +2 -2
  18. package/core/types/missile.lua +8 -2
  19. package/core/types/player.d.ts +18 -1
  20. package/core/types/player.lua +76 -26
  21. package/core/types/playerCamera.d.ts +2 -0
  22. package/core/types/playerCamera.lua +123 -5
  23. package/core/types/playerColor.lua +4 -3
  24. package/core/types/sound.d.ts +18 -25
  25. package/core/types/sound.lua +113 -33
  26. package/core/types/tileCell.d.ts +11 -1
  27. package/core/types/tileCell.lua +97 -0
  28. package/core/types/timer.d.ts +9 -8
  29. package/core/types/timer.lua +45 -23
  30. package/core/types/unit.d.ts +5 -0
  31. package/core/types/unit.lua +13 -0
  32. package/core/util.d.ts +3 -1
  33. package/core/util.lua +127 -4
  34. package/decl/index.d.ts +1 -0
  35. package/decl/native.d.ts +1718 -964
  36. package/destroyable.d.ts +1 -0
  37. package/destroyable.lua +9 -0
  38. package/engine/ability.d.ts +1 -1
  39. package/engine/behavior.d.ts +24 -11
  40. package/engine/behavior.lua +233 -73
  41. package/engine/behaviour/ability/always-enabled.d.ts +7 -0
  42. package/engine/behaviour/ability/always-enabled.lua +31 -0
  43. package/engine/behaviour/ability/apply-buff.d.ts +8 -5
  44. package/engine/behaviour/ability/apply-buff.lua +36 -4
  45. package/engine/behaviour/ability/apply-unit-behavior.d.ts +6 -1
  46. package/engine/behaviour/ability/apply-unit-behavior.lua +6 -0
  47. package/engine/behaviour/ability/damage.d.ts +43 -11
  48. package/engine/behaviour/ability/damage.lua +89 -39
  49. package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
  50. package/engine/behaviour/ability/emulate-impact.lua +44 -0
  51. package/engine/behaviour/ability/heal.d.ts +33 -6
  52. package/engine/behaviour/ability/heal.lua +89 -10
  53. package/engine/behaviour/ability/instant-impact.d.ts +2 -2
  54. package/engine/behaviour/ability/instant-impact.lua +4 -15
  55. package/engine/behaviour/ability/on-command-impact.d.ts +9 -0
  56. package/engine/behaviour/ability/on-command-impact.lua +26 -0
  57. package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
  58. package/engine/behaviour/ability/remove-buffs.lua +49 -0
  59. package/engine/behaviour/ability/restore-mana.d.ts +15 -0
  60. package/engine/behaviour/ability/restore-mana.lua +29 -0
  61. package/engine/behaviour/ability.d.ts +37 -7
  62. package/engine/behaviour/ability.lua +208 -27
  63. package/engine/behaviour/unit/stun-immunity.d.ts +12 -7
  64. package/engine/behaviour/unit/stun-immunity.lua +57 -31
  65. package/engine/behaviour/unit.d.ts +49 -4
  66. package/engine/behaviour/unit.lua +293 -2
  67. package/engine/buff.d.ts +168 -59
  68. package/engine/buff.lua +767 -277
  69. package/engine/game-map.d.ts +7 -0
  70. package/engine/game-map.lua +32 -0
  71. package/engine/index.d.ts +2 -1
  72. package/engine/internal/ability.d.ts +30 -14
  73. package/engine/internal/ability.lua +177 -104
  74. package/engine/internal/item/ability.lua +162 -4
  75. package/engine/internal/item/fields.d.ts +12 -0
  76. package/engine/internal/item/fields.lua +33 -0
  77. package/engine/internal/item/owner-cache.d.ts +5 -0
  78. package/engine/internal/item/owner-cache.lua +4 -0
  79. package/engine/internal/item+owner.d.ts +2 -0
  80. package/engine/internal/item+owner.lua +37 -8
  81. package/engine/internal/item.d.ts +34 -18
  82. package/engine/internal/item.lua +308 -102
  83. package/engine/internal/mechanics/ability-duration.lua +1 -1
  84. package/engine/internal/mechanics/cast-ability.lua +6 -3
  85. package/engine/internal/misc/ability-disable-counter.lua +13 -0
  86. package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
  87. package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
  88. package/engine/internal/misc/frame-coordinates.d.ts +2 -0
  89. package/engine/internal/misc/frame-coordinates.lua +21 -0
  90. package/engine/internal/misc/get-terrain-z.d.ts +2 -0
  91. package/engine/internal/misc/get-terrain-z.lua +11 -0
  92. package/engine/internal/misc/player-local-handle.d.ts +2 -0
  93. package/engine/internal/misc/player-local-handle.lua +5 -0
  94. package/engine/internal/misc/unit-ability-level-natives.d.ts +2 -0
  95. package/engine/internal/misc/unit-ability-level-natives.lua +12 -0
  96. package/engine/internal/object-data/armor-bonus.d.ts +2 -0
  97. package/engine/internal/object-data/attribute-bonus.lua +2 -2
  98. package/engine/internal/object-data/auto-attack-speed-increase.d.ts +1 -1
  99. package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
  100. package/engine/internal/object-data/evasion-probability.d.ts +2 -0
  101. package/engine/internal/object-data/evasion-probability.lua +16 -0
  102. package/engine/internal/object-data/health-bonus.d.ts +2 -0
  103. package/engine/internal/object-data/health-bonus.lua +16 -0
  104. package/engine/internal/object-data/health-regeneration-rate-increase.d.ts +2 -0
  105. package/engine/internal/object-data/health-regeneration-rate-increase.lua +48 -0
  106. package/engine/internal/object-data/mana-bonus.d.ts +2 -0
  107. package/engine/internal/object-data/mana-bonus.lua +16 -0
  108. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
  109. package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
  110. package/engine/internal/unit/ability.d.ts +45 -1
  111. package/engine/internal/unit/ability.lua +142 -19
  112. package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
  113. package/engine/internal/unit/add-item-to-slot-init.lua +12 -0
  114. package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
  115. package/engine/internal/unit/add-item-to-slot.lua +93 -0
  116. package/engine/internal/unit/allowed-targets.d.ts +1 -1
  117. package/engine/internal/unit/allowed-targets.lua +9 -1
  118. package/engine/internal/unit/appearance.d.ts +15 -0
  119. package/engine/internal/unit/appearance.lua +85 -0
  120. package/engine/internal/unit/attributes.d.ts +17 -0
  121. package/engine/internal/unit/attributes.lua +46 -0
  122. package/engine/internal/unit/bonus.d.ts +25 -8
  123. package/engine/internal/unit/bonus.lua +125 -9
  124. package/engine/internal/unit/buff.d.ts +2 -2
  125. package/engine/internal/unit/buff.lua +34 -19
  126. package/engine/internal/unit/equipment-inventory.d.ts +44 -0
  127. package/engine/internal/unit/equipment-inventory.lua +233 -0
  128. package/engine/internal/unit/expiration-timer.lua +1 -1
  129. package/engine/internal/unit/extended-inventory.d.ts +25 -0
  130. package/engine/internal/unit/extended-inventory.lua +99 -0
  131. package/engine/internal/unit/fly-height.d.ts +7 -0
  132. package/engine/internal/unit/fly-height.lua +20 -0
  133. package/engine/internal/unit/ignore-events-items.d.ts +2 -0
  134. package/engine/internal/unit/ignore-events-items.lua +14 -0
  135. package/engine/internal/unit/interrupts.d.ts +12 -0
  136. package/engine/internal/unit/interrupts.lua +28 -0
  137. package/engine/internal/unit/inventory.d.ts +28 -0
  138. package/engine/internal/unit/inventory.lua +87 -0
  139. package/engine/internal/unit/item-container.d.ts +25 -0
  140. package/engine/internal/unit/item-container.lua +11 -0
  141. package/engine/internal/unit/item-order-events.d.ts +17 -0
  142. package/engine/internal/unit/item-order-events.lua +67 -0
  143. package/engine/internal/unit/item-slot.d.ts +27 -0
  144. package/engine/internal/unit/item-slot.lua +92 -0
  145. package/engine/internal/unit/main-selected.d.ts +13 -0
  146. package/engine/internal/unit/main-selected.lua +36 -0
  147. package/engine/internal/unit/order.d.ts +20 -0
  148. package/engine/internal/unit/order.lua +136 -0
  149. package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
  150. package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
  151. package/engine/internal/unit/range-event.d.ts +12 -0
  152. package/engine/internal/unit/range-event.lua +90 -0
  153. package/engine/internal/unit/scale.d.ts +7 -0
  154. package/engine/internal/unit/scale.lua +20 -0
  155. package/engine/internal/unit+ability.d.ts +2 -1
  156. package/engine/internal/unit+ability.lua +75 -5
  157. package/engine/internal/unit+bonus.lua +3 -3
  158. package/engine/internal/unit+damage.d.ts +11 -11
  159. package/engine/internal/unit+damage.lua +43 -14
  160. package/engine/internal/unit+rally.lua +9 -31
  161. package/engine/internal/unit+spellSteal.lua +1 -2
  162. package/engine/internal/unit+transport.lua +4 -10
  163. package/engine/internal/unit-missile-data.lua +58 -32
  164. package/engine/internal/unit-missile-launch.lua +70 -13
  165. package/engine/internal/unit.d.ts +91 -38
  166. package/engine/internal/unit.lua +667 -352
  167. package/engine/internal/utility.lua +12 -0
  168. package/engine/lightning.d.ts +12 -5
  169. package/engine/lightning.lua +48 -14
  170. package/engine/local-client.d.ts +35 -2
  171. package/engine/local-client.lua +367 -15
  172. package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
  173. package/engine/object-data/auxiliary/animation-name.lua +16 -0
  174. package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
  175. package/engine/object-data/auxiliary/armor-type.lua +46 -0
  176. package/engine/object-data/auxiliary/attachment-preset.d.ts +14 -3
  177. package/engine/object-data/auxiliary/attachment-preset.lua +11 -3
  178. package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
  179. package/engine/object-data/auxiliary/attack-type.lua +42 -0
  180. package/engine/object-data/auxiliary/combat-classification.d.ts +0 -2
  181. package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
  182. package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
  183. package/engine/object-data/auxiliary/equipment-type.d.ts +12 -0
  184. package/engine/object-data/auxiliary/equipment-type.lua +26 -0
  185. package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
  186. package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
  187. package/engine/object-data/auxiliary/item-class.d.ts +11 -0
  188. package/engine/object-data/auxiliary/item-class.lua +2 -0
  189. package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
  190. package/engine/object-data/auxiliary/item-tag.lua +2 -0
  191. package/engine/object-data/auxiliary/movement-type.d.ts +7 -7
  192. package/engine/object-data/auxiliary/movement-type.lua +22 -0
  193. package/engine/object-data/auxiliary/order-type.d.ts +939 -0
  194. package/engine/object-data/auxiliary/order-type.lua +2 -0
  195. package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
  196. package/engine/object-data/auxiliary/sound-eax.lua +2 -0
  197. package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
  198. package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
  199. package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
  200. package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
  201. package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
  202. package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
  203. package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
  204. package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
  205. package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
  206. package/engine/object-data/entry/ability-type/aura-of-blight.d.ts +13 -0
  207. package/engine/object-data/entry/ability-type/aura-of-blight.lua +39 -0
  208. package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
  209. package/engine/object-data/entry/ability-type/banshee.lua +13 -0
  210. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
  211. package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
  212. package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
  213. package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
  214. package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
  215. package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
  216. package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
  217. package/engine/object-data/entry/ability-type/berserk.lua +13 -0
  218. package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -1
  219. package/engine/object-data/entry/ability-type/blank-configurable.lua +42 -1
  220. package/engine/object-data/entry/ability-type/blank-passive.d.ts +4 -1
  221. package/engine/object-data/entry/ability-type/blank-passive.lua +27 -7
  222. package/engine/object-data/entry/ability-type/breath-of-fire.d.ts +11 -0
  223. package/engine/object-data/entry/ability-type/breath-of-fire.lua +27 -0
  224. package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
  225. package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
  226. package/engine/object-data/entry/ability-type/channel.d.ts +0 -1
  227. package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
  228. package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
  229. package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
  230. package/engine/object-data/entry/ability-type/consecration.lua +52 -0
  231. package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
  232. package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
  233. package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
  234. package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
  235. package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
  236. package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
  237. package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
  238. package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
  239. package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
  240. package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
  241. package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
  242. package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
  243. package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
  244. package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
  245. package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
  246. package/engine/object-data/entry/ability-type/equipment.lua +27 -0
  247. package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
  248. package/engine/object-data/entry/ability-type/firebolt.d.ts +7 -0
  249. package/engine/object-data/entry/ability-type/firebolt.lua +13 -0
  250. package/engine/object-data/entry/ability-type/flame-strike.d.ts +25 -0
  251. package/engine/object-data/entry/ability-type/flame-strike.lua +92 -0
  252. package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
  253. package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
  254. package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
  255. package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
  256. package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
  257. package/engine/object-data/entry/ability-type/grit.lua +65 -0
  258. package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
  259. package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
  260. package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
  261. package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
  262. package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
  263. package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
  264. package/engine/object-data/entry/ability-type/healing-ward-aura.d.ts +13 -0
  265. package/engine/object-data/entry/ability-type/healing-ward-aura.lua +39 -0
  266. package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
  267. package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
  268. package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
  269. package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
  270. package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
  271. package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
  272. package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
  273. package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
  274. package/engine/object-data/entry/ability-type/item-life-regeneration.d.ts +10 -0
  275. package/engine/object-data/entry/ability-type/item-life-regeneration.lua +26 -0
  276. package/engine/object-data/entry/ability-type/life-drain.d.ts +37 -0
  277. package/engine/object-data/entry/ability-type/life-drain.lua +144 -0
  278. package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
  279. package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
  280. package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
  281. package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
  282. package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
  283. package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
  284. package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
  285. package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
  286. package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
  287. package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
  288. package/engine/object-data/entry/ability-type/mine.d.ts +10 -0
  289. package/engine/object-data/entry/ability-type/mine.lua +39 -0
  290. package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
  291. package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
  292. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
  293. package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
  294. package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
  295. package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
  296. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
  297. package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
  298. package/engine/object-data/entry/ability-type/permanent-invisibility.d.ts +8 -0
  299. package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
  300. package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
  301. package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
  302. package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
  303. package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
  304. package/engine/object-data/entry/ability-type/provoke.lua +66 -0
  305. package/engine/object-data/entry/ability-type/rain-of-fire.d.ts +7 -0
  306. package/engine/object-data/entry/ability-type/rain-of-fire.lua +13 -0
  307. package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
  308. package/engine/object-data/entry/ability-type/raise-dead.lua +78 -0
  309. package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
  310. package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
  311. package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
  312. package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
  313. package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
  314. package/engine/object-data/entry/ability-type/resolve.lua +39 -0
  315. package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
  316. package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
  317. package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
  318. package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
  319. package/engine/object-data/entry/ability-type/shock-wave.d.ts +4 -0
  320. package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
  321. package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
  322. package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
  323. package/engine/object-data/entry/ability-type/soul-burn.d.ts +22 -0
  324. package/engine/object-data/entry/ability-type/soul-burn.lua +79 -0
  325. package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
  326. package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
  327. package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
  328. package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
  329. package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
  330. package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
  331. package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
  332. package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
  333. package/engine/object-data/entry/ability-type/spirit-touch.d.ts +2 -2
  334. package/engine/object-data/entry/ability-type/spirit-touch.lua +6 -6
  335. package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
  336. package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
  337. package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
  338. package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
  339. package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
  340. package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
  341. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
  342. package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
  343. package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
  344. package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
  345. package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
  346. package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
  347. package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
  348. package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
  349. package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
  350. package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
  351. package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
  352. package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
  353. package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
  354. package/engine/object-data/entry/ability-type/talents.lua +27 -0
  355. package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
  356. package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
  357. package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
  358. package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
  359. package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
  360. package/engine/object-data/entry/ability-type/warcry.lua +26 -0
  361. package/engine/object-data/entry/ability-type/web.d.ts +12 -0
  362. package/engine/object-data/entry/ability-type/web.lua +52 -0
  363. package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
  364. package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
  365. package/engine/object-data/entry/ability-type.d.ts +41 -21
  366. package/engine/object-data/entry/ability-type.lua +337 -44
  367. package/engine/object-data/entry/buff-type/applicable.d.ts +0 -1
  368. package/engine/object-data/entry/buff-type/applicable.lua +122 -137
  369. package/engine/object-data/entry/buff-type/blank.d.ts +0 -1
  370. package/engine/object-data/entry/buff-type.d.ts +10 -13
  371. package/engine/object-data/entry/buff-type.lua +39 -29
  372. package/engine/object-data/entry/destructible-type.d.ts +32 -3
  373. package/engine/object-data/entry/destructible-type.lua +181 -0
  374. package/engine/object-data/entry/item-type/blank.d.ts +0 -1
  375. package/engine/object-data/entry/item-type.d.ts +32 -4
  376. package/engine/object-data/entry/item-type.lua +177 -2
  377. package/engine/object-data/entry/lightning-type.d.ts +6 -9
  378. package/engine/object-data/entry/lightning-type.lua +1 -1
  379. package/engine/object-data/entry/sound-preset.d.ts +33 -0
  380. package/engine/object-data/entry/sound-preset.lua +140 -0
  381. package/engine/object-data/entry/unit-type.d.ts +92 -8
  382. package/engine/object-data/entry/unit-type.lua +748 -75
  383. package/engine/object-data/entry/upgrade/blank.d.ts +0 -1
  384. package/engine/object-data/entry/upgrade.d.ts +2 -3
  385. package/engine/object-data/entry/upgrade.lua +4 -4
  386. package/engine/object-data/entry.d.ts +23 -17
  387. package/engine/object-data/entry.lua +68 -32
  388. package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
  389. package/engine/object-field/ability.d.ts +28 -5
  390. package/engine/object-field/ability.lua +61 -7
  391. package/engine/object-field/item.d.ts +22 -0
  392. package/engine/object-field/item.lua +118 -0
  393. package/engine/object-field/unit.d.ts +72 -3
  394. package/engine/object-field/unit.lua +268 -7
  395. package/engine/object-field.d.ts +26 -8
  396. package/engine/object-field.lua +362 -117
  397. package/engine/random.d.ts +11 -0
  398. package/engine/random.lua +30 -0
  399. package/engine/standard/entries/ability-type.d.ts +3102 -7
  400. package/engine/standard/entries/ability-type.lua +0 -6
  401. package/engine/standard/entries/buff-type.d.ts +48 -0
  402. package/engine/standard/entries/buff-type.lua +46 -0
  403. package/engine/standard/entries/item-type.d.ts +1299 -0
  404. package/engine/standard/entries/item-type.lua +2 -0
  405. package/engine/standard/entries/lightning-type.d.ts +42 -15
  406. package/engine/standard/entries/lightning-type.lua +0 -14
  407. package/engine/standard/entries/sound-preset.d.ts +10 -0
  408. package/engine/standard/entries/sound-preset.lua +10 -0
  409. package/engine/standard/entries/unit-type.d.ts +44 -1
  410. package/engine/standard/entries/unit-type.lua +44 -1
  411. package/engine/standard/fields/ability.d.ts +5 -3
  412. package/engine/standard/fields/ability.lua +5 -3
  413. package/engine/standard/fields/item.d.ts +4 -0
  414. package/engine/standard/fields/item.lua +6 -0
  415. package/engine/standard/fields/unit.d.ts +12 -0
  416. package/engine/standard/fields/unit.lua +20 -0
  417. package/engine/synchronization.d.ts +11 -0
  418. package/engine/synchronization.lua +77 -0
  419. package/engine/text-tag.d.ts +36 -2
  420. package/engine/text-tag.lua +250 -10
  421. package/engine/unit.d.ts +13 -0
  422. package/engine/unit.lua +22 -2
  423. package/event.d.ts +3 -4
  424. package/event.lua +9 -5
  425. package/index.d.ts +1 -0
  426. package/index.lua +1 -0
  427. package/lualib_bundle.lua +147 -43
  428. package/math/vec2.d.ts +2 -9
  429. package/math.d.ts +2 -2
  430. package/math.lua +14 -0
  431. package/net/socket.d.ts +7 -1
  432. package/net/socket.lua +45 -4
  433. package/network.d.ts +1 -0
  434. package/network.lua +28 -3
  435. package/objutil/ability.d.ts +0 -1
  436. package/objutil/buff.d.ts +0 -1
  437. package/objutil/buff.lua +13 -12
  438. package/objutil/object.d.ts +0 -1
  439. package/objutil/object.lua +1 -1
  440. package/objutil/unit.d.ts +0 -1
  441. package/objutil/unit.lua +8 -0
  442. package/operation.d.ts +8 -1
  443. package/operation.lua +38 -18
  444. package/package.json +3 -23
  445. package/patch-lua.d.ts +0 -0
  446. package/patch-lua.lua +25 -0
  447. package/patch-lualib.lua +1 -1
  448. package/property.d.ts +55 -0
  449. package/property.lua +374 -0
  450. package/string.d.ts +16 -0
  451. package/string.lua +5 -0
  452. package/util/stream.d.ts +0 -1
  453. package/utility/arrays.d.ts +14 -5
  454. package/utility/arrays.lua +57 -3
  455. package/utility/bit-set.d.ts +0 -2
  456. package/utility/callback-array.d.ts +17 -0
  457. package/utility/callback-array.lua +61 -0
  458. package/utility/functions.d.ts +8 -0
  459. package/utility/functions.lua +13 -0
  460. package/utility/lazy.d.ts +2 -0
  461. package/utility/lazy.lua +14 -0
  462. package/utility/linked-map.d.ts +35 -0
  463. package/utility/linked-map.lua +107 -0
  464. package/utility/linked-set.d.ts +16 -4
  465. package/utility/linked-set.lua +54 -3
  466. package/utility/lua-maps.d.ts +16 -4
  467. package/utility/lua-maps.lua +53 -2
  468. package/utility/lua-sets.d.ts +3 -2
  469. package/utility/lua-sets.lua +7 -0
  470. package/utility/random.d.ts +102 -0
  471. package/utility/random.lua +273 -0
  472. package/utility/records.lua +20 -1
  473. package/utility/reflection.lua +11 -7
  474. package/utility/types.d.ts +4 -0
  475. package/utility/unordered-map.d.ts +27 -0
  476. package/utility/unordered-map.lua +99 -0
  477. package/core/mapbounds.d.ts +0 -8
  478. package/core/mapbounds.lua +0 -12
  479. package/core/types/order.d.ts +0 -25
  480. package/core/types/order.lua +0 -55
  481. /package/engine/internal/{object-data/armor-increase.d.ts → misc/ability-disable-counter.d.ts} +0 -0
  482. /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
  483. /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
  484. /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/string.d.ts CHANGED
@@ -59,6 +59,22 @@ declare global {
59
59
  function toNumber(string: string): number;
60
60
  }
61
61
  }
62
+ declare global {
63
+ namespace string {
64
+ /**
65
+ * Returns the index within the string of the first occurrence of the specified substring, starting from the specified `startIndex`,
66
+ * or -1 if the string does not contain such substring.
67
+ */
68
+ function indexOf(string: string, substring: string, startIndex?: number): number;
69
+ }
70
+ interface String {
71
+ /**
72
+ * Returns the index within this string of the first occurrence of the specified substring, starting from the specified `startIndex`,
73
+ * or -1 if the string does not contain such substring.
74
+ */
75
+ indexOf(substring: string, startIndex?: number): number;
76
+ }
77
+ }
62
78
  declare global {
63
79
  interface String {
64
80
  /**
package/string.lua CHANGED
@@ -2,6 +2,7 @@ local ____exports = {}
2
2
  local ____error = _G.error
3
3
  local tonumber = _G.tonumber
4
4
  local match = string.match
5
+ local find = string.find
5
6
  local sub = string.sub
6
7
  _G.string.removePrefix = function(____string, prefix)
7
8
  local prefixLength = #prefix
@@ -17,6 +18,10 @@ end
17
18
  _G.string.toNumber = function(____string)
18
19
  return tonumber(____string) or ____error(("'" .. ____string) .. "' is not a valid representation of a number.")
19
20
  end
21
+ _G.string.indexOf = function(____string, substring, startIndex)
22
+ local index = find(____string, substring, (startIndex or 0) + 1, true)
23
+ return (index or 0) - 1
24
+ end
20
25
  _G.string.indexOfLast = function(____string, predicate)
21
26
  for i = #____string, 1, -1 do
22
27
  if predicate(sub(____string, i, i)) then
package/util/stream.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  export interface Stream<T> {
4
3
  toArray(): T[];
@@ -1,12 +1,12 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { TupleOf } from "./types";
4
3
  export declare const emptyArray: <T>() => readonly T[];
5
4
  export declare const joinToString: <T>(array: readonly T[], separator: string, transform?: (element: T) => string) => string;
6
- export declare const arrayOfNotNull: <T>(...elements: readonly (T | null | undefined)[]) => T[];
5
+ export declare const arrayOfNotNull: <T>(...elements: readonly (T | undefined | null)[]) => T[];
7
6
  export declare const array: <T, N extends number>(length: N, initialize: (index: number) => T) => TupleOf<T, N>;
8
7
  export declare const toLuaSet: <T extends AnyNotNil>(array: readonly T[]) => LuaSet<T>;
9
- export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey: KeysOfType<T, (this: T, ...args: Args) => void> | ((value: T, ...args: Args) => void), ...args: Args) => void;
8
+ export declare const contains: <T>(array: readonly T[], element: T) => boolean;
9
+ export declare const forEach: <T, Args extends any[]>(array: readonly T[], consumerOrKey: ((value: T, ...args: Args) => void) | KeysOfType<T, (this: T, ...args: Args) => void>, ...args: Args) => void;
10
10
  export declare const all: {
11
11
  <T>(array: readonly T[], transform: (value: T) => boolean): boolean;
12
12
  <T>(array: readonly T[], key: KeysOfType<T, boolean>): boolean;
@@ -23,6 +23,7 @@ export declare const mapToLuaSet: {
23
23
  <T, R extends AnyNotNil>(array: readonly T[], transform: (value: T) => R): LuaSet<R>;
24
24
  <T, K extends KeysOfType<T, AnyNotNil>>(array: readonly T[], key: K): LuaSet<T[K] extends AnyNotNil ? T[K] : never>;
25
25
  };
26
+ export declare const flatten: <T>(array: readonly (readonly T[])[]) => T[];
26
27
  export declare const flatMap: {
27
28
  <T, R>(array: readonly T[], transform: (value: T) => readonly R[]): R[];
28
29
  <T, K extends KeysOfType<T, readonly any[]>>(array: readonly T[], key: K): (T[K] extends readonly (infer R)[] ? R : never)[];
@@ -33,19 +34,27 @@ export declare const flatMapToLuaSet: {
33
34
  };
34
35
  export declare const mapIndexed: <T, R>(array: readonly T[], transform: (index: number, value: T) => R) => R[];
35
36
  export declare const associate: <T, K extends AnyNotNil, V>(array: readonly T[], keySelector: (value: T) => K, valueSelector: (value: T) => V) => LuaMap<K, V>;
36
- export declare const associateBy: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K) => LuaMap<K, V>;
37
+ export declare const associateBy: {
38
+ <K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K): LuaMap<K, V>;
39
+ <K extends KeysOfType<V, AnyNotNil>, V>(array: readonly V[], keySelector: K): LuaMap<V[K] extends AnyNotNil ? V[K] : never, V>;
40
+ };
37
41
  export declare const associateByIndexed: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (index: number, value: V) => K) => LuaMap<K, V>;
38
42
  export declare const associateWith: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (value: K) => V) => LuaMap<K, V>;
39
43
  export declare const associateWithIndexed: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (index: number, value: K) => V) => LuaMap<K, V>;
40
44
  export declare const filter: <T>(array: readonly T[], predicate: (value: T) => boolean) => T[];
45
+ export declare const filterNot: <T>(array: readonly T[], predicate: (value: T) => boolean) => T[];
41
46
  export declare const average: (array: readonly number[]) => number;
42
47
  export declare const sum: (array: readonly number[]) => number;
43
48
  export declare const product: (array: readonly number[]) => number;
44
49
  export declare const max: (array: readonly number[]) => number;
50
+ export declare const maxBy: {
51
+ <T, Args extends any[]>(array: readonly T[], selector: (value: T, ...args: Args) => number, ...args: Args): T | undefined;
52
+ <T, K extends KeysOfType<T, number>>(array: readonly T[], key: K): T | undefined;
53
+ };
45
54
  export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
46
55
  export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
47
56
  export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
48
- export declare const sortBy: <T, R>(array: T[], selector: KeysOfType<T, R> | ((value: T) => R)) => void;
57
+ export declare const sortBy: <T, R>(array: T[], selector: ((value: T) => R) | KeysOfType<T, R>) => void;
49
58
  export declare const sortedBy: {
50
59
  <T, R>(array: readonly T[], selector: (value: T) => R): T[];
51
60
  <T, K extends keyof T>(array: readonly T[], key: K): T[];
@@ -3,6 +3,8 @@ local __TS__New = ____lualib.__TS__New
3
3
  local ____exports = {}
4
4
  local ____exception = require("exception")
5
5
  local IllegalArgumentException = ____exception.IllegalArgumentException
6
+ local ____functions = require("utility.functions")
7
+ local identity = ____functions.identity
6
8
  local mathMax = math.max
7
9
  local mathMin = math.min
8
10
  local select = _G.select
@@ -47,6 +49,14 @@ ____exports.toLuaSet = function(array)
47
49
  end
48
50
  return result
49
51
  end
52
+ ____exports.contains = function(array, element)
53
+ for i = 1, #array do
54
+ if array[i] == element then
55
+ return true
56
+ end
57
+ end
58
+ return false
59
+ end
50
60
  ____exports.forEach = function(array, consumerOrKey, ...)
51
61
  if type(consumerOrKey) == "function" then
52
62
  for i = 1, #array do
@@ -120,6 +130,7 @@ ____exports.mapToLuaSet = function(array, transform)
120
130
  end
121
131
  return result
122
132
  end
133
+ ____exports.flatten = function(array) return ____exports.flatMap(array, identity) end
123
134
  ____exports.flatMap = function(array, transform)
124
135
  local result = {}
125
136
  local k = 1
@@ -178,9 +189,16 @@ ____exports.associate = function(array, keySelector, valueSelector)
178
189
  end
179
190
  ____exports.associateBy = function(array, keySelector)
180
191
  local result = {}
181
- for i = 1, #array do
182
- local value = array[i]
183
- result[keySelector(value)] = value
192
+ if type(keySelector) == "function" then
193
+ for i = 1, #array do
194
+ local value = array[i]
195
+ result[keySelector(value)] = value
196
+ end
197
+ else
198
+ for i = 1, #array do
199
+ local value = array[i]
200
+ result[value[keySelector]] = value
201
+ end
184
202
  end
185
203
  return result
186
204
  end
@@ -220,6 +238,18 @@ ____exports.filter = function(array, predicate)
220
238
  end
221
239
  return result
222
240
  end
241
+ ____exports.filterNot = function(array, predicate)
242
+ local result = {}
243
+ local j = 1
244
+ for i = 1, #array do
245
+ local value = array[i]
246
+ if not predicate(value) then
247
+ result[j] = value
248
+ j = j + 1
249
+ end
250
+ end
251
+ return result
252
+ end
223
253
  ____exports.average = function(array)
224
254
  local sum = 0
225
255
  local count = #array
@@ -251,6 +281,30 @@ ____exports.max = function(array)
251
281
  end
252
282
  return mathMax(table.unpack(array))
253
283
  end
284
+ ____exports.maxBy = function(array, selector, ...)
285
+ local result = nil
286
+ local maxValue = -math.huge
287
+ if type(selector) == "function" then
288
+ for i = 1, #array do
289
+ local element = array[i]
290
+ local value = selector(element, ...)
291
+ if value > maxValue then
292
+ result = element
293
+ maxValue = value
294
+ end
295
+ end
296
+ else
297
+ for i = 1, #array do
298
+ local element = array[i]
299
+ local value = element[selector]
300
+ if value > maxValue then
301
+ result = element
302
+ maxValue = value
303
+ end
304
+ end
305
+ end
306
+ return result
307
+ end
254
308
  ____exports.intersperse = function(array, delimiter)
255
309
  local result = {}
256
310
  local length = #array
@@ -1,5 +1,3 @@
1
- /// <reference types="@warscript/language-extensions" />
2
- /// <reference types="@typescript-to-lua/language-extensions" />
3
1
  /** @noSelfInFile */
4
2
  interface IBitSet<T extends number> {
5
3
  readonly has: LuaBitwiseAndEqualsRightMethod<T>;
@@ -0,0 +1,17 @@
1
+ /** @noSelfInFile */
2
+ type Callback = {
3
+ readonly __callback: unique symbol;
4
+ };
5
+ export type CallbackId = number & {
6
+ readonly __callbackId: unique symbol;
7
+ };
8
+ export type CallbackArray = {
9
+ readonly __callbackArray: unique symbol;
10
+ } & Callback[];
11
+ export declare const callbackArray: () => CallbackArray;
12
+ export declare function addCallback<Args extends any[]>(this: void, array: CallbackArray, callback: (...args: Args) => unknown, ...args: Args): CallbackId;
13
+ export declare function clearCallbacks(this: void, array: CallbackArray): void;
14
+ export declare function consumeCallback(this: void, array: CallbackArray, id: CallbackId): void;
15
+ export declare function consumeCallbacks(this: void, array: CallbackArray): void;
16
+ export declare function invokeCallbacks(this: void, array: CallbackArray): void;
17
+ export {};
@@ -0,0 +1,61 @@
1
+ local ____exports = {}
2
+ local safeCall, tableUnpack
3
+ function ____exports.invokeCallbacks(array)
4
+ local length = array[1] or 2
5
+ local i = 2
6
+ while i ~= length do
7
+ local callback = array[i]
8
+ i = i + 1
9
+ local argsCount = array[i]
10
+ i = i + 1
11
+ safeCall(
12
+ callback,
13
+ tableUnpack(array, i, i + argsCount - 1)
14
+ )
15
+ i = i + argsCount
16
+ end
17
+ end
18
+ safeCall = warpack.safeCall
19
+ local select = _G.select
20
+ local tableMove = table.move
21
+ tableUnpack = table.unpack
22
+ ____exports.callbackArray = function() return {} end
23
+ local function doNothing()
24
+ end
25
+ function ____exports.addCallback(array, callback, ...)
26
+ local id = array[1] or 2
27
+ local i = id
28
+ array[i] = callback
29
+ local argsCount = select("#", ...)
30
+ i = i + 1
31
+ array[i] = argsCount
32
+ for j = 1, argsCount do
33
+ i = i + 1
34
+ array[i] = (select(j, ...))
35
+ end
36
+ array[1] = i + 1
37
+ return id
38
+ end
39
+ function ____exports.clearCallbacks(array)
40
+ local length = array[1] or 2
41
+ tableMove(array, length, length + length - 2, 1)
42
+ end
43
+ function ____exports.consumeCallback(array, id)
44
+ local callback = array[id]
45
+ array[id] = doNothing
46
+ id = id + 1
47
+ local argsCount = array[id]
48
+ id = id + 1
49
+ safeCall(
50
+ callback,
51
+ tableUnpack(array, id, id + argsCount - 1)
52
+ )
53
+ end
54
+ function ____exports.consumeCallbacks(array)
55
+ local length = array[1] or 2
56
+ ____exports.invokeCallbacks(array)
57
+ local newLength = array[1] or 2
58
+ tableMove(array, length, length + newLength - 3, 2)
59
+ array[1] = newLength - length + 2
60
+ end
61
+ return ____exports
@@ -3,3 +3,11 @@ export declare const apply: {
3
3
  <T, ConsumerParameters extends any[]>(object: T, consumer: (value: T, ...parameters: ConsumerParameters) => void, ...parameters: ConsumerParameters): T;
4
4
  <T, ConsumerParameters extends any[], K extends KeysOfType<T, (...parameters: ConsumerParameters) => void>>(object: T, key: K, ...parameters: ConsumerParameters): T;
5
5
  };
6
+ export declare const identity: <T>(value: T) => T;
7
+ export declare const firstArgument: <T>(value: T) => T;
8
+ export declare const secondArgument: <T>(_: unknown, value: T) => T;
9
+ export declare const thirdArgument: <T>(_first: unknown, _second: unknown, value: T) => T;
10
+ export declare const increment: (value: number) => number;
11
+ export declare const or: (lhs: boolean, rhs: boolean) => boolean;
12
+ export type Transform<T, R> = (<T, R>(value: T) => R) | KeysOfType<T, R>;
13
+ export declare const transform: <T, R>(object: T, transform: Transform<T, R>) => R;
@@ -87,4 +87,17 @@ ____exports.apply = function(object, transform, ...)
87
87
  end
88
88
  return object
89
89
  end
90
+ ____exports.identity = function(value) return value end
91
+ ____exports.firstArgument = ____exports.identity
92
+ ____exports.secondArgument = function(_, value) return value end
93
+ ____exports.thirdArgument = function(_first, _second, value) return value end
94
+ ____exports.increment = function(value) return value + 1 end
95
+ ____exports["or"] = function(lhs, rhs) return lhs or rhs end
96
+ ____exports.transform = function(object, transform)
97
+ if type(transform) == "function" then
98
+ return transform(object)
99
+ else
100
+ return object[transform]
101
+ end
102
+ end
90
103
  return ____exports
@@ -0,0 +1,2 @@
1
+ /** @noSelfInFile */
2
+ export declare const lazyRecord: <K extends keyof any, V>(initializer: (key: K) => V) => Readonly<Record<K, V>>;
@@ -0,0 +1,14 @@
1
+ local ____exports = {}
2
+ local rawset = _G.rawset
3
+ local setmetatable = _G.setmetatable
4
+ ____exports.lazyRecord = function(initializer)
5
+ return setmetatable(
6
+ {},
7
+ {__index = function(self, key)
8
+ local value = initializer(key)
9
+ rawset(self, key, value)
10
+ return value
11
+ end}
12
+ )
13
+ end
14
+ return ____exports
@@ -0,0 +1,35 @@
1
+ /** @noSelfInFile */
2
+ import { ReadonlyLinkedSet } from "./linked-set";
3
+ type IteratorState<K extends AnyNotNil, V> = {
4
+ n?: K;
5
+ t: LuaMap<K, K>;
6
+ v: LuaMap<K, V>;
7
+ };
8
+ type OneSidedTypeGuard = {
9
+ readonly __oneSidedTypeGuard: unique symbol;
10
+ };
11
+ export interface ReadonlyLinkedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
12
+ readonly keys: ReadonlyLinkedSet<K>;
13
+ get(key: K): V | undefined;
14
+ contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
15
+ readonly size: number;
16
+ }
17
+ export interface LinkedMap<K extends AnyNotNil, V> extends LuaPairsIterable<K, V> {
18
+ readonly __linkedMap: unique symbol;
19
+ }
20
+ export declare class LinkedMap<K extends AnyNotNil, V> implements ReadonlyLinkedMap<K, V> {
21
+ private k;
22
+ private v;
23
+ get keys(): ReadonlyLinkedSet<K>;
24
+ get(key: K): V | undefined;
25
+ getOrPut(key: K, defaultValue: (this: void) => V): V;
26
+ put(key: K, value: V): void;
27
+ remove(key: K): boolean;
28
+ contains(key: AnyNotNil): key is K & OneSidedTypeGuard;
29
+ get size(): number;
30
+ protected __len(): number;
31
+ protected __pairs(this: LinkedMap<K, V>): LuaIterator<LuaMultiReturn<[K | undefined, V | undefined]>, IteratorState<K, V>>;
32
+ }
33
+ export declare const emptyLinkedMap: <K extends AnyNotNil, V>() => ReadonlyLinkedMap<K, V>;
34
+ export declare const mutableLinkedMap: <K extends AnyNotNil, V>() => LinkedMap<K, V>;
35
+ export {};
@@ -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
@@ -1,5 +1,5 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
2
+ import { NonEmptyArray, ReadonlyNonEmptyArray } from "./types";
3
3
  type IteratorState<T extends AnyNotNil> = {
4
4
  t: LuaMap<T, T>;
5
5
  n?: T;
@@ -14,11 +14,16 @@ 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;
21
21
  }
22
+ export interface ReadonlyNonEmptyLinkedSet<T extends AnyNotNil> extends ReadonlyLinkedSet<T> {
23
+ first(): T;
24
+ last(): T;
25
+ toArray(): NonEmptyArray<T>;
26
+ }
22
27
  export interface LinkedSet<T extends AnyNotNil> extends LuaPairsKeyIterable<T> {
23
28
  readonly __linkedSet: unique symbol;
24
29
  }
@@ -31,9 +36,11 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
31
36
  copyOf(): LinkedSet<T>;
32
37
  first(): T | undefined;
33
38
  last(): T | undefined;
39
+ pop(): T | undefined;
34
40
  next(key: T): T | undefined;
35
41
  previous(key: T): T | undefined;
36
42
  add(key: T): boolean;
43
+ protected addBefore(value: T, key: T): boolean;
37
44
  remove(key: T): boolean;
38
45
  contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
39
46
  clear(): void;
@@ -42,9 +49,14 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
42
49
  toArray(): T[];
43
50
  sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
44
51
  sortBy<R>(selector: ((value: T) => R) | KeysOfType<T, R>): void;
52
+ protected __len(): number;
45
53
  protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
46
54
  }
47
55
  export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
48
- export declare const linkedSetOf: <T extends AnyNotNil>(...elements: readonly T[]) => LinkedSet<T>;
49
- export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | null | undefined)[]) => LinkedSet<T>;
56
+ export declare const mutableLinkedSet: <T extends AnyNotNil>() => LinkedSet<T>;
57
+ export declare const mutableLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => LinkedSet<T>;
58
+ export declare const mutableLinkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
59
+ export declare const linkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
60
+ export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
61
+ export declare const nonEmptyLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyNonEmptyArray<T>) => ReadonlyNonEmptyLinkedSet<T>;
50
62
  export {};
@@ -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,18 +212,27 @@ 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
180
- ____exports.linkedSetOf = function(...)
225
+ ____exports.mutableLinkedSet = function()
226
+ return __TS__New(____exports.LinkedSet)
227
+ end
228
+ ____exports.mutableLinkedSetOf = function(...)
181
229
  local linkedSet = __TS__New(____exports.LinkedSet)
182
230
  for i = 1, select("#", ...) do
183
231
  linkedSet:add((select(i, ...)))
184
232
  end
185
233
  return linkedSet
186
234
  end
187
- ____exports.linkedSetOfNotNull = function(...)
235
+ ____exports.mutableLinkedSetOfNotNull = function(...)
188
236
  local linkedSet = __TS__New(____exports.LinkedSet)
189
237
  for i = 1, select("#", ...) do
190
238
  local element = (select(i, ...))
@@ -194,4 +242,7 @@ ____exports.linkedSetOfNotNull = function(...)
194
242
  end
195
243
  return linkedSet
196
244
  end
245
+ ____exports.linkedSetOf = function(...) return ____exports.mutableLinkedSetOf(...) end
246
+ ____exports.linkedSetOfNotNull = function(...) return ____exports.mutableLinkedSetOfNotNull(...) end
247
+ ____exports.nonEmptyLinkedSetOf = function(...) return ____exports.linkedSetOf(...) end
197
248
  return ____exports
@@ -1,6 +1,18 @@
1
- /// <reference types="@typescript-to-lua/language-extensions" />
2
1
  /** @noSelfInFile */
3
2
  import { Flatten, TupleOf } from "./types";
4
- export declare const luaMapOf: <K extends AnyNotNil, V>(...pairs: Flatten<TupleOf<[K, V], 0 | 2 | 1 | 22 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 31 | 40 | 30 | 32 | 23 | 24 | 25 | 26 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 39>>) => LuaMap<K, V>;
5
- export declare const luaMapInvert: <K extends AnyNotNil, V extends AnyNotNil>(luaMap: LuaMap<K, V>) => LuaMap<V, K>;
6
- export declare const mapValues: <K extends AnyNotNil, V1, V2>(luaMap: LuaMap<K, V1>, transform: (value: V1) => V2) => LuaMap<K, V2>;
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>;
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>;
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;