warscript 0.0.1-dev.dd8349d → 0.0.1-dev.e147c49
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.
- package/attributes.d.ts +1 -0
- package/attributes.lua +9 -0
- package/core/types/frame.d.ts +1 -0
- package/core/types/frame.lua +136 -58
- package/core/types/handle.lua +9 -9
- package/core/types/item.d.ts +1 -0
- package/core/types/item.lua +1 -0
- package/core/types/player.d.ts +18 -1
- package/core/types/player.lua +76 -26
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/playerColor.lua +4 -3
- package/core/types/sound.d.ts +1 -1
- package/core/types/sound.lua +14 -9
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +3 -1
- package/core/types/timer.lua +27 -2
- package/core/types/unit.d.ts +4 -0
- package/core/types/unit.lua +4 -0
- package/decl/native.d.ts +711 -11
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +14 -1
- package/engine/behavior.lua +230 -70
- package/engine/behaviour/ability/apply-buff.lua +5 -5
- package/engine/behaviour/ability/damage.d.ts +3 -0
- package/engine/behaviour/ability/damage.lua +18 -15
- package/engine/behaviour/ability/emulate-impact.d.ts +1 -1
- package/engine/behaviour/ability/emulate-impact.lua +16 -7
- package/engine/behaviour/ability/remove-buffs.d.ts +9 -0
- package/engine/behaviour/ability/remove-buffs.lua +21 -0
- package/engine/behaviour/ability/restore-mana.d.ts +1 -1
- package/engine/behaviour/ability/restore-mana.lua +6 -6
- package/engine/behaviour/ability.d.ts +12 -6
- package/engine/behaviour/ability.lua +49 -17
- package/engine/behaviour/unit/stun-immunity.d.ts +12 -6
- package/engine/behaviour/unit/stun-immunity.lua +57 -31
- package/engine/behaviour/unit.d.ts +28 -5
- package/engine/behaviour/unit.lua +186 -27
- package/engine/buff.d.ts +75 -28
- package/engine/buff.lua +433 -196
- package/engine/index.d.ts +2 -1
- package/engine/internal/ability.d.ts +9 -1
- package/engine/internal/ability.lua +96 -44
- package/engine/internal/item/ability.lua +51 -1
- package/engine/internal/item/fields.d.ts +12 -0
- package/engine/internal/item/fields.lua +33 -0
- package/engine/internal/item+owner.d.ts +1 -0
- package/engine/internal/item+owner.lua +19 -6
- package/engine/internal/item.d.ts +24 -14
- package/engine/internal/item.lua +176 -85
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/frame-coordinates.lua +21 -0
- package/engine/internal/misc/get-terrain-z.d.ts +2 -0
- package/engine/internal/misc/get-terrain-z.lua +11 -0
- package/engine/internal/misc/player-local-handle.d.ts +2 -0
- package/engine/internal/misc/player-local-handle.lua +5 -0
- package/engine/internal/object-data/armor-bonus.d.ts +2 -0
- package/engine/internal/object-data/attribute-bonus.lua +2 -2
- package/engine/internal/object-data/health-bonus.d.ts +2 -0
- package/engine/internal/object-data/health-bonus.lua +16 -0
- package/engine/internal/object-data/mana-bonus.d.ts +2 -0
- package/engine/internal/object-data/mana-bonus.lua +16 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.d.ts +2 -0
- package/engine/internal/object-data/mana-regeneration-rate-increase-factor.lua +16 -0
- package/engine/internal/unit/ability.d.ts +35 -0
- package/engine/internal/unit/ability.lua +113 -12
- package/engine/internal/unit/appearance.d.ts +15 -0
- package/engine/internal/unit/appearance.lua +85 -0
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bag.d.ts +18 -0
- package/engine/internal/unit/bag.lua +63 -0
- package/engine/internal/unit/bonus.d.ts +6 -0
- package/engine/internal/unit/bonus.lua +33 -3
- package/engine/internal/unit/buff.d.ts +2 -2
- package/engine/internal/unit/buff.lua +34 -19
- package/engine/internal/unit/equipment.d.ts +36 -0
- package/engine/internal/unit/equipment.lua +169 -0
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/interrupts.d.ts +12 -0
- package/engine/internal/unit/interrupts.lua +28 -0
- package/engine/internal/unit/{item.d.ts → inventory.d.ts} +3 -3
- package/engine/internal/unit/{item.lua → inventory.lua} +25 -26
- package/engine/internal/unit/main-selected.lua +12 -27
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -0
- package/engine/internal/unit/pseudo-passive-abilities.d.ts +2 -0
- package/engine/internal/unit/pseudo-passive-abilities.lua +11 -0
- package/engine/internal/unit/range-event.d.ts +12 -0
- package/engine/internal/unit/range-event.lua +90 -0
- package/engine/internal/unit/scale.d.ts +7 -0
- package/engine/internal/unit/scale.lua +20 -0
- package/engine/internal/unit+ability.lua +10 -1
- package/engine/internal/unit+bonus.lua +3 -3
- package/engine/internal/unit+damage.d.ts +9 -0
- package/engine/internal/unit+damage.lua +33 -0
- package/engine/internal/unit-missile-data.lua +58 -32
- package/engine/internal/unit-missile-launch.lua +52 -14
- package/engine/internal/unit.d.ts +19 -24
- package/engine/internal/unit.lua +233 -246
- package/engine/local-client.d.ts +27 -0
- package/engine/local-client.lua +518 -54
- package/engine/object-data/auxiliary/armor-type.d.ts +11 -0
- package/engine/object-data/auxiliary/armor-type.lua +46 -0
- package/engine/object-data/auxiliary/equipment-slot.d.ts +12 -0
- package/engine/object-data/auxiliary/equipment-slot.lua +2 -0
- package/engine/object-data/auxiliary/equipment-type.d.ts +13 -0
- package/engine/object-data/auxiliary/equipment-type.lua +2 -0
- package/engine/object-data/auxiliary/health-regeneration-type.d.ts +8 -0
- package/engine/object-data/auxiliary/health-regeneration-type.lua +2 -0
- package/engine/object-data/auxiliary/item-tag.d.ts +12 -0
- package/engine/object-data/auxiliary/item-tag.lua +2 -0
- package/engine/object-data/auxiliary/sound-set-name.d.ts +14 -3
- package/engine/object-data/auxiliary/unit-attribute.lua +1 -1
- package/engine/object-data/entry/ability-type/apprehend.d.ts +22 -0
- package/engine/object-data/entry/ability-type/apprehend.lua +66 -0
- package/engine/object-data/entry/ability-type/armor-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/{armor-increase.lua → armor-bonus.lua} +9 -9
- package/engine/object-data/entry/ability-type/banshee.d.ts +8 -0
- package/engine/object-data/entry/ability-type/banshee.lua +13 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/banshees-wail-damage-amp.lua +27 -0
- package/engine/object-data/entry/ability-type/banshees-wail.d.ts +31 -0
- package/engine/object-data/entry/ability-type/banshees-wail.lua +117 -0
- package/engine/object-data/entry/ability-type/battering-ram.d.ts +33 -0
- package/engine/object-data/entry/ability-type/battering-ram.lua +130 -0
- package/engine/object-data/entry/ability-type/blank-configurable.d.ts +3 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +30 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.d.ts +27 -0
- package/engine/object-data/entry/ability-type/cleansing-fire.lua +104 -0
- package/engine/object-data/entry/ability-type/consecration.d.ts +15 -0
- package/engine/object-data/entry/ability-type/consecration.lua +52 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.d.ts +12 -0
- package/engine/object-data/entry/ability-type/cooldown-reduction.lua +39 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.d.ts +18 -0
- package/engine/object-data/entry/ability-type/critical-strike-system.lua +65 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.d.ts +21 -0
- package/engine/object-data/entry/ability-type/deathseeker-arrows.lua +78 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.d.ts +8 -0
- package/engine/object-data/entry/ability-type/equipment-inventory-interface.lua +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment-inventory.lua +27 -0
- package/engine/object-data/entry/ability-type/equipment.d.ts +13 -0
- package/engine/object-data/entry/ability-type/equipment.lua +27 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.d.ts +8 -0
- package/engine/object-data/entry/ability-type/grant-talent-point.lua +13 -0
- package/engine/object-data/entry/ability-type/grim-conviction.d.ts +36 -0
- package/engine/object-data/entry/ability-type/grim-conviction.lua +131 -0
- package/engine/object-data/entry/ability-type/grit.d.ts +18 -0
- package/engine/object-data/entry/ability-type/grit.lua +65 -0
- package/engine/object-data/entry/ability-type/guiding-hand.d.ts +27 -0
- package/engine/object-data/entry/ability-type/guiding-hand.lua +104 -0
- package/engine/object-data/entry/ability-type/headsplitter.d.ts +27 -0
- package/engine/object-data/entry/ability-type/headsplitter.lua +104 -0
- package/engine/object-data/entry/ability-type/{armor-increase.d.ts → healing-modifier.d.ts} +4 -3
- package/engine/object-data/entry/ability-type/healing-modifier.lua +26 -0
- package/engine/object-data/entry/ability-type/health-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/health-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/heroic-slash.d.ts +18 -0
- package/engine/object-data/entry/ability-type/heroic-slash.lua +65 -0
- package/engine/object-data/entry/ability-type/holy-wrath.d.ts +30 -0
- package/engine/object-data/entry/ability-type/holy-wrath.lua +117 -0
- package/engine/object-data/entry/ability-type/inspire-courage.d.ts +18 -0
- package/engine/object-data/entry/ability-type/inspire-courage.lua +65 -0
- package/engine/object-data/entry/ability-type/lights-mercy.d.ts +27 -0
- package/engine/object-data/entry/ability-type/lights-mercy.lua +104 -0
- package/engine/object-data/entry/ability-type/mana-bonus.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-bonus.lua +26 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.d.ts +12 -0
- package/engine/object-data/entry/ability-type/mana-efficiency.lua +39 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.d.ts +8 -0
- package/engine/object-data/entry/ability-type/mana-regeneration.lua +26 -0
- package/engine/object-data/entry/ability-type/mind-control.d.ts +21 -0
- package/engine/object-data/entry/ability-type/mind-control.lua +78 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.d.ts +21 -0
- package/engine/object-data/entry/ability-type/on-attack-cast-spell.lua +52 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.d.ts +19 -0
- package/engine/object-data/entry/ability-type/on-basic-attack-cast-spell.lua +65 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.d.ts +15 -0
- package/engine/object-data/entry/ability-type/on-hit-cast-spell.lua +26 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.d.ts +6 -0
- package/engine/object-data/entry/ability-type/on-magic-attack-cast-spell.lua +12 -0
- package/engine/object-data/entry/ability-type/provoke.d.ts +21 -0
- package/engine/object-data/entry/ability-type/provoke.lua +66 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.d.ts +9 -0
- package/engine/object-data/entry/ability-type/raise-the-banner.lua +26 -0
- package/engine/object-data/entry/ability-type/reincarnation.d.ts +8 -0
- package/engine/object-data/entry/ability-type/reincarnation.lua +26 -0
- package/engine/object-data/entry/ability-type/resolve.d.ts +12 -0
- package/engine/object-data/entry/ability-type/resolve.lua +39 -0
- package/engine/object-data/entry/ability-type/righteous-fury.d.ts +33 -0
- package/engine/object-data/entry/ability-type/righteous-fury.lua +130 -0
- package/engine/object-data/entry/ability-type/sacred-aura.d.ts +27 -0
- package/engine/object-data/entry/ability-type/sacred-aura.lua +104 -0
- package/engine/object-data/entry/ability-type/soul-lantern.d.ts +30 -0
- package/engine/object-data/entry/ability-type/soul-lantern.lua +117 -0
- package/engine/object-data/entry/ability-type/spell-amp.d.ts +15 -0
- package/engine/object-data/entry/ability-type/spell-amp.lua +52 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-critical-strike.lua +39 -0
- package/engine/object-data/entry/ability-type/spell-vamp.d.ts +12 -0
- package/engine/object-data/entry/ability-type/spell-vamp.lua +39 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-evasion.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.d.ts +21 -0
- package/engine/object-data/entry/ability-type/stackable-hardened-skin.lua +78 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-life-steal.lua +26 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-spell-damage-reduction.lua +13 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.d.ts +9 -0
- package/engine/object-data/entry/ability-type/stackable-thorn-shield.lua +13 -0
- package/engine/object-data/entry/ability-type/stat-details.d.ts +12 -0
- package/engine/object-data/entry/ability-type/stat-details.lua +27 -0
- package/engine/object-data/entry/ability-type/surge-of-light.d.ts +33 -0
- package/engine/object-data/entry/ability-type/surge-of-light.lua +130 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.d.ts +57 -0
- package/engine/object-data/entry/ability-type/sweeping-strike.lua +234 -0
- package/engine/object-data/entry/ability-type/talents.d.ts +12 -0
- package/engine/object-data/entry/ability-type/talents.lua +27 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.d.ts +30 -0
- package/engine/object-data/entry/ability-type/unyielding-guard.lua +117 -0
- package/engine/object-data/entry/ability-type/valiant-charge.d.ts +27 -0
- package/engine/object-data/entry/ability-type/valiant-charge.lua +104 -0
- package/engine/object-data/entry/ability-type/warcry.d.ts +9 -0
- package/engine/object-data/entry/ability-type/warcry.lua +26 -0
- package/engine/object-data/entry/ability-type/withering-fire.d.ts +21 -0
- package/engine/object-data/entry/ability-type/withering-fire.lua +78 -0
- package/engine/object-data/entry/ability-type.d.ts +12 -3
- package/engine/object-data/entry/ability-type.lua +142 -8
- package/engine/object-data/entry/buff-type/applicable.lua +113 -109
- package/engine/object-data/entry/buff-type.d.ts +6 -2
- package/engine/object-data/entry/buff-type.lua +26 -0
- package/engine/object-data/entry/destructible-type.d.ts +32 -2
- package/engine/object-data/entry/destructible-type.lua +181 -0
- package/engine/object-data/entry/item-type.d.ts +12 -3
- package/engine/object-data/entry/item-type.lua +52 -0
- package/engine/object-data/entry/lightning-type.d.ts +2 -2
- package/engine/object-data/entry/sound-preset.d.ts +2 -2
- package/engine/object-data/entry/unit-type.d.ts +62 -4
- package/engine/object-data/entry/unit-type.lua +474 -38
- package/engine/object-data/entry/upgrade.d.ts +2 -2
- package/engine/object-data/entry.d.ts +4 -1
- package/engine/object-field/ability.d.ts +3 -3
- package/engine/object-field/ability.lua +9 -8
- package/engine/object-field/item.d.ts +22 -0
- package/engine/object-field/item.lua +118 -0
- package/engine/object-field/unit.d.ts +31 -5
- package/engine/object-field/unit.lua +95 -0
- package/engine/object-field.d.ts +18 -7
- package/engine/object-field.lua +294 -135
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/ability-type.d.ts +3102 -7
- package/engine/standard/entries/ability-type.lua +0 -6
- package/engine/standard/entries/item-type.d.ts +1299 -0
- package/engine/standard/entries/item-type.lua +2 -0
- package/engine/standard/entries/unit-type.d.ts +5 -0
- package/engine/standard/entries/unit-type.lua +5 -0
- package/engine/standard/fields/ability.d.ts +2 -2
- package/engine/standard/fields/ability.lua +2 -2
- package/engine/standard/fields/item.d.ts +4 -0
- package/engine/standard/fields/item.lua +6 -0
- package/engine/standard/fields/unit.d.ts +12 -0
- package/engine/standard/fields/unit.lua +20 -0
- package/engine/synchronization.d.ts +11 -0
- package/engine/synchronization.lua +77 -0
- package/engine/text-tag.d.ts +36 -2
- package/engine/text-tag.lua +250 -10
- package/engine/unit.d.ts +10 -1
- package/engine/unit.lua +10 -1
- package/event.d.ts +1 -1
- package/lualib_bundle.lua +1 -1
- package/math.d.ts +2 -0
- package/math.lua +14 -0
- package/net/socket.lua +1 -1
- package/network.lua +25 -1
- package/objutil/buff.lua +10 -8
- package/objutil/object.lua +1 -1
- package/operation.d.ts +8 -1
- package/operation.lua +38 -18
- package/package.json +3 -23
- package/patch-lua.lua +15 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +1 -0
- package/utility/arrays.lua +8 -0
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +7 -0
- package/utility/functions.lua +12 -0
- package/utility/linked-map.d.ts +35 -0
- package/utility/linked-map.lua +107 -0
- package/utility/linked-set.d.ts +4 -1
- package/utility/linked-set.lua +46 -1
- package/utility/lua-maps.d.ts +12 -2
- package/utility/lua-maps.lua +37 -2
- package/utility/lua-sets.d.ts +1 -0
- package/utility/lua-sets.lua +4 -0
- package/utility/random.d.ts +102 -0
- package/utility/random.lua +273 -0
- package/utility/records.lua +20 -1
- package/utility/types.d.ts +3 -0
- package/utility/unordered-map.d.ts +27 -0
- package/utility/unordered-map.lua +99 -0
- package/core/types/order.d.ts +0 -26
- package/core/types/order.lua +0 -65
- /package/engine/internal/{object-data/armor-increase.d.ts → misc/frame-coordinates.d.ts} +0 -0
- /package/engine/internal/object-data/{armor-increase.lua → armor-bonus.lua} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.d.ts → attribute-bonus.d.ts} +0 -0
- /package/engine/object-data/entry/ability-type/{attribute-increase.lua → attribute-bonus.lua} +0 -0
package/math.lua
CHANGED
|
@@ -39,6 +39,20 @@ ____exports.floor = math.floor
|
|
|
39
39
|
____exports.log = math.log
|
|
40
40
|
____exports.max = math.max
|
|
41
41
|
____exports.min = math.min
|
|
42
|
+
____exports.sum = function(x, ...)
|
|
43
|
+
for i = 1, select("#", ...) do
|
|
44
|
+
local number = select(i, ...)
|
|
45
|
+
x = x + number
|
|
46
|
+
end
|
|
47
|
+
return x
|
|
48
|
+
end
|
|
49
|
+
____exports.product = function(x, ...)
|
|
50
|
+
for i = 1, select("#", ...) do
|
|
51
|
+
local number = select(i, ...)
|
|
52
|
+
x = x * number
|
|
53
|
+
end
|
|
54
|
+
return x
|
|
55
|
+
end
|
|
42
56
|
--- Returns the signum function of the argument;
|
|
43
57
|
-- zero if the argument is zero,
|
|
44
58
|
-- 1.0 if the argument is greater than zero,
|
package/net/socket.lua
CHANGED
|
@@ -28,13 +28,13 @@ function Socket.prototype.____constructor(self)
|
|
|
28
28
|
onReceive[self[0]]:addListener(function(sender, data)
|
|
29
29
|
local chunks = chunksByPlayer[sender]
|
|
30
30
|
if chunks ~= nil then
|
|
31
|
+
chunksByPlayer[sender] = nil
|
|
31
32
|
chunks[#chunks + 1] = data
|
|
32
33
|
Event.invoke(
|
|
33
34
|
self.onMessage,
|
|
34
35
|
sender,
|
|
35
36
|
tableConcat(chunks)
|
|
36
37
|
)
|
|
37
|
-
chunksByPlayer[sender] = nil
|
|
38
38
|
else
|
|
39
39
|
Event.invoke(self.onMessage, sender, data)
|
|
40
40
|
end
|
package/network.lua
CHANGED
|
@@ -8,6 +8,7 @@ local ____exports = {}
|
|
|
8
8
|
local ____event = require("event")
|
|
9
9
|
local TriggerEvent = ____event.TriggerEvent
|
|
10
10
|
local ____exception = require("exception")
|
|
11
|
+
local CancellationException = ____exception.CancellationException
|
|
11
12
|
local IllegalArgumentException = ____exception.IllegalArgumentException
|
|
12
13
|
local ____player = require("core.types.player")
|
|
13
14
|
local Player = ____player.Player
|
|
@@ -86,6 +87,9 @@ function SyncOperation.prototype.____constructor(self, player, data)
|
|
|
86
87
|
self.l = #self.d
|
|
87
88
|
end
|
|
88
89
|
function SyncOperation.prototype.estimate(self)
|
|
90
|
+
if self.isCanceled or not self.player.isPlaying then
|
|
91
|
+
return __TS__Promise.reject(__TS__New(CancellationException))
|
|
92
|
+
end
|
|
89
93
|
if self.player.isLocal then
|
|
90
94
|
sendSyncData(
|
|
91
95
|
"__oh",
|
|
@@ -98,6 +102,7 @@ function SyncOperation.prototype.estimate(self)
|
|
|
98
102
|
end
|
|
99
103
|
function SyncOperation.prototype.work(self)
|
|
100
104
|
if self.progress >= self.maximum then
|
|
105
|
+
syncOperationById[self.x] = nil
|
|
101
106
|
return decode(concat(self.c))
|
|
102
107
|
end
|
|
103
108
|
self.s = packetsPerRound
|
|
@@ -116,7 +121,18 @@ function SyncOperation.prototype.work(self)
|
|
|
116
121
|
return __TS__New(__TS__Promise, syncPromiseExecutor)
|
|
117
122
|
end
|
|
118
123
|
function SyncOperation.prototype.doCancel(self)
|
|
119
|
-
|
|
124
|
+
if not (syncOperationById[self.x] ~= nil) then
|
|
125
|
+
return false
|
|
126
|
+
end
|
|
127
|
+
syncOperationById[self.x] = nil
|
|
128
|
+
local ____opt_1 = self.r
|
|
129
|
+
if ____opt_1 ~= nil then
|
|
130
|
+
____opt_1(
|
|
131
|
+
self,
|
|
132
|
+
__TS__New(CancellationException)
|
|
133
|
+
)
|
|
134
|
+
end
|
|
135
|
+
return true
|
|
120
136
|
end
|
|
121
137
|
__TS__ObjectDefineProperty(
|
|
122
138
|
SyncOperation,
|
|
@@ -178,6 +194,7 @@ SyncOperation._ = (function()
|
|
|
178
194
|
local resolveWork = syncOperation.w
|
|
179
195
|
if resolveWork then
|
|
180
196
|
if syncOperation.progress >= syncOperation.maximum then
|
|
197
|
+
syncOperationById[id] = nil
|
|
181
198
|
resolveWork(
|
|
182
199
|
nil,
|
|
183
200
|
decode(concat(chunks))
|
|
@@ -188,6 +205,13 @@ SyncOperation._ = (function()
|
|
|
188
205
|
end
|
|
189
206
|
end
|
|
190
207
|
end)
|
|
208
|
+
Player.onLeave:addListener(function(player)
|
|
209
|
+
for ____, operation in pairs(syncOperationById) do
|
|
210
|
+
if operation.player == player then
|
|
211
|
+
operation:cancel()
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
end)
|
|
191
215
|
end)()
|
|
192
216
|
function ____exports.synchronize(player, data)
|
|
193
217
|
return __TS__New(____exports.SyncOperation, player, data):execute()
|
package/objutil/buff.lua
CHANGED
|
@@ -29,6 +29,8 @@ local ____timer = require("core.types.timer")
|
|
|
29
29
|
local Timer = ____timer.Timer
|
|
30
30
|
local ____exception = require("exception")
|
|
31
31
|
local IllegalStateException = ____exception.IllegalStateException
|
|
32
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
33
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
32
34
|
local ____assert = _G.assert
|
|
33
35
|
local ____pairs = _G.pairs
|
|
34
36
|
____exports.BuffDefinition = __TS__Class()
|
|
@@ -461,7 +463,7 @@ local buffs = setmetatable(
|
|
|
461
463
|
{
|
|
462
464
|
__mode = "k",
|
|
463
465
|
__index = function(self, unit)
|
|
464
|
-
local ____table =
|
|
466
|
+
local ____table = __TS__New(LinkedMap)
|
|
465
467
|
self[unit] = ____table
|
|
466
468
|
return ____table
|
|
467
469
|
end
|
|
@@ -494,7 +496,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
|
|
|
494
496
|
end
|
|
495
497
|
local constructor = self.constructor
|
|
496
498
|
local instances = buffs[unit]
|
|
497
|
-
local instance = instances
|
|
499
|
+
local instance = instances:get(constructor)
|
|
498
500
|
if instance then
|
|
499
501
|
instance:destroy()
|
|
500
502
|
if not instance.destroyed then
|
|
@@ -507,7 +509,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
|
|
|
507
509
|
)
|
|
508
510
|
end
|
|
509
511
|
end
|
|
510
|
-
instances
|
|
512
|
+
instances:put(constructor, self)
|
|
511
513
|
if preset then
|
|
512
514
|
local unitHandle = unit.handle
|
|
513
515
|
local slowPoisonMethod = not preset.positive and not preset.magic
|
|
@@ -586,13 +588,13 @@ function Buff.apply(self, ...)
|
|
|
586
588
|
end
|
|
587
589
|
end
|
|
588
590
|
function Buff.getInstance(self, unit)
|
|
589
|
-
return buffs[unit]
|
|
591
|
+
return buffs[unit]:get(self)
|
|
590
592
|
end
|
|
591
593
|
function Buff.isApplied(self, unit)
|
|
592
|
-
return buffs[unit]
|
|
594
|
+
return buffs[unit]:get(self) ~= nil
|
|
593
595
|
end
|
|
594
596
|
function Buff.ifApplied(self, unit, action)
|
|
595
|
-
local instance = buffs[unit]
|
|
597
|
+
local instance = buffs[unit]:get(self)
|
|
596
598
|
if instance then
|
|
597
599
|
____assert(__TS__InstanceOf(instance, self))
|
|
598
600
|
action(instance)
|
|
@@ -615,7 +617,7 @@ function Buff.prototype.destroy(self)
|
|
|
615
617
|
if self.preset then
|
|
616
618
|
self.unit:removeAbility(self.preset.buffId)
|
|
617
619
|
end
|
|
618
|
-
buffs[self.unit]
|
|
620
|
+
buffs[self.unit]:remove(self.constructor)
|
|
619
621
|
self.destroyed = true
|
|
620
622
|
end
|
|
621
623
|
function Buff.prototype.onDispel(self, source)
|
|
@@ -762,7 +764,7 @@ Unit.onDamaging:addListener(function(source, target, event)
|
|
|
762
764
|
end
|
|
763
765
|
end)
|
|
764
766
|
Unit.itemPickedUpEvent:addListener(function(unit, item)
|
|
765
|
-
if item.
|
|
767
|
+
if item.isPowerUp and item:hasAbility(fourCC("APdi")) then
|
|
766
768
|
end
|
|
767
769
|
end)
|
|
768
770
|
return ____exports
|
package/objutil/object.lua
CHANGED
|
@@ -153,7 +153,7 @@ end
|
|
|
153
153
|
function ObjectDefinition.getLevelArrayFieldValue(self, level, value, values)
|
|
154
154
|
return type(values) == "function" and values(level, value) or (__TS__ArrayIsArray(values[1]) and values[1] or values)
|
|
155
155
|
end
|
|
156
|
-
____exports.ObjectType = ObjectType or ({})
|
|
156
|
+
____exports.ObjectType = ____exports.ObjectType or ({})
|
|
157
157
|
____exports.ObjectType.ABILITY = 0
|
|
158
158
|
____exports.ObjectType[____exports.ObjectType.ABILITY] = "ABILITY"
|
|
159
159
|
____exports.ObjectType.ITEM = 1
|
package/operation.d.ts
CHANGED
|
@@ -16,9 +16,11 @@ export { OperationContinue };
|
|
|
16
16
|
export declare abstract class Operation<T> {
|
|
17
17
|
protected constructor();
|
|
18
18
|
private started;
|
|
19
|
+
private settled;
|
|
20
|
+
private canceled;
|
|
19
21
|
protected progress: number;
|
|
20
22
|
protected maximum: number;
|
|
21
|
-
isCanceled: boolean;
|
|
23
|
+
get isCanceled(): boolean;
|
|
22
24
|
get isStarted(): boolean;
|
|
23
25
|
execute(): OperationMonitor<T>;
|
|
24
26
|
protected abstract estimate(): number | Promise<number>;
|
|
@@ -30,6 +32,11 @@ export declare abstract class Operation<T> {
|
|
|
30
32
|
...result: [success: true, result: T] | [success: false, reason?: any]
|
|
31
33
|
]>;
|
|
32
34
|
get onProgress(): Event<[operation: Operation<T>]>;
|
|
35
|
+
/**
|
|
36
|
+
* Invoked with `isCanceled` already set. Should unblock any pending `estimate`/`work` promise
|
|
37
|
+
* (e.g. by rejecting it) and return whether cancellation is possible; on `false` the canceled
|
|
38
|
+
* state is reverted.
|
|
39
|
+
*/
|
|
33
40
|
protected abstract doCancel(): boolean;
|
|
34
41
|
cancel(): boolean;
|
|
35
42
|
}
|
package/operation.lua
CHANGED
|
@@ -22,10 +22,7 @@ OperationMonitor.name = "OperationMonitor"
|
|
|
22
22
|
__TS__ClassExtends(OperationMonitor, __TS__Promise)
|
|
23
23
|
function OperationMonitor.prototype.____constructor(self, operation, ...)
|
|
24
24
|
local args = {...}
|
|
25
|
-
__TS__Promise.prototype.____constructor(
|
|
26
|
-
self,
|
|
27
|
-
table.unpack(args)
|
|
28
|
-
)
|
|
25
|
+
__TS__Promise.prototype.____constructor(self, ...)
|
|
29
26
|
self.o = operation
|
|
30
27
|
end
|
|
31
28
|
function OperationMonitor.prototype.cancel(self)
|
|
@@ -38,9 +35,10 @@ local Operation = ____exports.Operation
|
|
|
38
35
|
Operation.name = "Operation"
|
|
39
36
|
function Operation.prototype.____constructor(self)
|
|
40
37
|
self.started = false
|
|
38
|
+
self.settled = false
|
|
39
|
+
self.canceled = false
|
|
41
40
|
self.progress = 0
|
|
42
41
|
self.maximum = 0
|
|
43
|
-
self.isCanceled = false
|
|
44
42
|
end
|
|
45
43
|
function Operation.prototype.execute(self)
|
|
46
44
|
if self.started then
|
|
@@ -58,6 +56,12 @@ function Operation.prototype.execute(self)
|
|
|
58
56
|
local result
|
|
59
57
|
local progress = self.progress
|
|
60
58
|
local ____try = __TS__AsyncAwaiter(function()
|
|
59
|
+
if self.canceled then
|
|
60
|
+
error(
|
|
61
|
+
__TS__New(CancellationException),
|
|
62
|
+
0
|
|
63
|
+
)
|
|
64
|
+
end
|
|
61
65
|
local maximum = __TS__Await(self:estimate())
|
|
62
66
|
self.maximum = maximum
|
|
63
67
|
if maximum ~= 0 then
|
|
@@ -68,20 +72,19 @@ function Operation.prototype.execute(self)
|
|
|
68
72
|
end
|
|
69
73
|
repeat
|
|
70
74
|
do
|
|
71
|
-
if self.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
Event.invoke(onFailure, self, reason)
|
|
77
|
-
end
|
|
78
|
-
local onComplete = ____rawget(self, "onComplete")
|
|
79
|
-
if onComplete ~= nil then
|
|
80
|
-
Event.invoke(onComplete, self, false, reason)
|
|
81
|
-
end
|
|
82
|
-
return ____awaiter_resolve(nil)
|
|
75
|
+
if self.canceled then
|
|
76
|
+
error(
|
|
77
|
+
__TS__New(CancellationException),
|
|
78
|
+
0
|
|
79
|
+
)
|
|
83
80
|
end
|
|
84
81
|
result = __TS__Await(self:work())
|
|
82
|
+
if self.canceled then
|
|
83
|
+
error(
|
|
84
|
+
__TS__New(CancellationException),
|
|
85
|
+
0
|
|
86
|
+
)
|
|
87
|
+
end
|
|
85
88
|
if self.progress ~= progress or self.maximum ~= maximum then
|
|
86
89
|
progress = self.progress
|
|
87
90
|
maximum = self.maximum
|
|
@@ -96,6 +99,7 @@ function Operation.prototype.execute(self)
|
|
|
96
99
|
__TS__Await(____try.catch(
|
|
97
100
|
____try,
|
|
98
101
|
function(____, reason)
|
|
102
|
+
self.settled = true
|
|
99
103
|
reject(nil, reason)
|
|
100
104
|
local onFailure = ____rawget(self, "onFailure")
|
|
101
105
|
if onFailure ~= nil then
|
|
@@ -108,6 +112,7 @@ function Operation.prototype.execute(self)
|
|
|
108
112
|
return ____awaiter_resolve(nil)
|
|
109
113
|
end
|
|
110
114
|
))
|
|
115
|
+
self.settled = true
|
|
111
116
|
resolve(nil, result)
|
|
112
117
|
local onSuccess = ____rawget(self, "onSuccess")
|
|
113
118
|
if onSuccess ~= nil then
|
|
@@ -122,12 +127,27 @@ function Operation.prototype.execute(self)
|
|
|
122
127
|
)
|
|
123
128
|
end
|
|
124
129
|
function Operation.prototype.cancel(self)
|
|
130
|
+
if self.canceled then
|
|
131
|
+
return true
|
|
132
|
+
end
|
|
133
|
+
if self.settled then
|
|
134
|
+
return false
|
|
135
|
+
end
|
|
136
|
+
self.canceled = true
|
|
125
137
|
if self:doCancel() then
|
|
126
|
-
self.isCanceled = true
|
|
127
138
|
return true
|
|
128
139
|
end
|
|
140
|
+
self.canceled = false
|
|
129
141
|
return false
|
|
130
142
|
end
|
|
143
|
+
__TS__SetDescriptor(
|
|
144
|
+
Operation.prototype,
|
|
145
|
+
"isCanceled",
|
|
146
|
+
{get = function(self)
|
|
147
|
+
return self.canceled
|
|
148
|
+
end},
|
|
149
|
+
true
|
|
150
|
+
)
|
|
131
151
|
__TS__SetDescriptor(
|
|
132
152
|
Operation.prototype,
|
|
133
153
|
"isStarted",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package",
|
|
3
3
|
"name": "warscript",
|
|
4
|
-
"version": "0.0.1-dev.
|
|
4
|
+
"version": "0.0.1-dev.e147c49",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -13,31 +13,11 @@
|
|
|
13
13
|
"type": "git",
|
|
14
14
|
"url": "git+https://github.com/rhazarian/warscript.git"
|
|
15
15
|
},
|
|
16
|
-
"scripts": {
|
|
17
|
-
"clean": "rimraf dist",
|
|
18
|
-
"prebuild": "npm run clean",
|
|
19
|
-
"build": "tstl && copyfiles -u 1 \"src/**/*.d.ts\" \"src/**/*.lua\" dist && copyfiles LICENSE package.json dist",
|
|
20
|
-
"prepublishOnly": "echo You should run 'npm run publish' instead. && exit 1",
|
|
21
|
-
"publish": "npm run build && npm publish ./dist --ignore-scripts"
|
|
22
|
-
},
|
|
23
16
|
"peerDependencies": {
|
|
24
17
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
|
-
"@warscript/tstl-plugin": "^0.0.
|
|
18
|
+
"@warscript/tstl-plugin": "^0.0.6",
|
|
26
19
|
"lua-types": "^2.13.1",
|
|
27
|
-
"warpack": "
|
|
28
|
-
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@typescript-eslint/eslint-plugin": "^8.13.0",
|
|
31
|
-
"@typescript-eslint/parser": "^8.13.0",
|
|
32
|
-
"async": "^3.2.6",
|
|
33
|
-
"copyfiles": "^2.4.1",
|
|
34
|
-
"eslint": "^9.14.0",
|
|
35
|
-
"eslint-config-prettier": "^9.1.0",
|
|
36
|
-
"eslint-plugin-prettier": "^5.2.1",
|
|
37
|
-
"prettier": "^3.3.3",
|
|
38
|
-
"rimraf": "^6.0.1",
|
|
39
|
-
"ts-node": "^10.9.2",
|
|
40
|
-
"tsc-watch": "^6.2.0"
|
|
20
|
+
"warpack": "github:rhazarian/warpack#release"
|
|
41
21
|
},
|
|
42
22
|
"publishConfig": {
|
|
43
23
|
"access": "public",
|
package/patch-lua.lua
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
local error = _G.error
|
|
1
2
|
local getmetatable = _G.getmetatable
|
|
2
3
|
local ipairs = _G.ipairs
|
|
4
|
+
local select = _G.select
|
|
5
|
+
local tostring = _G.tostring
|
|
6
|
+
local tableconcat = table.concat
|
|
3
7
|
|
|
4
8
|
_G.ipairs = function(t)
|
|
5
9
|
local metatable = getmetatable(t)
|
|
@@ -8,3 +12,14 @@ _G.ipairs = function(t)
|
|
|
8
12
|
end
|
|
9
13
|
return ipairs(t)
|
|
10
14
|
end
|
|
15
|
+
|
|
16
|
+
_G.assert = function(v, ...)
|
|
17
|
+
if not v then
|
|
18
|
+
local args = {}
|
|
19
|
+
for i = 1, select("#", ...) do
|
|
20
|
+
args[i] = tostring(select(i, ...))
|
|
21
|
+
end
|
|
22
|
+
error(tableconcat(args, " "))
|
|
23
|
+
end
|
|
24
|
+
return v, ...
|
|
25
|
+
end
|
package/patch-lualib.lua
CHANGED
|
@@ -3,7 +3,7 @@ local lualib = _G.require("lualib_bundle")
|
|
|
3
3
|
local next = _G.next
|
|
4
4
|
local ____type = _G.type
|
|
5
5
|
lualib.__TS__ArrayIsArray = function(value)
|
|
6
|
-
return ____type(value) == "table" and (value[1] ~= nil or (
|
|
6
|
+
return ____type(value) == "table" and (value[1] ~= nil or (next(value)) == nil) and value.constructor == nil
|
|
7
7
|
end
|
|
8
8
|
local __TS__SetDescriptor = lualib.__TS__SetDescriptor
|
|
9
9
|
lualib.__TS__ObjectDefineProperty = function(target, key, desc)
|
package/utility/arrays.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const joinToString: <T>(array: readonly T[], separator: string, t
|
|
|
5
5
|
export declare const arrayOfNotNull: <T>(...elements: readonly (T | undefined | null)[]) => T[];
|
|
6
6
|
export declare const array: <T, N extends number>(length: N, initialize: (index: number) => T) => TupleOf<T, N>;
|
|
7
7
|
export declare const toLuaSet: <T extends AnyNotNil>(array: readonly T[]) => LuaSet<T>;
|
|
8
|
+
export declare const contains: <T>(array: readonly T[], element: T) => boolean;
|
|
8
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;
|
|
9
10
|
export declare const all: {
|
|
10
11
|
<T>(array: readonly T[], transform: (value: T) => boolean): boolean;
|
package/utility/arrays.lua
CHANGED
|
@@ -49,6 +49,14 @@ ____exports.toLuaSet = function(array)
|
|
|
49
49
|
end
|
|
50
50
|
return result
|
|
51
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
|
|
52
60
|
____exports.forEach = function(array, consumerOrKey, ...)
|
|
53
61
|
if type(consumerOrKey) == "function" then
|
|
54
62
|
for i = 1, #array do
|
|
@@ -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
|
package/utility/functions.d.ts
CHANGED
|
@@ -4,3 +4,10 @@ export declare const apply: {
|
|
|
4
4
|
<T, ConsumerParameters extends any[], K extends KeysOfType<T, (...parameters: ConsumerParameters) => void>>(object: T, key: K, ...parameters: ConsumerParameters): T;
|
|
5
5
|
};
|
|
6
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;
|
package/utility/functions.lua
CHANGED
|
@@ -88,4 +88,16 @@ ____exports.apply = function(object, transform, ...)
|
|
|
88
88
|
return object
|
|
89
89
|
end
|
|
90
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
|
|
91
103
|
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
|