isaacscript-common 87.9.7 → 87.9.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.
Files changed (563) hide show
  1. package/dist/cachedEnumValues.js +29 -32
  2. package/dist/callbackClasses.js +142 -289
  3. package/dist/callbacks.js +147 -183
  4. package/dist/classes/DefaultMap.js +4 -8
  5. package/dist/classes/ModFeature.js +21 -25
  6. package/dist/classes/ModUpgraded.js +43 -47
  7. package/dist/classes/callbacks/EntityTakeDmgFilter.js +6 -10
  8. package/dist/classes/callbacks/EntityTakeDmgPlayer.js +7 -11
  9. package/dist/classes/callbacks/InputActionFilter.js +4 -8
  10. package/dist/classes/callbacks/InputActionPlayer.js +4 -8
  11. package/dist/classes/callbacks/PostAmbushFinished.js +10 -14
  12. package/dist/classes/callbacks/PostAmbushStarted.js +10 -14
  13. package/dist/classes/callbacks/PostBombExploded.js +8 -12
  14. package/dist/classes/callbacks/PostBombInitFilter.js +6 -10
  15. package/dist/classes/callbacks/PostBombInitLate.js +6 -10
  16. package/dist/classes/callbacks/PostBombRenderFilter.js +6 -10
  17. package/dist/classes/callbacks/PostBombUpdateFilter.js +6 -10
  18. package/dist/classes/callbacks/PostBoneSwing.js +7 -11
  19. package/dist/classes/callbacks/PostCollectibleEmpty.js +6 -10
  20. package/dist/classes/callbacks/PostCursedTeleport.js +30 -34
  21. package/dist/classes/callbacks/PostCustomRevive.js +4 -8
  22. package/dist/classes/callbacks/PostDiceRoomActivated.js +9 -13
  23. package/dist/classes/callbacks/PostDoorRender.js +8 -12
  24. package/dist/classes/callbacks/PostDoorUpdate.js +8 -12
  25. package/dist/classes/callbacks/PostEffectInitFilter.js +6 -10
  26. package/dist/classes/callbacks/PostEffectInitLate.js +6 -10
  27. package/dist/classes/callbacks/PostEffectRenderFilter.js +6 -10
  28. package/dist/classes/callbacks/PostEffectStateChanged.js +8 -12
  29. package/dist/classes/callbacks/PostEffectUpdateFilter.js +6 -10
  30. package/dist/classes/callbacks/PostEntityKillFilter.js +6 -10
  31. package/dist/classes/callbacks/PostEntityRemoveFilter.js +6 -10
  32. package/dist/classes/callbacks/PostEsauJr.js +4 -8
  33. package/dist/classes/callbacks/PostFamiliarInitFilter.js +6 -10
  34. package/dist/classes/callbacks/PostFamiliarInitLate.js +6 -10
  35. package/dist/classes/callbacks/PostFamiliarRenderFilter.js +6 -10
  36. package/dist/classes/callbacks/PostFamiliarStateChanged.js +8 -12
  37. package/dist/classes/callbacks/PostFamiliarUpdateFilter.js +6 -10
  38. package/dist/classes/callbacks/PostFirstEsauJr.js +4 -8
  39. package/dist/classes/callbacks/PostFirstFlip.js +4 -8
  40. package/dist/classes/callbacks/PostFlip.js +4 -8
  41. package/dist/classes/callbacks/PostGameEndFilter.js +6 -10
  42. package/dist/classes/callbacks/PostGameStartedReordered.js +6 -10
  43. package/dist/classes/callbacks/PostGameStartedReorderedLast.js +6 -10
  44. package/dist/classes/callbacks/PostGreedModeWave.js +7 -11
  45. package/dist/classes/callbacks/PostGridEntityBroken.js +6 -10
  46. package/dist/classes/callbacks/PostGridEntityCollision.js +4 -8
  47. package/dist/classes/callbacks/PostGridEntityCustomBroken.js +6 -10
  48. package/dist/classes/callbacks/PostGridEntityCustomCollision.js +4 -8
  49. package/dist/classes/callbacks/PostGridEntityCustomInit.js +6 -10
  50. package/dist/classes/callbacks/PostGridEntityCustomRemove.js +4 -8
  51. package/dist/classes/callbacks/PostGridEntityCustomRender.js +6 -10
  52. package/dist/classes/callbacks/PostGridEntityCustomStateChanged.js +6 -10
  53. package/dist/classes/callbacks/PostGridEntityCustomUpdate.js +6 -10
  54. package/dist/classes/callbacks/PostGridEntityInit.js +6 -10
  55. package/dist/classes/callbacks/PostGridEntityRemove.js +4 -8
  56. package/dist/classes/callbacks/PostGridEntityRender.js +6 -10
  57. package/dist/classes/callbacks/PostGridEntityStateChanged.js +6 -10
  58. package/dist/classes/callbacks/PostGridEntityUpdate.js +6 -10
  59. package/dist/classes/callbacks/PostHolyMantleRemoved.js +15 -19
  60. package/dist/classes/callbacks/PostItemDischarge.js +23 -27
  61. package/dist/classes/callbacks/PostItemPickup.js +6 -10
  62. package/dist/classes/callbacks/PostKeyboardChanged.js +9 -13
  63. package/dist/classes/callbacks/PostKnifeInitFilter.js +6 -10
  64. package/dist/classes/callbacks/PostKnifeInitLate.js +6 -10
  65. package/dist/classes/callbacks/PostKnifeRenderFilter.js +6 -10
  66. package/dist/classes/callbacks/PostKnifeUpdateFilter.js +6 -10
  67. package/dist/classes/callbacks/PostLaserInitFilter.js +6 -10
  68. package/dist/classes/callbacks/PostLaserInitLate.js +6 -10
  69. package/dist/classes/callbacks/PostLaserRenderFilter.js +6 -10
  70. package/dist/classes/callbacks/PostLaserUpdateFilter.js +6 -10
  71. package/dist/classes/callbacks/PostNPCDeathFilter.js +6 -10
  72. package/dist/classes/callbacks/PostNPCInitFilter.js +6 -10
  73. package/dist/classes/callbacks/PostNPCInitLate.js +6 -10
  74. package/dist/classes/callbacks/PostNPCRenderFilter.js +6 -10
  75. package/dist/classes/callbacks/PostNPCStateChanged.js +8 -12
  76. package/dist/classes/callbacks/PostNPCUpdateFilter.js +6 -10
  77. package/dist/classes/callbacks/PostNewLevelReordered.js +6 -10
  78. package/dist/classes/callbacks/PostNewRoomEarly.js +17 -21
  79. package/dist/classes/callbacks/PostNewRoomReordered.js +6 -10
  80. package/dist/classes/callbacks/PostPEffectUpdateReordered.js +6 -10
  81. package/dist/classes/callbacks/PostPickupChanged.js +6 -10
  82. package/dist/classes/callbacks/PostPickupCollect.js +8 -12
  83. package/dist/classes/callbacks/PostPickupInitFilter.js +6 -10
  84. package/dist/classes/callbacks/PostPickupInitFirst.js +10 -14
  85. package/dist/classes/callbacks/PostPickupInitLate.js +6 -10
  86. package/dist/classes/callbacks/PostPickupRenderFilter.js +6 -10
  87. package/dist/classes/callbacks/PostPickupSelectionFilter.js +4 -8
  88. package/dist/classes/callbacks/PostPickupStateChanged.js +8 -12
  89. package/dist/classes/callbacks/PostPickupUpdateFilter.js +6 -10
  90. package/dist/classes/callbacks/PostPitRender.js +8 -12
  91. package/dist/classes/callbacks/PostPitUpdate.js +8 -12
  92. package/dist/classes/callbacks/PostPlayerChangeHealth.js +14 -18
  93. package/dist/classes/callbacks/PostPlayerChangeStat.js +26 -30
  94. package/dist/classes/callbacks/PostPlayerChangeType.js +11 -15
  95. package/dist/classes/callbacks/PostPlayerCollectibleAdded.js +6 -10
  96. package/dist/classes/callbacks/PostPlayerCollectibleRemoved.js +6 -10
  97. package/dist/classes/callbacks/PostPlayerFatalDamage.js +24 -28
  98. package/dist/classes/callbacks/PostPlayerInitFirst.js +12 -16
  99. package/dist/classes/callbacks/PostPlayerInitLate.js +9 -13
  100. package/dist/classes/callbacks/PostPlayerRenderReordered.js +6 -10
  101. package/dist/classes/callbacks/PostPlayerUpdateReordered.js +6 -10
  102. package/dist/classes/callbacks/PostPoopRender.js +8 -12
  103. package/dist/classes/callbacks/PostPoopUpdate.js +8 -12
  104. package/dist/classes/callbacks/PostPressurePlateRender.js +8 -12
  105. package/dist/classes/callbacks/PostPressurePlateUpdate.js +8 -12
  106. package/dist/classes/callbacks/PostProjectileInitFilter.js +6 -10
  107. package/dist/classes/callbacks/PostProjectileInitLate.js +6 -10
  108. package/dist/classes/callbacks/PostProjectileKill.js +8 -12
  109. package/dist/classes/callbacks/PostProjectileRenderFilter.js +6 -10
  110. package/dist/classes/callbacks/PostProjectileUpdateFilter.js +6 -10
  111. package/dist/classes/callbacks/PostPurchase.js +21 -25
  112. package/dist/classes/callbacks/PostRockRender.js +8 -12
  113. package/dist/classes/callbacks/PostRockUpdate.js +8 -12
  114. package/dist/classes/callbacks/PostRoomClearChanged.js +9 -13
  115. package/dist/classes/callbacks/PostSacrifice.js +12 -16
  116. package/dist/classes/callbacks/PostSlotAnimationChanged.js +6 -10
  117. package/dist/classes/callbacks/PostSlotCollision.js +8 -12
  118. package/dist/classes/callbacks/PostSlotDestroyed.js +6 -10
  119. package/dist/classes/callbacks/PostSlotInit.js +6 -10
  120. package/dist/classes/callbacks/PostSlotRender.js +6 -10
  121. package/dist/classes/callbacks/PostSlotUpdate.js +6 -10
  122. package/dist/classes/callbacks/PostSpikesRender.js +8 -12
  123. package/dist/classes/callbacks/PostSpikesUpdate.js +8 -12
  124. package/dist/classes/callbacks/PostTNTRender.js +8 -12
  125. package/dist/classes/callbacks/PostTNTUpdate.js +8 -12
  126. package/dist/classes/callbacks/PostTearInitFilter.js +6 -10
  127. package/dist/classes/callbacks/PostTearInitLate.js +6 -10
  128. package/dist/classes/callbacks/PostTearInitVeryLate.js +6 -10
  129. package/dist/classes/callbacks/PostTearKill.js +8 -12
  130. package/dist/classes/callbacks/PostTearRenderFilter.js +6 -10
  131. package/dist/classes/callbacks/PostTearUpdateFilter.js +6 -10
  132. package/dist/classes/callbacks/PostTransformation.js +10 -14
  133. package/dist/classes/callbacks/PostTrinketBreak.js +16 -20
  134. package/dist/classes/callbacks/PostUsePillFilter.js +18 -22
  135. package/dist/classes/callbacks/PreBerserkDeath.js +14 -18
  136. package/dist/classes/callbacks/PreBombCollisionFilter.js +6 -10
  137. package/dist/classes/callbacks/PreCustomRevive.js +6 -10
  138. package/dist/classes/callbacks/PreEntitySpawnFilter.js +4 -8
  139. package/dist/classes/callbacks/PreFamiliarCollisionFilter.js +6 -10
  140. package/dist/classes/callbacks/PreGetPedestal.js +8 -12
  141. package/dist/classes/callbacks/PreItemPickup.js +6 -10
  142. package/dist/classes/callbacks/PreKnifeCollisionFilter.js +6 -10
  143. package/dist/classes/callbacks/PreNPCCollisionFilter.js +6 -10
  144. package/dist/classes/callbacks/PreNPCUpdateFilter.js +6 -10
  145. package/dist/classes/callbacks/PreNewLevel.js +10 -14
  146. package/dist/classes/callbacks/PreProjectileCollisionFilter.js +6 -10
  147. package/dist/classes/callbacks/PreRoomEntitySpawnFilter.js +4 -8
  148. package/dist/classes/callbacks/PreTearCollisionFilter.js +6 -10
  149. package/dist/classes/features/callbackLogic/CustomGridEntities.js +46 -50
  150. package/dist/classes/features/callbackLogic/CustomRevive.js +28 -32
  151. package/dist/classes/features/callbackLogic/EsauJrDetection.js +11 -15
  152. package/dist/classes/features/callbackLogic/FlipDetection.js +11 -15
  153. package/dist/classes/features/callbackLogic/GameReorderedCallbacks.js +26 -30
  154. package/dist/classes/features/callbackLogic/GridEntityCollisionDetection.js +10 -14
  155. package/dist/classes/features/callbackLogic/GridEntityRenderDetection.js +6 -10
  156. package/dist/classes/features/callbackLogic/GridEntityUpdateDetection.js +12 -16
  157. package/dist/classes/features/callbackLogic/ItemPickupDetection.js +17 -21
  158. package/dist/classes/features/callbackLogic/PickupChangeDetection.js +6 -10
  159. package/dist/classes/features/callbackLogic/PlayerCollectibleDetection.js +39 -43
  160. package/dist/classes/features/callbackLogic/PlayerReorderedCallbacks.js +18 -22
  161. package/dist/classes/features/callbackLogic/SlotDestroyedDetection.js +17 -21
  162. package/dist/classes/features/callbackLogic/SlotRenderDetection.js +8 -12
  163. package/dist/classes/features/callbackLogic/SlotUpdateDetection.js +9 -13
  164. package/dist/classes/features/other/CharacterHealthConversion.js +13 -17
  165. package/dist/classes/features/other/CharacterStats.js +9 -13
  166. package/dist/classes/features/other/CollectibleItemPoolType.js +17 -21
  167. package/dist/classes/features/other/CustomHotkeys.js +15 -19
  168. package/dist/classes/features/other/CustomItemPools.js +20 -24
  169. package/dist/classes/features/other/CustomPickups.js +15 -19
  170. package/dist/classes/features/other/CustomStages.js +116 -153
  171. package/dist/classes/features/other/CustomTrapdoors.js +119 -123
  172. package/dist/classes/features/other/DebugDisplay.js +77 -81
  173. package/dist/classes/features/other/DeployJSONRoom.js +65 -69
  174. package/dist/classes/features/other/DisableAllSound.js +14 -18
  175. package/dist/classes/features/other/DisableInputs.js +24 -28
  176. package/dist/classes/features/other/EdenStartingStatsHealth.js +36 -40
  177. package/dist/classes/features/other/ExtraConsoleCommands.js +65 -102
  178. package/dist/classes/features/other/FadeInRemover.js +9 -13
  179. package/dist/classes/features/other/FastReset.js +18 -22
  180. package/dist/classes/features/other/FlyingDetection.js +10 -14
  181. package/dist/classes/features/other/ForgottenSwitch.js +8 -12
  182. package/dist/classes/features/other/ItemPoolDetection.js +35 -39
  183. package/dist/classes/features/other/ModdedElementDetection.js +43 -47
  184. package/dist/classes/features/other/ModdedElementSets.js +135 -139
  185. package/dist/classes/features/other/NoSirenSteal.js +7 -11
  186. package/dist/classes/features/other/Pause.js +48 -52
  187. package/dist/classes/features/other/PersistentEntities.js +16 -20
  188. package/dist/classes/features/other/PickupIndexCreation.js +31 -35
  189. package/dist/classes/features/other/PlayerCollectibleTracking.js +18 -22
  190. package/dist/classes/features/other/PonyDetection.js +22 -26
  191. package/dist/classes/features/other/PressInput.js +10 -14
  192. package/dist/classes/features/other/PreventChildEntities.js +6 -10
  193. package/dist/classes/features/other/PreventGridEntityRespawn.js +34 -38
  194. package/dist/classes/features/other/RerunDetection.js +11 -15
  195. package/dist/classes/features/other/RoomClearFrame.js +11 -15
  196. package/dist/classes/features/other/RoomHistory.js +30 -34
  197. package/dist/classes/features/other/RunInNFrames.js +24 -28
  198. package/dist/classes/features/other/RunNextRoom.js +8 -12
  199. package/dist/classes/features/other/RunNextRun.js +8 -12
  200. package/dist/classes/features/other/SaveDataManager.js +61 -65
  201. package/dist/classes/features/other/SpawnRockAltRewards.js +115 -119
  202. package/dist/classes/features/other/StageHistory.js +76 -80
  203. package/dist/classes/features/other/StartAmbush.js +12 -16
  204. package/dist/classes/features/other/TaintedLazarusPlayers.js +10 -14
  205. package/dist/classes/features/other/UnlockAchievementsDetection.js +10 -14
  206. package/dist/classes/features/other/customStages/backdrop.js +68 -71
  207. package/dist/classes/features/other/customStages/constants.js +7 -10
  208. package/dist/classes/features/other/customStages/gridEntities.js +23 -30
  209. package/dist/classes/features/other/customStages/shadows.js +27 -30
  210. package/dist/classes/features/other/customStages/streakText.js +55 -60
  211. package/dist/classes/features/other/customStages/utils.js +13 -17
  212. package/dist/classes/features/other/customStages/v.js +4 -7
  213. package/dist/classes/features/other/customStages/versusScreen.js +46 -50
  214. package/dist/classes/features/other/debugDisplay/DebugDisplayBomb.js +8 -12
  215. package/dist/classes/features/other/debugDisplay/DebugDisplayDoor.js +8 -12
  216. package/dist/classes/features/other/debugDisplay/DebugDisplayEffect.js +8 -12
  217. package/dist/classes/features/other/debugDisplay/DebugDisplayFamiliar.js +8 -12
  218. package/dist/classes/features/other/debugDisplay/DebugDisplayKnife.js +8 -12
  219. package/dist/classes/features/other/debugDisplay/DebugDisplayLaser.js +8 -12
  220. package/dist/classes/features/other/debugDisplay/DebugDisplayNPC.js +8 -12
  221. package/dist/classes/features/other/debugDisplay/DebugDisplayPickup.js +8 -12
  222. package/dist/classes/features/other/debugDisplay/DebugDisplayPit.js +8 -12
  223. package/dist/classes/features/other/debugDisplay/DebugDisplayPlayer.js +8 -12
  224. package/dist/classes/features/other/debugDisplay/DebugDisplayPoop.js +8 -12
  225. package/dist/classes/features/other/debugDisplay/DebugDisplayPressurePlate.js +8 -12
  226. package/dist/classes/features/other/debugDisplay/DebugDisplayProjectile.js +8 -12
  227. package/dist/classes/features/other/debugDisplay/DebugDisplayRock.js +8 -12
  228. package/dist/classes/features/other/debugDisplay/DebugDisplaySlot.js +8 -12
  229. package/dist/classes/features/other/debugDisplay/DebugDisplaySpikes.js +8 -12
  230. package/dist/classes/features/other/debugDisplay/DebugDisplayTNT.js +8 -12
  231. package/dist/classes/features/other/debugDisplay/DebugDisplayTear.js +8 -12
  232. package/dist/classes/features/other/debugDisplay/utils.js +6 -10
  233. package/dist/classes/features/other/extraConsoleCommands/commands.js +411 -557
  234. package/dist/classes/features/other/extraConsoleCommands/subroutines.js +47 -57
  235. package/dist/classes/features/other/extraConsoleCommands/v.js +1 -4
  236. package/dist/classes/features/other/saveDataManager/constants.js +1 -4
  237. package/dist/classes/features/other/saveDataManager/glowingHourGlass.js +17 -21
  238. package/dist/classes/features/other/saveDataManager/loadFromDisk.js +19 -22
  239. package/dist/classes/features/other/saveDataManager/restoreDefaults.js +20 -25
  240. package/dist/classes/features/other/saveDataManager/saveToDisk.js +13 -16
  241. package/dist/classes/private/CustomCallback.js +4 -8
  242. package/dist/classes/private/Feature.js +1 -5
  243. package/dist/core/cachedClasses.js +12 -15
  244. package/dist/core/constants.js +126 -130
  245. package/dist/core/constantsFirstLast.js +22 -25
  246. package/dist/core/constantsVanilla.js +25 -28
  247. package/dist/core/upgradeMod.js +7 -10
  248. package/dist/decorators.js +6 -10
  249. package/dist/enums/AmbushType.js +2 -5
  250. package/dist/enums/CornerType.js +2 -5
  251. package/dist/enums/HealthType.js +2 -5
  252. package/dist/enums/ISCFeature.js +2 -5
  253. package/dist/enums/LadderSubTypeCustom.js +2 -5
  254. package/dist/enums/ModCallbackCustom.js +2 -5
  255. package/dist/enums/MysteriousPaperEffect.js +2 -5
  256. package/dist/enums/PlayerStat.js +2 -5
  257. package/dist/enums/PocketItemType.js +2 -5
  258. package/dist/enums/RockAltType.js +2 -5
  259. package/dist/enums/SaveDataKey.js +2 -5
  260. package/dist/enums/SerializationType.js +2 -5
  261. package/dist/enums/SlotDestructionType.js +2 -5
  262. package/dist/enums/private/GridEntityTypeCustom.js +1 -4
  263. package/dist/enums/private/SerializationBrand.js +2 -5
  264. package/dist/enums/private/StageTravelState.js +2 -5
  265. package/dist/enums/private/TrapdoorAnimation.js +2 -5
  266. package/dist/enums/private/UIStreakAnimation.js +2 -5
  267. package/dist/features.js +138 -141
  268. package/dist/functions/ambush.js +9 -12
  269. package/dist/functions/array.js +45 -76
  270. package/dist/functions/arrayLua.js +7 -16
  271. package/dist/functions/benchmark.js +4 -7
  272. package/dist/functions/bitSet128.js +19 -26
  273. package/dist/functions/bitwise.js +14 -23
  274. package/dist/functions/bombs.js +1 -4
  275. package/dist/functions/bosses.js +68 -85
  276. package/dist/functions/cards.js +44 -62
  277. package/dist/functions/challenges.js +28 -39
  278. package/dist/functions/characters.js +68 -87
  279. package/dist/functions/charge.js +41 -52
  280. package/dist/functions/chargeBar.js +2 -6
  281. package/dist/functions/collectibleTag.js +9 -13
  282. package/dist/functions/collectibles.js +133 -172
  283. package/dist/functions/color.js +29 -38
  284. package/dist/functions/console.js +4 -8
  285. package/dist/functions/curses.js +6 -10
  286. package/dist/functions/debugFunctions.js +7 -14
  287. package/dist/functions/decorators.js +13 -19
  288. package/dist/functions/deepCopy.js +96 -99
  289. package/dist/functions/deepCopyTests.js +56 -59
  290. package/dist/functions/dimensions.js +10 -14
  291. package/dist/functions/direction.js +22 -30
  292. package/dist/functions/doors.js +104 -154
  293. package/dist/functions/easing.js +30 -62
  294. package/dist/functions/effects.js +6 -10
  295. package/dist/functions/emptyRoom.js +30 -34
  296. package/dist/functions/entities.js +88 -115
  297. package/dist/functions/entitiesSpecific.js +83 -125
  298. package/dist/functions/entityTypes.js +3 -6
  299. package/dist/functions/enums.js +27 -41
  300. package/dist/functions/external.js +4 -8
  301. package/dist/functions/familiars.js +17 -25
  302. package/dist/functions/flag.js +10 -19
  303. package/dist/functions/frames.js +31 -51
  304. package/dist/functions/globals.js +26 -66
  305. package/dist/functions/gridEntities.js +231 -269
  306. package/dist/functions/gridEntitiesSpecific.js +86 -126
  307. package/dist/functions/gridIndex.js +8 -11
  308. package/dist/functions/hash.js +1 -4
  309. package/dist/functions/hex.js +7 -11
  310. package/dist/functions/input.js +65 -88
  311. package/dist/functions/isaacAPIClass.js +28 -53
  312. package/dist/functions/itemPool.js +39 -48
  313. package/dist/functions/jsonHelpers.js +5 -42
  314. package/dist/functions/jsonRoom.js +39 -46
  315. package/dist/functions/kColor.js +30 -39
  316. package/dist/functions/language.js +3 -6
  317. package/dist/functions/level.js +20 -26
  318. package/dist/functions/levelGrid.js +81 -108
  319. package/dist/functions/log.js +6 -12
  320. package/dist/functions/logEntities.js +49 -59
  321. package/dist/functions/logMisc.js +183 -214
  322. package/dist/functions/map.js +10 -20
  323. package/dist/functions/math.js +16 -31
  324. package/dist/functions/merge.js +48 -51
  325. package/dist/functions/mergeTests.js +34 -37
  326. package/dist/functions/minimap.js +34 -46
  327. package/dist/functions/modFeatures.js +1 -4
  328. package/dist/functions/newArray.js +5 -8
  329. package/dist/functions/nextStage.js +63 -67
  330. package/dist/functions/npcDataStructures.js +9 -20
  331. package/dist/functions/npcs.js +37 -45
  332. package/dist/functions/pickupVariants.js +26 -39
  333. package/dist/functions/pickups.js +43 -59
  334. package/dist/functions/pickupsSpecific.js +76 -118
  335. package/dist/functions/pills.js +52 -72
  336. package/dist/functions/playerCenter.js +13 -16
  337. package/dist/functions/playerCollectibles.js +59 -79
  338. package/dist/functions/playerDataStructures.js +18 -29
  339. package/dist/functions/playerEffects.js +12 -19
  340. package/dist/functions/playerHealth.js +91 -113
  341. package/dist/functions/playerIndex.js +22 -33
  342. package/dist/functions/playerTrinkets.js +31 -43
  343. package/dist/functions/players.js +87 -126
  344. package/dist/functions/pocketItems.js +33 -43
  345. package/dist/functions/positionVelocity.js +23 -32
  346. package/dist/functions/pressurePlate.js +7 -10
  347. package/dist/functions/projectiles.js +11 -15
  348. package/dist/functions/random.js +8 -13
  349. package/dist/functions/readOnly.js +3 -8
  350. package/dist/functions/render.js +7 -12
  351. package/dist/functions/revive.js +38 -45
  352. package/dist/functions/rng.js +31 -44
  353. package/dist/functions/rockAlt.js +18 -22
  354. package/dist/functions/roomData.js +24 -40
  355. package/dist/functions/roomGrid.js +17 -25
  356. package/dist/functions/roomShape.js +39 -55
  357. package/dist/functions/roomShapeWalls.js +67 -71
  358. package/dist/functions/roomTransition.js +13 -17
  359. package/dist/functions/rooms.js +181 -244
  360. package/dist/functions/run.js +29 -39
  361. package/dist/functions/seeds.js +6 -10
  362. package/dist/functions/serialization.js +27 -34
  363. package/dist/functions/set.js +24 -40
  364. package/dist/functions/slots.js +18 -22
  365. package/dist/functions/sort.js +9 -15
  366. package/dist/functions/sound.js +12 -16
  367. package/dist/functions/spawnCollectible.js +21 -26
  368. package/dist/functions/sprites.js +16 -24
  369. package/dist/functions/stage.js +122 -164
  370. package/dist/functions/stats.js +37 -43
  371. package/dist/functions/storyBosses.js +36 -40
  372. package/dist/functions/string.js +19 -33
  373. package/dist/functions/table.js +21 -31
  374. package/dist/functions/tears.js +6 -14
  375. package/dist/functions/transformations.js +35 -42
  376. package/dist/functions/trinketGive.js +29 -36
  377. package/dist/functions/trinkets.js +45 -60
  378. package/dist/functions/tstlClass.js +11 -20
  379. package/dist/functions/types.js +22 -46
  380. package/dist/functions/ui.js +25 -40
  381. package/dist/functions/utils.js +22 -36
  382. package/dist/functions/vector.js +33 -46
  383. package/dist/functions/versusScreen.js +12 -18
  384. package/dist/functions/weighted.js +8 -12
  385. package/dist/index.js +150 -166
  386. package/dist/indexLua.js +151 -167
  387. package/dist/interfaces/ChargeBarSprites.js +1 -2
  388. package/dist/interfaces/Corner.js +1 -2
  389. package/dist/interfaces/CustomStageTSConfig.js +1 -2
  390. package/dist/interfaces/GridEntityCustomData.js +1 -2
  391. package/dist/interfaces/JSONRoomsFile.js +1 -2
  392. package/dist/interfaces/PlayerHealth.js +1 -2
  393. package/dist/interfaces/PlayerStats.js +2 -4
  394. package/dist/interfaces/PocketItemDescription.js +1 -2
  395. package/dist/interfaces/RoomDescription.js +1 -2
  396. package/dist/interfaces/SaveData.js +1 -2
  397. package/dist/interfaces/StageHistoryEntry.js +1 -2
  398. package/dist/interfaces/TSTLClassMetatable.js +1 -2
  399. package/dist/interfaces/TrinketSituation.js +1 -2
  400. package/dist/interfaces/private/AddCallbackParametersCustom.js +2 -4
  401. package/dist/interfaces/private/CustomStage.js +1 -2
  402. package/dist/interfaces/private/CustomTrapdoorDescription.js +1 -2
  403. package/dist/interfaces/private/ModUpgradedInterface.js +1 -2
  404. package/dist/isaacscript-common.lua +1 -1
  405. package/dist/maps/PHDPillConversionsMap.js +19 -22
  406. package/dist/maps/cardNameToTypeMap.js +205 -208
  407. package/dist/maps/characterNameToTypeMap.js +85 -88
  408. package/dist/maps/collectibleNameToTypeMap.js +5 -8
  409. package/dist/maps/defaultPlayerStatMap.js +10 -13
  410. package/dist/maps/entityTypeVariantToBossIDMap.js +3 -6
  411. package/dist/maps/falsePHDPillConversionsMap.js +33 -36
  412. package/dist/maps/gridEntityTypeToBrokenStateMap.js +15 -18
  413. package/dist/maps/gridEntityXMLMap.js +52 -55
  414. package/dist/maps/itemPoolTypeToItemPoolName.js +33 -36
  415. package/dist/maps/keyboardToStringMap.js +66 -69
  416. package/dist/maps/pillNameToEffectMap.js +83 -86
  417. package/dist/maps/roomNameToTypeMap.js +38 -41
  418. package/dist/maps/roomShapeToTopLeftWallGridIndexMap.js +9 -12
  419. package/dist/maps/transformationNameToPlayerFormMap.js +30 -33
  420. package/dist/maps/trinketNameToTypeMap.js +5 -8
  421. package/dist/objects/LRoomShapeToRectangles.js +22 -25
  422. package/dist/objects/backdropTypeToRockAltType.js +65 -68
  423. package/dist/objects/batteryNames.js +8 -11
  424. package/dist/objects/bombNames.js +11 -14
  425. package/dist/objects/bossIDToEntityTypeVariant.js +116 -119
  426. package/dist/objects/bossNamePNGFileNames.js +104 -107
  427. package/dist/objects/bossNames.js +105 -108
  428. package/dist/objects/bossPortraitPNGFileNames.js +104 -107
  429. package/dist/objects/cardDescriptions.js +101 -104
  430. package/dist/objects/cardNames.js +101 -104
  431. package/dist/objects/challengeBosses.js +49 -52
  432. package/dist/objects/challengeCharacters.js +49 -52
  433. package/dist/objects/challengeCollectibleTypes.js +160 -163
  434. package/dist/objects/challengeNames.js +49 -52
  435. package/dist/objects/challengeTrinketType.js +48 -51
  436. package/dist/objects/characterDamageMultipliers.js +44 -47
  437. package/dist/objects/characterNames.js +44 -47
  438. package/dist/objects/characterSpritePNGFileNames.js +44 -47
  439. package/dist/objects/characterStartingCollectibleTypes.js +49 -52
  440. package/dist/objects/characterStartingTrinketTypes.js +44 -47
  441. package/dist/objects/chestNames.js +15 -18
  442. package/dist/objects/coinNames.js +11 -14
  443. package/dist/objects/coinSubTypeToValue.js +11 -14
  444. package/dist/objects/collectibleDescriptions.js +725 -728
  445. package/dist/objects/collectibleNames.js +725 -728
  446. package/dist/objects/colors.js +1 -4
  447. package/dist/objects/directionNames.js +7 -10
  448. package/dist/objects/directionToDegrees.js +7 -10
  449. package/dist/objects/directionToMoveAction.js +7 -10
  450. package/dist/objects/directionToShootAction.js +7 -10
  451. package/dist/objects/directionToVector.js +9 -12
  452. package/dist/objects/doorSlotFlagToDoorSlot.js +11 -14
  453. package/dist/objects/doorSlotToDirection.js +11 -14
  454. package/dist/objects/doorSlotToDoorSlotFlag.js +11 -14
  455. package/dist/objects/gridEntityTypeToANM2Name.js +30 -33
  456. package/dist/objects/heartNames.js +16 -19
  457. package/dist/objects/isaacAPIClassTypeToBrand.js +8 -11
  458. package/dist/objects/isaacAPIClassTypeToFunctions.js +37 -40
  459. package/dist/objects/itemPoolTypeToCollectibleTypesSet.js +9 -45
  460. package/dist/objects/kColors.js +1 -4
  461. package/dist/objects/keyNames.js +8 -11
  462. package/dist/objects/languageNames.js +9 -12
  463. package/dist/objects/oppositeDoorSlots.js +11 -14
  464. package/dist/objects/pillEffectClasses.js +53 -56
  465. package/dist/objects/pillEffectNames.js +53 -56
  466. package/dist/objects/pillEffectTypeToPillEffects.js +11 -14
  467. package/dist/objects/pillEffectTypes.js +53 -56
  468. package/dist/objects/playerNamePNGFileNames.js +44 -47
  469. package/dist/objects/playerPortraitPNGFileNames.js +44 -47
  470. package/dist/objects/roomShapeBounds.js +23 -26
  471. package/dist/objects/roomShapeCorners.js +128 -131
  472. package/dist/objects/roomShapeLayoutSizes.js +23 -26
  473. package/dist/objects/roomShapeToBottomRightPosition.js +17 -20
  474. package/dist/objects/roomShapeToDoorSlotCoordinates.js +78 -81
  475. package/dist/objects/roomShapeToDoorSlots.js +48 -51
  476. package/dist/objects/roomShapeToDoorSlotsToGridIndexDelta.js +82 -85
  477. package/dist/objects/roomShapeToGridWidth.js +14 -17
  478. package/dist/objects/roomShapeToTopLeftPosition.js +18 -21
  479. package/dist/objects/roomShapeVolumes.js +21 -24
  480. package/dist/objects/roomTypeNames.js +32 -35
  481. package/dist/objects/roomTypeSpecialGotoPrefixes.js +32 -35
  482. package/dist/objects/sackNames.js +6 -9
  483. package/dist/objects/slotNames.js +21 -24
  484. package/dist/objects/stageIDNames.js +33 -36
  485. package/dist/objects/stageToMusic.js +69 -72
  486. package/dist/objects/stageToStageID.js +90 -93
  487. package/dist/objects/stageTypeSuffixes.js +8 -11
  488. package/dist/objects/transformationNames.js +16 -19
  489. package/dist/objects/trinketDescriptions.js +192 -195
  490. package/dist/objects/trinketNames.js +192 -195
  491. package/dist/objects/versusScreenBackgroundColors.js +39 -42
  492. package/dist/objects/versusScreenDirtSpotColors.js +39 -42
  493. package/dist/patchErrorFunctions.js +4 -7
  494. package/dist/serialization.js +6 -9
  495. package/dist/sets/LRoomShapesSet.js +7 -10
  496. package/dist/sets/bigRoomShapesSet.js +10 -13
  497. package/dist/sets/bossSets.js +261 -264
  498. package/dist/sets/charactersThatStartWithAnActiveItemSet.js +14 -17
  499. package/dist/sets/charactersWithBlackHeartFromEternalHeartSet.js +5 -8
  500. package/dist/sets/charactersWithFreeDevilDealsSet.js +3 -6
  501. package/dist/sets/charactersWithNoRedHeartsSet.js +11 -14
  502. package/dist/sets/charactersWithNoSoulHeartsSet.js +8 -11
  503. package/dist/sets/consoleCommandsSet.js +2 -5
  504. package/dist/sets/entitiesWithArmorSet.js +44 -47
  505. package/dist/sets/familiarsThatShootPlayerTearsSet.js +11 -14
  506. package/dist/sets/itemConfigCardTypesForCards.js +7 -10
  507. package/dist/sets/lostStyleCharactersSet.js +8 -11
  508. package/dist/sets/mineShaftRoomSubTypesSet.js +8 -11
  509. package/dist/sets/narrowRoomShapesSet.js +7 -10
  510. package/dist/sets/poopGridEntityXMLTypesSet.js +12 -15
  511. package/dist/sets/redHeartSubTypesSet.js +6 -9
  512. package/dist/sets/repentanceBossIDsSet.js +26 -29
  513. package/dist/sets/sinEntityTypesSet.js +10 -13
  514. package/dist/sets/singleUseActiveCollectibleTypesSet.js +11 -14
  515. package/dist/shaderCrashFix.js +4 -7
  516. package/dist/shouldFire.js +28 -58
  517. package/dist/types/AddSubtract.js +1 -2
  518. package/dist/types/AllButFirst.js +1 -2
  519. package/dist/types/AllButLast.js +1 -2
  520. package/dist/types/AnyClass.js +1 -2
  521. package/dist/types/AnyEntity.js +1 -2
  522. package/dist/types/AnyFunction.js +1 -2
  523. package/dist/types/AnyGridEntity.js +1 -2
  524. package/dist/types/CompositionTypeSatisfiesEnum.js +1 -2
  525. package/dist/types/ConversionHeartSubType.js +1 -2
  526. package/dist/types/Decrement.js +1 -2
  527. package/dist/types/ERange.js +1 -2
  528. package/dist/types/EntityID.js +1 -2
  529. package/dist/types/FunctionTuple.js +1 -2
  530. package/dist/types/GridEntityID.js +1 -2
  531. package/dist/types/HasFunction.js +1 -2
  532. package/dist/types/IRange.js +1 -2
  533. package/dist/types/Immutable.js +1 -2
  534. package/dist/types/Increment.js +1 -2
  535. package/dist/types/LowercaseKeys.js +1 -2
  536. package/dist/types/NaturalNumbersLessThan.js +1 -2
  537. package/dist/types/NaturalNumbersLessThanOrEqualTo.js +1 -2
  538. package/dist/types/ObjectValues.js +1 -2
  539. package/dist/types/PickingUpItem.js +15 -22
  540. package/dist/types/PickupIndex.js +1 -2
  541. package/dist/types/PlayerIndex.js +1 -2
  542. package/dist/types/PossibleStatType.js +1 -2
  543. package/dist/types/PublicInterface.js +1 -2
  544. package/dist/types/ReadonlyMap.js +1 -4
  545. package/dist/types/ReadonlyRecord.js +1 -2
  546. package/dist/types/ReadonlySet.js +1 -4
  547. package/dist/types/StartsWithLowercase.js +1 -2
  548. package/dist/types/StartsWithUppercase.js +1 -2
  549. package/dist/types/TSTLClass.js +1 -2
  550. package/dist/types/Tuple.js +1 -2
  551. package/dist/types/TupleKeys.js +1 -2
  552. package/dist/types/TupleToIntersection.js +1 -2
  553. package/dist/types/TupleToUnion.js +1 -2
  554. package/dist/types/TupleWithLengthBetween.js +1 -2
  555. package/dist/types/TupleWithMaxLength.js +1 -2
  556. package/dist/types/UnionToIntersection.js +1 -2
  557. package/dist/types/UppercaseKeys.js +1 -2
  558. package/dist/types/WeightedArray.js +1 -2
  559. package/dist/types/WidenLiteral.js +1 -2
  560. package/dist/types/Writable.js +1 -2
  561. package/dist/types/private/CallbackTuple.js +1 -2
  562. package/dist/types/private/ModUpgradedWithFeatures.js +1 -2
  563. package/package.json +3 -3
