isaacscript-common 30.12.6 → 30.12.8
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
--[[
|
|
2
2
|
|
|
3
|
-
isaacscript-common 30.12.
|
|
3
|
+
isaacscript-common 30.12.8
|
|
4
4
|
|
|
5
5
|
This is the "isaacscript-common" library, which was created with the IsaacScript tool.
|
|
6
6
|
|
|
@@ -16650,15 +16650,16 @@ local __TS__Iterator = ____lualib.__TS__Iterator
|
|
|
16650
16650
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
16651
16651
|
local __TS__ArraySort = ____lualib.__TS__ArraySort
|
|
16652
16652
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
16653
|
+
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
|
|
16653
16654
|
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
|
|
16654
16655
|
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
16655
16656
|
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
16656
16657
|
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
16657
|
-
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
|
|
16658
16658
|
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
|
|
16659
16659
|
local __TS__ArraySome = ____lualib.__TS__ArraySome
|
|
16660
16660
|
local __TS__ArrayReduce = ____lualib.__TS__ArrayReduce
|
|
16661
16661
|
local ____exports = {}
|
|
16662
|
+
local addCombinations
|
|
16662
16663
|
local ____ReadonlySet = require("src.types.ReadonlySet")
|
|
16663
16664
|
local ReadonlySet = ____ReadonlySet.ReadonlySet
|
|
16664
16665
|
local ____random = require("src.functions.random")
|
|
@@ -16715,6 +16716,30 @@ function ____exports.copyArray(self, oldArray, numElements)
|
|
|
16715
16716
|
end
|
|
16716
16717
|
return newArrayWithFirstNElements
|
|
16717
16718
|
end
|
|
16719
|
+
function addCombinations(self, n, src, got, all)
|
|
16720
|
+
if n == 0 then
|
|
16721
|
+
if #got > 0 then
|
|
16722
|
+
all[#all + 1] = got
|
|
16723
|
+
end
|
|
16724
|
+
return
|
|
16725
|
+
end
|
|
16726
|
+
for ____, ____value in __TS__Iterator(__TS__ArrayEntries(src)) do
|
|
16727
|
+
local i = ____value[1]
|
|
16728
|
+
local element = ____value[2]
|
|
16729
|
+
local ____addCombinations_3 = addCombinations
|
|
16730
|
+
local ____temp_1 = n - 1
|
|
16731
|
+
local ____TS__ArraySlice_result_2 = __TS__ArraySlice(src, i + 1)
|
|
16732
|
+
local ____array_0 = __TS__SparseArrayNew(table.unpack(got))
|
|
16733
|
+
__TS__SparseArrayPush(____array_0, element)
|
|
16734
|
+
____addCombinations_3(
|
|
16735
|
+
nil,
|
|
16736
|
+
____temp_1,
|
|
16737
|
+
____TS__ArraySlice_result_2,
|
|
16738
|
+
{__TS__SparseArraySpread(____array_0)},
|
|
16739
|
+
all
|
|
16740
|
+
)
|
|
16741
|
+
end
|
|
16742
|
+
end
|
|
16718
16743
|
function ____exports.getRandomArrayIndex(self, array, seedOrRNG, exceptions)
|
|
16719
16744
|
if seedOrRNG == nil then
|
|
16720
16745
|
seedOrRNG = getRandomSeed(nil)
|
|
@@ -16836,33 +16861,6 @@ function ____exports.getArrayCombinations(self, array, includeEmptyArray, min, m
|
|
|
16836
16861
|
if max == nil or max <= 0 then
|
|
16837
16862
|
max = #array
|
|
16838
16863
|
end
|
|
16839
|
-
local addCombinations
|
|
16840
|
-
addCombinations = function(____, n, src, got, all)
|
|
16841
|
-
if n == 0 then
|
|
16842
|
-
if #got > 0 then
|
|
16843
|
-
all[#all + 1] = got
|
|
16844
|
-
end
|
|
16845
|
-
return
|
|
16846
|
-
end
|
|
16847
|
-
do
|
|
16848
|
-
local j = 0
|
|
16849
|
-
while j < #src do
|
|
16850
|
-
local value = src[j + 1]
|
|
16851
|
-
local ____temp_1 = n - 1
|
|
16852
|
-
local ____TS__ArraySlice_result_2 = __TS__ArraySlice(src, j + 1)
|
|
16853
|
-
local ____array_0 = __TS__SparseArrayNew(table.unpack(got))
|
|
16854
|
-
__TS__SparseArrayPush(____array_0, value)
|
|
16855
|
-
addCombinations(
|
|
16856
|
-
nil,
|
|
16857
|
-
____temp_1,
|
|
16858
|
-
____TS__ArraySlice_result_2,
|
|
16859
|
-
{__TS__SparseArraySpread(____array_0)},
|
|
16860
|
-
all
|
|
16861
|
-
)
|
|
16862
|
-
j = j + 1
|
|
16863
|
-
end
|
|
16864
|
-
end
|
|
16865
|
-
end
|
|
16866
16864
|
local all = {}
|
|
16867
16865
|
do
|
|
16868
16866
|
local i = min
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/functions/array.ts"],"names":[],"mappings":";;;AAMA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EAC1B,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,GACzB,OAAO,CAST;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,aAAa,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EACjC,GAAG,gBAAgB,EAAE,CAAC,EAAE,GACvB,CAAC,EAAE,CAIL;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC9B,aAAa,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EACjC,GAAG,gBAAgB,EAAE,CAAC,EAAE,GACvB,CAAC,EAAE,CAIL;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,KAAK,EAAE,CAAC,EAAE,EACV,GAAG,gBAAgB,EAAE,CAAC,EAAE,GACvB,OAAO,CAcT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,EAAE,EACV,GAAG,gBAAgB,EAAE,CAAC,EAAE,GACvB,OAAO,CAWT;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,aAAa,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EACjC,GAAG,eAAe,EAAE,GAAG,EAAE,GACxB,CAAC,EAAE,CAWL;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,KAAK,EAAE,CAAC,EAAE,EACV,GAAG,eAAe,EAAE,GAAG,EAAE,GACxB,OAAO,CAeT;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAQtD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAS1E;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,QAAQ,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EAC5B,WAAW,CAAC,EAAE,GAAG,GAChB,CAAC,EAAE,CAcL;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,CAE9C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,EACzB,iBAAiB,EAAE,OAAO,EAC1B,GAAG,CAAC,EAAE,GAAG,EACT,GAAG,CAAC,EAAE,GAAG,GACR,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/functions/array.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,16 @@ local __TS__Iterator = ____lualib.__TS__Iterator
|
|
|
8
8
|
local __TS__ArrayFilter = ____lualib.__TS__ArrayFilter
|
|
9
9
|
local __TS__ArraySort = ____lualib.__TS__ArraySort
|
|
10
10
|
local __TS__ArrayMap = ____lualib.__TS__ArrayMap
|
|
11
|
+
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
|
|
11
12
|
local __TS__ArraySlice = ____lualib.__TS__ArraySlice
|
|
12
13
|
local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
|
|
13
14
|
local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
|
|
14
15
|
local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
|
|
15
|
-
local __TS__ArrayUnshift = ____lualib.__TS__ArrayUnshift
|
|
16
16
|
local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys
|
|
17
17
|
local __TS__ArraySome = ____lualib.__TS__ArraySome
|
|
18
18
|
local __TS__ArrayReduce = ____lualib.__TS__ArrayReduce
|
|
19
19
|
local ____exports = {}
|
|
20
|
+
local addCombinations
|
|
20
21
|
local ____ReadonlySet = require("src.types.ReadonlySet")
|
|
21
22
|
local ReadonlySet = ____ReadonlySet.ReadonlySet
|
|
22
23
|
local ____random = require("src.functions.random")
|
|
@@ -98,6 +99,30 @@ function ____exports.copyArray(self, oldArray, numElements)
|
|
|
98
99
|
end
|
|
99
100
|
return newArrayWithFirstNElements
|
|
100
101
|
end
|
|
102
|
+
function addCombinations(self, n, src, got, all)
|
|
103
|
+
if n == 0 then
|
|
104
|
+
if #got > 0 then
|
|
105
|
+
all[#all + 1] = got
|
|
106
|
+
end
|
|
107
|
+
return
|
|
108
|
+
end
|
|
109
|
+
for ____, ____value in __TS__Iterator(__TS__ArrayEntries(src)) do
|
|
110
|
+
local i = ____value[1]
|
|
111
|
+
local element = ____value[2]
|
|
112
|
+
local ____addCombinations_3 = addCombinations
|
|
113
|
+
local ____temp_1 = n - 1
|
|
114
|
+
local ____TS__ArraySlice_result_2 = __TS__ArraySlice(src, i + 1)
|
|
115
|
+
local ____array_0 = __TS__SparseArrayNew(table.unpack(got))
|
|
116
|
+
__TS__SparseArrayPush(____array_0, element)
|
|
117
|
+
____addCombinations_3(
|
|
118
|
+
nil,
|
|
119
|
+
____temp_1,
|
|
120
|
+
____TS__ArraySlice_result_2,
|
|
121
|
+
{__TS__SparseArraySpread(____array_0)},
|
|
122
|
+
all
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
end
|
|
101
126
|
--- Helper function to get a random index from the provided array.
|
|
102
127
|
--
|
|
103
128
|
-- @param array The array to get the index from.
|
|
@@ -294,33 +319,6 @@ function ____exports.getArrayCombinations(self, array, includeEmptyArray, min, m
|
|
|
294
319
|
if max == nil or max <= 0 then
|
|
295
320
|
max = #array
|
|
296
321
|
end
|
|
297
|
-
local addCombinations
|
|
298
|
-
addCombinations = function(____, n, src, got, all)
|
|
299
|
-
if n == 0 then
|
|
300
|
-
if #got > 0 then
|
|
301
|
-
all[#all + 1] = got
|
|
302
|
-
end
|
|
303
|
-
return
|
|
304
|
-
end
|
|
305
|
-
do
|
|
306
|
-
local j = 0
|
|
307
|
-
while j < #src do
|
|
308
|
-
local value = src[j + 1]
|
|
309
|
-
local ____temp_1 = n - 1
|
|
310
|
-
local ____TS__ArraySlice_result_2 = __TS__ArraySlice(src, j + 1)
|
|
311
|
-
local ____array_0 = __TS__SparseArrayNew(table.unpack(got))
|
|
312
|
-
__TS__SparseArrayPush(____array_0, value)
|
|
313
|
-
addCombinations(
|
|
314
|
-
nil,
|
|
315
|
-
____temp_1,
|
|
316
|
-
____TS__ArraySlice_result_2,
|
|
317
|
-
{__TS__SparseArraySpread(____array_0)},
|
|
318
|
-
all
|
|
319
|
-
)
|
|
320
|
-
j = j + 1
|
|
321
|
-
end
|
|
322
|
-
end
|
|
323
|
-
end
|
|
324
322
|
local all = {}
|
|
325
323
|
do
|
|
326
324
|
local i = min
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "isaacscript-common",
|
|
3
|
-
"version": "30.12.
|
|
3
|
+
"version": "30.12.8",
|
|
4
4
|
"description": "Helper functions and features for IsaacScript mods.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"isaac",
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
},
|
|
22
22
|
"license": "GPL-3.0",
|
|
23
23
|
"author": "Zamiell",
|
|
24
|
-
"type": "
|
|
24
|
+
"type": "commonjs",
|
|
25
25
|
"main": "dist/src/index",
|
|
26
26
|
"types": "dist/index.rollup.d.ts",
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"isaac-typescript-definitions": "^13.0.
|
|
28
|
+
"isaac-typescript-definitions": "^13.0.21"
|
|
29
29
|
}
|
|
30
30
|
}
|
package/src/functions/array.ts
CHANGED
|
@@ -269,26 +269,6 @@ export function getArrayCombinations<T>(
|
|
|
269
269
|
max = array.length;
|
|
270
270
|
}
|
|
271
271
|
|
|
272
|
-
const addCombinations = (
|
|
273
|
-
n: number,
|
|
274
|
-
src: T[] | readonly T[],
|
|
275
|
-
got: T[],
|
|
276
|
-
all: Array<T[] | readonly T[]>,
|
|
277
|
-
) => {
|
|
278
|
-
if (n === 0) {
|
|
279
|
-
if (got.length > 0) {
|
|
280
|
-
all[all.length] = got;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
return;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
for (let j = 0; j < src.length; j++) {
|
|
287
|
-
const value = src[j]!; // eslint-disable-line @typescript-eslint/no-non-null-assertion
|
|
288
|
-
addCombinations(n - 1, src.slice(j + 1), [...got, value], all);
|
|
289
|
-
}
|
|
290
|
-
};
|
|
291
|
-
|
|
292
272
|
const all: Array<T[] | readonly T[]> = [];
|
|
293
273
|
for (let i = min; i < array.length; i++) {
|
|
294
274
|
addCombinations(i, array, [], all);
|
|
@@ -305,6 +285,25 @@ export function getArrayCombinations<T>(
|
|
|
305
285
|
return all;
|
|
306
286
|
}
|
|
307
287
|
|
|
288
|
+
function addCombinations<T>(
|
|
289
|
+
n: number,
|
|
290
|
+
src: T[] | readonly T[],
|
|
291
|
+
got: T[],
|
|
292
|
+
all: Array<T[] | readonly T[]>,
|
|
293
|
+
) {
|
|
294
|
+
if (n === 0) {
|
|
295
|
+
if (got.length > 0) {
|
|
296
|
+
all[all.length] = got;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
for (const [i, element] of src.entries()) {
|
|
303
|
+
addCombinations(n - 1, src.slice(i + 1), [...got, element], all);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
308
307
|
/**
|
|
309
308
|
* Helper function to get an array containing the indexes of an array.
|
|
310
309
|
*
|