warscript 0.0.1-dev.b026cc2 → 0.0.1-dev.b23de5c
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 +6 -0
- package/attributes.lua +17 -1
- package/config.d.ts +5 -0
- package/config.lua +10 -0
- package/core/types/effect.d.ts +14 -6
- package/core/types/effect.lua +131 -35
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +113 -22
- package/core/types/player.d.ts +16 -0
- package/core/types/player.lua +60 -15
- package/core/types/playerCamera.d.ts +2 -0
- package/core/types/playerCamera.lua +123 -5
- package/core/types/sound.d.ts +17 -24
- package/core/types/sound.lua +99 -24
- package/core/types/tileCell.d.ts +11 -1
- package/core/types/tileCell.lua +97 -0
- package/core/types/timer.d.ts +9 -8
- package/core/types/timer.lua +45 -23
- package/core/util.d.ts +1 -1
- package/core/util.lua +18 -1
- package/decl/native.d.ts +846 -790
- package/destroyable.d.ts +1 -0
- package/destroyable.lua +9 -0
- package/engine/behavior.d.ts +16 -3
- package/engine/behavior.lua +233 -73
- package/engine/behaviour/ability/always-enabled.d.ts +7 -0
- package/engine/behaviour/ability/always-enabled.lua +31 -0
- package/engine/behaviour/ability/apply-buff.d.ts +8 -5
- package/engine/behaviour/ability/apply-buff.lua +36 -4
- package/engine/behaviour/ability/apply-unit-behavior.lua +1 -0
- package/engine/behaviour/ability/damage.d.ts +9 -3
- package/engine/behaviour/ability/damage.lua +26 -38
- package/engine/behaviour/ability/emulate-impact.d.ts +6 -0
- package/engine/behaviour/ability/emulate-impact.lua +43 -0
- package/engine/behaviour/ability/instant-impact.d.ts +2 -2
- package/engine/behaviour/ability/instant-impact.lua +4 -19
- package/engine/behaviour/ability/on-command-impact.d.ts +8 -0
- package/engine/behaviour/ability/on-command-impact.lua +25 -0
- package/engine/behaviour/ability/remove-buffs.d.ts +25 -0
- package/engine/behaviour/ability/remove-buffs.lua +49 -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 +28 -7
- package/engine/behaviour/ability.lua +137 -43
- 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 +45 -2
- package/engine/behaviour/unit.lua +289 -6
- package/engine/buff.d.ts +128 -52
- package/engine/buff.lua +595 -270
- package/engine/internal/ability.d.ts +23 -14
- package/engine/internal/ability.lua +129 -85
- package/engine/internal/item/ability.lua +162 -4
- package/engine/internal/item+owner.lua +12 -6
- package/engine/internal/item.d.ts +20 -19
- package/engine/internal/item.lua +191 -74
- package/engine/internal/mechanics/ability-duration.lua +1 -1
- package/engine/internal/mechanics/cast-ability.lua +6 -3
- package/engine/internal/misc/ability-disable-counter.d.ts +2 -0
- package/engine/internal/misc/ability-disable-counter.lua +13 -0
- package/engine/internal/misc/damage-metadata-by-target.d.ts +2 -0
- package/engine/internal/misc/damage-metadata-by-target.lua +5 -0
- package/engine/internal/misc/frame-coordinates.d.ts +2 -0
- 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/auto-attack-speed-increase.d.ts +1 -1
- package/engine/internal/object-data/auto-attack-speed-increase.lua +2 -0
- package/engine/internal/object-data/evasion-probability.d.ts +2 -0
- package/engine/internal/object-data/evasion-probability.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 +45 -1
- package/engine/internal/unit/ability.lua +128 -17
- package/engine/internal/unit/add-item-to-slot-init.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot-init.lua +23 -0
- package/engine/internal/unit/add-item-to-slot.d.ts +2 -0
- package/engine/internal/unit/add-item-to-slot.lua +52 -0
- package/engine/internal/unit/allowed-targets.d.ts +1 -1
- package/engine/internal/unit/allowed-targets.lua +9 -1
- package/engine/internal/unit/attributes.d.ts +17 -0
- package/engine/internal/unit/attributes.lua +46 -0
- package/engine/internal/unit/bonus.d.ts +8 -2
- package/engine/internal/unit/bonus.lua +33 -1
- package/engine/internal/unit/fly-height.d.ts +7 -0
- package/engine/internal/unit/fly-height.lua +20 -0
- package/engine/internal/unit/ignore-events-items.d.ts +2 -0
- package/engine/internal/unit/ignore-events-items.lua +5 -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 +24 -0
- package/engine/internal/unit/item.lua +78 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +36 -0
- package/engine/internal/unit/order.d.ts +20 -0
- package/engine/internal/unit/order.lua +136 -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 +12 -3
- package/engine/internal/unit+damage.d.ts +2 -11
- package/engine/internal/unit+damage.lua +10 -14
- package/engine/internal/unit+spellSteal.lua +1 -2
- package/engine/internal/unit-missile-launch.lua +70 -13
- package/engine/internal/unit.d.ts +64 -30
- package/engine/internal/unit.lua +490 -285
- package/engine/internal/utility.lua +12 -0
- package/engine/lightning.d.ts +12 -5
- package/engine/lightning.lua +48 -14
- package/engine/local-client.d.ts +9 -2
- package/engine/local-client.lua +112 -0
- package/engine/object-data/auxiliary/animation-name.d.ts +1 -0
- package/engine/object-data/auxiliary/animation-name.lua +16 -0
- 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/attachment-preset.d.ts +7 -2
- package/engine/object-data/auxiliary/attachment-preset.lua +4 -3
- package/engine/object-data/auxiliary/attack-type.d.ts +7 -8
- package/engine/object-data/auxiliary/attack-type.lua +42 -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/movement-type.d.ts +7 -7
- package/engine/object-data/auxiliary/movement-type.lua +22 -0
- package/engine/object-data/auxiliary/sound-eax.d.ts +10 -0
- package/engine/object-data/auxiliary/sound-eax.lua +2 -0
- package/engine/object-data/auxiliary/sound-preset-name.d.ts +5 -1
- package/engine/object-data/auxiliary/tech-tree-dependency.d.ts +1 -1
- package/engine/object-data/auxiliary/unit-attribute.d.ts +6 -0
- package/engine/object-data/auxiliary/unit-attribute.lua +9 -0
- package/engine/object-data/entry/ability-type/berserk.d.ts +2 -0
- package/engine/object-data/entry/ability-type/berserk.lua +13 -0
- package/engine/object-data/entry/ability-type/blank-configurable.lua +12 -1
- package/engine/object-data/entry/ability-type/carrion-swarm.d.ts +14 -0
- package/engine/object-data/entry/ability-type/carrion-swarm.lua +65 -0
- package/engine/object-data/entry/ability-type/disease-cloud.lua +2 -2
- package/engine/object-data/entry/ability-type/engineering-upgrade.lua +2 -2
- package/engine/object-data/entry/ability-type/ensnare.d.ts +12 -0
- package/engine/object-data/entry/ability-type/ensnare.lua +52 -0
- package/engine/object-data/entry/ability-type/feral-spirit.lua +2 -2
- 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/permanent-invisibility.d.ts +8 -0
- package/engine/object-data/entry/ability-type/permanent-invisibility.lua +26 -0
- package/engine/object-data/entry/ability-type/phase-shift.d.ts +10 -0
- package/engine/object-data/entry/ability-type/phase-shift.lua +39 -0
- package/engine/object-data/entry/ability-type/phoenix-morph.lua +4 -4
- package/engine/object-data/entry/ability-type/raise-dead.d.ts +17 -0
- package/engine/object-data/entry/ability-type/raise-dead.lua +78 -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/shock-wave.d.ts +4 -0
- package/engine/object-data/entry/ability-type/shock-wave.lua +26 -0
- package/engine/object-data/entry/ability-type/slow-poison.d.ts +10 -0
- package/engine/object-data/entry/ability-type/slow-poison.lua +58 -0
- package/engine/object-data/entry/ability-type/summon-quilbeast.lua +2 -2
- package/engine/object-data/entry/ability-type/summon-water-elemental.lua +2 -2
- package/engine/object-data/entry/ability-type/web.d.ts +12 -0
- package/engine/object-data/entry/ability-type/web.lua +52 -0
- package/engine/object-data/entry/ability-type.d.ts +21 -17
- package/engine/object-data/entry/ability-type.lua +177 -40
- package/engine/object-data/entry/buff-type/applicable.lua +18 -37
- package/engine/object-data/entry/buff-type.d.ts +6 -12
- package/engine/object-data/entry/buff-type.lua +13 -29
- package/engine/object-data/entry/destructible-type.d.ts +28 -2
- package/engine/object-data/entry/destructible-type.lua +155 -0
- package/engine/object-data/entry/item-type.d.ts +15 -1
- package/engine/object-data/entry/item-type.lua +93 -2
- package/engine/object-data/entry/lightning-type.d.ts +1 -1
- package/engine/object-data/entry/sound-preset.d.ts +33 -0
- package/engine/object-data/entry/sound-preset.lua +140 -0
- package/engine/object-data/entry/unit-type.d.ts +25 -5
- package/engine/object-data/entry/unit-type.lua +258 -93
- package/engine/object-data/entry/upgrade.d.ts +1 -1
- package/engine/object-data/entry/upgrade.lua +4 -4
- package/engine/object-data/entry.d.ts +16 -14
- package/engine/object-data/entry.lua +60 -32
- package/engine/object-data/utility/object-data-entry-id-generator.lua +7 -0
- package/engine/object-field/ability.d.ts +28 -5
- package/engine/object-field/ability.lua +59 -5
- package/engine/object-field/unit.d.ts +72 -3
- package/engine/object-field/unit.lua +268 -7
- package/engine/object-field.d.ts +25 -6
- package/engine/object-field.lua +359 -116
- package/engine/random.d.ts +10 -0
- package/engine/random.lua +21 -0
- package/engine/standard/entries/buff-type.d.ts +3 -0
- package/engine/standard/entries/buff-type.lua +3 -0
- package/engine/standard/entries/sound-preset.d.ts +10 -0
- package/engine/standard/entries/sound-preset.lua +10 -0
- package/engine/standard/fields/ability.d.ts +4 -2
- package/engine/standard/fields/ability.lua +4 -2
- 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 +9 -0
- package/engine/unit.lua +9 -0
- package/index.d.ts +1 -0
- package/index.lua +1 -0
- package/net/socket.d.ts +7 -1
- package/net/socket.lua +45 -4
- package/network.d.ts +1 -0
- package/network.lua +3 -2
- package/objutil/buff.lua +12 -11
- package/objutil/unit.lua +8 -0
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +25 -0
- package/patch-lualib.lua +1 -1
- package/utility/arrays.d.ts +10 -1
- package/utility/arrays.lua +45 -3
- package/utility/callback-array.d.ts +17 -0
- package/utility/callback-array.lua +61 -0
- package/utility/functions.d.ts +8 -0
- package/utility/functions.lua +13 -0
- package/utility/lazy.d.ts +2 -0
- package/utility/lazy.lua +14 -0
- package/utility/linked-map.d.ts +34 -0
- package/utility/linked-map.lua +101 -0
- package/utility/linked-set.d.ts +15 -3
- package/utility/linked-set.lua +48 -3
- package/utility/lua-maps.d.ts +15 -2
- package/utility/lua-maps.lua +53 -2
- package/utility/lua-sets.d.ts +2 -0
- package/utility/lua-sets.lua +7 -0
- package/utility/records.lua +20 -1
- package/utility/reflection.lua +11 -7
- package/utility/types.d.ts +4 -0
- package/core/types/order.d.ts +0 -25
- package/core/types/order.lua +0 -55
package/network.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Event } from "./event";
|
|
3
3
|
import { Player } from "./core/types/player";
|
|
4
4
|
import { Operation, OperationContinue, OperationMonitor } from "./operation";
|
|
5
|
+
export declare const MAX_PAYLOAD_LENGTH = 255;
|
|
5
6
|
export declare const onReceive: {
|
|
6
7
|
[prefix: string]: Event<[Player, string]>;
|
|
7
8
|
} & {
|
package/network.lua
CHANGED
|
@@ -25,6 +25,7 @@ local concat = table.concat
|
|
|
25
25
|
local pack = string.pack
|
|
26
26
|
local sub = string.sub
|
|
27
27
|
local ____unpack = string.unpack
|
|
28
|
+
____exports.MAX_PAYLOAD_LENGTH = 255
|
|
28
29
|
____exports.onReceive = setmetatable(
|
|
29
30
|
{},
|
|
30
31
|
{__index = function(self, prefix)
|
|
@@ -42,11 +43,11 @@ ____exports.onReceive = setmetatable(
|
|
|
42
43
|
end}
|
|
43
44
|
)
|
|
44
45
|
function ____exports.send(id, payload)
|
|
45
|
-
if #payload >
|
|
46
|
+
if #payload > ____exports.MAX_PAYLOAD_LENGTH then
|
|
46
47
|
error(
|
|
47
48
|
__TS__New(
|
|
48
49
|
IllegalArgumentException,
|
|
49
|
-
"payload length must be <=
|
|
50
|
+
(("payload length must be <= " .. tostring(____exports.MAX_PAYLOAD_LENGTH)) .. ", but was ") .. tostring(#payload)
|
|
50
51
|
),
|
|
51
52
|
0
|
|
52
53
|
)
|
package/objutil/buff.lua
CHANGED
|
@@ -20,7 +20,6 @@ local AbilityDefinitionInnerFire = ____ability.AbilityDefinitionInnerFire
|
|
|
20
20
|
local AbilityDefinitionSearingArrows = ____ability.AbilityDefinitionSearingArrows
|
|
21
21
|
local AbilityDefinitionSlowPoison = ____ability.AbilityDefinitionSlowPoison
|
|
22
22
|
local ____unit = require("core.types.unit")
|
|
23
|
-
local AttackType = ____unit.AttackType
|
|
24
23
|
local DamageType = ____unit.DamageType
|
|
25
24
|
local Unit = ____unit.Unit
|
|
26
25
|
local ____dummy = require("core.dummy")
|
|
@@ -30,6 +29,8 @@ local ____timer = require("core.types.timer")
|
|
|
30
29
|
local Timer = ____timer.Timer
|
|
31
30
|
local ____exception = require("exception")
|
|
32
31
|
local IllegalStateException = ____exception.IllegalStateException
|
|
32
|
+
local ____linked_2Dmap = require("utility.linked-map")
|
|
33
|
+
local LinkedMap = ____linked_2Dmap.LinkedMap
|
|
33
34
|
local ____assert = _G.assert
|
|
34
35
|
local ____pairs = _G.pairs
|
|
35
36
|
____exports.BuffDefinition = __TS__Class()
|
|
@@ -462,7 +463,7 @@ local buffs = setmetatable(
|
|
|
462
463
|
{
|
|
463
464
|
__mode = "k",
|
|
464
465
|
__index = function(self, unit)
|
|
465
|
-
local ____table =
|
|
466
|
+
local ____table = __TS__New(LinkedMap)
|
|
466
467
|
self[unit] = ____table
|
|
467
468
|
return ____table
|
|
468
469
|
end
|
|
@@ -495,7 +496,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
|
|
|
495
496
|
end
|
|
496
497
|
local constructor = self.constructor
|
|
497
498
|
local instances = buffs[unit]
|
|
498
|
-
local instance = instances
|
|
499
|
+
local instance = instances:get(constructor)
|
|
499
500
|
if instance then
|
|
500
501
|
instance:destroy()
|
|
501
502
|
if not instance.destroyed then
|
|
@@ -508,7 +509,7 @@ function Buff.prototype.____constructor(self, unit, source, duration, level, pre
|
|
|
508
509
|
)
|
|
509
510
|
end
|
|
510
511
|
end
|
|
511
|
-
instances
|
|
512
|
+
instances:put(constructor, self)
|
|
512
513
|
if preset then
|
|
513
514
|
local unitHandle = unit.handle
|
|
514
515
|
local slowPoisonMethod = not preset.positive and not preset.magic
|
|
@@ -587,13 +588,13 @@ function Buff.apply(self, ...)
|
|
|
587
588
|
end
|
|
588
589
|
end
|
|
589
590
|
function Buff.getInstance(self, unit)
|
|
590
|
-
return buffs[unit]
|
|
591
|
+
return buffs[unit]:get(self)
|
|
591
592
|
end
|
|
592
593
|
function Buff.isApplied(self, unit)
|
|
593
|
-
return buffs[unit]
|
|
594
|
+
return buffs[unit]:get(self) ~= nil
|
|
594
595
|
end
|
|
595
596
|
function Buff.ifApplied(self, unit, action)
|
|
596
|
-
local instance = buffs[unit]
|
|
597
|
+
local instance = buffs[unit]:get(self)
|
|
597
598
|
if instance then
|
|
598
599
|
____assert(__TS__InstanceOf(instance, self))
|
|
599
600
|
action(instance)
|
|
@@ -616,7 +617,7 @@ function Buff.prototype.destroy(self)
|
|
|
616
617
|
if self.preset then
|
|
617
618
|
self.unit:removeAbility(self.preset.buffId)
|
|
618
619
|
end
|
|
619
|
-
buffs[self.unit]
|
|
620
|
+
buffs[self.unit]:remove(self.constructor)
|
|
620
621
|
self.destroyed = true
|
|
621
622
|
end
|
|
622
623
|
function Buff.prototype.onDispel(self, source)
|
|
@@ -756,14 +757,14 @@ for ____, pointDispelAbilityId in ipairs(pointDispelAbilityIds) do
|
|
|
756
757
|
end)
|
|
757
758
|
end
|
|
758
759
|
Unit.onDamaging:addListener(function(source, target, event)
|
|
759
|
-
if event.amount == 0 and event.attackType ==
|
|
760
|
+
if event.amount == 0 and event.attackType == 0 and event.damageType == DamageType.NORMAL and not event.isAttack then
|
|
760
761
|
Timer:run(function()
|
|
761
762
|
checkBuffs(target, true, source)
|
|
762
763
|
end)
|
|
763
764
|
end
|
|
764
765
|
end)
|
|
765
|
-
Unit.
|
|
766
|
-
if item.
|
|
766
|
+
Unit.itemPickedUpEvent:addListener(function(unit, item)
|
|
767
|
+
if item.isPowerUp and item:hasAbility(fourCC("APdi")) then
|
|
767
768
|
end
|
|
768
769
|
end)
|
|
769
770
|
return ____exports
|
package/objutil/unit.lua
CHANGED
|
@@ -11,6 +11,8 @@ local ____exports = {}
|
|
|
11
11
|
local ____object = require("objutil.object")
|
|
12
12
|
local ObjectDefinition = ____object.ObjectDefinition
|
|
13
13
|
local idgen = require("objutil.idgen")
|
|
14
|
+
local ____config = require("config")
|
|
15
|
+
local WarscriptConfig = ____config.WarscriptConfig
|
|
14
16
|
local attackTypes = setmetatable(
|
|
15
17
|
{
|
|
16
18
|
normal = "normal",
|
|
@@ -593,6 +595,9 @@ __TS__SetDescriptor(
|
|
|
593
595
|
end,
|
|
594
596
|
set = function(self, v)
|
|
595
597
|
self:setStringField("umdl", v)
|
|
598
|
+
if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
599
|
+
self:setStringField("upor", "")
|
|
600
|
+
end
|
|
596
601
|
end
|
|
597
602
|
},
|
|
598
603
|
true
|
|
@@ -606,6 +611,9 @@ __TS__SetDescriptor(
|
|
|
606
611
|
end,
|
|
607
612
|
set = function(self, v)
|
|
608
613
|
self.object:setField("umdl:hd", v)
|
|
614
|
+
if WarscriptConfig.AUTOMATICALLY_SET_UNIT_TYPE_PORTRAIT_MODEL_PATH then
|
|
615
|
+
self.object:setField("upor:hd", "")
|
|
616
|
+
end
|
|
609
617
|
end
|
|
610
618
|
},
|
|
611
619
|
true
|
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.b23de5c",
|
|
5
5
|
"description": "A typescript library for Warcraft III using Warpack.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"warcraft",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@warscript/language-extensions": "^0.0.1",
|
|
25
25
|
"@warscript/tstl-plugin": "^0.0.4",
|
|
26
26
|
"lua-types": "^2.13.1",
|
|
27
|
-
"warpack": "0.0.1-dev.
|
|
27
|
+
"warpack": "0.0.1-dev.e490aaf"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@typescript-eslint/eslint-plugin": "^8.13.0",
|
package/patch-lua.d.ts
ADDED
|
File without changes
|
package/patch-lua.lua
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
local error = _G.error
|
|
2
|
+
local getmetatable = _G.getmetatable
|
|
3
|
+
local ipairs = _G.ipairs
|
|
4
|
+
local select = _G.select
|
|
5
|
+
local tostring = _G.tostring
|
|
6
|
+
local tableconcat = table.concat
|
|
7
|
+
|
|
8
|
+
_G.ipairs = function(t)
|
|
9
|
+
local metatable = getmetatable(t)
|
|
10
|
+
if metatable and metatable.__ipairs then
|
|
11
|
+
return metatable.__ipairs(t)
|
|
12
|
+
end
|
|
13
|
+
return ipairs(t)
|
|
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;
|
|
@@ -22,6 +23,7 @@ export declare const mapToLuaSet: {
|
|
|
22
23
|
<T, R extends AnyNotNil>(array: readonly T[], transform: (value: T) => R): LuaSet<R>;
|
|
23
24
|
<T, K extends KeysOfType<T, AnyNotNil>>(array: readonly T[], key: K): LuaSet<T[K] extends AnyNotNil ? T[K] : never>;
|
|
24
25
|
};
|
|
26
|
+
export declare const flatten: <T>(array: readonly (readonly T[])[]) => T[];
|
|
25
27
|
export declare const flatMap: {
|
|
26
28
|
<T, R>(array: readonly T[], transform: (value: T) => readonly R[]): R[];
|
|
27
29
|
<T, K extends KeysOfType<T, readonly any[]>>(array: readonly T[], key: K): (T[K] extends readonly (infer R)[] ? R : never)[];
|
|
@@ -32,7 +34,10 @@ export declare const flatMapToLuaSet: {
|
|
|
32
34
|
};
|
|
33
35
|
export declare const mapIndexed: <T, R>(array: readonly T[], transform: (index: number, value: T) => R) => R[];
|
|
34
36
|
export declare const associate: <T, K extends AnyNotNil, V>(array: readonly T[], keySelector: (value: T) => K, valueSelector: (value: T) => V) => LuaMap<K, V>;
|
|
35
|
-
export declare const associateBy:
|
|
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
|
+
};
|
|
36
41
|
export declare const associateByIndexed: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (index: number, value: V) => K) => LuaMap<K, V>;
|
|
37
42
|
export declare const associateWith: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (value: K) => V) => LuaMap<K, V>;
|
|
38
43
|
export declare const associateWithIndexed: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (index: number, value: K) => V) => LuaMap<K, V>;
|
|
@@ -41,6 +46,10 @@ export declare const average: (array: readonly number[]) => number;
|
|
|
41
46
|
export declare const sum: (array: readonly number[]) => number;
|
|
42
47
|
export declare const product: (array: readonly number[]) => number;
|
|
43
48
|
export declare const max: (array: readonly number[]) => number;
|
|
49
|
+
export declare const maxBy: {
|
|
50
|
+
<T, Args extends any[]>(array: readonly T[], selector: (value: T, ...args: Args) => number, ...args: Args): T | undefined;
|
|
51
|
+
<T, K extends KeysOfType<T, number>>(array: readonly T[], key: K): T | undefined;
|
|
52
|
+
};
|
|
44
53
|
export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
|
|
45
54
|
export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
|
|
46
55
|
export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
|
package/utility/arrays.lua
CHANGED
|
@@ -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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
|
@@ -251,6 +269,30 @@ ____exports.max = function(array)
|
|
|
251
269
|
end
|
|
252
270
|
return mathMax(table.unpack(array))
|
|
253
271
|
end
|
|
272
|
+
____exports.maxBy = function(array, selector, ...)
|
|
273
|
+
local result = nil
|
|
274
|
+
local maxValue = -math.huge
|
|
275
|
+
if type(selector) == "function" then
|
|
276
|
+
for i = 1, #array do
|
|
277
|
+
local element = array[i]
|
|
278
|
+
local value = selector(element, ...)
|
|
279
|
+
if value > maxValue then
|
|
280
|
+
result = element
|
|
281
|
+
maxValue = value
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
else
|
|
285
|
+
for i = 1, #array do
|
|
286
|
+
local element = array[i]
|
|
287
|
+
local value = element[selector]
|
|
288
|
+
if value > maxValue then
|
|
289
|
+
result = element
|
|
290
|
+
maxValue = value
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
end
|
|
294
|
+
return result
|
|
295
|
+
end
|
|
254
296
|
____exports.intersperse = function(array, delimiter)
|
|
255
297
|
local result = {}
|
|
256
298
|
local length = #array
|
|
@@ -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
|
@@ -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;
|
package/utility/functions.lua
CHANGED
|
@@ -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
|
package/utility/lazy.lua
ADDED
|
@@ -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,34 @@
|
|
|
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 __linkedSet: 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 __pairs(this: LinkedMap<K, V>): LuaIterator<LuaMultiReturn<[K | undefined, V | undefined]>, IteratorState<K, V>>;
|
|
31
|
+
}
|
|
32
|
+
export declare const emptyLinkedMap: <K extends AnyNotNil, V>() => ReadonlyLinkedMap<K, V>;
|
|
33
|
+
export declare const mutableLinkedMap: <K extends AnyNotNil, V>() => LinkedMap<K, V>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,101 @@
|
|
|
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.__pairs(self)
|
|
51
|
+
return linkedMapNext, {n = self.k.f, t = self.k.n, v = self.v}, nil
|
|
52
|
+
end
|
|
53
|
+
__TS__SetDescriptor(
|
|
54
|
+
LinkedMap.prototype,
|
|
55
|
+
"keys",
|
|
56
|
+
{get = function(self)
|
|
57
|
+
return self.k
|
|
58
|
+
end},
|
|
59
|
+
true
|
|
60
|
+
)
|
|
61
|
+
__TS__SetDescriptor(
|
|
62
|
+
LinkedMap.prototype,
|
|
63
|
+
"size",
|
|
64
|
+
{get = function(self)
|
|
65
|
+
return self.keys.size
|
|
66
|
+
end},
|
|
67
|
+
true
|
|
68
|
+
)
|
|
69
|
+
local emptyIteratorState = {t = {}, v = {}}
|
|
70
|
+
local EmptyLinkedMap = __TS__Class()
|
|
71
|
+
EmptyLinkedMap.name = "EmptyLinkedMap"
|
|
72
|
+
__TS__ClassExtends(EmptyLinkedMap, ____exports.LinkedMap)
|
|
73
|
+
function EmptyLinkedMap.prototype.getOrPut(self)
|
|
74
|
+
error(
|
|
75
|
+
__TS__New(UnsupportedOperationException),
|
|
76
|
+
0
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
function EmptyLinkedMap.prototype.put(self)
|
|
80
|
+
error(
|
|
81
|
+
__TS__New(UnsupportedOperationException),
|
|
82
|
+
0
|
|
83
|
+
)
|
|
84
|
+
end
|
|
85
|
+
function EmptyLinkedMap.prototype.remove(self)
|
|
86
|
+
error(
|
|
87
|
+
__TS__New(UnsupportedOperationException),
|
|
88
|
+
0
|
|
89
|
+
)
|
|
90
|
+
end
|
|
91
|
+
function EmptyLinkedMap.prototype.__pairs(self)
|
|
92
|
+
return linkedMapNext, emptyIteratorState, nil
|
|
93
|
+
end
|
|
94
|
+
local EMPTY_LINKED_MAP = __TS__New(EmptyLinkedMap)
|
|
95
|
+
____exports.emptyLinkedMap = function()
|
|
96
|
+
return EMPTY_LINKED_MAP
|
|
97
|
+
end
|
|
98
|
+
____exports.mutableLinkedMap = function()
|
|
99
|
+
return __TS__New(____exports.LinkedMap)
|
|
100
|
+
end
|
|
101
|
+
return ____exports
|
package/utility/linked-set.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
|
+
import { NonEmptyArray, ReadonlyNonEmptyArray } from "./types";
|
|
2
3
|
type IteratorState<T extends AnyNotNil> = {
|
|
3
4
|
t: LuaMap<T, T>;
|
|
4
5
|
n?: T;
|
|
@@ -13,11 +14,16 @@ export interface ReadonlyLinkedSet<T extends AnyNotNil> extends LuaPairsKeyItera
|
|
|
13
14
|
next(key: T): T | undefined;
|
|
14
15
|
previous(key: T): T | undefined;
|
|
15
16
|
contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
|
|
16
|
-
size: number;
|
|
17
|
+
readonly size: number;
|
|
17
18
|
forEach<Args extends any[]>(action: (value: T, ...args: Args) => void, ...args: Args): void;
|
|
18
19
|
toArray(): T[];
|
|
19
20
|
sumOf(selector: ((value: T) => number) | KeysOfType<T, number>): number;
|
|
20
21
|
}
|
|
22
|
+
export interface ReadonlyNonEmptyLinkedSet<T extends AnyNotNil> extends ReadonlyLinkedSet<T> {
|
|
23
|
+
first(): T;
|
|
24
|
+
last(): T;
|
|
25
|
+
toArray(): NonEmptyArray<T>;
|
|
26
|
+
}
|
|
21
27
|
export interface LinkedSet<T extends AnyNotNil> extends LuaPairsKeyIterable<T> {
|
|
22
28
|
readonly __linkedSet: unique symbol;
|
|
23
29
|
}
|
|
@@ -30,9 +36,11 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
|
|
|
30
36
|
copyOf(): LinkedSet<T>;
|
|
31
37
|
first(): T | undefined;
|
|
32
38
|
last(): T | undefined;
|
|
39
|
+
pop(): T | undefined;
|
|
33
40
|
next(key: T): T | undefined;
|
|
34
41
|
previous(key: T): T | undefined;
|
|
35
42
|
add(key: T): boolean;
|
|
43
|
+
protected addBefore(value: T, key: T): boolean;
|
|
36
44
|
remove(key: T): boolean;
|
|
37
45
|
contains(key: AnyNotNil): key is T & OneSidedTypeGuard;
|
|
38
46
|
clear(): void;
|
|
@@ -44,6 +52,10 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
|
|
|
44
52
|
protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
|
|
45
53
|
}
|
|
46
54
|
export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
|
|
47
|
-
export declare const
|
|
48
|
-
export declare const
|
|
55
|
+
export declare const mutableLinkedSet: <T extends AnyNotNil>() => LinkedSet<T>;
|
|
56
|
+
export declare const mutableLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => LinkedSet<T>;
|
|
57
|
+
export declare const mutableLinkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
|
|
58
|
+
export declare const linkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
|
|
59
|
+
export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
|
|
60
|
+
export declare const nonEmptyLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyNonEmptyArray<T>) => ReadonlyNonEmptyLinkedSet<T>;
|
|
49
61
|
export {};
|