@@ -1,30 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepCopy = deepCopy;
4
- const DefaultMap_1 = require("../classes/DefaultMap");
5
- const constants_1 = require("../classes/features/other/saveDataManager/constants");
6
- const SerializationBrand_1 = require("../enums/private/SerializationBrand");
7
- const SerializationType_1 = require("../enums/SerializationType");
8
- const serialization_1 = require("../serialization");
9
- const array_1 = require("./array");
10
- const isaacAPIClass_1 = require("./isaacAPIClass");
11
- const log_1 = require("./log");
12
- const serialization_2 = require("./serialization");
13
- const sort_1 = require("./sort");
14
- const tstlClass_1 = require("./tstlClass");
15
- const types_1 = require("./types");
16
- const utils_1 = require("./utils");
17
- function deepCopy(value, serializationType = SerializationType_1.SerializationType.NONE, traversalDescription = "", classConstructors = new LuaMap(), insideMap = false) {
18
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
1
+ import { DefaultMap } from "../classes/DefaultMap";
2
+ import { SAVE_DATA_MANAGER_DEBUG } from "../classes/features/other/saveDataManager/constants";
3
+ import { SerializationBrand } from "../enums/private/SerializationBrand";
4
+ import { SerializationType } from "../enums/SerializationType";
5
+ import { isSerializationBrand } from "../serialization";
6
+ import { isArray } from "./array";
7
+ import { getIsaacAPIClassName } from "./isaacAPIClass";
8
+ import { log } from "./log";
9
+ import { copyIsaacAPIClass, deserializeIsaacAPIClass, isCopyableIsaacAPIClass, isSerializedIsaacAPIClass, serializeIsaacAPIClass, } from "./serialization";
10
+ import { sortTwoDimensionalArray } from "./sort";
11
+ import { getTSTLClassName, isDefaultMap, isTSTLMap, isTSTLSet, newTSTLClass, } from "./tstlClass";
12
+ import { asString, isNumber, isPrimitive } from "./types";
13
+ import { assertDefined, getTraversalDescription } from "./utils";
14
+ export function deepCopy(value, serializationType = SerializationType.NONE, traversalDescription = "", classConstructors = new LuaMap(), insideMap = false) {
15
+ if (SAVE_DATA_MANAGER_DEBUG) {
19
16
  let logString = `deepCopy is operating on: ${traversalDescription}`;
20
- if (serializationType === SerializationType_1.SerializationType.SERIALIZE) {
17
+ if (serializationType === SerializationType.SERIALIZE) {
21
18
  logString += " (serializing)";
22
19
  }
23
- else if (serializationType === SerializationType_1.SerializationType.DESERIALIZE) {
20
+ else if (serializationType === SerializationType.DESERIALIZE) {
24
21
  logString += " (deserializing)";
25
22
  }
26
23
  logString += `: ${value}`;
27
- (0, log_1.log)(logString);
24
+ log(logString);
28
25
  }
29
26
  const valueType = type(value);
30
27
  switch (valueType) {
@@ -38,10 +35,10 @@ function deepCopy(value, serializationType = SerializationType_1.SerializationTy
38
35
  // Second, handle values that cannot be serialized.
39
36
  case "function":
40
37
  case "thread": {
41
- if (serializationType === SerializationType_1.SerializationType.SERIALIZE) {
38
+ if (serializationType === SerializationType.SERIALIZE) {
42
39
  error(`The deep copy function does not support serialization of "${traversalDescription}", since it is type: ${valueType}`);
43
40
  }
44
- if (serializationType === SerializationType_1.SerializationType.DESERIALIZE) {
41
+ if (serializationType === SerializationType.DESERIALIZE) {
45
42
  error(`The deep copy function does not support deserialization of "${traversalDescription}", since it is type: ${valueType}`);
46
43
  }
47
44
  // We cannot copy this, so simply return the reference.
@@ -72,8 +69,8 @@ function checkMetatable(luaMap, traversalDescription) {
72
69
  error(`The deepCopy function detected that ${tableDescription} has a metatable. Copying tables with metatables is not supported, unless they are explicitly handled by the save data manager. (e.g. TypeScriptToLua Maps, TypeScriptToLua Sets, etc.)`);
73
70
  }
74
71
  function deepCopyArray(array, serializationType, traversalDescription, classConstructors, insideMap) {
75
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
76
- (0, log_1.log)("deepCopy is copying an array.");
72
+ if (SAVE_DATA_MANAGER_DEBUG) {
73
+ log("deepCopy is copying an array.");
77
74
  }
78
75
  const newArray = [];
79
76
  for (const value of array) {
@@ -83,17 +80,17 @@ function deepCopyArray(array, serializationType, traversalDescription, classCons
83
80
  return newArray;
84
81
  }
85
82
  function deepCopyDefaultMap(defaultMap, serializationType, traversalDescription, classConstructors, insideMap) {
86
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
87
- (0, log_1.log)("deepCopy is copying a DefaultMap.");
83
+ if (SAVE_DATA_MANAGER_DEBUG) {
84
+ log("deepCopy is copying a DefaultMap.");
88
85
  }
89
- const constructorArg = (0, tstlClass_1.isDefaultMap)(defaultMap)
86
+ const constructorArg = isDefaultMap(defaultMap)
90
87
  ? defaultMap.getConstructorArg()
91
88
  : undefined; // The undefined case is handled explicitly in the "getNewDefaultMap" function.
92
89
  // First, handle the special case of serializing a DefaultMap instantiated with a factory
93
90
  // function. If this is the case, then we cannot serialize it (because there is no way to
94
91
  // serialize a function).
95
- if (serializationType === SerializationType_1.SerializationType.SERIALIZE
96
- && !(0, types_1.isPrimitive)(constructorArg)) {
92
+ if (serializationType === SerializationType.SERIALIZE
93
+ && !isPrimitive(constructorArg)) {
97
94
  if (insideMap) {
98
95
  // The case of a DefaultMap within another map is complicated. Unlike a DefaultMap attached to
99
96
  // a "normal" object, the `merge` function will have no reference to the factory function that
@@ -115,18 +112,18 @@ function deepCopyDefaultMap(defaultMap, serializationType, traversalDescription,
115
112
  if (convertedNumberKeysToStrings) {
116
113
  // Differentiating between the two types looks superfluous but is necessary for TSTL to produce
117
114
  // the proper set method call.
118
- if ((0, tstlClass_1.isDefaultMap)(newDefaultMap)) {
119
- newDefaultMap.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
115
+ if (isDefaultMap(newDefaultMap)) {
116
+ newDefaultMap.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
120
117
  // eslint-disable-next-line unicorn/no-duplicate-if-branches
121
118
  }
122
119
  else {
123
- newDefaultMap.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
120
+ newDefaultMap.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
124
121
  }
125
122
  }
126
123
  for (const [key, value] of entries) {
127
124
  // Differentiating between the two types looks superfluous but is necessary for TSTL to produce
128
125
  // the proper set method call.
129
- if ((0, tstlClass_1.isDefaultMap)(newDefaultMap)) {
126
+ if (isDefaultMap(newDefaultMap)) {
130
127
  newDefaultMap.set(key, value);
131
128
  // eslint-disable-next-line unicorn/no-duplicate-if-branches
132
129
  }
@@ -137,14 +134,14 @@ function deepCopyDefaultMap(defaultMap, serializationType, traversalDescription,
137
134
  return newDefaultMap;
138
135
  }
139
136
  function deepCopyMap(map, serializationType, traversalDescription, classConstructors, insideMap) {
140
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
141
- (0, log_1.log)("deepCopy is copying a Map.");
137
+ if (SAVE_DATA_MANAGER_DEBUG) {
138
+ log("deepCopy is copying a Map.");
142
139
  }
143
140
  let newMap;
144
- if (serializationType === SerializationType_1.SerializationType.SERIALIZE) {
141
+ if (serializationType === SerializationType.SERIALIZE) {
145
142
  // Since we are serializing, the new object will be a Lua table.
146
143
  newMap = new LuaMap();
147
- newMap.set(SerializationBrand_1.SerializationBrand.MAP, "");
144
+ newMap.set(SerializationBrand.MAP, "");
148
145
  }
149
146
  else {
150
147
  newMap = new Map();
@@ -154,18 +151,18 @@ function deepCopyMap(map, serializationType, traversalDescription, classConstruc
154
151
  if (convertedNumberKeysToStrings) {
155
152
  // Differentiating between the two types looks superfluous but is necessary for TSTL to produce
156
153
  // the proper set method call.
157
- if ((0, tstlClass_1.isTSTLMap)(newMap)) {
158
- newMap.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
154
+ if (isTSTLMap(newMap)) {
155
+ newMap.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
159
156
  // eslint-disable-next-line unicorn/no-duplicate-if-branches
160
157
  }
161
158
  else {
162
- newMap.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
159
+ newMap.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
163
160
  }
164
161
  }
165
162
  for (const [key, value] of entries) {
166
163
  // Differentiating between the two types looks superfluous but is necessary for TSTL to produce
167
164
  // the proper set method call.
168
- if ((0, tstlClass_1.isTSTLMap)(newMap)) {
165
+ if (isTSTLMap(newMap)) {
169
166
  newMap.set(key, value);
170
167
  // eslint-disable-next-line unicorn/no-duplicate-if-branches
171
168
  }
@@ -176,13 +173,13 @@ function deepCopyMap(map, serializationType, traversalDescription, classConstruc
176
173
  return newMap;
177
174
  }
178
175
  function deepCopyNormalLuaTable(luaMap, serializationType, traversalDescription, classConstructors, insideMap) {
179
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
180
- (0, log_1.log)("deepCopy is copying a normal Lua table.");
176
+ if (SAVE_DATA_MANAGER_DEBUG) {
177
+ log("deepCopy is copying a normal Lua table.");
181
178
  }
182
179
  const newTable = new LuaMap();
183
180
  const { entries, convertedNumberKeysToStrings } = getCopiedEntries(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
184
181
  if (convertedNumberKeysToStrings) {
185
- newTable.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
182
+ newTable.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
186
183
  }
187
184
  for (const [key, value] of entries) {
188
185
  newTable.set(key, value);
@@ -190,15 +187,15 @@ function deepCopyNormalLuaTable(luaMap, serializationType, traversalDescription,
190
187
  return newTable;
191
188
  }
192
189
  function deepCopySet(set, serializationType, traversalDescription, classConstructors, insideMap) {
193
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
194
- (0, log_1.log)("deepCopy is copying a Set.");
190
+ if (SAVE_DATA_MANAGER_DEBUG) {
191
+ log("deepCopy is copying a Set.");
195
192
  }
196
193
  let newSet;
197
- if (serializationType === SerializationType_1.SerializationType.SERIALIZE) {
194
+ if (serializationType === SerializationType.SERIALIZE) {
198
195
  // For serialization purposes, we represent a `Set` as a table with keys that match the
199
196
  // keys/values in the Set and values of an empty string.
200
197
  newSet = new LuaMap();
201
- newSet.set(SerializationBrand_1.SerializationBrand.SET, "");
198
+ newSet.set(SerializationBrand.SET, "");
202
199
  }
203
200
  else {
204
201
  newSet = new Set();
@@ -207,18 +204,18 @@ function deepCopySet(set, serializationType, traversalDescription, classConstruc
207
204
  if (convertedNumberKeysToStrings) {
208
205
  // Differentiating between the two types looks superfluous but is necessary for TSTL to produce
209
206
  // the proper set method call.
210
- if ((0, tstlClass_1.isTSTLSet)(newSet)) {
207
+ if (isTSTLSet(newSet)) {
211
208
  // We should never be serializing an object of type `Set`.
212
209
  error("The deep copy function cannot convert number keys to strings for a Set.");
213
210
  }
214
211
  else {
215
- newSet.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
212
+ newSet.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
216
213
  }
217
214
  }
218
215
  for (const [key] of entries) {
219
216
  // Differentiating between the two types looks superfluous but is necessary for TSTL to produce
220
217
  // the proper set method call.
221
- if ((0, tstlClass_1.isTSTLSet)(newSet)) {
218
+ if (isTSTLSet(newSet)) {
222
219
  newSet.add(key);
223
220
  }
224
221
  else {
@@ -229,62 +226,62 @@ function deepCopySet(set, serializationType, traversalDescription, classConstruc
229
226
  }
230
227
  function deepCopyTable(luaMap, serializationType, traversalDescription, classConstructors, insideMap) {
231
228
  // First, handle the cases of TSTL classes or serialized TSTL classes.
232
- if ((0, tstlClass_1.isDefaultMap)(luaMap) || luaMap.has(SerializationBrand_1.SerializationBrand.DEFAULT_MAP)) {
229
+ if (isDefaultMap(luaMap) || luaMap.has(SerializationBrand.DEFAULT_MAP)) {
233
230
  return deepCopyDefaultMap(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
234
231
  }
235
- if ((0, tstlClass_1.isTSTLMap)(luaMap) || luaMap.has(SerializationBrand_1.SerializationBrand.MAP)) {
232
+ if (isTSTLMap(luaMap) || luaMap.has(SerializationBrand.MAP)) {
236
233
  return deepCopyMap(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
237
234
  }
238
- if ((0, tstlClass_1.isTSTLSet)(luaMap) || luaMap.has(SerializationBrand_1.SerializationBrand.SET)) {
235
+ if (isTSTLSet(luaMap) || luaMap.has(SerializationBrand.SET)) {
239
236
  return deepCopySet(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
240
237
  }
241
- const className = (0, tstlClass_1.getTSTLClassName)(luaMap);
238
+ const className = getTSTLClassName(luaMap);
242
239
  if (className === "WeakMap" || className === "WeakSet") {
243
240
  error(`The deep copy function does not support copying the "${className}" class for: ${traversalDescription}`);
244
241
  }
245
- if (className !== undefined || luaMap.has(SerializationBrand_1.SerializationBrand.TSTL_CLASS)) {
242
+ if (className !== undefined || luaMap.has(SerializationBrand.TSTL_CLASS)) {
246
243
  return deepCopyTSTLClass(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
247
244
  }
248
245
  // This is not a TSTL Map/Set/class. If it has a metatable, abort.
249
246
  checkMetatable(luaMap, traversalDescription);
250
247
  // Handle the special case of serialized Isaac API classes.
251
- if ((0, serialization_2.isSerializedIsaacAPIClass)(luaMap)
252
- && serializationType === SerializationType_1.SerializationType.DESERIALIZE) {
253
- return (0, serialization_2.deserializeIsaacAPIClass)(luaMap);
248
+ if (isSerializedIsaacAPIClass(luaMap)
249
+ && serializationType === SerializationType.DESERIALIZE) {
250
+ return deserializeIsaacAPIClass(luaMap);
254
251
  }
255
252
  // Handle the special case of an array.
256
- if ((0, array_1.isArray)(luaMap)) {
253
+ if (isArray(luaMap)) {
257
254
  return deepCopyArray(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
258
255
  }
259
256
  // Base case: copy a normal Lua table
260
257
  return deepCopyNormalLuaTable(luaMap, serializationType, traversalDescription, classConstructors, insideMap);
261
258
  }
262
259
  function deepCopyTSTLClass(tstlClass, serializationType, traversalDescription, classConstructors, insideMap) {
263
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
264
- (0, log_1.log)("deepCopy is copying a TSTL class.");
260
+ if (SAVE_DATA_MANAGER_DEBUG) {
261
+ log("deepCopy is copying a TSTL class.");
265
262
  }
266
263
  let newClass;
267
264
  switch (serializationType) {
268
- case SerializationType_1.SerializationType.NONE: {
265
+ case SerializationType.NONE: {
269
266
  // We can use the class constructor from the old class.
270
- newClass = (0, tstlClass_1.newTSTLClass)(tstlClass);
267
+ newClass = newTSTLClass(tstlClass);
271
268
  break;
272
269
  }
273
- case SerializationType_1.SerializationType.SERIALIZE: {
270
+ case SerializationType.SERIALIZE: {
274
271
  newClass = new LuaMap();
275
272
  // We brand it with the name of the class so that we can run the corresponding constructor
276
273
  // during deserialization.
277
- const tstlClassName = (0, tstlClass_1.getTSTLClassName)(tstlClass);
274
+ const tstlClassName = getTSTLClassName(tstlClass);
278
275
  if (tstlClassName !== undefined) {
279
- newClass.set(SerializationBrand_1.SerializationBrand.TSTL_CLASS, tstlClassName);
276
+ newClass.set(SerializationBrand.TSTL_CLASS, tstlClassName);
280
277
  }
281
278
  break;
282
279
  }
283
- case SerializationType_1.SerializationType.DESERIALIZE: {
284
- const tstlClassName = tstlClass.get(SerializationBrand_1.SerializationBrand.TSTL_CLASS);
285
- (0, utils_1.assertDefined)(tstlClassName, "Failed to deserialize a TSTL class since the brand did not contain the class name.");
280
+ case SerializationType.DESERIALIZE: {
281
+ const tstlClassName = tstlClass.get(SerializationBrand.TSTL_CLASS);
282
+ assertDefined(tstlClassName, "Failed to deserialize a TSTL class since the brand did not contain the class name.");
286
283
  const classConstructor = classConstructors.get(tstlClassName);
287
- (0, utils_1.assertDefined)(classConstructor, `Failed to deserialize a TSTL class since there was no constructor registered for a class name of "${tstlClassName}". If this mod is using the save data manager, it must register the class constructor with the "saveDataManagerRegisterClass" method.`);
284
+ assertDefined(classConstructor, `Failed to deserialize a TSTL class since there was no constructor registered for a class name of "${tstlClassName}". If this mod is using the save data manager, it must register the class constructor with the "saveDataManagerRegisterClass" method.`);
288
285
  // eslint-disable-next-line new-cap
289
286
  newClass = new classConstructor();
290
287
  break;
@@ -292,7 +289,7 @@ function deepCopyTSTLClass(tstlClass, serializationType, traversalDescription, c
292
289
  }
293
290
  const { entries, convertedNumberKeysToStrings } = getCopiedEntries(tstlClass, serializationType, traversalDescription, classConstructors, insideMap);
294
291
  if (convertedNumberKeysToStrings) {
295
- newClass.set(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
292
+ newClass.set(SerializationBrand.OBJECT_WITH_NUMBER_KEYS, "");
296
293
  }
297
294
  for (const [key, value] of entries) {
298
295
  newClass.set(key, value);
@@ -301,18 +298,18 @@ function deepCopyTSTLClass(tstlClass, serializationType, traversalDescription, c
301
298
  }
302
299
  /** Isaac API classes are of type "userdata". End-user code cannot create userdata. */
303
300
  function deepCopyUserdata(value, serializationType, traversalDescription) {
304
- if (!(0, serialization_2.isCopyableIsaacAPIClass)(value)) {
305
- const className = (0, isaacAPIClass_1.getIsaacAPIClassName)(value) ?? "Unknown";
301
+ if (!isCopyableIsaacAPIClass(value)) {
302
+ const className = getIsaacAPIClassName(value) ?? "Unknown";
306
303
  error(`The deep copy function does not support serializing "${traversalDescription}", since it is an Isaac API class of type: ${className}`);
307
304
  }
308
305
  switch (serializationType) {
309
- case SerializationType_1.SerializationType.NONE: {
310
- return (0, serialization_2.copyIsaacAPIClass)(value);
306
+ case SerializationType.NONE: {
307
+ return copyIsaacAPIClass(value);
311
308
  }
312
- case SerializationType_1.SerializationType.SERIALIZE: {
313
- return (0, serialization_2.serializeIsaacAPIClass)(value);
309
+ case SerializationType.SERIALIZE: {
310
+ return serializeIsaacAPIClass(value);
314
311
  }
315
- case SerializationType_1.SerializationType.DESERIALIZE: {
312
+ case SerializationType.DESERIALIZE: {
316
313
  return error(`The deep copy function can not deserialize "${traversalDescription}", since it is userdata.`);
317
314
  }
318
315
  }
@@ -327,7 +324,7 @@ function getCopiedEntries(object, serializationType, traversalDescription, class
327
324
  // First, shallow copy the entries. We cannot use "pairs" to iterate over a `Map` or `Set`. We
328
325
  // cannot use "[...pairs(object)]", as it results in a run-time error.
329
326
  const entries = [];
330
- if ((0, tstlClass_1.isTSTLMap)(object) || (0, tstlClass_1.isTSTLSet)(object) || (0, tstlClass_1.isDefaultMap)(object)) {
327
+ if (isTSTLMap(object) || isTSTLSet(object) || isDefaultMap(object)) {
331
328
  for (const [key, value] of object.entries()) {
332
329
  entries.push([key, value]);
333
330
  }
@@ -337,24 +334,24 @@ function getCopiedEntries(object, serializationType, traversalDescription, class
337
334
  entries.push([key, value]);
338
335
  }
339
336
  }
340
- if (constants_1.SAVE_DATA_MANAGER_DEBUG) {
341
- entries.sort(sort_1.sortTwoDimensionalArray);
337
+ if (SAVE_DATA_MANAGER_DEBUG) {
338
+ entries.sort(sortTwoDimensionalArray);
342
339
  }
343
340
  // During serialization, we brand some Lua tables with a special identifier to signify that it has
344
341
  // keys that should be deserialized to numbers.
345
- const convertStringKeysToNumbers = serializationType === SerializationType_1.SerializationType.DESERIALIZE
346
- && entries.some(([key]) => key === (0, types_1.asString)(SerializationBrand_1.SerializationBrand.OBJECT_WITH_NUMBER_KEYS));
347
- const hasNumberKeys = entries.some(([key]) => (0, types_1.isNumber)(key));
348
- const convertNumberKeysToStrings = serializationType === SerializationType_1.SerializationType.SERIALIZE && hasNumberKeys;
342
+ const convertStringKeysToNumbers = serializationType === SerializationType.DESERIALIZE
343
+ && entries.some(([key]) => key === asString(SerializationBrand.OBJECT_WITH_NUMBER_KEYS));
344
+ const hasNumberKeys = entries.some(([key]) => isNumber(key));
345
+ const convertNumberKeysToStrings = serializationType === SerializationType.SERIALIZE && hasNumberKeys;
349
346
  // Second, deep copy the entries.
350
347
  const copiedEntries = [];
351
348
  for (const [key, value] of entries) {
352
349
  // When deserializing, we do not need to copy the serialization brands that are used to denote
353
350
  // the object type.
354
- if ((0, serialization_1.isSerializationBrand)(key)) {
351
+ if (isSerializationBrand(key)) {
355
352
  continue;
356
353
  }
357
- traversalDescription = (0, utils_1.getTraversalDescription)(key, traversalDescription);
354
+ traversalDescription = getTraversalDescription(key, traversalDescription);
358
355
  const newValue = deepCopy(value, serializationType, traversalDescription, classConstructors, insideMap);
359
356
  let keyToUse = key;
360
357
  if (convertStringKeysToNumbers) {
@@ -379,26 +376,26 @@ function getCopiedEntries(object, serializationType, traversalDescription, class
379
376
  */
380
377
  function getNewDefaultMap(defaultMap, serializationType, traversalDescription, constructorArg) {
381
378
  switch (serializationType) {
382
- case SerializationType_1.SerializationType.NONE: {
379
+ case SerializationType.NONE: {
383
380
  // eslint-disable-next-line isaacscript/no-invalid-default-map
384
- return new DefaultMap_1.DefaultMap(constructorArg);
381
+ return new DefaultMap(constructorArg);
385
382
  }
386
- case SerializationType_1.SerializationType.SERIALIZE: {
383
+ case SerializationType.SERIALIZE: {
387
384
  // Since we are serializing, the new object will be a Lua table. (At this point, we already
388
385
  // handled the special case of a DefaultMap instantiated with a factory function.)
389
386
  const newDefaultMap = new LuaMap();
390
- newDefaultMap.set(SerializationBrand_1.SerializationBrand.DEFAULT_MAP, "");
391
- newDefaultMap.set(SerializationBrand_1.SerializationBrand.DEFAULT_MAP_VALUE, constructorArg);
387
+ newDefaultMap.set(SerializationBrand.DEFAULT_MAP, "");
388
+ newDefaultMap.set(SerializationBrand.DEFAULT_MAP_VALUE, constructorArg);
392
389
  return newDefaultMap;
393
390
  }
394
- case SerializationType_1.SerializationType.DESERIALIZE: {
395
- if ((0, tstlClass_1.isDefaultMap)(defaultMap)) {
391
+ case SerializationType.DESERIALIZE: {
392
+ if (isDefaultMap(defaultMap)) {
396
393
  error(`Failed to deserialize a default map of "${traversalDescription}", since it was not a Lua table.`);
397
394
  }
398
- const defaultMapValue = defaultMap.get(SerializationBrand_1.SerializationBrand.DEFAULT_MAP_VALUE);
399
- (0, utils_1.assertDefined)(defaultMapValue, `Failed to deserialize a default map of "${traversalDescription}", since there was no serialization brand of: ${SerializationBrand_1.SerializationBrand.DEFAULT_MAP_VALUE}`);
395
+ const defaultMapValue = defaultMap.get(SerializationBrand.DEFAULT_MAP_VALUE);
396
+ assertDefined(defaultMapValue, `Failed to deserialize a default map of "${traversalDescription}", since there was no serialization brand of: ${SerializationBrand.DEFAULT_MAP_VALUE}`);
400
397
  // eslint-disable-next-line isaacscript/no-invalid-default-map
401
- return new DefaultMap_1.DefaultMap(defaultMapValue);
398
+ return new DefaultMap(defaultMapValue);
402
399
  }
403
400
  }
404
401
  }