isaacscript-common 81.0.3 → 81.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/classes/ModFeature.d.ts +1 -1
  2. package/dist/classes/ModFeature.d.ts.map +1 -1
  3. package/dist/classes/features/other/CustomItemPools.d.ts +1 -1
  4. package/dist/classes/features/other/CustomItemPools.d.ts.map +1 -1
  5. package/dist/classes/features/other/CustomItemPools.lua +4 -2
  6. package/dist/classes/features/other/DisableInputs.d.ts +1 -1
  7. package/dist/classes/features/other/DisableInputs.d.ts.map +1 -1
  8. package/dist/classes/features/other/ModdedElementSets.d.ts +4 -4
  9. package/dist/classes/features/other/ModdedElementSets.d.ts.map +1 -1
  10. package/dist/classes/features/other/ModdedElementSets.lua +7 -2
  11. package/dist/classes/features/other/SaveDataManager.d.ts +1 -1
  12. package/dist/classes/features/other/SaveDataManager.d.ts.map +1 -1
  13. package/dist/functions/array.d.ts +5 -5
  14. package/dist/functions/array.d.ts.map +1 -1
  15. package/dist/functions/arrayLua.d.ts +14 -14
  16. package/dist/functions/arrayLua.d.ts.map +1 -1
  17. package/dist/functions/arrayLua.lua +7 -7
  18. package/dist/functions/benchmark.d.ts +1 -1
  19. package/dist/functions/benchmark.d.ts.map +1 -1
  20. package/dist/functions/bitwise.d.ts +1 -1
  21. package/dist/functions/bitwise.d.ts.map +1 -1
  22. package/dist/functions/cards.d.ts +1 -1
  23. package/dist/functions/cards.d.ts.map +1 -1
  24. package/dist/functions/challenges.d.ts +1 -1
  25. package/dist/functions/challenges.d.ts.map +1 -1
  26. package/dist/functions/curses.d.ts +1 -1
  27. package/dist/functions/curses.d.ts.map +1 -1
  28. package/dist/functions/doors.d.ts +5 -5
  29. package/dist/functions/doors.d.ts.map +1 -1
  30. package/dist/functions/external.d.ts +1 -1
  31. package/dist/functions/external.d.ts.map +1 -1
  32. package/dist/functions/flag.d.ts +5 -4
  33. package/dist/functions/flag.d.ts.map +1 -1
  34. package/dist/functions/gridEntities.d.ts +5 -5
  35. package/dist/functions/gridEntities.d.ts.map +1 -1
  36. package/dist/functions/input.d.ts +5 -5
  37. package/dist/functions/input.d.ts.map +1 -1
  38. package/dist/functions/itemPool.d.ts +2 -2
  39. package/dist/functions/itemPool.d.ts.map +1 -1
  40. package/dist/functions/jsonRoom.d.ts +1 -1
  41. package/dist/functions/jsonRoom.d.ts.map +1 -1
  42. package/dist/functions/level.d.ts +2 -2
  43. package/dist/functions/level.d.ts.map +1 -1
  44. package/dist/functions/levelGrid.d.ts +2 -2
  45. package/dist/functions/levelGrid.d.ts.map +1 -1
  46. package/dist/functions/logEntities.d.ts +3 -3
  47. package/dist/functions/logEntities.d.ts.map +1 -1
  48. package/dist/functions/logMisc.d.ts +2 -1
  49. package/dist/functions/logMisc.d.ts.map +1 -1
  50. package/dist/functions/map.d.ts.map +1 -1
  51. package/dist/functions/merge.d.ts +1 -1
  52. package/dist/functions/merge.d.ts.map +1 -1
  53. package/dist/functions/minimap.d.ts +1 -1
  54. package/dist/functions/minimap.d.ts.map +1 -1
  55. package/dist/functions/npcDataStructures.d.ts +3 -3
  56. package/dist/functions/npcDataStructures.d.ts.map +1 -1
  57. package/dist/functions/playerCollectibles.d.ts +7 -7
  58. package/dist/functions/playerCollectibles.d.ts.map +1 -1
  59. package/dist/functions/playerDataStructures.d.ts +3 -3
  60. package/dist/functions/playerDataStructures.d.ts.map +1 -1
  61. package/dist/functions/playerTrinkets.d.ts +2 -2
  62. package/dist/functions/playerTrinkets.d.ts.map +1 -1
  63. package/dist/functions/players.d.ts +4 -4
  64. package/dist/functions/players.d.ts.map +1 -1
  65. package/dist/functions/rng.d.ts +3 -2
  66. package/dist/functions/rng.d.ts.map +1 -1
  67. package/dist/functions/rooms.d.ts +4 -4
  68. package/dist/functions/rooms.d.ts.map +1 -1
  69. package/dist/functions/run.d.ts +2 -2
  70. package/dist/functions/run.d.ts.map +1 -1
  71. package/dist/functions/set.d.ts.map +1 -1
  72. package/dist/functions/sort.d.ts +1 -1
  73. package/dist/functions/sort.d.ts.map +1 -1
  74. package/dist/functions/stage.d.ts +3 -3
  75. package/dist/functions/stage.d.ts.map +1 -1
  76. package/dist/functions/string.d.ts +3 -2
  77. package/dist/functions/string.d.ts.map +1 -1
  78. package/dist/functions/table.d.ts +4 -4
  79. package/dist/functions/table.d.ts.map +1 -1
  80. package/dist/functions/trinketGive.d.ts +1 -1
  81. package/dist/functions/trinketGive.d.ts.map +1 -1
  82. package/dist/functions/utils.d.ts +1 -1
  83. package/dist/functions/utils.d.ts.map +1 -1
  84. package/dist/functions/vector.d.ts +1 -1
  85. package/dist/functions/vector.d.ts.map +1 -1
  86. package/dist/functions/weighted.d.ts +2 -2
  87. package/dist/functions/weighted.d.ts.map +1 -1
  88. package/dist/index.d.ts +1 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.rollup.d.ts +110 -108
  91. package/dist/indexLua.d.ts +1 -0
  92. package/dist/indexLua.d.ts.map +1 -1
  93. package/dist/isaacscript-common.lua +23 -12
  94. package/dist/types/AnyFunction.d.ts +1 -1
  95. package/dist/types/AnyFunction.d.ts.map +1 -1
  96. package/dist/types/ReadonlyRecord.d.ts +2 -0
  97. package/dist/types/ReadonlyRecord.d.ts.map +1 -0
  98. package/dist/types/ReadonlyRecord.lua +2 -0
  99. package/package.json +1 -1
  100. package/src/classes/ModFeature.ts +4 -4
  101. package/src/classes/ModUpgraded.ts +1 -1
  102. package/src/classes/features/callbackLogic/PlayerReorderedCallbacks.ts +1 -0
  103. package/src/classes/features/other/CustomItemPools.ts +10 -3
  104. package/src/classes/features/other/DisableInputs.ts +4 -1
  105. package/src/classes/features/other/ItemPoolDetection.ts +2 -2
  106. package/src/classes/features/other/ModdedElementSets.ts +6 -6
  107. package/src/classes/features/other/PickupIndexCreation.ts +1 -1
  108. package/src/classes/features/other/RunInNFrames.ts +2 -0
  109. package/src/classes/features/other/SaveDataManager.ts +3 -1
  110. package/src/core/upgradeMod.ts +4 -1
  111. package/src/functions/array.ts +18 -5
  112. package/src/functions/arrayLua.ts +20 -20
  113. package/src/functions/benchmark.ts +1 -1
  114. package/src/functions/bitwise.ts +1 -1
  115. package/src/functions/cards.ts +1 -1
  116. package/src/functions/challenges.ts +1 -1
  117. package/src/functions/curses.ts +1 -1
  118. package/src/functions/deepCopy.ts +6 -6
  119. package/src/functions/doors.ts +7 -5
  120. package/src/functions/external.ts +1 -1
  121. package/src/functions/flag.ts +5 -4
  122. package/src/functions/gridEntities.ts +5 -5
  123. package/src/functions/input.ts +5 -5
  124. package/src/functions/itemPool.ts +4 -2
  125. package/src/functions/jsonRoom.ts +1 -1
  126. package/src/functions/level.ts +2 -2
  127. package/src/functions/levelGrid.ts +2 -2
  128. package/src/functions/logEntities.ts +6 -3
  129. package/src/functions/logMisc.ts +2 -1
  130. package/src/functions/map.ts +2 -0
  131. package/src/functions/merge.ts +4 -3
  132. package/src/functions/minimap.ts +1 -1
  133. package/src/functions/npcDataStructures.ts +11 -3
  134. package/src/functions/playerCollectibles.ts +7 -7
  135. package/src/functions/playerDataStructures.ts +8 -3
  136. package/src/functions/playerTrinkets.ts +2 -2
  137. package/src/functions/players.ts +6 -4
  138. package/src/functions/rng.ts +8 -2
  139. package/src/functions/rooms.ts +4 -4
  140. package/src/functions/run.ts +6 -2
  141. package/src/functions/set.ts +3 -0
  142. package/src/functions/sort.ts +5 -1
  143. package/src/functions/stage.ts +5 -3
  144. package/src/functions/string.ts +3 -2
  145. package/src/functions/table.ts +4 -4
  146. package/src/functions/trinketGive.ts +1 -1
  147. package/src/functions/utils.ts +1 -1
  148. package/src/functions/vector.ts +1 -1
  149. package/src/functions/weighted.ts +2 -2
  150. package/src/index.ts +1 -0
  151. package/src/types/AnyFunction.ts +1 -1
  152. package/src/types/ReadonlyRecord.ts +3 -0
