warscript 0.0.1-dev.d30161d → 0.0.1-dev.dbb3984
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/core/types/effect.d.ts +12 -3
- package/core/types/effect.lua +56 -7
- package/core/types/frame.d.ts +6 -0
- package/core/types/frame.lua +91 -1
- package/core/util.d.ts +1 -1
- package/core/util.lua +6 -0
- package/engine/behavior.d.ts +2 -2
- package/engine/behavior.lua +6 -6
- package/engine/behaviour/ability/apply-buff.d.ts +3 -5
- package/engine/behaviour/unit.d.ts +5 -0
- package/engine/behaviour/unit.lua +20 -0
- package/engine/buff.d.ts +38 -12
- package/engine/buff.lua +171 -79
- package/engine/internal/ability.d.ts +3 -11
- package/engine/internal/ability.lua +9 -78
- package/engine/internal/item+owner.lua +2 -2
- package/engine/internal/unit/ability.lua +0 -14
- package/engine/internal/unit/bonus.d.ts +4 -2
- package/engine/internal/unit/bonus.lua +6 -1
- package/engine/internal/unit/item.d.ts +24 -0
- package/engine/internal/unit/item.lua +84 -0
- package/engine/internal/unit/main-selected.d.ts +13 -0
- package/engine/internal/unit/main-selected.lua +51 -0
- package/engine/internal/unit+ability.lua +2 -2
- package/engine/internal/unit-missile-launch.lua +24 -5
- package/engine/internal/unit.d.ts +24 -10
- package/engine/internal/unit.lua +102 -71
- package/engine/local-client.d.ts +7 -2
- package/engine/local-client.lua +82 -0
- package/engine/object-data/entry/item-type.d.ts +12 -0
- package/engine/object-data/entry/item-type.lua +78 -0
- package/engine/object-field/ability.d.ts +17 -0
- package/engine/object-field/ability.lua +51 -1
- package/engine/unit.d.ts +2 -0
- package/engine/unit.lua +2 -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 +1 -1
- package/package.json +2 -2
- package/patch-lua.d.ts +0 -0
- package/patch-lua.lua +10 -0
- package/utility/arrays.d.ts +8 -1
- package/utility/arrays.lua +34 -3
- package/utility/linked-set.d.ts +11 -2
- package/utility/linked-set.lua +5 -2
- package/utility/types.d.ts +1 -0
|
@@ -13,6 +13,8 @@ local ObjectField = ____object_2Dfield.ObjectField
|
|
|
13
13
|
local ObjectLevelField = ____object_2Dfield.ObjectLevelField
|
|
14
14
|
local ____ability_2Dtype = require("engine.object-data.entry.ability-type")
|
|
15
15
|
local AbilityType = ____ability_2Dtype.AbilityType
|
|
16
|
+
local ____linked_2Dset = require("utility.linked-set")
|
|
17
|
+
local nonEmptyLinkedSetOf = ____linked_2Dset.nonEmptyLinkedSetOf
|
|
16
18
|
local convertAbilityBooleanField = _G.ConvertAbilityBooleanField
|
|
17
19
|
local convertAbilityIntegerField = _G.ConvertAbilityIntegerField
|
|
18
20
|
local convertAbilityRealField = _G.ConvertAbilityRealField
|
|
@@ -259,7 +261,7 @@ local AbilityLevelField = ____exports.AbilityLevelField
|
|
|
259
261
|
AbilityLevelField.name = "AbilityLevelField"
|
|
260
262
|
__TS__ClassExtends(AbilityLevelField, ObjectLevelField)
|
|
261
263
|
function AbilityLevelField.prototype.getLevelCount(self, entry)
|
|
262
|
-
return
|
|
264
|
+
return entry.levelCount
|
|
263
265
|
end
|
|
264
266
|
function AbilityLevelField.prototype.getObjectDataEntryId(self, instance)
|
|
265
267
|
return instance.typeId
|
|
@@ -431,6 +433,54 @@ ____exports.AbilityUnitTypeIdLevelField = __TS__Class()
|
|
|
431
433
|
local AbilityUnitTypeIdLevelField = ____exports.AbilityUnitTypeIdLevelField
|
|
432
434
|
AbilityUnitTypeIdLevelField.name = "AbilityUnitTypeIdLevelField"
|
|
433
435
|
__TS__ClassExtends(AbilityUnitTypeIdLevelField, ____exports.AbilityObjectDataEntryIdLevelField)
|
|
436
|
+
____exports.AbilityEnumLevelField = __TS__Class()
|
|
437
|
+
local AbilityEnumLevelField = ____exports.AbilityEnumLevelField
|
|
438
|
+
AbilityEnumLevelField.name = "AbilityEnumLevelField"
|
|
439
|
+
__TS__ClassExtends(AbilityEnumLevelField, ____exports.AbilityLevelField)
|
|
440
|
+
function AbilityEnumLevelField.prototype.getNativeFieldById(self, id)
|
|
441
|
+
return convertAbilityIntegerLevelField(id)
|
|
442
|
+
end
|
|
443
|
+
function AbilityEnumLevelField.prototype.getNativeFieldValue(self, instance, level)
|
|
444
|
+
local value = instance:getField(self.nativeField, level)
|
|
445
|
+
if self.values:contains(value) then
|
|
446
|
+
return value
|
|
447
|
+
end
|
|
448
|
+
return self.values:first()
|
|
449
|
+
end
|
|
450
|
+
function AbilityEnumLevelField.prototype.setNativeFieldValue(self, instance, level, value)
|
|
451
|
+
return instance:setField(self.nativeField, level, value)
|
|
452
|
+
end
|
|
453
|
+
__TS__SetDescriptor(
|
|
454
|
+
AbilityEnumLevelField.prototype,
|
|
455
|
+
"defaultValue",
|
|
456
|
+
{get = function(self)
|
|
457
|
+
return self.values:first()
|
|
458
|
+
end},
|
|
459
|
+
true
|
|
460
|
+
)
|
|
461
|
+
__TS__ObjectDefineProperty(
|
|
462
|
+
AbilityEnumLevelField,
|
|
463
|
+
"valueChangeEvent",
|
|
464
|
+
{get = function(self)
|
|
465
|
+
return self:getOrCreateValueChangeEvent()
|
|
466
|
+
end}
|
|
467
|
+
)
|
|
468
|
+
____exports.AbilityBuffPolarityLevelField = __TS__Class()
|
|
469
|
+
local AbilityBuffPolarityLevelField = ____exports.AbilityBuffPolarityLevelField
|
|
470
|
+
AbilityBuffPolarityLevelField.name = "AbilityBuffPolarityLevelField"
|
|
471
|
+
__TS__ClassExtends(AbilityBuffPolarityLevelField, ____exports.AbilityEnumLevelField)
|
|
472
|
+
function AbilityBuffPolarityLevelField.prototype.____constructor(self, ...)
|
|
473
|
+
AbilityBuffPolarityLevelField.____super.prototype.____constructor(self, ...)
|
|
474
|
+
self.values = nonEmptyLinkedSetOf(0, 1, 2)
|
|
475
|
+
end
|
|
476
|
+
____exports.AbilityBuffResistanceTypeLevelField = __TS__Class()
|
|
477
|
+
local AbilityBuffResistanceTypeLevelField = ____exports.AbilityBuffResistanceTypeLevelField
|
|
478
|
+
AbilityBuffResistanceTypeLevelField.name = "AbilityBuffResistanceTypeLevelField"
|
|
479
|
+
__TS__ClassExtends(AbilityBuffResistanceTypeLevelField, ____exports.AbilityEnumLevelField)
|
|
480
|
+
function AbilityBuffResistanceTypeLevelField.prototype.____constructor(self, ...)
|
|
481
|
+
AbilityBuffResistanceTypeLevelField.____super.prototype.____constructor(self, ...)
|
|
482
|
+
self.values = nonEmptyLinkedSetOf(1, 2, 3)
|
|
483
|
+
end
|
|
434
484
|
local allowedTargetCombatClassificationsByLevelByAbilityTypeId = postcompile(function()
|
|
435
485
|
local allowedTargetCombatClassificationsByLevelByAbilityTypeId = {}
|
|
436
486
|
for ____, abilityType in ipairs(AbilityType:getAll()) do
|
package/engine/unit.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import "./internal/unit/ability";
|
|
|
4
4
|
import "./internal/unit/allowed-targets";
|
|
5
5
|
import "./internal/unit/buff";
|
|
6
6
|
import "./internal/unit/expiration-timer";
|
|
7
|
+
import "./internal/unit/item";
|
|
7
8
|
import "./internal/unit+ability";
|
|
8
9
|
import "./internal/unit+damage";
|
|
9
10
|
import "./internal/unit+rally";
|
|
@@ -15,6 +16,7 @@ import "./internal/unit-missile-launch";
|
|
|
15
16
|
import "./internal/unit/ghost-counter";
|
|
16
17
|
import "./internal/unit/invulnerability-counter";
|
|
17
18
|
import "./internal/unit/detach-missiles";
|
|
19
|
+
import "./internal/unit/main-selected";
|
|
18
20
|
import "./internal/unit/band-aids/ancestral-spirit-cannibalize";
|
|
19
21
|
export { Unit, DamagingEvent, DamageEvent } from "./internal/unit";
|
|
20
22
|
export * from "./internal/unit+damage";
|
package/engine/unit.lua
CHANGED
|
@@ -4,6 +4,7 @@ require("engine.internal.unit.ability")
|
|
|
4
4
|
require("engine.internal.unit.allowed-targets")
|
|
5
5
|
require("engine.internal.unit.buff")
|
|
6
6
|
require("engine.internal.unit.expiration-timer")
|
|
7
|
+
require("engine.internal.unit.item")
|
|
7
8
|
require("engine.internal.unit+ability")
|
|
8
9
|
require("engine.internal.unit+damage")
|
|
9
10
|
require("engine.internal.unit+rally")
|
|
@@ -15,6 +16,7 @@ require("engine.internal.unit-missile-launch")
|
|
|
15
16
|
require("engine.internal.unit.ghost-counter")
|
|
16
17
|
require("engine.internal.unit.invulnerability-counter")
|
|
17
18
|
require("engine.internal.unit.detach-missiles")
|
|
19
|
+
require("engine.internal.unit.main-selected")
|
|
18
20
|
require("engine.internal.unit.band-aids.ancestral-spirit-cannibalize")
|
|
19
21
|
do
|
|
20
22
|
local ____unit = require("engine.internal.unit")
|
package/index.d.ts
CHANGED
package/index.lua
CHANGED
package/net/socket.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/** @noSelfInFile */
|
|
2
2
|
import { Event } from "../event";
|
|
3
3
|
import { Player } from "../core/types/player";
|
|
4
|
+
declare const enum SocketPropertyKey {
|
|
5
|
+
ID = 0,
|
|
6
|
+
CHUNK_ID = 1
|
|
7
|
+
}
|
|
4
8
|
export declare class Socket {
|
|
5
|
-
private readonly
|
|
9
|
+
private readonly [SocketPropertyKey.ID];
|
|
10
|
+
private readonly [SocketPropertyKey.CHUNK_ID];
|
|
6
11
|
readonly onMessage: Event<[Player, string]>;
|
|
7
12
|
constructor();
|
|
8
13
|
send(data: string): void;
|
|
9
14
|
}
|
|
15
|
+
export {};
|
package/net/socket.lua
CHANGED
|
@@ -7,6 +7,11 @@ local Event = ____event.Event
|
|
|
7
7
|
local ____network = require("network")
|
|
8
8
|
local send = ____network.send
|
|
9
9
|
local onReceive = ____network.onReceive
|
|
10
|
+
local MAX_PAYLOAD_LENGTH = ____network.MAX_PAYLOAD_LENGTH
|
|
11
|
+
local ____math = require("math")
|
|
12
|
+
local ceil = ____math.ceil
|
|
13
|
+
local stringSub = string.sub
|
|
14
|
+
local tableConcat = table.concat
|
|
10
15
|
local nextId = 0
|
|
11
16
|
____exports.Socket = __TS__Class()
|
|
12
17
|
local Socket = ____exports.Socket
|
|
@@ -14,13 +19,49 @@ Socket.name = "Socket"
|
|
|
14
19
|
function Socket.prototype.____constructor(self)
|
|
15
20
|
local ____tostring_0 = tostring
|
|
16
21
|
nextId = nextId + 1
|
|
17
|
-
self
|
|
22
|
+
self[0] = ____tostring_0(nextId)
|
|
23
|
+
local ____tostring_1 = tostring
|
|
24
|
+
nextId = nextId + 1
|
|
25
|
+
self[1] = ____tostring_1(nextId)
|
|
18
26
|
self.onMessage = __TS__New(Event)
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
local chunksByPlayer = {}
|
|
28
|
+
onReceive[self[0]]:addListener(function(sender, data)
|
|
29
|
+
local chunks = chunksByPlayer[sender]
|
|
30
|
+
if chunks ~= nil then
|
|
31
|
+
chunks[#chunks + 1] = data
|
|
32
|
+
Event.invoke(
|
|
33
|
+
self.onMessage,
|
|
34
|
+
sender,
|
|
35
|
+
tableConcat(chunks)
|
|
36
|
+
)
|
|
37
|
+
chunksByPlayer[sender] = nil
|
|
38
|
+
else
|
|
39
|
+
Event.invoke(self.onMessage, sender, data)
|
|
40
|
+
end
|
|
41
|
+
end)
|
|
42
|
+
onReceive[self[1]]:addListener(function(sender, data)
|
|
43
|
+
local chunks = chunksByPlayer[sender]
|
|
44
|
+
if chunks == nil then
|
|
45
|
+
chunks = {}
|
|
46
|
+
chunksByPlayer[sender] = chunks
|
|
47
|
+
end
|
|
48
|
+
chunks[#chunks + 1] = data
|
|
21
49
|
end)
|
|
22
50
|
end
|
|
23
51
|
function Socket.prototype.send(self, data)
|
|
24
|
-
|
|
52
|
+
local chunks = ceil(#data / MAX_PAYLOAD_LENGTH) - 1
|
|
53
|
+
local offset = 1
|
|
54
|
+
for _ = 0, chunks - 1 do
|
|
55
|
+
local nextOffset = offset + MAX_PAYLOAD_LENGTH
|
|
56
|
+
send(
|
|
57
|
+
self[1],
|
|
58
|
+
stringSub(data, offset, nextOffset - 1)
|
|
59
|
+
)
|
|
60
|
+
offset = nextOffset
|
|
61
|
+
end
|
|
62
|
+
send(
|
|
63
|
+
self[0],
|
|
64
|
+
stringSub(data, offset)
|
|
65
|
+
)
|
|
25
66
|
end
|
|
26
67
|
return ____exports
|
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
|
@@ -762,7 +762,7 @@ Unit.onDamaging:addListener(function(source, target, event)
|
|
|
762
762
|
end)
|
|
763
763
|
end
|
|
764
764
|
end)
|
|
765
|
-
Unit.
|
|
765
|
+
Unit.itemPickedUpEvent:addListener(function(unit, item)
|
|
766
766
|
if item.powerup and item:hasAbility(fourCC("APdi")) then
|
|
767
767
|
end
|
|
768
768
|
end)
|
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.dbb3984",
|
|
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.880fc91"
|
|
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
package/utility/arrays.d.ts
CHANGED
|
@@ -32,7 +32,10 @@ export declare const flatMapToLuaSet: {
|
|
|
32
32
|
};
|
|
33
33
|
export declare const mapIndexed: <T, R>(array: readonly T[], transform: (index: number, value: T) => R) => R[];
|
|
34
34
|
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:
|
|
35
|
+
export declare const associateBy: {
|
|
36
|
+
<K extends AnyNotNil, V>(array: readonly V[], keySelector: (value: V) => K): LuaMap<K, V>;
|
|
37
|
+
<K extends KeysOfType<V, AnyNotNil>, V>(array: readonly V[], keySelector: K): LuaMap<V[K] extends AnyNotNil ? V[K] : never, V>;
|
|
38
|
+
};
|
|
36
39
|
export declare const associateByIndexed: <K extends AnyNotNil, V>(array: readonly V[], keySelector: (index: number, value: V) => K) => LuaMap<K, V>;
|
|
37
40
|
export declare const associateWith: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (value: K) => V) => LuaMap<K, V>;
|
|
38
41
|
export declare const associateWithIndexed: <K extends AnyNotNil, V>(array: readonly K[], valueSelector: (index: number, value: K) => V) => LuaMap<K, V>;
|
|
@@ -41,6 +44,10 @@ export declare const average: (array: readonly number[]) => number;
|
|
|
41
44
|
export declare const sum: (array: readonly number[]) => number;
|
|
42
45
|
export declare const product: (array: readonly number[]) => number;
|
|
43
46
|
export declare const max: (array: readonly number[]) => number;
|
|
47
|
+
export declare const maxBy: {
|
|
48
|
+
<T, Args extends any[]>(array: readonly T[], selector: (value: T, ...args: Args) => number, ...args: Args): T | undefined;
|
|
49
|
+
<T, K extends KeysOfType<T, number>>(array: readonly T[], key: K): T | undefined;
|
|
50
|
+
};
|
|
44
51
|
export declare const intersperse: <T>(array: readonly T[], delimiter: T) => T[];
|
|
45
52
|
export declare const zip: <T, R, V>(array: readonly T[], otherArray: readonly R[], transform: (value: T, otherValue: R) => V) => V[];
|
|
46
53
|
export declare const chunked: <T>(array: readonly T[], size: number) => T[][];
|
package/utility/arrays.lua
CHANGED
|
@@ -178,9 +178,16 @@ ____exports.associate = function(array, keySelector, valueSelector)
|
|
|
178
178
|
end
|
|
179
179
|
____exports.associateBy = function(array, keySelector)
|
|
180
180
|
local result = {}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
181
|
+
if type(keySelector) == "function" then
|
|
182
|
+
for i = 1, #array do
|
|
183
|
+
local value = array[i]
|
|
184
|
+
result[keySelector(value)] = value
|
|
185
|
+
end
|
|
186
|
+
else
|
|
187
|
+
for i = 1, #array do
|
|
188
|
+
local value = array[i]
|
|
189
|
+
result[value[keySelector]] = value
|
|
190
|
+
end
|
|
184
191
|
end
|
|
185
192
|
return result
|
|
186
193
|
end
|
|
@@ -251,6 +258,30 @@ ____exports.max = function(array)
|
|
|
251
258
|
end
|
|
252
259
|
return mathMax(table.unpack(array))
|
|
253
260
|
end
|
|
261
|
+
____exports.maxBy = function(array, selector, ...)
|
|
262
|
+
local result = nil
|
|
263
|
+
local maxValue = -math.huge
|
|
264
|
+
if type(selector) == "function" then
|
|
265
|
+
for i = 1, #array do
|
|
266
|
+
local element = array[i]
|
|
267
|
+
local value = selector(element, ...)
|
|
268
|
+
if value > maxValue then
|
|
269
|
+
result = element
|
|
270
|
+
maxValue = value
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
else
|
|
274
|
+
for i = 1, #array do
|
|
275
|
+
local element = array[i]
|
|
276
|
+
local value = element[selector]
|
|
277
|
+
if value > maxValue then
|
|
278
|
+
result = element
|
|
279
|
+
maxValue = value
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
return result
|
|
284
|
+
end
|
|
254
285
|
____exports.intersperse = function(array, delimiter)
|
|
255
286
|
local result = {}
|
|
256
287
|
local length = #array
|
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;
|
|
@@ -18,6 +19,11 @@ export interface ReadonlyLinkedSet<T extends AnyNotNil> extends LuaPairsKeyItera
|
|
|
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
|
}
|
|
@@ -44,6 +50,9 @@ export declare class LinkedSet<T extends AnyNotNil> implements ReadonlyLinkedSet
|
|
|
44
50
|
protected __pairs(this: LinkedSet<T>): LuaIterator<T | undefined, IteratorState<T>>;
|
|
45
51
|
}
|
|
46
52
|
export declare const emptyLinkedSet: <T extends AnyNotNil>() => ReadonlyLinkedSet<T>;
|
|
47
|
-
export declare const
|
|
48
|
-
export declare const
|
|
53
|
+
export declare const mutableLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => LinkedSet<T>;
|
|
54
|
+
export declare const mutableLinkedSetOfNotNull: <T extends AnyNotNil>(...elements: readonly (T | undefined | null)[]) => LinkedSet<T>;
|
|
55
|
+
export declare const linkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
|
|
56
|
+
export declare const linkedSetOfNotNull: <T extends AnyNotNil>(...elements: ReadonlyArray<T>) => ReadonlyLinkedSet<T>;
|
|
57
|
+
export declare const nonEmptyLinkedSetOf: <T extends AnyNotNil>(...elements: ReadonlyNonEmptyArray<T>) => ReadonlyNonEmptyLinkedSet<T>;
|
|
49
58
|
export {};
|
package/utility/linked-set.lua
CHANGED
|
@@ -177,14 +177,14 @@ local EMPTY_LINKED_SET = __TS__New(EmptyLinkedSet)
|
|
|
177
177
|
____exports.emptyLinkedSet = function()
|
|
178
178
|
return EMPTY_LINKED_SET
|
|
179
179
|
end
|
|
180
|
-
____exports.
|
|
180
|
+
____exports.mutableLinkedSetOf = function(...)
|
|
181
181
|
local linkedSet = __TS__New(____exports.LinkedSet)
|
|
182
182
|
for i = 1, select("#", ...) do
|
|
183
183
|
linkedSet:add((select(i, ...)))
|
|
184
184
|
end
|
|
185
185
|
return linkedSet
|
|
186
186
|
end
|
|
187
|
-
____exports.
|
|
187
|
+
____exports.mutableLinkedSetOfNotNull = function(...)
|
|
188
188
|
local linkedSet = __TS__New(____exports.LinkedSet)
|
|
189
189
|
for i = 1, select("#", ...) do
|
|
190
190
|
local element = (select(i, ...))
|
|
@@ -194,4 +194,7 @@ ____exports.linkedSetOfNotNull = function(...)
|
|
|
194
194
|
end
|
|
195
195
|
return linkedSet
|
|
196
196
|
end
|
|
197
|
+
____exports.linkedSetOf = function(...) return ____exports.mutableLinkedSetOf(...) end
|
|
198
|
+
____exports.linkedSetOfNotNull = function(...) return ____exports.mutableLinkedSetOfNotNull(...) end
|
|
199
|
+
____exports.nonEmptyLinkedSetOf = function(...) return ____exports.linkedSetOf(...) end
|
|
197
200
|
return ____exports
|
package/utility/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export type AnyNonNullable = {};
|
|
3
3
|
export type IsExactlyAny<T> = boolean extends (T extends never ? true : false) ? true : false;
|
|
4
4
|
export type NonEmptyArray<T> = [T, ...T[]];
|
|
5
|
+
export type ReadonlyNonEmptyArray<T> = readonly [T, ...T[]];
|
|
5
6
|
export type InvertRecordType<T extends Record<PropertyKey, PropertyKey | null | undefined>> = {
|
|
6
7
|
[P in keyof T as NonNullable<T[P]>]: P;
|
|
7
8
|
};
|