@@ -185,6 +185,7 @@ export * from "./types/PlayerIndex";
185
185
  export * from "./types/PossibleStatType";
186
186
  export * from "./types/PublicInterface";
187
187
  export * from "./types/ReadonlyMap";
188
+ export * from "./types/ReadonlyRecord";
188
189
  export * from "./types/ReadonlySet";
189
190
  export * from "./types/StartsWithLowercase";
190
191
  export * from "./types/StartsWithUppercase";
@@ -1 +1 @@
1
- {"version":3,"file":"indexLua.d.ts","sourceRoot":"","sources":["../src/indexLua.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexLua.d.ts","sourceRoot":"","sources":["../src/indexLua.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  --[[
2
2
 
3
- isaacscript-common 81.0.2
3
+ isaacscript-common 81.0.4
4
4
 
5
5
  This is the "isaacscript-common" library, which was created with the IsaacScript tool.
6
6
 
@@ -17386,6 +17386,10 @@ ____exports.SerializationBrand.VECTOR = "__VECTOR"
17386
17386
  ____exports.SerializationBrand.DEFAULT_MAP_VALUE = "__TSTL_DEFAULT_MAP_VALUE"
17387
17387
  ____exports.SerializationBrand.OBJECT_WITH_NUMBER_KEYS = "__TSTL_OBJECT_WITH_NUMBER_KEYS"
17388
17388
  ____exports.SerializationBrand.TSTL_CLASS = "__TSTL_CLASS"
17389
+ return ____exports
17390
+ end,
17391
+ ["types.ReadonlyRecord"] = function(...)
17392
+ local ____exports = {}
17389
17393
  return ____exports
17390
17394
  end,
17391
17395
  ["functions.log"] = function(...)
@@ -44629,6 +44633,9 @@ local __TS__ClassExtends = ____lualib.__TS__ClassExtends
44629
44633
  local Set = ____lualib.Set
44630
44634
  local Map = ____lualib.Map
44631
44635
  local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy
44636
+ local __TS__SparseArrayNew = ____lualib.__TS__SparseArrayNew
44637
+ local __TS__SparseArrayPush = ____lualib.__TS__SparseArrayPush
44638
+ local __TS__SparseArraySpread = ____lualib.__TS__SparseArraySpread
44632
44639
  local ____exports = {}
44633
44640
  local ____isaac_2Dtypescript_2Ddefinitions = require("lua_modules.isaac-typescript-definitions.dist.index")
44634
44641
  local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
@@ -45291,8 +45298,10 @@ function ModdedElementSets.prototype.getRandomRune(self, seedOrRNG, exceptions)
45291
45298
  exceptions = {}
45292
45299
  end
45293
45300
  local runeCardTypes = self:getCardTypesOfType(ItemConfigCardType.RUNE)
45294
- exceptions[#exceptions + 1] = CardType.RUNE_SHARD
45295
- return getRandomArrayElement(nil, runeCardTypes, seedOrRNG, exceptions)
45301
+ local ____array_13 = __TS__SparseArrayNew(table.unpack(exceptions))
45302
+ __TS__SparseArrayPush(____array_13, CardType.RUNE_SHARD)
45303
+ local runeExceptions = {__TS__SparseArraySpread(____array_13)}
45304
+ return getRandomArrayElement(nil, runeCardTypes, seedOrRNG, runeExceptions)
45296
45305
  end
45297
45306
  __TS__DecorateLegacy({Exported}, ModdedElementSets.prototype, "getRandomRune", true)
45298
45307
  return ____exports
@@ -47063,8 +47072,8 @@ return ____exports
47063
47072
  end,
47064
47073
  ["classes.features.other.CustomItemPools"] = function(...)
47065
47074
  local ____lualib = require("lualib_bundle")
47066
- local Map = ____lualib.Map
47067
47075
  local __TS__New = ____lualib.__TS__New
47076
+ local Map = ____lualib.Map
47068
47077
  local __TS__Class = ____lualib.__TS__Class
47069
47078
  local __TS__ClassExtends = ____lualib.__TS__ClassExtends
47070
47079
  local __TS__DecorateLegacy = ____lualib.__TS__DecorateLegacy
@@ -47083,9 +47092,11 @@ local ____utils = require("functions.utils")
47083
47092
  local assertDefined = ____utils.assertDefined
47084
47093
  local ____weighted = require("functions.weighted")
47085
47094
  local getRandomIndexFromWeightedArray = ____weighted.getRandomIndexFromWeightedArray
47095
+ local ____ReadonlyMap = require("types.ReadonlyMap")
47096
+ local ReadonlyMap = ____ReadonlyMap.ReadonlyMap
47086
47097
  local ____Feature = require("classes.private.Feature")
47087
47098
  local Feature = ____Feature.Feature
47088
- local v = {run = {customItemPools = __TS__New(Map)}}
47099
+ local v = {run = {customItemPools = __TS__New(ReadonlyMap)}}
47089
47100
  local customItemPoolMap = __TS__New(Map)
47090
47101
  ____exports.CustomItemPools = __TS__Class()
47091
47102
  local CustomItemPools = ____exports.CustomItemPools
@@ -64116,47 +64127,47 @@ local ____exports = {}
64116
64127
  --- Helper function for non-TypeScript users to check if every element in the array is equal to a
64117
64128
  -- condition.
64118
64129
  --
64119
- -- Internally, this just calls `array.every`.
64130
+ -- Internally, this just calls `Array.every`.
64120
64131
  function ____exports.every(self, array, func)
64121
64132
  return __TS__ArrayEvery(array, func)
64122
64133
  end
64123
64134
  --- Helper function for non-TypeScript users to filter the elements in an array. Returns the filtered
64124
64135
  -- array.
64125
64136
  --
64126
- -- Internally, this just calls `array.filter`.
64137
+ -- Internally, this just calls `Array.filter`.
64127
64138
  function ____exports.filter(self, array, func)
64128
64139
  return __TS__ArrayFilter(array, func)
64129
64140
  end
64130
64141
  --- Helper function for non-TypeScript users to find an element in an array.
64131
64142
  --
64132
- -- Internally, this just calls `array.find`.
64143
+ -- Internally, this just calls `Array.find`.
64133
64144
  function ____exports.find(self, array, func)
64134
64145
  return __TS__ArrayFind(array, func)
64135
64146
  end
64136
64147
  --- Helper function for non-TypeScript users to iterate over an array.
64137
64148
  --
64138
- -- Internally, this just calls `array.forEach`.
64149
+ -- Internally, this just calls `Array.forEach`.
64139
64150
  function ____exports.forEach(self, array, func)
64140
64151
  __TS__ArrayForEach(array, func)
64141
64152
  end
64142
64153
  --- Helper function for non-TypeScript users to convert an array to a string with the specified
64143
64154
  -- separator.
64144
64155
  --
64145
- -- Internally, this just calls `array.join`.
64156
+ -- Internally, this just calls `Array.join`.
64146
64157
  function ____exports.join(self, array, separator)
64147
64158
  return __TS__ArrayJoin(array, separator)
64148
64159
  end
64149
64160
  --- Helper function for non-TypeScript users to convert all of the elements in an array to something
64150
64161
  -- else.
64151
64162
  --
64152
- -- Internally, this just calls `array.map`.
64163
+ -- Internally, this just calls `Array.map`.
64153
64164
  function ____exports.map(self, array, func)
64154
64165
  return __TS__ArrayMap(array, func)
64155
64166
  end
64156
64167
  --- Helper function for non-TypeScript users to check if one or more elements in the array is equal
64157
64168
  -- to a condition.
64158
64169
  --
64159
- -- Internally, this just calls `array.some`.
64170
+ -- Internally, this just calls `Array.some`.
64160
64171
  function ____exports.some(self, array, func)
64161
64172
  return __TS__ArraySome(array, func)
64162
64173
  end
@@ -2,5 +2,5 @@
2
2
  * Helper type to represent any function. This is safer than using the built-in `Function` type, as
3
3
  * it does not completely turn off all type safety.
4
4
  */
5
- export type AnyFunction = (...args: unknown[]) => unknown;
5
+ export type AnyFunction = (...args: readonly unknown[]) => unknown;
6
6
  //# sourceMappingURL=AnyFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnyFunction.d.ts","sourceRoot":"","sources":["../../src/types/AnyFunction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC"}
1
+ {"version":3,"file":"AnyFunction.d.ts","sourceRoot":"","sources":["../../src/types/AnyFunction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export type ReadonlyRecord<K extends string | number | symbol, V> = Readonly<Record<K, V>>;
2
+ //# sourceMappingURL=ReadonlyRecord.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadonlyRecord.d.ts","sourceRoot":"","sources":["../../src/types/ReadonlyRecord.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,QAAQ,CAC1E,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ local ____exports = {}
2
+ return ____exports
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "81.0.3",
3
+ "version": "81.0.5",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -94,7 +94,7 @@ export class ModFeature {
94
94
  | (<T extends boolean>(
95
95
  vanilla: T,
96
96
  modCallback: T extends true ? ModCallback : ModCallbackCustom,
97
- ...callbackArgs: unknown[]
97
+ ...callbackArgs: readonly unknown[]
98
98
  ) => boolean)
99
99
  | null = null;
100
100
 
@@ -249,12 +249,12 @@ function addCallback(
249
249
  modCallback: ModCallback | ModCallbackCustom,
250
250
  priority: CallbackPriority | int,
251
251
  callback: Function, // eslint-disable-line @typescript-eslint/ban-types
252
- parameters: unknown[],
252
+ parameters: readonly unknown[],
253
253
  vanilla: boolean,
254
254
  ) {
255
255
  // We need to wrap the callback in a new function so that we can explicitly pass the class as the
256
256
  // first argument. (Otherwise, the method will not be able to properly access `this`.
257
- const wrappedCallback = (...callbackArgs: unknown[]) => {
257
+ const wrappedCallback = (...callbackArgs: readonly unknown[]) => {
258
258
  // eslint-disable-next-line @typescript-eslint/dot-notation
259
259
  const conditionalFunc = modFeature["shouldCallbackMethodsFire"];
260
260
  if (conditionalFunc !== null) {
@@ -266,7 +266,7 @@ function addCallback(
266
266
 
267
267
  const castedCallback = callback as (
268
268
  this: void,
269
- ...args: unknown[]
269
+ ...args: readonly unknown[]
270
270
  ) => unknown;
271
271
  return castedCallback(modFeature, ...callbackArgs);
272
272
  };
@@ -453,7 +453,7 @@ function getExportedMethodsFromFeature(
453
453
 
454
454
  // In order for "this" to work properly in the method, we have to wrap the method invocation in
455
455
  // an arrow function.
456
- const wrappedMethod = (...args: unknown[]) =>
456
+ const wrappedMethod = (...args: readonly unknown[]) =>
457
457
  // We use a non-null assertion since we have already validated that the function exists. (See
458
458
  // the above comment.)
459
459
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -125,6 +125,7 @@ export class PlayerReorderedCallbacks extends Feature {
125
125
  }
126
126
 
127
127
  function dequeue(
128
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
128
129
  queue: QueueElement[],
129
130
  fireFunc: (player: EntityPlayer, renderOffset: Vector) => void,
130
131
  ) {
@@ -6,12 +6,16 @@ import { arrayRemoveIndexInPlace } from "../../../functions/array";
6
6
  import { copyMap } from "../../../functions/map";
7
7
  import { assertDefined } from "../../../functions/utils";
8
8
  import { getRandomIndexFromWeightedArray } from "../../../functions/weighted";
9
+ import { ReadonlyMap } from "../../../types/ReadonlyMap";
9
10
  import type { WeightedArray } from "../../../types/WeightedArray";
10
11
  import { Feature } from "../../private/Feature";
11
12
 
12
13
  const v = {
13
14
  run: {
14
- customItemPools: new Map<ItemPoolType, WeightedArray<CollectibleType>>(),
15
+ customItemPools: new ReadonlyMap<
16
+ ItemPoolType,
17
+ WeightedArray<CollectibleType>
18
+ >(),
15
19
  },
16
20
  };
17
21
 
@@ -80,7 +84,7 @@ export class CustomItemPools extends Feature {
80
84
  @Exported
81
85
  public registerCustomItemPool(
82
86
  itemPoolTypeCustom: ItemPoolType,
83
- collectibles: WeightedArray<CollectibleType>,
87
+ collectibles: Readonly<WeightedArray<CollectibleType>>,
84
88
  ): void {
85
89
  if (customItemPoolMap.has(itemPoolTypeCustom)) {
86
90
  error(
@@ -88,7 +92,10 @@ export class CustomItemPools extends Feature {
88
92
  );
89
93
  }
90
94
 
91
- customItemPoolMap.set(itemPoolTypeCustom, collectibles);
95
+ customItemPoolMap.set(
96
+ itemPoolTypeCustom,
97
+ collectibles as WeightedArray<CollectibleType>,
98
+ );
92
99
  }
93
100
 
94
101
  /**
@@ -164,7 +164,10 @@ export class DisableInputs extends Feature {
164
164
  * @public
165
165
  */
166
166
  @Exported
167
- public disableInputs(key: string, ...buttonActions: ButtonAction[]): void {
167
+ public disableInputs(
168
+ key: string,
169
+ ...buttonActions: readonly ButtonAction[]
170
+ ): void {
168
171
  const buttonActionsSet = new ReadonlySet(buttonActions);
169
172
  v.run.disableInputs.set(key, buttonActionsSet);
170
173
  }
@@ -215,8 +215,8 @@ function removeItemsAndTrinketsThatAffectItemPools(): {
215
215
  }
216
216
 
217
217
  function restoreItemsAndTrinketsThatAffectItemPools(
218
- removedItemsMap: Map<PlayerIndex, CollectibleType[]>,
219
- removedTrinketsMap: Map<PlayerIndex, TrinketType[]>,
218
+ removedItemsMap: ReadonlyMap<PlayerIndex, CollectibleType[]>,
219
+ removedTrinketsMap: ReadonlyMap<PlayerIndex, TrinketType[]>,
220
220
  ) {
221
221
  for (const player of getAllPlayers()) {
222
222
  const removedItems = mapGetPlayer(removedItemsMap, player);
@@ -1362,7 +1362,7 @@ export class ModdedElementSets extends Feature {
1362
1362
  */
1363
1363
  @Exported
1364
1364
  public getCardTypesOfType(
1365
- ...itemConfigCardTypes: ItemConfigCardType[]
1365
+ ...itemConfigCardTypes: readonly ItemConfigCardType[]
1366
1366
  ): readonly CardType[] {
1367
1367
  this.lazyInit();
1368
1368
 
@@ -1406,7 +1406,7 @@ export class ModdedElementSets extends Feature {
1406
1406
  public getRandomCardTypeOfType(
1407
1407
  itemConfigCardType: ItemConfigCardType,
1408
1408
  seedOrRNG: Seed | RNG | undefined,
1409
- exceptions: CardType[] = [],
1409
+ exceptions: readonly CardType[] = [],
1410
1410
  ): CardType {
1411
1411
  const cardTypes = this.getCardTypesOfType(itemConfigCardType);
1412
1412
  return getRandomArrayElement(cardTypes, seedOrRNG, exceptions);
@@ -1436,7 +1436,7 @@ export class ModdedElementSets extends Feature {
1436
1436
  @Exported
1437
1437
  public getRandomCard(
1438
1438
  seedOrRNG: Seed | RNG | undefined,
1439
- exceptions: CardType[] = [],
1439
+ exceptions: readonly CardType[] = [],
1440
1440
  ): CardType {
1441
1441
  this.lazyInit();
1442
1442
  return getRandomArrayElement(this.cardTypeCardArray, seedOrRNG, exceptions);
@@ -1463,10 +1463,10 @@ export class ModdedElementSets extends Feature {
1463
1463
  @Exported
1464
1464
  public getRandomRune(
1465
1465
  seedOrRNG: Seed | RNG | undefined,
1466
- exceptions: CardType[] = [],
1466
+ exceptions: readonly CardType[] = [],
1467
1467
  ): CardType {
1468
1468
  const runeCardTypes = this.getCardTypesOfType(ItemConfigCardType.RUNE);
1469
- exceptions.push(CardType.RUNE_SHARD);
1470
- return getRandomArrayElement(runeCardTypes, seedOrRNG, exceptions);
1469
+ const runeExceptions = [...exceptions, CardType.RUNE_SHARD];
1470
+ return getRandomArrayElement(runeCardTypes, seedOrRNG, runeExceptions);
1471
1471
  }
1472
1472
  }
@@ -279,7 +279,7 @@ export class PickupIndexCreation extends Feature {
279
279
 
280
280
  function getStoredPickupIndex(
281
281
  pickup: Entity,
282
- pickupDescriptions: Map<PickupIndex, PickupDescription>,
282
+ pickupDescriptions: ReadonlyMap<PickupIndex, PickupDescription>,
283
283
  ): PickupIndex | undefined {
284
284
  for (const [pickupIndex, pickupDescription] of pickupDescriptions) {
285
285
  if (
@@ -347,6 +347,7 @@ export class RunInNFrames extends Feature {
347
347
  }
348
348
 
349
349
  function checkExecuteQueuedFunctions(
350
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
350
351
  queuedFunctions: QueuedFunction[],
351
352
  frameCount: int,
352
353
  newNumRoomsEntered: int,
@@ -367,6 +368,7 @@ function checkExecuteQueuedFunctions(
367
368
  }
368
369
 
369
370
  function checkExecuteIntervalFunctions(
371
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
370
372
  intervalFunctions: IntervalFunction[],
371
373
  frameCount: int,
372
374
  newNumRoomsEntered: int,
@@ -467,7 +467,9 @@ export class SaveDataManager extends Feature {
467
467
  * @public
468
468
  */
469
469
  @Exported
470
- public saveDataManagerRegisterClass(...tstlClasses: AnyClass[]): void {
470
+ public saveDataManagerRegisterClass(
471
+ ...tstlClasses: readonly AnyClass[]
472
+ ): void {
471
473
  for (const tstlClass of tstlClasses) {
472
474
  const { name } = tstlClass;
473
475
  assertDefined(
@@ -71,7 +71,10 @@ export function upgradeMod<T extends readonly ISCFeature[] = never[]>(
71
71
  }
72
72
 
73
73
  /** Initialize every optional feature that the end-user specified, if any. */
74
- function initOptionalFeatures(mod: ModUpgraded, features: ISCFeature[]) {
74
+ function initOptionalFeatures(
75
+ mod: ModUpgraded,
76
+ features: readonly ISCFeature[],
77
+ ) {
75
78
  for (const feature of features) {
76
79
  // We intentionally access the private method here, so we use the string index escape hatch:
77
80
  // https://github.com/microsoft/TypeScript/issues/19335
@@ -85,6 +85,7 @@ export function arrayRemoveAll<T>(
85
85
  * @returns True if one or more elements were removed, false otherwise.
86
86
  */
87
87
  export function arrayRemoveAllInPlace<T>(
88
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
88
89
  array: T[],
89
90
  ...elementsToRemove: readonly T[]
90
91
  ): boolean {
@@ -117,6 +118,7 @@ export function arrayRemoveAllInPlace<T>(
117
118
  */
118
119
  // eslint-disable-next-line isaacscript/no-mutable-return
119
120
  export function arrayRemoveInPlace<T>(
121
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
120
122
  array: T[],
121
123
  ...elementsToRemove: readonly T[]
122
124
  ): T[] {
@@ -167,8 +169,9 @@ export function arrayRemoveIndex<T>(
167
169
  */
168
170
  // eslint-disable-next-line isaacscript/no-mutable-return
169
171
  export function arrayRemoveIndexInPlace<T>(
172
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
170
173
  array: T[],
171
- ...indexesToRemove: int[]
174
+ ...indexesToRemove: readonly int[]
172
175
  ): T[] {
173
176
  const legalIndexes = indexesToRemove.filter(
174
177
  (i) => i >= 0 && i < array.length,
@@ -191,7 +194,7 @@ export function arrayRemoveIndexInPlace<T>(
191
194
  return removedElements;
192
195
  }
193
196
 
194
- export function arrayToString(array: unknown[]): string {
197
+ export function arrayToString(array: readonly unknown[]): string {
195
198
  if (array.length === 0) {
196
199
  return "[]";
197
200
  }
@@ -245,6 +248,7 @@ export function copyArray<T>(oldArray: readonly T[], numElements?: int): T[] {
245
248
  }
246
249
 
247
250
  /** Helper function to remove all of the elements in an array in-place. */
251
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
248
252
  export function emptyArray<T>(array: T[]): void {
249
253
  array.splice(0, array.length);
250
254
  }
@@ -335,6 +339,7 @@ function addCombinations<T>(
335
339
  n: number,
336
340
  src: readonly T[],
337
341
  got: readonly T[],
342
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
338
343
  all: Array<readonly T[]>,
339
344
  ) {
340
345
  if (n === 0) {
@@ -367,7 +372,9 @@ export function getArrayIndexes<T>(array: readonly T[]): readonly int[] {
367
372
  * Helper function to get the highest value in an array. Returns undefined if there were no elements
368
373
  * in the array.
369
374
  */
370
- export function getHighestArrayElement(array: number[]): number | undefined {
375
+ export function getHighestArrayElement(
376
+ array: readonly number[],
377
+ ): number | undefined {
371
378
  if (array.length === 0) {
372
379
  return undefined;
373
380
  }
@@ -387,7 +394,9 @@ export function getHighestArrayElement(array: number[]): number | undefined {
387
394
  * Helper function to get the lowest value in an array. Returns undefined if there were no elements
388
395
  * in the array.
389
396
  */
390
- export function getLowestArrayElement(array: number[]): number | undefined {
397
+ export function getLowestArrayElement(
398
+ array: readonly number[],
399
+ ): number | undefined {
391
400
  if (array.length === 0) {
392
401
  return undefined;
393
402
  }
@@ -452,6 +461,7 @@ export function getRandomArrayElement<T>(
452
461
  * @param exceptions Optional. An array of elements to skip over if selected.
453
462
  */
454
463
  export function getRandomArrayElementAndRemove<T>(
464
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
455
465
  array: T[],
456
466
  seedOrRNG: Seed | RNG | undefined,
457
467
  exceptions: readonly T[] = [],
@@ -562,7 +572,7 @@ export function isArray(
562
572
  *
563
573
  * For example, `[2, 3, 4]` would return true, and `[2, 3, 5]` would return false.
564
574
  */
565
- export function isArrayContiguous(array: int[]): boolean {
575
+ export function isArrayContiguous(array: readonly int[]): boolean {
566
576
  let lastValue: int | undefined;
567
577
  for (const element of array) {
568
578
  if (lastValue === undefined) {
@@ -586,6 +596,7 @@ export function isArrayInArray<T>(
586
596
  }
587
597
 
588
598
  /** Helper function to set every element in an array to a specific value. */
599
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
589
600
  export function setAllArrayElements<T>(array: T[], value: T): void {
590
601
  for (let i = 0; i < array.length; i++) {
591
602
  array[i] = value;
@@ -630,6 +641,7 @@ export function shuffleArray<T>(
630
641
  * a random seed.
631
642
  */
632
643
  export function shuffleArrayInPlace<T>(
644
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
633
645
  array: T[],
634
646
  seedOrRNG: Seed | RNG | undefined,
635
647
  ): void {
@@ -653,6 +665,7 @@ export function sumArray(array: readonly number[]): number {
653
665
  /**
654
666
  * Helper function to swap two different array elements. (The elements will be swapped in-place.)
655
667
  */
668
+ // eslint-disable-next-line isaacscript/prefer-readonly-parameter-types
656
669
  export function swapArrayElements<T>(array: T[], i: number, j: number): void {
657
670
  const value1 = array[i]!; // eslint-disable-line @typescript-eslint/no-non-null-assertion
658
671
  const value2 = array[j]!; // eslint-disable-line @typescript-eslint/no-non-null-assertion
@@ -12,11 +12,11 @@
12
12
  * Helper function for non-TypeScript users to check if every element in the array is equal to a
13
13
  * condition.
14
14
  *
15
- * Internally, this just calls `array.every`.
15
+ * Internally, this just calls `Array.every`.
16
16
  */
17
17
  export function every<T>(
18
- array: T[],
19
- func: (value: T, index: number, array: T[]) => boolean,
18
+ array: readonly T[],
19
+ func: (value: T, index: number, array: readonly T[]) => boolean,
20
20
  ): boolean {
21
21
  return array.every(func);
22
22
  }
@@ -25,11 +25,11 @@ export function every<T>(
25
25
  * Helper function for non-TypeScript users to filter the elements in an array. Returns the filtered
26
26
  * array.
27
27
  *
28
- * Internally, this just calls `array.filter`.
28
+ * Internally, this just calls `Array.filter`.
29
29
  */
30
30
  export function filter<T>(
31
- array: T[],
32
- func: (value: T, index: number, array: T[]) => boolean,
31
+ array: readonly T[],
32
+ func: (value: T, index: number, array: readonly T[]) => boolean,
33
33
  ): readonly T[] {
34
34
  return array.filter(func);
35
35
  }
@@ -37,11 +37,11 @@ export function filter<T>(
37
37
  /**
38
38
  * Helper function for non-TypeScript users to find an element in an array.
39
39
  *
40
- * Internally, this just calls `array.find`.
40
+ * Internally, this just calls `Array.find`.
41
41
  */
42
42
  export function find<T>(
43
- array: T[],
44
- func: (value: T, index: number, array: T[]) => boolean,
43
+ array: readonly T[],
44
+ func: (value: T, index: number, array: readonly T[]) => boolean,
45
45
  ): T | undefined {
46
46
  return array.find(func);
47
47
  }
@@ -49,11 +49,11 @@ export function find<T>(
49
49
  /**
50
50
  * Helper function for non-TypeScript users to iterate over an array.
51
51
  *
52
- * Internally, this just calls `array.forEach`.
52
+ * Internally, this just calls `Array.forEach`.
53
53
  */
54
54
  export function forEach<T>(
55
- array: T[],
56
- func: (value: T, index: number, array: T[]) => void,
55
+ array: readonly T[],
56
+ func: (value: T, index: number, array: readonly T[]) => void,
57
57
  ): void {
58
58
  array.forEach(func); // eslint-disable-line unicorn/no-array-for-each
59
59
  }
@@ -64,9 +64,9 @@ export function forEach<T>(
64
64
  * Helper function for non-TypeScript users to convert an array to a string with the specified
65
65
  * separator.
66
66
  *
67
- * Internally, this just calls `array.join`.
67
+ * Internally, this just calls `Array.join`.
68
68
  */
69
- export function join<T>(array: T[], separator: string): string {
69
+ export function join<T>(array: readonly T[], separator: string): string {
70
70
  return array.join(separator);
71
71
  }
72
72
 
@@ -74,11 +74,11 @@ export function join<T>(array: T[], separator: string): string {
74
74
  * Helper function for non-TypeScript users to convert all of the elements in an array to something
75
75
  * else.
76
76
  *
77
- * Internally, this just calls `array.map`.
77
+ * Internally, this just calls `Array.map`.
78
78
  */
79
79
  export function map<T, U>(
80
- array: T[],
81
- func: (value: T, index: number, array: T[]) => U,
80
+ array: readonly T[],
81
+ func: (value: T, index: number, array: readonly T[]) => U,
82
82
  ): readonly U[] {
83
83
  return array.map(func);
84
84
  }
@@ -87,11 +87,11 @@ export function map<T, U>(
87
87
  * Helper function for non-TypeScript users to check if one or more elements in the array is equal
88
88
  * to a condition.
89
89
  *
90
- * Internally, this just calls `array.some`.
90
+ * Internally, this just calls `Array.some`.
91
91
  */
92
92
  export function some<T>(
93
- array: T[],
94
- func: (value: T, index: number, array: T[]) => boolean,
93
+ array: readonly T[],
94
+ func: (value: T, index: number, array: readonly T[]) => boolean,
95
95
  ): boolean {
96
96
  return array.some(func);
97
97
  }
@@ -15,7 +15,7 @@ import { log } from "./log";
15
15
  */
16
16
  export function benchmark(
17
17
  numTrials: int,
18
- ...functions: Array<() => void>
18
+ ...functions: ReadonlyArray<() => void>
19
19
  ): readonly int[] {
20
20
  log(`Benchmarking ${functions.length} function(s) with ${numTrials} trials.`);
21
21
 
@@ -14,7 +14,7 @@ export function arrayToBitFlags<T extends BitFlag | BitFlag128>(
14
14
  }
15
15
 
16
16
  /** Helper function to convert an array of bits to the resulting decimal number. */
17
- export function convertBinaryToDecimal(bits: int[]): number {
17
+ export function convertBinaryToDecimal(bits: readonly int[]): number {
18
18
  const bitsString = bits.join("");
19
19
  return Number.parseInt(bitsString, 2);
20
20
  }
@@ -90,7 +90,7 @@ export function getItemConfigCardType(
90
90
  */
91
91
  export function hasCard(
92
92
  player: EntityPlayer,
93
- ...cardTypes: CardType[]
93
+ ...cardTypes: readonly CardType[]
94
94
  ): boolean {
95
95
  const cardTypesSet = new Set(cardTypes);
96
96
  return POCKET_ITEM_SLOT_VALUES.some((pocketItemSlot) => {
@@ -114,7 +114,7 @@ export function onAnyChallenge(): boolean {
114
114
  * This function is variadic, meaning that you can specify as many challenges as you want to check
115
115
  * for.
116
116
  */
117
- export function onChallenge(...challenges: Challenge[]): boolean {
117
+ export function onChallenge(...challenges: readonly Challenge[]): boolean {
118
118
  const challenge = Isaac.GetChallenge();
119
119
  return challenges.includes(challenge);
120
120
  }