@etothepii/satisfactory-file-parser 3.3.0 → 4.0.0

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 (895) hide show
  1. package/.vscode/settings.json +6 -0
  2. package/CHANGELOG.md +35 -4
  3. package/GUIDE.md +11 -7
  4. package/README.md +8 -6
  5. package/build/index.d.ts +112 -101
  6. package/build/index.d.ts.map +1 -1
  7. package/build/index.js +43 -40
  8. package/build/index.js.map +1 -1
  9. package/build/parser/byte/binary-readable.interface.d.ts +1 -0
  10. package/build/parser/byte/binary-readable.interface.d.ts.map +1 -1
  11. package/build/parser/byte/binary-readable.interface.js.map +1 -1
  12. package/build/parser/byte/byte-reader.class.d.ts +1 -0
  13. package/build/parser/byte/byte-reader.class.d.ts.map +1 -1
  14. package/build/parser/byte/byte-reader.class.js +6 -2
  15. package/build/parser/byte/byte-reader.class.js.map +1 -1
  16. package/build/parser/byte/byte-writer.class.d.ts +1 -0
  17. package/build/parser/byte/byte-writer.class.d.ts.map +1 -1
  18. package/build/parser/byte/byte-writer.class.js +6 -0
  19. package/build/parser/byte/byte-writer.class.js.map +1 -1
  20. package/build/parser/context/context-reader.d.ts +1 -1
  21. package/build/parser/context/context-reader.d.ts.map +1 -1
  22. package/build/parser/context/context-reader.js.map +1 -1
  23. package/build/parser/context/context-writer.d.ts +1 -1
  24. package/build/parser/context/context-writer.d.ts.map +1 -1
  25. package/build/parser/context/context-writer.js.map +1 -1
  26. package/build/parser/context/hierarchical-version-context.d.ts +11 -0
  27. package/build/parser/context/hierarchical-version-context.d.ts.map +1 -0
  28. package/build/parser/context/hierarchical-version-context.js +24 -0
  29. package/build/parser/context/hierarchical-version-context.js.map +1 -0
  30. package/build/parser/context/{context.d.ts → reader-writer-context.d.ts} +5 -3
  31. package/build/parser/context/reader-writer-context.d.ts.map +1 -0
  32. package/build/parser/context/{context.js → reader-writer-context.js} +1 -1
  33. package/build/parser/context/reader-writer-context.js.map +1 -0
  34. package/build/parser/parser.d.ts.map +1 -1
  35. package/build/parser/parser.js +36 -20
  36. package/build/parser/parser.js.map +1 -1
  37. package/build/parser/satisfactory/blueprint/blueprint-config-version.d.ts +4 -2
  38. package/build/parser/satisfactory/blueprint/blueprint-config-version.d.ts.map +1 -1
  39. package/build/parser/satisfactory/blueprint/blueprint-config-version.js +4 -2
  40. package/build/parser/satisfactory/blueprint/blueprint-config-version.js.map +1 -1
  41. package/build/parser/satisfactory/blueprint/blueprint-config.d.ts +4 -5
  42. package/build/parser/satisfactory/blueprint/blueprint-config.d.ts.map +1 -1
  43. package/build/parser/satisfactory/blueprint/blueprint-config.js +16 -14
  44. package/build/parser/satisfactory/blueprint/blueprint-config.js.map +1 -1
  45. package/build/parser/satisfactory/blueprint/blueprint-header.d.ts +2 -0
  46. package/build/parser/satisfactory/blueprint/blueprint-header.d.ts.map +1 -1
  47. package/build/parser/satisfactory/blueprint/blueprint-header.js +18 -2
  48. package/build/parser/satisfactory/blueprint/blueprint-header.js.map +1 -1
  49. package/build/parser/satisfactory/blueprint/blueprint-reader.d.ts.map +1 -1
  50. package/build/parser/satisfactory/blueprint/blueprint-reader.js +6 -2
  51. package/build/parser/satisfactory/blueprint/blueprint-reader.js.map +1 -1
  52. package/build/parser/satisfactory/blueprint/blueprint-writer.d.ts.map +1 -1
  53. package/build/parser/satisfactory/blueprint/blueprint-writer.js +5 -2
  54. package/build/parser/satisfactory/blueprint/blueprint-writer.js.map +1 -1
  55. package/build/parser/satisfactory/save/data-blob.d.ts +17 -0
  56. package/build/parser/satisfactory/save/data-blob.d.ts.map +1 -0
  57. package/build/parser/satisfactory/save/data-blob.js +137 -0
  58. package/build/parser/satisfactory/save/data-blob.js.map +1 -0
  59. package/build/parser/satisfactory/save/level.d.ts +5 -10
  60. package/build/parser/satisfactory/save/level.d.ts.map +1 -1
  61. package/build/parser/satisfactory/save/level.js +52 -180
  62. package/build/parser/satisfactory/save/level.js.map +1 -1
  63. package/build/parser/satisfactory/save/satisfactory-save-header.d.ts.map +1 -1
  64. package/build/parser/satisfactory/save/satisfactory-save-header.js +5 -3
  65. package/build/parser/satisfactory/save/satisfactory-save-header.js.map +1 -1
  66. package/build/parser/satisfactory/save/satisfactory-save.d.ts +3 -1
  67. package/build/parser/satisfactory/save/satisfactory-save.d.ts.map +1 -1
  68. package/build/parser/satisfactory/save/satisfactory-save.js.map +1 -1
  69. package/build/parser/satisfactory/save/save-body-chunks.js +2 -2
  70. package/build/parser/satisfactory/save/save-body-chunks.js.map +1 -1
  71. package/build/parser/satisfactory/save/save-custom-version.d.ts +8 -2
  72. package/build/parser/satisfactory/save/save-custom-version.d.ts.map +1 -1
  73. package/build/parser/satisfactory/save/save-custom-version.js +8 -2
  74. package/build/parser/satisfactory/save/save-custom-version.js.map +1 -1
  75. package/build/parser/satisfactory/save/save-reader.d.ts +2 -2
  76. package/build/parser/satisfactory/save/save-reader.d.ts.map +1 -1
  77. package/build/parser/satisfactory/save/save-reader.js +16 -13
  78. package/build/parser/satisfactory/save/save-reader.js.map +1 -1
  79. package/build/parser/satisfactory/save/save-writer.d.ts.map +1 -1
  80. package/build/parser/satisfactory/save/save-writer.js +4 -1
  81. package/build/parser/satisfactory/save/save-writer.js.map +1 -1
  82. package/build/parser/satisfactory/save/save.types.d.ts +1 -1
  83. package/build/parser/satisfactory/save/save.types.d.ts.map +1 -1
  84. package/build/parser/satisfactory/save/save.types.js.map +1 -1
  85. package/build/parser/satisfactory/save/toc-blob.d.ts +18 -0
  86. package/build/parser/satisfactory/save/toc-blob.d.ts.map +1 -0
  87. package/build/parser/satisfactory/save/toc-blob.js +97 -0
  88. package/build/parser/satisfactory/save/toc-blob.js.map +1 -0
  89. package/build/parser/satisfactory/types/objects/SaveObject.d.ts +4 -0
  90. package/build/parser/satisfactory/types/objects/SaveObject.d.ts.map +1 -1
  91. package/build/parser/satisfactory/types/objects/SaveObject.js +19 -5
  92. package/build/parser/satisfactory/types/objects/SaveObject.js.map +1 -1
  93. package/build/parser/satisfactory/types/property/PropertiesList.d.ts +4 -4
  94. package/build/parser/satisfactory/types/property/PropertiesList.d.ts.map +1 -1
  95. package/build/parser/satisfactory/types/property/PropertiesList.js +73 -114
  96. package/build/parser/satisfactory/types/property/PropertiesList.js.map +1 -1
  97. package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.d.ts +9 -12
  98. package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.d.ts.map +1 -1
  99. package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.js +12 -7
  100. package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.js.map +1 -1
  101. package/build/parser/satisfactory/types/property/generic/BoolProperty.d.ts +10 -5
  102. package/build/parser/satisfactory/types/property/generic/BoolProperty.d.ts.map +1 -1
  103. package/build/parser/satisfactory/types/property/generic/BoolProperty.js +20 -23
  104. package/build/parser/satisfactory/types/property/generic/BoolProperty.js.map +1 -1
  105. package/build/parser/satisfactory/types/property/generic/ByteProperty.d.ts +12 -7
  106. package/build/parser/satisfactory/types/property/generic/ByteProperty.d.ts.map +1 -1
  107. package/build/parser/satisfactory/types/property/generic/ByteProperty.js +37 -34
  108. package/build/parser/satisfactory/types/property/generic/ByteProperty.js.map +1 -1
  109. package/build/parser/satisfactory/types/property/generic/DoubleProperty.d.ts +9 -5
  110. package/build/parser/satisfactory/types/property/generic/DoubleProperty.d.ts.map +1 -1
  111. package/build/parser/satisfactory/types/property/generic/DoubleProperty.js +15 -23
  112. package/build/parser/satisfactory/types/property/generic/DoubleProperty.js.map +1 -1
  113. package/build/parser/satisfactory/types/property/generic/EnumProperty.d.ts +10 -5
  114. package/build/parser/satisfactory/types/property/generic/EnumProperty.d.ts.map +1 -1
  115. package/build/parser/satisfactory/types/property/generic/EnumProperty.js +17 -23
  116. package/build/parser/satisfactory/types/property/generic/EnumProperty.js.map +1 -1
  117. package/build/parser/satisfactory/types/property/generic/FloatProperty.d.ts +9 -5
  118. package/build/parser/satisfactory/types/property/generic/FloatProperty.d.ts.map +1 -1
  119. package/build/parser/satisfactory/types/property/generic/FloatProperty.js +15 -23
  120. package/build/parser/satisfactory/types/property/generic/FloatProperty.js.map +1 -1
  121. package/build/parser/satisfactory/types/property/generic/Int64Property.d.ts +9 -5
  122. package/build/parser/satisfactory/types/property/generic/Int64Property.d.ts.map +1 -1
  123. package/build/parser/satisfactory/types/property/generic/Int64Property.js +15 -23
  124. package/build/parser/satisfactory/types/property/generic/Int64Property.js.map +1 -1
  125. package/build/parser/satisfactory/types/property/generic/Int8Property.d.ts +8 -4
  126. package/build/parser/satisfactory/types/property/generic/Int8Property.d.ts.map +1 -1
  127. package/build/parser/satisfactory/types/property/generic/Int8Property.js +11 -20
  128. package/build/parser/satisfactory/types/property/generic/Int8Property.js.map +1 -1
  129. package/build/parser/satisfactory/types/property/generic/IntProperty.d.ts +20 -0
  130. package/build/parser/satisfactory/types/property/generic/IntProperty.d.ts.map +1 -0
  131. package/build/parser/satisfactory/types/property/generic/IntProperty.js +25 -0
  132. package/build/parser/satisfactory/types/property/generic/IntProperty.js.map +1 -0
  133. package/build/parser/satisfactory/types/property/generic/InterfaceProperty.d.ts +21 -0
  134. package/build/parser/satisfactory/types/property/generic/InterfaceProperty.d.ts.map +1 -0
  135. package/build/parser/satisfactory/types/property/generic/InterfaceProperty.js +26 -0
  136. package/build/parser/satisfactory/types/property/generic/InterfaceProperty.js.map +1 -0
  137. package/build/parser/satisfactory/types/property/generic/NameProperty.d.ts +20 -0
  138. package/build/parser/satisfactory/types/property/generic/NameProperty.d.ts.map +1 -0
  139. package/build/parser/satisfactory/types/property/generic/NameProperty.js +25 -0
  140. package/build/parser/satisfactory/types/property/generic/NameProperty.js.map +1 -0
  141. package/build/parser/satisfactory/types/property/generic/ObjectProperty.d.ts +9 -5
  142. package/build/parser/satisfactory/types/property/generic/ObjectProperty.d.ts.map +1 -1
  143. package/build/parser/satisfactory/types/property/generic/ObjectProperty.js +15 -23
  144. package/build/parser/satisfactory/types/property/generic/ObjectProperty.js.map +1 -1
  145. package/build/parser/satisfactory/types/property/generic/SingleProperty.d.ts +20 -0
  146. package/build/parser/satisfactory/types/property/generic/SingleProperty.d.ts.map +1 -0
  147. package/build/parser/satisfactory/types/property/generic/SingleProperty.js +25 -0
  148. package/build/parser/satisfactory/types/property/generic/SingleProperty.js.map +1 -0
  149. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.d.ts +9 -5
  150. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.d.ts.map +1 -1
  151. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.js +15 -23
  152. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.js.map +1 -1
  153. package/build/parser/satisfactory/types/property/generic/StrProperty.d.ts +9 -5
  154. package/build/parser/satisfactory/types/property/generic/StrProperty.d.ts.map +1 -1
  155. package/build/parser/satisfactory/types/property/generic/StrProperty.js +15 -23
  156. package/build/parser/satisfactory/types/property/generic/StrProperty.js.map +1 -1
  157. package/build/parser/satisfactory/types/property/generic/TextProperty.d.ts +9 -5
  158. package/build/parser/satisfactory/types/property/generic/TextProperty.d.ts.map +1 -1
  159. package/build/parser/satisfactory/types/property/generic/TextProperty.js +38 -45
  160. package/build/parser/satisfactory/types/property/generic/TextProperty.js.map +1 -1
  161. package/build/parser/satisfactory/types/property/generic/Uint32Property.d.ts +9 -5
  162. package/build/parser/satisfactory/types/property/generic/Uint32Property.d.ts.map +1 -1
  163. package/build/parser/satisfactory/types/property/generic/Uint32Property.js +15 -23
  164. package/build/parser/satisfactory/types/property/generic/Uint32Property.js.map +1 -1
  165. package/build/parser/satisfactory/types/property/generic/Uint64Property.d.ts +9 -5
  166. package/build/parser/satisfactory/types/property/generic/Uint64Property.d.ts.map +1 -1
  167. package/build/parser/satisfactory/types/property/generic/Uint64Property.js +14 -22
  168. package/build/parser/satisfactory/types/property/generic/Uint64Property.js.map +1 -1
  169. package/build/parser/satisfactory/types/property/generic/Uint8Property.d.ts +9 -5
  170. package/build/parser/satisfactory/types/property/generic/Uint8Property.d.ts.map +1 -1
  171. package/build/parser/satisfactory/types/property/generic/Uint8Property.js +14 -22
  172. package/build/parser/satisfactory/types/property/generic/Uint8Property.js.map +1 -1
  173. package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.d.ts +15 -0
  174. package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.d.ts.map +1 -0
  175. package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.js +129 -0
  176. package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.js.map +1 -0
  177. package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.d.ts +55 -0
  178. package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.d.ts.map +1 -0
  179. package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.js +24 -0
  180. package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.js.map +1 -0
  181. package/build/parser/satisfactory/types/property/generic/containers/MapProperty.d.ts +20 -0
  182. package/build/parser/satisfactory/types/property/generic/containers/MapProperty.d.ts.map +1 -0
  183. package/build/parser/satisfactory/types/property/generic/{MapProperty.js → containers/MapProperty.js} +52 -61
  184. package/build/parser/satisfactory/types/property/generic/containers/MapProperty.js.map +1 -0
  185. package/build/parser/satisfactory/types/property/generic/containers/SetProperty.d.ts +14 -0
  186. package/build/parser/satisfactory/types/property/generic/containers/SetProperty.d.ts.map +1 -0
  187. package/build/parser/satisfactory/types/property/generic/containers/SetProperty.js +90 -0
  188. package/build/parser/satisfactory/types/property/generic/containers/SetProperty.js.map +1 -0
  189. package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.d.ts +34 -0
  190. package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.d.ts.map +1 -0
  191. package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.js +17 -0
  192. package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.js.map +1 -0
  193. package/build/parser/satisfactory/types/property/generic/containers/StructProperty.d.ts +59 -0
  194. package/build/parser/satisfactory/types/property/generic/containers/StructProperty.d.ts.map +1 -0
  195. package/build/parser/satisfactory/types/property/generic/{StructProperty.js → containers/StructProperty.js} +69 -82
  196. package/build/parser/satisfactory/types/property/generic/containers/StructProperty.js.map +1 -0
  197. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.d.ts +2 -0
  198. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.d.ts.map +1 -1
  199. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.js +14 -5
  200. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.js.map +1 -1
  201. package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.d.ts.map +1 -1
  202. package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.js.map +1 -1
  203. package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.js +2 -2
  204. package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.js.map +1 -1
  205. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.d.ts +4 -2
  206. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.d.ts.map +1 -1
  207. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.js +4 -2
  208. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.js.map +1 -1
  209. package/build/parser/satisfactory/types/structs/GUIDInfo.d.ts +4 -4
  210. package/build/parser/satisfactory/types/structs/GUIDInfo.d.ts.map +1 -1
  211. package/build/parser/satisfactory/types/structs/GUIDInfo.js +6 -6
  212. package/build/parser/satisfactory/types/structs/GUIDInfo.js.map +1 -1
  213. package/build/parser/satisfactory/types/structs/SaveBodyValidation.d.ts.map +1 -1
  214. package/build/parser/satisfactory/types/structs/SaveBodyValidation.js +0 -2
  215. package/build/parser/satisfactory/types/structs/SaveBodyValidation.js.map +1 -1
  216. package/build/parser/satisfactory/types/structs/SoftObjectReference.d.ts +1 -1
  217. package/build/parser/satisfactory/types/structs/SoftObjectReference.d.ts.map +1 -1
  218. package/build/parser/satisfactory/types/structs/SoftObjectReference.js +2 -2
  219. package/build/parser/satisfactory/types/structs/SoftObjectReference.js.map +1 -1
  220. package/build/parser/satisfactory/types/structs/binary/FCustomVersion.d.ts +12 -0
  221. package/build/parser/satisfactory/types/structs/binary/FCustomVersion.d.ts.map +1 -0
  222. package/build/parser/satisfactory/types/structs/binary/FCustomVersion.js +21 -0
  223. package/build/parser/satisfactory/types/structs/binary/FCustomVersion.js.map +1 -0
  224. package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.d.ts +11 -0
  225. package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.d.ts.map +1 -0
  226. package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.js +22 -0
  227. package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.js.map +1 -0
  228. package/build/parser/satisfactory/types/structs/binary/FEngineVersion.d.ts +14 -0
  229. package/build/parser/satisfactory/types/structs/binary/FEngineVersion.d.ts.map +1 -0
  230. package/build/parser/satisfactory/types/structs/binary/FEngineVersion.js +24 -0
  231. package/build/parser/satisfactory/types/structs/binary/FEngineVersion.js.map +1 -0
  232. package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.d.ts +12 -0
  233. package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.d.ts.map +1 -0
  234. package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.js +22 -0
  235. package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.js.map +1 -0
  236. package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.d.ts +11 -0
  237. package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.d.ts.map +1 -0
  238. package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.js +18 -0
  239. package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.js.map +1 -0
  240. package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.d.ts +11 -0
  241. package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.d.ts.map +1 -0
  242. package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.js +38 -0
  243. package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.js.map +1 -0
  244. package/build/parser/satisfactory/types/structs/binary/FPropertyTag.d.ts +30 -0
  245. package/build/parser/satisfactory/types/structs/binary/FPropertyTag.d.ts.map +1 -0
  246. package/build/parser/satisfactory/types/structs/binary/FPropertyTag.js +182 -0
  247. package/build/parser/satisfactory/types/structs/binary/FPropertyTag.js.map +1 -0
  248. package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.d.ts +11 -0
  249. package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.d.ts.map +1 -0
  250. package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.js +26 -0
  251. package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.js.map +1 -0
  252. package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.d.ts +17 -0
  253. package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.d.ts.map +1 -0
  254. package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.js +27 -0
  255. package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.js.map +1 -0
  256. package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.d.ts +11 -0
  257. package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.d.ts.map +1 -0
  258. package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.js +21 -0
  259. package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.js.map +1 -0
  260. package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.d.ts +12 -0
  261. package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.d.ts.map +1 -0
  262. package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.js +22 -0
  263. package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.js.map +1 -0
  264. package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.d.ts +22 -0
  265. package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.d.ts.map +1 -0
  266. package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.js +40 -0
  267. package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.js.map +1 -0
  268. package/build/parser/stream/reworked/readable-stream-parser.d.ts +2 -3
  269. package/build/parser/stream/reworked/readable-stream-parser.d.ts.map +1 -1
  270. package/build/parser/stream/reworked/readable-stream-parser.js +90 -50
  271. package/build/parser/stream/reworked/readable-stream-parser.js.map +1 -1
  272. package/build/parser/unreal-engine/ETextHistoryType.d.ts +17 -0
  273. package/build/parser/unreal-engine/ETextHistoryType.d.ts.map +1 -0
  274. package/build/parser/unreal-engine/ETextHistoryType.js +21 -0
  275. package/build/parser/unreal-engine/ETextHistoryType.js.map +1 -0
  276. package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.d.ts +24 -0
  277. package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.d.ts.map +1 -0
  278. package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.js +29 -0
  279. package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.js.map +1 -0
  280. package/docs/assets/navigation.js +1 -1
  281. package/docs/assets/search.js +1 -1
  282. package/docs/classes/BlueprintConfigReader.html +4 -4
  283. package/docs/classes/BlueprintReader.html +4 -4
  284. package/docs/classes/CompressionLibraryError.html +27 -6
  285. package/docs/classes/ContextReader.html +4 -4
  286. package/docs/classes/ContextWriter.html +4 -4
  287. package/docs/classes/CorruptBlueprintError.html +27 -6
  288. package/docs/classes/CorruptSaveError.html +27 -6
  289. package/docs/classes/Parser.html +6 -6
  290. package/docs/classes/ParserError.html +27 -6
  291. package/docs/classes/ReadableStreamParser.html +2 -2
  292. package/docs/classes/SatisfactorySave.html +2 -2
  293. package/docs/classes/SaveComponent.html +2 -2
  294. package/docs/classes/SaveEntity.html +2 -2
  295. package/docs/classes/SaveObject.html +2 -2
  296. package/docs/classes/SaveReader.html +4 -4
  297. package/docs/classes/SaveStreamJsonStringifier.html +2 -2
  298. package/docs/classes/SaveStreamWriter.html +2 -2
  299. package/docs/classes/SaveWriter.html +4 -4
  300. package/docs/classes/TimeoutError.html +27 -6
  301. package/docs/classes/UnimplementedError.html +27 -6
  302. package/docs/classes/UnsupportedVersionError.html +27 -6
  303. package/docs/enums/Alignment.html +2 -2
  304. package/docs/enums/BlueprintConfigVersion.html +2 -2
  305. package/docs/enums/BlueprintHeaderVersion.html +2 -2
  306. package/docs/enums/CompressionAlgorithmCode.html +2 -2
  307. package/docs/enums/FactoryGameCustomVersion.html +2 -2
  308. package/docs/enums/RuntimeBuildableInstanceDataVersion.html +2 -2
  309. package/docs/enums/SaveCustomVersion.html +10 -10
  310. package/docs/enums/SaveHeaderType.html +2 -2
  311. package/docs/functions/AbstractBaseProperty.Create.html +1 -1
  312. package/docs/functions/ArrayProperty.CalcOverhead.html +1 -1
  313. package/docs/functions/ArrayProperty.Parse.html +1 -1
  314. package/docs/functions/ArrayProperty.Serialize.html +1 -1
  315. package/docs/functions/BlueprintConfig.Parse.html +1 -1
  316. package/docs/functions/BlueprintConfig.Serialize.html +1 -1
  317. package/docs/functions/BlueprintHeader.Parse.html +1 -1
  318. package/docs/functions/BlueprintHeader.Serialize.html +1 -1
  319. package/docs/functions/BoolArrayProperty.Parse.html +1 -1
  320. package/docs/functions/BoolArrayProperty.Serialize.html +1 -1
  321. package/docs/functions/BoolProperty.CalcOverhead.html +1 -1
  322. package/docs/functions/BoolProperty.Parse.html +1 -1
  323. package/docs/functions/BoolProperty.ReadValue.html +1 -1
  324. package/docs/functions/BoolProperty.Serialize.html +1 -1
  325. package/docs/functions/BoolProperty.SerializeValue.html +1 -1
  326. package/docs/functions/BuildableSubsystemSpecialProperties.Parse.html +1 -1
  327. package/docs/functions/BuildableSubsystemSpecialProperties.Serialize.html +1 -1
  328. package/docs/functions/BuildableTypeInstance.Parse.html +1 -1
  329. package/docs/functions/BuildableTypeInstance.Serialize.html +1 -1
  330. package/docs/functions/ByteArrayProperty.Parse.html +1 -1
  331. package/docs/functions/ByteArrayProperty.Serialize.html +1 -1
  332. package/docs/functions/ByteProperty.CalcOverhead.html +1 -1
  333. package/docs/functions/ByteProperty.Parse.html +1 -1
  334. package/docs/functions/ByteProperty.ReadValue.html +1 -1
  335. package/docs/functions/ByteProperty.Serialize.html +1 -1
  336. package/docs/functions/ByteProperty.SerializeValue.html +1 -1
  337. package/docs/functions/CircuitSpecialProperties.Parse.html +1 -1
  338. package/docs/functions/CircuitSpecialProperties.Serialize.html +1 -1
  339. package/docs/functions/ConveyorChainActorSpecialProperties.Parse.html +1 -1
  340. package/docs/functions/ConveyorChainActorSpecialProperties.Serialize.html +1 -1
  341. package/docs/functions/ConveyorSpecialProperties.Parse.html +1 -1
  342. package/docs/functions/ConveyorSpecialProperties.Serialize.html +1 -1
  343. package/docs/functions/DoubleArrayProperty.Parse.html +1 -1
  344. package/docs/functions/DoubleArrayProperty.Serialize.html +1 -1
  345. package/docs/functions/DoubleProperty.CalcOverhead.html +1 -1
  346. package/docs/functions/DoubleProperty.Parse.html +1 -1
  347. package/docs/functions/DoubleProperty.ReadValue.html +1 -1
  348. package/docs/functions/DoubleProperty.Serialize.html +1 -1
  349. package/docs/functions/DoubleProperty.SerializeValue.html +1 -1
  350. package/docs/functions/DynamicStructPropertyValue.read.html +1 -1
  351. package/docs/functions/DynamicStructPropertyValue.write.html +1 -1
  352. package/docs/functions/EmptySpecialProperties.Parse.html +1 -1
  353. package/docs/functions/EmptySpecialProperties.Serialize.html +1 -1
  354. package/docs/functions/EnumArrayProperty.Parse.html +1 -1
  355. package/docs/functions/EnumArrayProperty.Serialize.html +1 -1
  356. package/docs/functions/EnumProperty.CalcOverhead.html +1 -1
  357. package/docs/functions/EnumProperty.Parse.html +1 -1
  358. package/docs/functions/EnumProperty.ReadValue.html +1 -1
  359. package/docs/functions/EnumProperty.Serialize.html +1 -1
  360. package/docs/functions/EnumProperty.SerializeValue.html +1 -1
  361. package/docs/functions/FClientIdentityInfo.read.html +1 -1
  362. package/docs/functions/FClientIdentityInfo.write.html +1 -1
  363. package/docs/functions/FColor.read.html +1 -1
  364. package/docs/functions/FColor.write.html +1 -1
  365. package/docs/functions/FGDynamicStruct.Parse.html +1 -1
  366. package/docs/functions/FGDynamicStruct.Serialize.html +1 -1
  367. package/docs/functions/FICFrameRange.read.html +1 -1
  368. package/docs/functions/FICFrameRange.write.html +1 -1
  369. package/docs/functions/FINGPUT1BufferPixel.read.html +1 -1
  370. package/docs/functions/FINGPUT1BufferPixel.write.html +1 -1
  371. package/docs/functions/FINItemStateFileSystem.IsFINItemStateFileSystem.html +1 -1
  372. package/docs/functions/FINItemStateFileSystem.read.html +1 -1
  373. package/docs/functions/FINItemStateFileSystem.write.html +1 -1
  374. package/docs/functions/FINNetworkTrace.read.html +1 -1
  375. package/docs/functions/FINNetworkTrace.write.html +1 -1
  376. package/docs/functions/FLBBalancerIndexing.read.html +1 -1
  377. package/docs/functions/FLBBalancerIndexing.write.html +1 -1
  378. package/docs/functions/FLinearColor.read.html +1 -1
  379. package/docs/functions/FLinearColor.write.html +1 -1
  380. package/docs/functions/FloatArrayProperty.Parse.html +1 -1
  381. package/docs/functions/FloatArrayProperty.Serialize.html +1 -1
  382. package/docs/functions/FloatProperty.CalcOverhead.html +1 -1
  383. package/docs/functions/FloatProperty.Parse.html +1 -1
  384. package/docs/functions/FloatProperty.ReadValue.html +1 -1
  385. package/docs/functions/FloatProperty.Serialize.html +1 -1
  386. package/docs/functions/FloatProperty.SerializeValue.html +1 -1
  387. package/docs/functions/GUID.read.html +1 -1
  388. package/docs/functions/GUID.write.html +1 -1
  389. package/docs/functions/GUIDInfo.read.html +1 -1
  390. package/docs/functions/GUIDInfo.write.html +1 -1
  391. package/docs/functions/Int32ArrayProperty.Parse.html +1 -1
  392. package/docs/functions/Int32ArrayProperty.Serialize.html +1 -1
  393. package/docs/functions/Int32Property.CalcOverhead.html +1 -1
  394. package/docs/functions/Int32Property.Parse.html +1 -1
  395. package/docs/functions/Int32Property.ReadValue.html +1 -1
  396. package/docs/functions/Int32Property.Serialize.html +1 -1
  397. package/docs/functions/Int32Property.SerializeValue.html +1 -1
  398. package/docs/functions/Int32SetProperty.Parse.html +1 -1
  399. package/docs/functions/Int32SetProperty.Serialize.html +1 -1
  400. package/docs/functions/Int64ArrayProperty.Parse.html +1 -1
  401. package/docs/functions/Int64ArrayProperty.Serialize.html +1 -1
  402. package/docs/functions/Int64Property.CalcOverhead.html +1 -1
  403. package/docs/functions/Int64Property.Parse.html +1 -1
  404. package/docs/functions/Int64Property.ReadValue.html +1 -1
  405. package/docs/functions/Int64Property.Serialize.html +1 -1
  406. package/docs/functions/Int64Property.SerializeValue.html +1 -1
  407. package/docs/functions/Int8Property.CalcOverhead.html +1 -1
  408. package/docs/functions/Int8Property.Parse.html +1 -1
  409. package/docs/functions/Int8Property.ReadValue.html +1 -1
  410. package/docs/functions/Int8Property.Serialize.html +1 -1
  411. package/docs/functions/Int8Property.SerializeValue.html +1 -1
  412. package/docs/functions/Level.ReadAllObjectContents.html +1 -1
  413. package/docs/functions/Level.ReadAllObjectHeaders.html +1 -1
  414. package/docs/functions/Level.ReadLevel.html +1 -1
  415. package/docs/functions/Level.ReadNObjectContents.html +1 -1
  416. package/docs/functions/Level.ReadNObjectHeaders.html +1 -1
  417. package/docs/functions/Level.SerializeAllObjectContents.html +1 -1
  418. package/docs/functions/Level.SerializeAllObjectHeaders.html +1 -1
  419. package/docs/functions/Level.SerializeLevel.html +1 -1
  420. package/docs/functions/LevelToDestroyedActorsMap.read.html +1 -1
  421. package/docs/functions/LevelToDestroyedActorsMap.write.html +1 -1
  422. package/docs/functions/MD5Hash.read.html +1 -1
  423. package/docs/functions/MD5Hash.write.html +1 -1
  424. package/docs/functions/MapProperty.CalcOverhead.html +1 -1
  425. package/docs/functions/MapProperty.Parse.html +1 -1
  426. package/docs/functions/MapProperty.Serialize.html +1 -1
  427. package/docs/functions/ObjectArrayProperty.Parse.html +1 -1
  428. package/docs/functions/ObjectArrayProperty.Serialize.html +1 -1
  429. package/docs/functions/ObjectProperty.CalcOverhead.html +1 -1
  430. package/docs/functions/ObjectProperty.Parse.html +1 -1
  431. package/docs/functions/ObjectProperty.ReadValue.html +1 -1
  432. package/docs/functions/ObjectProperty.Serialize.html +1 -1
  433. package/docs/functions/ObjectProperty.SerializeValue.html +1 -1
  434. package/docs/functions/ObjectReference.IsEqual.html +1 -1
  435. package/docs/functions/ObjectReference.read.html +1 -1
  436. package/docs/functions/ObjectReference.write.html +1 -1
  437. package/docs/functions/ObjectSetProperty.Parse.html +1 -1
  438. package/docs/functions/ObjectSetProperty.Serialize.html +1 -1
  439. package/docs/functions/ObjectsListSpecialProperties.Parse.html +1 -1
  440. package/docs/functions/ObjectsListSpecialProperties.Serialize.html +1 -1
  441. package/docs/functions/PlayerSpecialProperties.Parse.html +1 -1
  442. package/docs/functions/PlayerSpecialProperties.Serialize.html +1 -1
  443. package/docs/functions/PowerLineSpecialProperties.Parse.html +1 -1
  444. package/docs/functions/PowerLineSpecialProperties.Serialize.html +1 -1
  445. package/docs/functions/PropertiesList.ParseList.html +1 -1
  446. package/docs/functions/PropertiesList.ParseSingleProperty.html +1 -1
  447. package/docs/functions/PropertiesList.SerializeList.html +1 -1
  448. package/docs/functions/PropertiesList.SerializeSingleProperty.html +1 -1
  449. package/docs/functions/SatisfactorySaveHeader.Parse.html +1 -1
  450. package/docs/functions/SatisfactorySaveHeader.Serialize.html +1 -1
  451. package/docs/functions/SaveBodyChunks.CompressDataIntoChunks.html +1 -1
  452. package/docs/functions/SaveBodyChunks.DecompressChunks.html +1 -1
  453. package/docs/functions/SaveBodyValidation.Parse.html +1 -1
  454. package/docs/functions/SaveBodyValidation.Serialize.html +1 -1
  455. package/docs/functions/SetProperty.CalcOverhead.html +1 -1
  456. package/docs/functions/SetProperty.Parse.html +1 -1
  457. package/docs/functions/SetProperty.Serialize.html +1 -1
  458. package/docs/functions/SoftObjectArrayProperty.Parse.html +1 -1
  459. package/docs/functions/SoftObjectArrayProperty.Serialize.html +1 -1
  460. package/docs/functions/SoftObjectProperty.CalcOverhead.html +1 -0
  461. package/docs/functions/SoftObjectProperty.Parse.html +1 -0
  462. package/docs/functions/SoftObjectProperty.ReadValue.html +1 -0
  463. package/docs/functions/SoftObjectProperty.Serialize.html +1 -0
  464. package/docs/functions/SoftObjectProperty.SerializeValue.html +1 -0
  465. package/docs/functions/SoftObjectReference.read.html +1 -1
  466. package/docs/functions/SoftObjectReference.write.html +1 -1
  467. package/docs/functions/SpecialDroneActionProperties.Parse.html +1 -1
  468. package/docs/functions/SpecialDroneActionProperties.Serialize.html +1 -1
  469. package/docs/functions/SpecialProperties.ParseClassSpecificSpecialProperties.html +1 -1
  470. package/docs/functions/SpecialProperties.SerializeClassSpecificSpecialProperties.html +1 -1
  471. package/docs/functions/StrArrayProperty.Parse.html +1 -1
  472. package/docs/functions/StrArrayProperty.Serialize.html +1 -1
  473. package/docs/functions/StrProperty.CalcOverhead.html +1 -1
  474. package/docs/functions/StrProperty.Parse.html +1 -1
  475. package/docs/functions/StrProperty.ReadValue.html +1 -1
  476. package/docs/functions/StrProperty.Serialize.html +1 -1
  477. package/docs/functions/StrProperty.SerializeValue.html +1 -1
  478. package/docs/functions/StrSetProperty.Parse.html +1 -1
  479. package/docs/functions/StrSetProperty.Serialize.html +1 -1
  480. package/docs/functions/StructArrayProperty.Parse.html +1 -1
  481. package/docs/functions/StructArrayProperty.Serialize.html +1 -1
  482. package/docs/functions/StructProperty.CalcOverhead.html +1 -1
  483. package/docs/functions/StructProperty.Parse.html +1 -1
  484. package/docs/functions/StructProperty.ParseValue.html +1 -1
  485. package/docs/functions/StructProperty.Serialize.html +1 -1
  486. package/docs/functions/StructProperty.SerializeValue.html +1 -1
  487. package/docs/functions/StructSetProperty.Parse.html +1 -1
  488. package/docs/functions/StructSetProperty.Serialize.html +1 -1
  489. package/docs/functions/TextArrayProperty.Parse.html +1 -1
  490. package/docs/functions/TextArrayProperty.Serialize.html +1 -1
  491. package/docs/functions/TextProperty.CalcOverhead.html +1 -1
  492. package/docs/functions/TextProperty.Parse.html +1 -1
  493. package/docs/functions/TextProperty.ReadValue.html +1 -1
  494. package/docs/functions/TextProperty.Serialize.html +1 -1
  495. package/docs/functions/TextProperty.SerializeValue.html +1 -1
  496. package/docs/functions/Transform.Parse.html +1 -1
  497. package/docs/functions/Transform.ParseF.html +1 -1
  498. package/docs/functions/Transform.Serialize.html +1 -1
  499. package/docs/functions/Transform.SerializeF.html +1 -1
  500. package/docs/functions/Uint32Property.CalcOverhead.html +1 -1
  501. package/docs/functions/Uint32Property.Parse.html +1 -1
  502. package/docs/functions/Uint32Property.ReadValue.html +1 -1
  503. package/docs/functions/Uint32Property.Serialize.html +1 -1
  504. package/docs/functions/Uint32Property.SerializeValue.html +1 -1
  505. package/docs/functions/Uint32SetProperty.Parse.html +1 -1
  506. package/docs/functions/Uint32SetProperty.Serialize.html +1 -1
  507. package/docs/functions/Uint64Property.CalcOverhead.html +1 -1
  508. package/docs/functions/Uint64Property.Parse.html +1 -1
  509. package/docs/functions/Uint64Property.ReadValue.html +1 -1
  510. package/docs/functions/Uint64Property.Serialize.html +1 -1
  511. package/docs/functions/Uint64Property.SerializeValue.html +1 -1
  512. package/docs/functions/Uint8Property.CalcOverhead.html +1 -1
  513. package/docs/functions/Uint8Property.Parse.html +1 -1
  514. package/docs/functions/Uint8Property.ReadValue.html +1 -1
  515. package/docs/functions/Uint8Property.Serialize.html +1 -1
  516. package/docs/functions/Uint8Property.SerializeValue.html +1 -1
  517. package/docs/functions/VehiclePhysicsData.Parse.html +1 -1
  518. package/docs/functions/VehiclePhysicsData.Serialize.html +1 -1
  519. package/docs/functions/VehicleSpecialProperties.Parse.html +1 -1
  520. package/docs/functions/VehicleSpecialProperties.Serialize.html +1 -1
  521. package/docs/functions/col4.ParseBGRA.html +1 -1
  522. package/docs/functions/col4.ParseRGBA.html +1 -1
  523. package/docs/functions/col4.SerializeBGRA.html +1 -1
  524. package/docs/functions/col4.SerializeRGBA.html +1 -1
  525. package/docs/functions/isArrayProperty.html +1 -1
  526. package/docs/functions/isBoolArrayProperty.html +1 -1
  527. package/docs/functions/isBoolProperty.html +1 -1
  528. package/docs/functions/isBuildableSubsystemSpecialProperties.html +1 -1
  529. package/docs/functions/isByteArrayProperty.html +1 -1
  530. package/docs/functions/isByteProperty.html +1 -1
  531. package/docs/functions/isCircuitSpecialProperties.html +1 -1
  532. package/docs/functions/isConveyorChainActorSpecialProperties.html +1 -1
  533. package/docs/functions/isConveyorSpecialProperties.html +1 -1
  534. package/docs/functions/isDoubleArrayProperty.html +1 -1
  535. package/docs/functions/isDoubleProperty.html +1 -1
  536. package/docs/functions/isEmptySpecialProperties.html +1 -1
  537. package/docs/functions/isEnumArrayProperty.html +1 -1
  538. package/docs/functions/isEnumProperty.html +1 -1
  539. package/docs/functions/isFloatArrayProperty.html +1 -1
  540. package/docs/functions/isFloatProperty.html +1 -1
  541. package/docs/functions/isInt32ArrayProperty.html +1 -1
  542. package/docs/functions/isInt32Property.html +1 -1
  543. package/docs/functions/isInt32SetProperty.html +1 -1
  544. package/docs/functions/isInt64ArrayProperty.html +1 -1
  545. package/docs/functions/isInt64Property.html +1 -1
  546. package/docs/functions/isInt8Property.html +1 -1
  547. package/docs/functions/isMapProperty.html +1 -1
  548. package/docs/functions/isObjectArrayProperty.html +1 -1
  549. package/docs/functions/isObjectProperty.html +1 -1
  550. package/docs/functions/isObjectSetProperty.html +1 -1
  551. package/docs/functions/isObjectsListSpecialProperties.html +1 -1
  552. package/docs/functions/isPlayerSpecialProperties.html +1 -1
  553. package/docs/functions/isPowerLineSpecialProperties.html +1 -1
  554. package/docs/functions/isSaveComponent.html +1 -1
  555. package/docs/functions/isSaveEntity.html +1 -1
  556. package/docs/functions/isSetProperty.html +1 -1
  557. package/docs/functions/isSoftObjectArrayProperty.html +1 -1
  558. package/docs/functions/isSoftObjectProperty.html +1 -0
  559. package/docs/functions/isSpecialDroneActionProperties.html +1 -1
  560. package/docs/functions/isStrArrayProperty.html +1 -1
  561. package/docs/functions/isStrProperty.html +1 -1
  562. package/docs/functions/isStrSetProperty.html +1 -1
  563. package/docs/functions/isStructArrayProperty.html +1 -1
  564. package/docs/functions/isStructProperty.html +1 -1
  565. package/docs/functions/isStructSetProperty.html +1 -1
  566. package/docs/functions/isTextArrayProperty.html +1 -1
  567. package/docs/functions/isTextProperty.html +1 -1
  568. package/docs/functions/isUInt64Property.html +1 -1
  569. package/docs/functions/isUint32Property.html +1 -1
  570. package/docs/functions/isUint32SetProperty.html +1 -1
  571. package/docs/functions/isUint8Property.html +1 -1
  572. package/docs/functions/isVehicleSpecialProperties.html +1 -1
  573. package/docs/functions/vec2.Parse.html +1 -1
  574. package/docs/functions/vec2.ParseF.html +1 -1
  575. package/docs/functions/vec2.Serialize.html +1 -1
  576. package/docs/functions/vec2.SerializeF.html +1 -1
  577. package/docs/functions/vec3.Parse.html +1 -1
  578. package/docs/functions/vec3.ParseF.html +1 -1
  579. package/docs/functions/vec3.ParseInt.html +1 -1
  580. package/docs/functions/vec3.Serialize.html +1 -1
  581. package/docs/functions/vec3.SerializeF.html +1 -1
  582. package/docs/functions/vec3.SerializeInt.html +1 -1
  583. package/docs/functions/vec3.add.html +1 -1
  584. package/docs/functions/vec3.length.html +1 -1
  585. package/docs/functions/vec3.mult.html +1 -1
  586. package/docs/functions/vec3.norm.html +1 -1
  587. package/docs/functions/vec3.sub.html +1 -1
  588. package/docs/functions/vec4.Parse.html +1 -1
  589. package/docs/functions/vec4.ParseF.html +1 -1
  590. package/docs/functions/vec4.Serialize.html +1 -1
  591. package/docs/functions/vec4.SerializeF.html +1 -1
  592. package/docs/index.html +3 -2
  593. package/docs/interfaces/Blueprint.html +2 -2
  594. package/docs/interfaces/BlueprintConfig-1.html +2 -2
  595. package/docs/interfaces/SaveComponentHeader.html +2 -2
  596. package/docs/interfaces/SaveEntityHeader.html +2 -2
  597. package/docs/interfaces/SaveObjectHeader.html +2 -2
  598. package/docs/modules/AbstractBaseProperty.html +1 -1
  599. package/docs/modules/ArrayProperty.html +1 -1
  600. package/docs/modules/BlueprintConfig.html +1 -1
  601. package/docs/modules/BlueprintHeader.html +1 -1
  602. package/docs/modules/BoolArrayProperty.html +1 -1
  603. package/docs/modules/BoolProperty.html +1 -1
  604. package/docs/modules/BuildableSubsystemSpecialProperties.html +1 -1
  605. package/docs/modules/BuildableTypeInstance.html +1 -1
  606. package/docs/modules/ByteArrayProperty.html +1 -1
  607. package/docs/modules/ByteProperty.html +1 -1
  608. package/docs/modules/CircuitSpecialProperties.html +1 -1
  609. package/docs/modules/ConveyorChainActorSpecialProperties.html +1 -1
  610. package/docs/modules/ConveyorSpecialProperties.html +1 -1
  611. package/docs/modules/DoubleArrayProperty.html +1 -1
  612. package/docs/modules/DoubleProperty.html +1 -1
  613. package/docs/modules/DynamicStructPropertyValue.html +1 -1
  614. package/docs/modules/EmptySpecialProperties.html +1 -1
  615. package/docs/modules/EnumArrayProperty.html +1 -1
  616. package/docs/modules/EnumProperty.html +1 -1
  617. package/docs/modules/FClientIdentityInfo.html +1 -1
  618. package/docs/modules/FColor.html +1 -1
  619. package/docs/modules/FGDynamicStruct.html +1 -1
  620. package/docs/modules/FICFrameRange.html +1 -1
  621. package/docs/modules/FINGPUT1BufferPixel.html +1 -1
  622. package/docs/modules/FINItemStateFileSystem.html +1 -1
  623. package/docs/modules/FINNetworkTrace.html +1 -1
  624. package/docs/modules/FLBBalancerIndexing.html +1 -1
  625. package/docs/modules/FLinearColor.html +1 -1
  626. package/docs/modules/FloatArrayProperty.html +1 -1
  627. package/docs/modules/FloatProperty.html +1 -1
  628. package/docs/modules/GUID.html +1 -1
  629. package/docs/modules/GUIDInfo.html +1 -1
  630. package/docs/modules/Int32ArrayProperty.html +1 -1
  631. package/docs/modules/Int32Property.html +1 -1
  632. package/docs/modules/Int32SetProperty.html +1 -1
  633. package/docs/modules/Int64ArrayProperty.html +1 -1
  634. package/docs/modules/Int64Property.html +1 -1
  635. package/docs/modules/Int8Property.html +1 -1
  636. package/docs/modules/Level.html +1 -1
  637. package/docs/modules/LevelToDestroyedActorsMap.html +1 -1
  638. package/docs/modules/MD5Hash.html +1 -1
  639. package/docs/modules/MapProperty.html +1 -1
  640. package/docs/modules/ObjectArrayProperty.html +1 -1
  641. package/docs/modules/ObjectProperty.html +1 -1
  642. package/docs/modules/ObjectReference.html +1 -1
  643. package/docs/modules/ObjectSetProperty.html +1 -1
  644. package/docs/modules/ObjectsListSpecialProperties.html +1 -1
  645. package/docs/modules/PlayerSpecialProperties.html +1 -1
  646. package/docs/modules/PowerLineSpecialProperties.html +1 -1
  647. package/docs/modules/PropertiesList.html +1 -1
  648. package/docs/modules/SatisfactorySaveHeader.html +1 -1
  649. package/docs/modules/SaveBodyChunks.html +1 -1
  650. package/docs/modules/SaveBodyValidation.html +1 -1
  651. package/docs/modules/SetProperty.html +1 -1
  652. package/docs/modules/SoftObjectArrayProperty.html +1 -1
  653. package/docs/modules/SoftObjectProperty.html +6 -0
  654. package/docs/modules/SoftObjectReference.html +1 -1
  655. package/docs/modules/SpecialDroneActionProperties.html +1 -1
  656. package/docs/modules/SpecialProperties.html +1 -1
  657. package/docs/modules/StrArrayProperty.html +1 -1
  658. package/docs/modules/StrProperty.html +1 -1
  659. package/docs/modules/StrSetProperty.html +1 -1
  660. package/docs/modules/StructArrayProperty.html +1 -1
  661. package/docs/modules/StructProperty.html +1 -1
  662. package/docs/modules/StructSetProperty.html +1 -1
  663. package/docs/modules/TextArrayProperty.html +1 -1
  664. package/docs/modules/TextProperty.html +1 -1
  665. package/docs/modules/Transform.html +1 -1
  666. package/docs/modules/Uint32Property.html +1 -1
  667. package/docs/modules/Uint32SetProperty.html +1 -1
  668. package/docs/modules/Uint64Property.html +1 -1
  669. package/docs/modules/Uint8Property.html +1 -1
  670. package/docs/modules/VehiclePhysicsData.html +1 -1
  671. package/docs/modules/VehicleSpecialProperties.html +1 -1
  672. package/docs/modules/col4.html +1 -1
  673. package/docs/modules/vec2.html +1 -1
  674. package/docs/modules/vec3.html +1 -1
  675. package/docs/modules/vec4.html +1 -1
  676. package/docs/modules.html +3 -0
  677. package/docs/types/AbstractBaseProperty-1.html +1 -1
  678. package/docs/types/ArrayProperty.AvailableArrayPropertyTypes.html +1 -1
  679. package/docs/types/ArrayPropertyStructValueFields.html +1 -1
  680. package/docs/types/BasicMultipleStructPropertyValue.html +1 -1
  681. package/docs/types/BasicStructPropertyValue.html +1 -1
  682. package/docs/types/BlueprintHeader-1.html +1 -1
  683. package/docs/types/BlueprintReaderWriterContext.html +1 -1
  684. package/docs/types/BoolArrayProperty-1.html +1 -1
  685. package/docs/types/BoolProperty-1.html +1 -1
  686. package/docs/types/BoxStructPropertyValue.html +1 -1
  687. package/docs/types/BuildableSubsystemSpecialProperties-1.html +1 -1
  688. package/docs/types/BuildableTypeInstance-1.html +1 -1
  689. package/docs/types/ByteArrayProperty-1.html +1 -1
  690. package/docs/types/ByteProperty-1.html +1 -1
  691. package/docs/types/BytePropertyValue.html +1 -1
  692. package/docs/types/ChunkCompressionInfo.html +1 -1
  693. package/docs/types/ChunkSummary.html +1 -1
  694. package/docs/types/CircuitSpecialProperties-1.html +1 -1
  695. package/docs/types/ConveyorChainActorSpecialProperties-1.html +1 -1
  696. package/docs/types/ConveyorChainSegmentSpecialProperties.html +1 -1
  697. package/docs/types/ConveyorItemSpecialProperties.html +1 -1
  698. package/docs/types/ConveyorSpecialProperties-1.html +1 -1
  699. package/docs/types/DoubleArrayProperty-1.html +1 -1
  700. package/docs/types/DoubleProperty-1.html +1 -1
  701. package/docs/types/DynamicStructPropertyValue-1.html +1 -1
  702. package/docs/types/EmptySpecialProperties-1.html +1 -1
  703. package/docs/types/EnumArrayProperty-1.html +1 -1
  704. package/docs/types/EnumProperty-1.html +1 -1
  705. package/docs/types/FClientIdentityInfo-1.html +1 -1
  706. package/docs/types/FColor-1.html +1 -1
  707. package/docs/types/FGDynamicStruct-1.html +1 -1
  708. package/docs/types/FICFrameRange-1.html +1 -1
  709. package/docs/types/FICFrameRangeStructPropertyValue.html +1 -1
  710. package/docs/types/FINGPUT1BufferPixel-1.html +1 -1
  711. package/docs/types/FINItemStateFileSystem-1.html +1 -1
  712. package/docs/types/FINNetworkTrace-1.html +1 -1
  713. package/docs/types/FLBBalancerIndexing-1.html +1 -1
  714. package/docs/types/FLinearColor-1.html +1 -1
  715. package/docs/types/FloatArrayProperty-1.html +1 -1
  716. package/docs/types/FloatProperty-1.html +1 -1
  717. package/docs/types/GENERIC_MAP_KEY_TYPE.html +1 -1
  718. package/docs/types/GENERIC_MAP_VALUE_TYPE.html +1 -1
  719. package/docs/types/GENERIC_STRUCT_PROPERTY_VALUE.html +1 -1
  720. package/docs/types/GUID-1.html +1 -1
  721. package/docs/types/GUIDInfo-1.html +1 -1
  722. package/docs/types/Grids.html +1 -1
  723. package/docs/types/Int32ArrayProperty-1.html +1 -1
  724. package/docs/types/Int32Property-1.html +1 -1
  725. package/docs/types/Int32SetProperty-1.html +1 -1
  726. package/docs/types/Int64ArrayProperty-1.html +1 -1
  727. package/docs/types/Int64Property-1.html +1 -1
  728. package/docs/types/Int8Property-1.html +1 -1
  729. package/docs/types/InventoryItemStructPropertyValue.html +1 -1
  730. package/docs/types/Level-1.html +1 -1
  731. package/docs/types/LevelToDestroyedActorsMap-1.html +1 -1
  732. package/docs/types/Levels.html +1 -1
  733. package/docs/types/MAP_STRUCT_PROXY.html +1 -1
  734. package/docs/types/MD5Hash-1.html +1 -1
  735. package/docs/types/MapProperty-1.html +1 -1
  736. package/docs/types/ModData.html +1 -1
  737. package/docs/types/ObjectArrayProperty-1.html +1 -1
  738. package/docs/types/ObjectProperty-1.html +1 -1
  739. package/docs/types/ObjectReference-1.html +1 -1
  740. package/docs/types/ObjectSetProperty-1.html +1 -1
  741. package/docs/types/ObjectsListSpecialProperties-1.html +1 -1
  742. package/docs/types/PlayerSpecialProperties-1.html +1 -1
  743. package/docs/types/PowerLineSpecialProperties-1.html +1 -1
  744. package/docs/types/PropertiesMap.html +1 -1
  745. package/docs/types/RailroadTrackPositionStructPropertyValue.html +1 -1
  746. package/docs/types/ReaderWriterContext.html +1 -1
  747. package/docs/types/RoughSaveVersion.html +1 -1
  748. package/docs/types/SatisfactoryModMetadata.html +1 -1
  749. package/docs/types/SatisfactorySaveHeader-1.html +1 -1
  750. package/docs/types/SaveBodyChunks-1.html +1 -1
  751. package/docs/types/SaveBodyValidation-1.html +1 -1
  752. package/docs/types/SaveReaderWriterContext.html +1 -1
  753. package/docs/types/SetProperty.AvailableSetPropertyTypes.html +1 -1
  754. package/docs/types/SoftObjectArrayProperty-1.html +1 -1
  755. package/docs/types/SoftObjectProperty-1.html +1 -0
  756. package/docs/types/SoftObjectReference-1.html +1 -1
  757. package/docs/types/SpecialDroneAction.html +1 -1
  758. package/docs/types/SpecialDroneActionProperties-1.html +1 -1
  759. package/docs/types/SpecialProperties.AvailableSpecialPropertiesTypes.html +1 -1
  760. package/docs/types/StrArrayProperty-1.html +1 -1
  761. package/docs/types/StrProperty-1.html +1 -1
  762. package/docs/types/StrSetProperty-1.html +1 -1
  763. package/docs/types/StructArrayProperty-1.html +1 -1
  764. package/docs/types/StructProperty-1.html +1 -1
  765. package/docs/types/StructSetProperty-1.html +1 -1
  766. package/docs/types/TextArrayProperty-1.html +1 -1
  767. package/docs/types/TextProperty-1.html +1 -1
  768. package/docs/types/TextPropertyValue.html +1 -1
  769. package/docs/types/Transform-1.html +1 -1
  770. package/docs/types/Uint32Property-1.html +1 -1
  771. package/docs/types/Uint32SetProperty-1.html +1 -1
  772. package/docs/types/Uint64Property-1.html +1 -1
  773. package/docs/types/Uint8Property-1.html +1 -1
  774. package/docs/types/VehiclePhysicsData-1.html +1 -1
  775. package/docs/types/VehicleSpecialProperties-1.html +1 -1
  776. package/docs/types/col4-1.html +1 -1
  777. package/docs/types/vec2-1.html +1 -1
  778. package/docs/types/vec3-1.html +1 -1
  779. package/docs/types/vec4-1.html +1 -1
  780. package/docs/variables/DEFAULT_SATISFACTORY_CHUNK_HEADER_SIZE.html +1 -1
  781. package/docs/variables/EDIT.html +1 -1
  782. package/docs/variables/FINItemStateFileSystem.ExactStructReference.html +1 -1
  783. package/docs/variables/SaveBodyChunks.HEADER_V1.html +1 -1
  784. package/docs/variables/SaveBodyChunks.HEADER_V2.html +1 -1
  785. package/jsr.json +1 -1
  786. package/package.json +6 -5
  787. package/tsconfig.test.json +13 -0
  788. package/build/parser/context/context.d.ts.map +0 -1
  789. package/build/parser/context/context.js.map +0 -1
  790. package/build/parser/file.types.d.ts +0 -14
  791. package/build/parser/file.types.d.ts.map +0 -1
  792. package/build/parser/file.types.js +0 -8
  793. package/build/parser/file.types.js.map +0 -1
  794. package/build/parser/satisfactory/save/level.class.d.ts +0 -29
  795. package/build/parser/satisfactory/save/level.class.d.ts.map +0 -1
  796. package/build/parser/satisfactory/save/level.class.js +0 -204
  797. package/build/parser/satisfactory/save/level.class.js.map +0 -1
  798. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.d.ts +0 -22
  799. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.d.ts.map +0 -1
  800. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.js +0 -127
  801. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.js.map +0 -1
  802. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.d.ts +0 -14
  803. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.d.ts.map +0 -1
  804. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.js +0 -23
  805. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.js.map +0 -1
  806. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.d.ts +0 -14
  807. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.d.ts.map +0 -1
  808. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.js +0 -23
  809. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.js.map +0 -1
  810. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.d.ts +0 -14
  811. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.d.ts.map +0 -1
  812. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.js +0 -23
  813. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.js.map +0 -1
  814. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.d.ts +0 -14
  815. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.d.ts.map +0 -1
  816. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.js +0 -23
  817. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.js.map +0 -1
  818. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.d.ts +0 -14
  819. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.d.ts.map +0 -1
  820. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.js +0 -23
  821. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.js.map +0 -1
  822. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.d.ts +0 -14
  823. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.d.ts.map +0 -1
  824. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.js +0 -23
  825. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.js.map +0 -1
  826. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.d.ts +0 -14
  827. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.d.ts.map +0 -1
  828. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.js +0 -23
  829. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.js.map +0 -1
  830. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.d.ts +0 -15
  831. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.d.ts.map +0 -1
  832. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.js +0 -23
  833. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.js.map +0 -1
  834. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.d.ts +0 -15
  835. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.d.ts.map +0 -1
  836. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.js +0 -23
  837. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.js.map +0 -1
  838. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.d.ts +0 -14
  839. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.d.ts.map +0 -1
  840. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.js +0 -23
  841. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.js.map +0 -1
  842. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.d.ts +0 -26
  843. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.d.ts.map +0 -1
  844. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.js +0 -75
  845. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.js.map +0 -1
  846. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.d.ts +0 -15
  847. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.d.ts.map +0 -1
  848. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.js +0 -23
  849. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.js.map +0 -1
  850. package/build/parser/satisfactory/types/property/generic/Int32Property.d.ts +0 -16
  851. package/build/parser/satisfactory/types/property/generic/Int32Property.d.ts.map +0 -1
  852. package/build/parser/satisfactory/types/property/generic/Int32Property.js +0 -33
  853. package/build/parser/satisfactory/types/property/generic/Int32Property.js.map +0 -1
  854. package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts +0 -25
  855. package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts.map +0 -1
  856. package/build/parser/satisfactory/types/property/generic/MapProperty.js.map +0 -1
  857. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.d.ts +0 -14
  858. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.d.ts.map +0 -1
  859. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.js +0 -23
  860. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.js.map +0 -1
  861. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.d.ts +0 -15
  862. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.d.ts.map +0 -1
  863. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.js +0 -23
  864. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.js.map +0 -1
  865. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.d.ts +0 -15
  866. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.d.ts.map +0 -1
  867. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.js +0 -75
  868. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.js.map +0 -1
  869. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.d.ts +0 -14
  870. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.d.ts.map +0 -1
  871. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.js +0 -23
  872. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.js.map +0 -1
  873. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.d.ts +0 -14
  874. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.d.ts.map +0 -1
  875. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.js +0 -42
  876. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.js.map +0 -1
  877. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.d.ts +0 -14
  878. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.d.ts.map +0 -1
  879. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.js +0 -23
  880. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.js.map +0 -1
  881. package/build/parser/satisfactory/types/property/generic/StructProperty.d.ts +0 -59
  882. package/build/parser/satisfactory/types/property/generic/StructProperty.d.ts.map +0 -1
  883. package/build/parser/satisfactory/types/property/generic/StructProperty.js.map +0 -1
  884. package/build/parser/satisfactory/types/structs/GUID.d.ts +0 -8
  885. package/build/parser/satisfactory/types/structs/GUID.d.ts.map +0 -1
  886. package/build/parser/satisfactory/types/structs/GUID.js +0 -22
  887. package/build/parser/satisfactory/types/structs/GUID.js.map +0 -1
  888. package/build/parser/stream/reworked/save-stream-json-stringifier.d.ts +0 -6
  889. package/build/parser/stream/reworked/save-stream-json-stringifier.d.ts.map +0 -1
  890. package/build/parser/stream/reworked/save-stream-json-stringifier.js +0 -35
  891. package/build/parser/stream/reworked/save-stream-json-stringifier.js.map +0 -1
  892. package/build/parser/stream/reworked/save-stream-writer.class.d.ts +0 -28
  893. package/build/parser/stream/reworked/save-stream-writer.class.d.ts.map +0 -1
  894. package/build/parser/stream/reworked/save-stream-writer.class.js +0 -84
  895. package/build/parser/stream/reworked/save-stream-writer.class.js.map +0 -1
@@ -2,17 +2,36 @@
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.ReadableStreamParser = void 0;
5
- const web_1 = require("stream/web");
5
+ const hierarchical_version_context_1 = require("../../context/hierarchical-version-context");
6
6
  const parser_error_1 = require("../../error/parser.error");
7
- const level_1 = require("../../satisfactory/save/level");
7
+ const data_blob_1 = require("../../satisfactory/save/data-blob");
8
8
  const level_to_destroyed_actors_map_1 = require("../../satisfactory/save/level-to-destroyed-actors-map");
9
9
  const object_references_list_1 = require("../../satisfactory/save/object-references-list");
10
10
  const satisfactory_save_1 = require("../../satisfactory/save/satisfactory-save");
11
11
  const satisfactory_save_header_1 = require("../../satisfactory/save/satisfactory-save-header");
12
12
  const save_custom_version_1 = require("../../satisfactory/save/save-custom-version");
13
13
  const save_reader_1 = require("../../satisfactory/save/save-reader");
14
+ const toc_blob_1 = require("../../satisfactory/save/toc-blob");
14
15
  const ObjectReference_1 = require("../../satisfactory/types/structs/ObjectReference");
15
16
  const SaveBodyValidation_1 = require("../../satisfactory/types/structs/SaveBodyValidation");
17
+ const FSaveObjectVersionData_1 = require("../../satisfactory/types/structs/binary/FSaveObjectVersionData");
18
+ const streamWeb = (() => {
19
+ try {
20
+ return require('stream/web');
21
+ }
22
+ catch {
23
+ try {
24
+ return require('web-streams-polyfill');
25
+ }
26
+ catch {
27
+ return {
28
+ ReadableStream: globalThis.ReadableStream,
29
+ QueuingStrategy: globalThis.QueuingStrategy,
30
+ ReadableStreamDefaultController: globalThis.ReadableStreamDefaultController
31
+ };
32
+ }
33
+ }
34
+ })();
16
35
  const DEFAULT_BYTE_HIGHWATERMARK = 1024 * 1024 * 200;
17
36
  const createStringLengthQueuingStrategy = (highWaterMark = DEFAULT_BYTE_HIGHWATERMARK / 4) => ({
18
37
  highWaterMark,
@@ -59,52 +78,77 @@ class ReadableStreamParser {
59
78
  let destroyedActorsMap = {};
60
79
  for (let j = 0; j <= levelCount; j++) {
61
80
  let levelName = (j === levelCount) ? '' + mapName : reader.readString();
81
+ const level = {
82
+ name: levelName,
83
+ objects: [],
84
+ collectables: [],
85
+ writesDestroyedActorsInTOCBlob: false
86
+ };
62
87
  const isPersistentLevel = levelName === mapName;
63
88
  if (j % 500 === 0) {
64
89
  reader.onProgressCallback(reader.getBufferProgress(), `reading level [${(j + 1)}/${(levelCount + 1)}] ${levelName}`);
65
90
  }
66
- await write(`${j > 0 ? ', ' : ''}"${levelName}": {"name": "${levelName}", "objects": [`, false);
67
- const headersBinLen = reader.readInt32();
68
- if (reader.context.saveVersion >= save_custom_version_1.SaveCustomVersion.UnrealEngine5) {
69
- reader.readInt32Zero();
91
+ await write(`${j > 0 ? ', ' : ''}"${levelName}": {"name": "${levelName}",`, false);
92
+ const tocBlobMarker = toc_blob_1.TOCBlob.SkipOver(reader);
93
+ const dataBlobMarker = data_blob_1.DataBlob.SkipOver(reader);
94
+ if (!isPersistentLevel) {
95
+ if (reader.context.saveVersion.header >= save_custom_version_1.SaveCustomVersion.SerializePerStreamableLevelTOCVersion) {
96
+ level.saveCustomVersion = reader.readInt32();
97
+ await write(`"saveCustomVersion": ${level.saveCustomVersion},`, false);
98
+ }
99
+ }
100
+ if (isPersistentLevel) {
101
+ const destroyedActorsMap = level_to_destroyed_actors_map_1.LevelToDestroyedActorsMap.read(reader);
102
+ await write(`"destroyedActorsMap": ${JSON.stringify(destroyedActorsMap)},`, false);
103
+ }
104
+ else {
105
+ level.collectables = object_references_list_1.ObjectReferencesList.ReadList(reader);
106
+ if (reader.context.saveVersion.header >= save_custom_version_1.SaveCustomVersion.SerializeDataPackageVersionAndCustomVersions) {
107
+ const shouldSerializePerObjectVersionData = reader.readInt32() >= 1;
108
+ if (shouldSerializePerObjectVersionData) {
109
+ level.objectVersionData = FSaveObjectVersionData_1.FSaveObjectVersionData.read(reader);
110
+ await write(`"objectVersionData": ${JSON.stringify(level.objectVersionData)},`, false);
111
+ }
112
+ }
70
113
  }
71
- const posBeforeHeaders = reader.getBufferPosition();
72
- const afterAllHeaders = posBeforeHeaders + headersBinLen;
114
+ await write(`"collectables": [${level.collectables.map(obj => JSON.stringify(obj)).join(', ')}],`, false);
115
+ hierarchical_version_context_1.HierarchyVersion.SetOnLevel(reader.context.saveVersion, level.saveCustomVersion);
116
+ hierarchical_version_context_1.HierarchyVersion.SetOnLevel(reader.context.packageFileVersionUE5, level.objectVersionData?.packageFileVersion.ue5Version);
117
+ const endOfLevelPosition = reader.getBufferPosition();
118
+ await write(`"objects": [`, false);
119
+ reader.jumpTo(tocBlobMarker.position);
73
120
  let countObjectHeaders = reader.readInt32();
74
121
  let totalReadObjectsInLevel = 0;
75
122
  let writtenObjectsInLevel = 0;
76
123
  let afterHeadersOfBatch = reader.getBufferPosition();
77
124
  let afterObjectsOfBatch = -1;
78
125
  do {
79
- reader.skipBytes(afterHeadersOfBatch - reader.getBufferPosition());
126
+ reader.jumpTo(afterHeadersOfBatch);
80
127
  const objectCountToRead = Math.min(countObjectHeaders - totalReadObjectsInLevel, batchingSizeOfObjects);
81
- const objects = level_1.Level.ReadNObjectHeaders(reader, objectCountToRead);
128
+ const objects = toc_blob_1.TOCBlob.ReadNObjectHeaders(reader, objectCountToRead);
82
129
  afterHeadersOfBatch = reader.getBufferPosition();
83
130
  if (countObjectHeaders === totalReadObjectsInLevel + objects.length) {
84
- const bytesLeft = afterAllHeaders - reader.getBufferPosition();
85
- if (bytesLeft > 0) {
131
+ let remainingSize = tocBlobMarker.length - (reader.getBufferPosition() - tocBlobMarker.position);
132
+ if (remainingSize > 0) {
86
133
  if (isPersistentLevel) {
87
134
  destroyedActorsMap = level_to_destroyed_actors_map_1.LevelToDestroyedActorsMap.read(reader);
88
135
  }
89
136
  else {
90
137
  collectables = object_references_list_1.ObjectReferencesList.ReadList(reader);
91
138
  }
139
+ level.writesDestroyedActorsInTOCBlob = true;
92
140
  }
93
141
  }
94
142
  if (totalReadObjectsInLevel === 0) {
95
- reader.skipBytes(afterAllHeaders - reader.getBufferPosition());
96
- const objectContentsBinLen = reader.readInt32();
97
- if (reader.context.saveVersion >= save_custom_version_1.SaveCustomVersion.UnrealEngine5) {
98
- reader.readInt32Zero();
99
- }
143
+ reader.jumpTo(dataBlobMarker.position);
100
144
  const posBeforeContents = reader.getBufferPosition();
101
145
  const countEntities = reader.readInt32();
102
146
  afterObjectsOfBatch = reader.getBufferPosition();
103
147
  }
104
148
  else {
105
- reader.skipBytes(afterObjectsOfBatch - reader.getBufferPosition());
149
+ reader.jumpTo(afterObjectsOfBatch);
106
150
  }
107
- level_1.Level.ReadNObjectContents(reader, objectCountToRead, objects, 0);
151
+ data_blob_1.DataBlob.ReadNObjectContents(reader, objectCountToRead, objects, 0);
108
152
  afterObjectsOfBatch = reader.getBufferPosition();
109
153
  totalReadObjectsInLevel += objectCountToRead;
110
154
  if (countObjectHeaders > 10000 && totalReadObjectsInLevel % 10000 === 0) {
@@ -120,22 +164,8 @@ class ReadableStreamParser {
120
164
  writtenObjectsInLevel += objectCountToRead;
121
165
  } while (totalReadObjectsInLevel < countObjectHeaders);
122
166
  await write('], ', false);
123
- if (!isPersistentLevel) {
124
- if (reader.context.saveVersion >= save_custom_version_1.SaveCustomVersion.SerializePerStreamableLevelTOCVersion) {
125
- const saveCustomVersion = reader.readInt32();
126
- await write(`"saveCustomVersion": ${saveCustomVersion}, `, false);
127
- }
128
- }
129
- if (isPersistentLevel) {
130
- destroyedActorsMap = level_to_destroyed_actors_map_1.LevelToDestroyedActorsMap.read(reader);
131
- await write(`"destroyedActorsMap": ${JSON.stringify(destroyedActorsMap)}, `, false);
132
- }
133
- await write('"collectables": [', false);
134
- if (!isPersistentLevel) {
135
- collectables = object_references_list_1.ObjectReferencesList.ReadList(reader);
136
- }
137
- await write(`${collectables.map(obj => JSON.stringify(obj)).join(', ')}`, true);
138
- await write(']', false);
167
+ await write(`"writesDestroyedActorsInTOCBlob": ${JSON.stringify(level.writesDestroyedActorsInTOCBlob)}`, false);
168
+ reader.jumpTo(endOfLevelPosition);
139
169
  await write('}', false);
140
170
  }
141
171
  }
@@ -144,7 +174,7 @@ exports.ReadableStreamParser = ReadableStreamParser;
144
174
  _a = ReadableStreamParser;
145
175
  ReadableStreamParser.CreateReadableStreamForParsingSave = (onStart, onCancel, onPullRequest, highWaterMark = DEFAULT_BYTE_HIGHWATERMARK / 4) => {
146
176
  let ourController = null;
147
- const stream = new web_1.ReadableStream({
177
+ const stream = new streamWeb.ReadableStream({
148
178
  start: (controller) => {
149
179
  ourController = controller;
150
180
  onStart(ourController);
@@ -188,7 +218,7 @@ ReadableStreamParser.CreateReadableStreamFromSaveToJson = (name, bytes, options)
188
218
  const reader = new save_reader_1.SaveReader(bytes, options?.onProgress);
189
219
  const header = satisfactory_save_header_1.SatisfactorySaveHeader.Parse(reader);
190
220
  const save = new satisfactory_save_1.SatisfactorySave(name, header);
191
- const roughSaveVersion = save_reader_1.SaveReader.GetRoughSaveVersion(header.saveVersion);
221
+ const roughSaveVersion = save_reader_1.SaveReader.GetApproximateSaveVersion(header.saveVersion);
192
222
  if (roughSaveVersion === '<U6') {
193
223
  throw new parser_error_1.UnsupportedVersionError('Game Version < U6 is not supported in the parser. Please save the file in a newer game version.');
194
224
  }
@@ -197,23 +227,30 @@ ReadableStreamParser.CreateReadableStreamFromSaveToJson = (name, bytes, options)
197
227
  if (options?.onDecompressedSaveBody !== undefined) {
198
228
  options.onDecompressedSaveBody(reader.getBuffer());
199
229
  }
230
+ if (reader.context.saveVersion.header >= save_custom_version_1.SaveCustomVersion.UnrealEngine5) {
231
+ reader.readInt32();
232
+ }
233
+ let saveObjectVersionData = save.objectVersionData;
234
+ if (reader.context.saveVersion.header >= save_custom_version_1.SaveCustomVersion.SerializeDataPackageVersionAndCustomVersions) {
235
+ saveObjectVersionData = FSaveObjectVersionData_1.FSaveObjectVersionData.read(reader);
236
+ reader.context.packageFileVersionUE5 = hierarchical_version_context_1.HierarchyVersion.CreateOnHeader(saveObjectVersionData.packageFileVersion.ue5Version);
237
+ }
200
238
  let saveBodyValidation = save.saveBodyValidation;
201
- if (reader.context.saveVersion >= save_custom_version_1.SaveCustomVersion.IntroducedWorldPartition) {
239
+ if (reader.context.saveVersion.header >= save_custom_version_1.SaveCustomVersion.IntroducedWorldPartition) {
202
240
  saveBodyValidation = SaveBodyValidation_1.SaveBodyValidation.Parse(reader);
203
241
  }
204
- await _a.WriteHeaderAndSaveBodyValidation(write, name, inflateResult.compressionInfo, header, saveBodyValidation);
242
+ await _a.WriteHeaderAndFieldsBeforeLevel(write, name, inflateResult.compressionInfo, header, saveBodyValidation, saveObjectVersionData);
205
243
  await _a.ReadWriteLevels(write, reader, save.header.mapName, save.header.buildVersion);
206
244
  await write(`}`, false);
207
- const countUnresolvedWorldSaveData = reader.readInt32();
208
- if (countUnresolvedWorldSaveData) {
209
- save.unresolvedWorldSaveData = [];
210
- for (let i = 0; i < countUnresolvedWorldSaveData; i++) {
211
- save.unresolvedWorldSaveData.push(ObjectReference_1.ObjectReference.read(reader));
245
+ if (reader.getBufferPosition() < reader.getBufferLength()) {
246
+ const countUnresolvedWorldSaveData = reader.readInt32();
247
+ if (countUnresolvedWorldSaveData) {
248
+ save.unresolvedWorldSaveData = [];
249
+ for (let i = 0; i < countUnresolvedWorldSaveData; i++) {
250
+ save.unresolvedWorldSaveData.push(ObjectReference_1.ObjectReference.read(reader));
251
+ }
252
+ await write(`, "unresolvedWorldSaveData": ${JSON.stringify(save.unresolvedWorldSaveData)} `, false);
212
253
  }
213
- await write(`, "unresolvedWorldSaveData": ${JSON.stringify(save.unresolvedWorldSaveData)} `, false);
214
- }
215
- if (save.name !== undefined) {
216
- await write(`, "name": "${save.name}" `, false);
217
254
  }
218
255
  if (options?.onProgress !== undefined) {
219
256
  options.onProgress(1, 'finished parsing.');
@@ -223,7 +260,10 @@ ReadableStreamParser.CreateReadableStreamFromSaveToJson = (name, bytes, options)
223
260
  };
224
261
  return { stream, startStreaming };
225
262
  };
226
- ReadableStreamParser.WriteHeaderAndSaveBodyValidation = async (write, name, compressionInfo, header, saveBodyValidation) => {
227
- return write(`{"header": ${JSON.stringify(header)}, "name": "${name}", "compressionInfo": ${JSON.stringify(compressionInfo)}, "saveBodyValidation": ${JSON.stringify(saveBodyValidation)}, "levels": {`, false);
263
+ ReadableStreamParser.WriteHeaderAndFieldsBeforeLevel = async (write, name, compressionInfo, header, saveBodyValidation, saveObjectVersionData) => {
264
+ const compressionInfoEntry = `"compressionInfo": ${JSON.stringify(compressionInfo)}`;
265
+ const saveBodyValidationEntry = saveBodyValidation !== undefined ? `, "saveBodyValidation": ${JSON.stringify(saveBodyValidation)}` : '';
266
+ const saveObjectVersionDataEntry = saveObjectVersionData !== undefined ? `, "objectVersionData": ${JSON.stringify(saveObjectVersionData)}` : '';
267
+ return write(`{"header": ${JSON.stringify(header)}, "name": "${name}", ${compressionInfoEntry}${saveBodyValidationEntry}${saveObjectVersionDataEntry}, "levels": {`, false);
228
268
  };
229
269
  //# sourceMappingURL=readable-stream-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"readable-stream-parser.js","sourceRoot":"","sources":["../../../../src/parser/stream/reworked/readable-stream-parser.ts"],"names":[],"mappings":";;;;AAAA,oCAA8F;AAC9F,2DAAmE;AACnE,yDAAsD;AACtD,yGAAkG;AAClG,2FAAsF;AACtF,iFAA6E;AAC7E,+FAA0F;AAE1F,qFAAgF;AAChF,qEAAiE;AACjE,sFAAmF;AACnF,4FAAyF;AAEzF,MAAM,0BAA0B,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AACrD,MAAM,iCAAiC,GAAG,CAAC,gBAAwB,0BAA0B,GAAG,CAAC,EAA2B,EAAE,CAAC,CAAC;IAC/H,aAAa;IACb,IAAI,EAAE,CAAC,KAAyB,EAAE,EAAE;QACnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,CAAC;QACV,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;CACD,CAAC,CAAC;AAEH,MAAM,yBAAyB;IAA/B;QACC,WAAM,GAAY,KAAK,CAAC;QACxB,iCAA4B,GAAY,KAAK,CAAC;QAC9C,gBAAW,GAA6B,SAAS,CAAC;IAyBnD,CAAC;IApBO,IAAI,CAAC,WAAuB;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC;IACF,CAAC;IAKM,MAAM;QACZ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAC1C,CAAC;IACF,CAAC;CACD;AAAA,CAAC;AAKF,MAAa,oBAAoB;IA2JxB,MAAM,CAAC,KAAK,CAAC,eAAe,CACnC,KAA6E,EAC7E,MAAkB,EAClB,OAAe,EACf,YAAoB;QAGpB,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACnC,MAAM,qDAAqD,GAAG,CAAC,GAAG,qBAAqB,CAAC;QAExF,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,mBAAmB,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;QAEnG,IAAI,oCAAoC,GAAG,CAAC,CAAC;QAC7C,IAAI,YAAY,GAAsB,EAAE,CAAC;QACzC,IAAI,kBAAkB,GAA8B,EAAE,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxE,MAAM,iBAAiB,GAAG,SAAS,KAAK,OAAO,CAAC;YAEhD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;YACtH,CAAC;YAGD,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,gBAAgB,SAAS,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAIhG,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,uCAAiB,CAAC,aAAa,EAAE,CAAC;gBACnE,MAAM,CAAC,aAAa,EAAE,CAAC;YACxB,CAAC;YAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACpD,MAAM,eAAe,GAAG,gBAAgB,GAAG,aAAa,CAAC;YACzD,IAAI,kBAAkB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAE5C,IAAI,uBAAuB,GAAG,CAAC,CAAC;YAChC,IAAI,qBAAqB,GAAG,CAAC,CAAC;YAC9B,IAAI,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;YAE7B,GAAG,CAAC;gBAGH,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBAGnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,uBAAuB,EAAE,qBAAqB,CAAC,CAAC;gBACxG,MAAM,OAAO,GAAG,aAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;gBAEpE,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAKjD,IAAI,kBAAkB,KAAK,uBAAuB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;oBACrE,MAAM,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC/D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;wBACnB,IAAI,iBAAiB,EAAE,CAAC;4BACvB,kBAAkB,GAAG,yDAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAC7D,CAAC;6BAAM,CAAC;4BACP,YAAY,GAAG,6CAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACtD,CAAC;oBACF,CAAC;gBAEF,CAAC;gBAGD,IAAI,uBAAuB,KAAK,CAAC,EAAE,CAAC;oBAGnC,MAAM,CAAC,SAAS,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBAE/D,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;oBAChD,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,uCAAiB,CAAC,aAAa,EAAE,CAAC;wBACnE,MAAM,CAAC,aAAa,EAAE,CAAC;oBACxB,CAAC;oBAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBACrD,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;oBACzC,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,SAAS,CAAC,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBACpE,CAAC;gBAED,aAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gBACjE,mBAAmB,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAEjD,uBAAuB,IAAI,iBAAiB,CAAC;gBAC7C,IAAI,kBAAkB,GAAG,KAAK,IAAI,uBAAuB,GAAG,KAAK,KAAK,CAAC,EAAE,CAAC;oBACzE,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,sBAAsB,CAAC,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;gBACjK,CAAC;gBAGD,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,oCAAoC,IAAI,qDAAqD,EAAE,CAAC;oBAEnG,UAAU,GAAG,IAAI,CAAC;oBAClB,oCAAoC,GAAG,CAAC,CAAC;gBAC1C,CAAC;gBACD,MAAM,KAAK,CAAC,GAAG,qBAAqB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBACzI,oCAAoC,IAAI,iBAAiB,CAAC;gBAC1D,qBAAqB,IAAI,iBAAiB,CAAC;YAE5C,CAAC,QAAQ,uBAAuB,GAAG,kBAAkB,EAAC;YAGtD,MAAM,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAG1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxB,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,uCAAiB,CAAC,qCAAqC,EAAE,CAAC;oBAC3F,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC7C,MAAM,KAAK,CAAC,wBAAwB,iBAAiB,IAAI,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC;YACF,CAAC;YAGD,IAAI,iBAAiB,EAAE,CAAC;gBACvB,kBAAkB,GAAG,yDAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5D,MAAM,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrF,CAAC;YAED,MAAM,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAGxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACxB,YAAY,GAAG,6CAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAEhF,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxB,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;;AApSF,oDAqSC;;AAnSe,uDAAkC,GAAG,CACnD,OAAsE,EACtE,QAA+B,EAC/B,aAA4C,EAC5C,aAAa,GAAG,0BAA0B,GAAG,CAAC,EAC7C,EAAE;IACH,IAAI,aAAa,GAAmD,IAAI,CAAC;IACzE,MAAM,MAAM,GAAG,IAAI,oBAAc,CAAS;QACzC,KAAK,EAAE,CAAC,UAAmD,EAAE,EAAE;YAC9D,aAAa,GAAG,UAAU,CAAC;YAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,EAAE,CAAC,UAAmD,EAAE,EAAE;YAC7D,aAAa,CAAC,aAAc,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC5B,aAAa,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC;KACD,EAAE,iCAAiC,CAAC,aAAa,CAAC,CAAC,CAAC;IAGrD,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC5B,aAAa,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;IACF,CAAC,CAAA;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAc,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC,AAhCgD,CAgC/C;AAUY,uDAAkC,GAAG,CAClD,IAAY,EACZ,KAAsB,EACtB,OAGE,EACwE,EAAE;IAG5E,MAAM,mBAAmB,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC5D,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAA;IAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAoB,CAAC,kCAAkC,CAC7F,CAAC,UAAU,EAAE,EAAE;IAEf,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,EACf,CAAC,WAAW,EAAE,EAAE;QAEf,mBAAmB,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC,CACD,CAAC;IAOF,MAAM,KAAK,GAAG,KAAK,EAAE,KAAa,EAAE,wBAAwB,GAAG,IAAI,EAAiB,EAAE;QACrF,IAAI,wBAAwB,EAAE,CAAC;YAC9B,MAAM,eAAe,EAAE,CAAC;QACzB,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,IAAmB,EAAE;QAEhD,MAAM,MAAM,GAAG,IAAI,wBAAU,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAG1D,MAAM,MAAM,GAAG,iDAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,oCAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAGhD,MAAM,gBAAgB,GAAG,wBAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5E,IAAI,gBAAgB,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,sCAAuB,CAAC,iGAAiG,CAAC,CAAC;QACtI,CAAC;QAGD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;QAGrD,IAAI,OAAO,EAAE,sBAAsB,KAAK,SAAS,EAAE,CAAC;YACnD,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACjD,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,uCAAiB,CAAC,wBAAwB,EAAE,CAAC;YAC9E,kBAAkB,GAAG,uCAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,EAAoB,CAAC,gCAAgC,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAGpI,MAAM,EAAoB,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACzG,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAGxB,MAAM,4BAA4B,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACxD,IAAI,4BAA4B,EAAE,CAAC;YAClC,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,4BAA4B,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,iCAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrG,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC5C,CAAC;QAGD,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC;IACV,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AACnC,CAAC,AAlG+C,CAkG/C;AAGc,qDAAgC,GAAG,KAAK,EACtD,KAA6E,EAC7E,IAAY,EACZ,eAAqC,EACrC,MAA8B,EAC9B,kBAAsC,EACrC,EAAE;IACH,OAAO,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,yBAAyB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AACjN,CAAC,AAR8C,CAQ9C","sourcesContent":["import { QueuingStrategy, ReadableStream, ReadableStreamDefaultController } from \"stream/web\";\nimport { UnsupportedVersionError } from '../../error/parser.error';\nimport { Level } from '../../satisfactory/save/level';\nimport { LevelToDestroyedActorsMap } from '../../satisfactory/save/level-to-destroyed-actors-map';\nimport { ObjectReferencesList } from '../../satisfactory/save/object-references-list';\nimport { SatisfactorySave } from \"../../satisfactory/save/satisfactory-save\";\nimport { SatisfactorySaveHeader } from '../../satisfactory/save/satisfactory-save-header';\nimport { ChunkCompressionInfo } from \"../../satisfactory/save/save-body-chunks\";\nimport { SaveCustomVersion } from '../../satisfactory/save/save-custom-version';\nimport { SaveReader } from '../../satisfactory/save/save-reader';\nimport { ObjectReference } from '../../satisfactory/types/structs/ObjectReference';\nimport { SaveBodyValidation } from \"../../satisfactory/types/structs/SaveBodyValidation\";\n\nconst DEFAULT_BYTE_HIGHWATERMARK = 1024 * 1024 * 200;\t// 200MiB\nconst createStringLengthQueuingStrategy = (highWaterMark: number = DEFAULT_BYTE_HIGHWATERMARK / 4): QueuingStrategy<string> => ({\n\thighWaterMark,\n\tsize: (chunk: string | undefined) => {\n\t\tif (chunk === undefined) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn chunk.length;\n\t}\n});\n\nclass SimpleWaitForConsumerLock {\n\tlocked: boolean = false;\n\tunlockWasCalledInTheMeantime: boolean = false;\n\texecutionFn: (() => void) | undefined = undefined;\n\n\t/** activate lock and set function to execute on unlock.\n\t * If at least 1 unlock was called before this call, immediately unlock.\n\t */\n\tpublic lock(executionFn: () => void) {\n\t\tthis.executionFn = executionFn;\n\t\tthis.locked = true;\n\t\tif (this.unlockWasCalledInTheMeantime) {\n\t\t\tthis.unlock();\n\t\t}\n\t}\n\n\t/**\n\t * unlock and execute stored function if present.\n\t */\n\tpublic unlock() {\n\t\tthis.locked = false;\n\t\tif (this.executionFn) {\n\t\t\tthis.executionFn();\n\t\t\tthis.executionFn = undefined;\n\t\t} else {\n\t\t\tthis.unlockWasCalledInTheMeantime = true;\n\t\t}\n\t}\n};\n\n/**\n * Creates a ReadableStream from Binary file, that actually waits until the reading operator has caught up before it pushes more.\n */\nexport class ReadableStreamParser {\n\n\tprivate static CreateReadableStreamForParsingSave = (\n\t\tonStart: (controller: ReadableStreamDefaultController<string>) => void,\n\t\tonCancel: (reason: any) => void,\n\t\tonPullRequest: (desiredSize: number) => void,\n\t\thighWaterMark = DEFAULT_BYTE_HIGHWATERMARK / 4\n\t) => {\n\t\tlet ourController: ReadableStreamDefaultController<string> | null = null;\n\t\tconst stream = new ReadableStream<string>({\n\t\t\tstart: (controller: ReadableStreamDefaultController<string>) => {\n\t\t\t\tourController = controller;\n\t\t\t\tonStart(ourController);\n\t\t\t},\n\t\t\tpull: (controller: ReadableStreamDefaultController<string>) => {\n\t\t\t\tonPullRequest(ourController!.desiredSize ?? 1);\n\t\t\t},\n\t\t\tcancel: (reason) => {\n\t\t\t\tconsole.warn('parsing stream was canceled!', reason);\n\t\t\t\tif (ourController !== null) {\n\t\t\t\t\tourController.close();\n\t\t\t\t}\n\t\t\t\tonCancel(reason);\n\t\t\t}\n\t\t}, createStringLengthQueuingStrategy(highWaterMark));\n\n\t\t// create handle to close source.\n\t\tconst finish = () => {\n\t\t\tif (ourController !== null) {\n\t\t\t\tourController?.close();\n\t\t\t}\n\t\t}\n\n\t\treturn { stream, controller: ourController!, finish };\n\t};\n\n\t/**\n\t * the more elegant way to parse saves, instead of using the plain ParseSave. Since streaming will not hold the converted JSON in memory at once.\n\t * @param name the save name\n\t * @param bytes the save file as UInt8Array\n\t * @param onDecompressedSaveBody a callback to report back on the decompressed binary save body.\n\t * @param onProgress a callback to report back on the parsing progress. Optionally contains a message.\n\t * @returns a WHATWG compliant readable stream of strings (They are valid JSON and represent a {@link SatisfactorySave} object). And a method to actually start the streaming for more precise control.\n\t */\n\tpublic static CreateReadableStreamFromSaveToJson = (\n\t\tname: string,\n\t\tbytes: ArrayBufferLike,\n\t\toptions?: Partial<{\n\t\t\tonDecompressedSaveBody: (buffer: ArrayBufferLike) => void,\n\t\t\tonProgress: (progress: number, message?: string) => void\n\t\t}>\n\t): { stream: ReadableStream<string>, startStreaming: () => Promise<void> } => {\n\n\t\t// create a simple lock to sync with consumer of the stream. Aka handle backpressure.\n\t\tconst waitForConsumerLock = new SimpleWaitForConsumerLock();\n\t\tconst waitForConsumer = async () => {\n\t\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\t\twaitForConsumerLock.lock(resolve);\n\t\t\t});\n\t\t}\n\n\t\tconst { stream, controller, finish } = ReadableStreamParser.CreateReadableStreamForParsingSave(\n\t\t\t(controller) => {\n\t\t\t\t//startStreaming();\n\t\t\t},\n\t\t\t(reason) => { },\n\t\t\t(desiredSize) => {\n\t\t\t\t// consumer (to be more correct, the internal buffer!) is ready, unlock syncing lock.\n\t\t\t\twaitForConsumerLock.unlock();\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * pushes a value into the readable stream. Optionally waits for the \"pull\" signal of the stream before writing.\n\t\t * @param value the value to write\n\t\t * @param waitForConsumerToBeReady whether the process should wait until the \"pull\" signal of the stream.\n\t\t */\n\t\tconst write = async (value: string, waitForConsumerToBeReady = true): Promise<void> => {\n\t\t\tif (waitForConsumerToBeReady) {\n\t\t\t\tawait waitForConsumer();\n\t\t\t}\n\t\t\tcontroller.enqueue(value);\n\t\t}\n\n\t\tconst startStreaming = async (): Promise<void> => {\n\n\t\t\tconst reader = new SaveReader(bytes, options?.onProgress);\n\n\t\t\t// read header\n\t\t\tconst header = SatisfactorySaveHeader.Parse(reader);\n\t\t\tconst save = new SatisfactorySave(name, header);\n\n\t\t\t// guard save version\n\t\t\tconst roughSaveVersion = SaveReader.GetRoughSaveVersion(header.saveVersion);\n\t\t\tif (roughSaveVersion === '<U6') {\n\t\t\t\tthrow new UnsupportedVersionError('Game Version < U6 is not supported in the parser. Please save the file in a newer game version.');\n\t\t\t}\n\n\t\t\t// inflate chunks\n\t\t\tconst inflateResult = reader.inflateChunks();\n\t\t\tsave.compressionInfo = inflateResult.compressionInfo;\n\n\t\t\t// call callback on decompressed save body\n\t\t\tif (options?.onDecompressedSaveBody !== undefined) {\n\t\t\t\toptions.onDecompressedSaveBody(reader.getBuffer());\n\t\t\t}\n\n\t\t\tlet saveBodyValidation = save.saveBodyValidation;\n\t\t\tif (reader.context.saveVersion >= SaveCustomVersion.IntroducedWorldPartition) {\n\t\t\t\tsaveBodyValidation = SaveBodyValidation.Parse(reader);\n\t\t\t}\n\n\t\t\tawait ReadableStreamParser.WriteHeaderAndSaveBodyValidation(write, name, inflateResult.compressionInfo, header, saveBodyValidation);\n\n\t\t\t// parse levels\n\t\t\tawait ReadableStreamParser.ReadWriteLevels(write, reader, save.header.mapName, save.header.buildVersion);\n\t\t\tawait write(`}`, false);\n\n\t\t\t// unresolved data\n\t\t\tconst countUnresolvedWorldSaveData = reader.readInt32();\n\t\t\tif (countUnresolvedWorldSaveData) {\n\t\t\t\tsave.unresolvedWorldSaveData = [];\n\t\t\t\tfor (let i = 0; i < countUnresolvedWorldSaveData; i++) {\n\t\t\t\t\tsave.unresolvedWorldSaveData.push(ObjectReference.read(reader));\n\t\t\t\t}\n\t\t\t\tawait write(`, \"unresolvedWorldSaveData\": ${JSON.stringify(save.unresolvedWorldSaveData)} `, false);\n\t\t\t}\n\n\t\t\tif (save.name !== undefined) {\n\t\t\t\tawait write(`, \"name\": \"${save.name}\" `, false);\n\t\t\t}\n\n\t\t\tif (options?.onProgress !== undefined) {\n\t\t\t\toptions.onProgress(1, 'finished parsing.');\n\t\t\t}\n\n\t\t\t// close save object.\n\t\t\tawait write(`}`, true);\n\t\t\tfinish();\n\t\t};\n\n\t\treturn { stream, startStreaming };\n\t}\n\n\n\tprivate static WriteHeaderAndSaveBodyValidation = async (\n\t\twrite: (value: string, waitTilConsumingEndIsReady?: boolean) => Promise<void>,\n\t\tname: string,\n\t\tcompressionInfo: ChunkCompressionInfo,\n\t\theader: SatisfactorySaveHeader,\n\t\tsaveBodyValidation: SaveBodyValidation\n\t) => {\n\t\treturn write(`{\"header\": ${JSON.stringify(header)}, \"name\": \"${name}\", \"compressionInfo\": ${JSON.stringify(compressionInfo)}, \"saveBodyValidation\": ${JSON.stringify(saveBodyValidation)}, \"levels\": {`, false);\n\t}\n\n\tprivate static async ReadWriteLevels(\n\t\twrite: (value: string, waitTilConsumingEndIsReady?: boolean) => Promise<void>,\n\t\treader: SaveReader,\n\t\tmapName: string,\n\t\tbuildVersion: number,\n\t): Promise<void> {\n\n\t\tconst batchingSizeOfObjects = 1000;\n\t\tconst thresholdOfWrittenObjectsUntilWaitingForConsumerAgain = 3 * batchingSizeOfObjects;\n\n\t\tconst levelCount = reader.readInt32();\n\t\treader.onProgressCallback(reader.getBufferProgress(), `reading pack of ${levelCount + 1} levels.`);\n\n\t\tlet writtenTotalObjectsSinceConsumerSync = 0;\n\t\tlet collectables: ObjectReference[] = [];\n\t\tlet destroyedActorsMap: LevelToDestroyedActorsMap = {};\n\t\tfor (let j = 0; j <= levelCount; j++) {\n\t\t\tlet levelName = (j === levelCount) ? '' + mapName : reader.readString();\n\t\t\tconst isPersistentLevel = levelName === mapName;\n\n\t\t\tif (j % 500 === 0) {\n\t\t\t\treader.onProgressCallback(reader.getBufferProgress(), `reading level [${(j + 1)}/${(levelCount + 1)}] ${levelName}`);\n\t\t\t}\n\n\t\t\t// we will intentionally NOT wait for next pull request, since these few characters don't make waiting useful.\n\t\t\tawait write(`${j > 0 ? ', ' : ''}\"${levelName}\": {\"name\": \"${levelName}\", \"objects\": [`, false);\n\n\n\t\t\t// object headers\n\t\t\tconst headersBinLen = reader.readInt32(); // object headers + destroyed colelctables\n\t\t\tif (reader.context.saveVersion >= SaveCustomVersion.UnrealEngine5) {\n\t\t\t\treader.readInt32Zero();\n\t\t\t}\n\n\t\t\tconst posBeforeHeaders = reader.getBufferPosition();\n\t\t\tconst afterAllHeaders = posBeforeHeaders + headersBinLen;\n\t\t\tlet countObjectHeaders = reader.readInt32();\n\n\t\t\tlet totalReadObjectsInLevel = 0;\n\t\t\tlet writtenObjectsInLevel = 0;\n\t\t\tlet afterHeadersOfBatch = reader.getBufferPosition();\t// at first no batch is read.\n\t\t\tlet afterObjectsOfBatch = -1;\n\n\t\t\tdo {\n\n\t\t\t\t// jump to after last read batch\n\t\t\t\treader.skipBytes(afterHeadersOfBatch - reader.getBufferPosition());\n\n\t\t\t\t// read batch\n\t\t\t\tconst objectCountToRead = Math.min(countObjectHeaders - totalReadObjectsInLevel, batchingSizeOfObjects);\n\t\t\t\tconst objects = Level.ReadNObjectHeaders(reader, objectCountToRead);\n\n\t\t\t\tafterHeadersOfBatch = reader.getBufferPosition();\n\n\n\t\t\t\t// after headers, there MAY be destroyed entities. don't have to.\n\t\t\t\t// But either way, we can safely ignore them.\n\t\t\t\tif (countObjectHeaders === totalReadObjectsInLevel + objects.length) {\n\t\t\t\t\tconst bytesLeft = afterAllHeaders - reader.getBufferPosition();\n\t\t\t\t\tif (bytesLeft > 0) {\n\t\t\t\t\t\tif (isPersistentLevel) {\n\t\t\t\t\t\t\tdestroyedActorsMap = LevelToDestroyedActorsMap.read(reader);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcollectables = ObjectReferencesList.ReadList(reader);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\n\t\t\t\tif (totalReadObjectsInLevel === 0) {\n\n\t\t\t\t\t// jump to after all headers\n\t\t\t\t\treader.skipBytes(afterAllHeaders - reader.getBufferPosition());\n\n\t\t\t\t\tconst objectContentsBinLen = reader.readInt32();\n\t\t\t\t\tif (reader.context.saveVersion >= SaveCustomVersion.UnrealEngine5) {\n\t\t\t\t\t\treader.readInt32Zero();\n\t\t\t\t\t}\n\n\t\t\t\t\tconst posBeforeContents = reader.getBufferPosition();\n\t\t\t\t\tconst countEntities = reader.readInt32();\n\t\t\t\t\tafterObjectsOfBatch = reader.getBufferPosition();\t// at first no batch is read.\n\t\t\t\t} else {\n\t\t\t\t\treader.skipBytes(afterObjectsOfBatch - reader.getBufferPosition());\n\t\t\t\t}\n\n\t\t\t\tLevel.ReadNObjectContents(reader, objectCountToRead, objects, 0);\n\t\t\t\tafterObjectsOfBatch = reader.getBufferPosition();\n\n\t\t\t\ttotalReadObjectsInLevel += objectCountToRead;\n\t\t\t\tif (countObjectHeaders > 10000 && totalReadObjectsInLevel % 10000 === 0) {\n\t\t\t\t\treader.onProgressCallback(reader.getBufferProgress(), `read object count [${(totalReadObjectsInLevel + 1)}/${(countObjectHeaders + 1)}] in level ${levelName}`);\n\t\t\t\t}\n\n\t\t\t\t// we should wait even if the objects of many levels accumulate to several hundred.\n\t\t\t\tlet shouldWait = false;\n\t\t\t\tif (writtenTotalObjectsSinceConsumerSync >= thresholdOfWrittenObjectsUntilWaitingForConsumerAgain) {\n\t\t\t\t\t// will wait til consumer catches up. Because we wrote ${writtenTotalObjectsSinceConsumerSync} objects without waiting.\n\t\t\t\t\tshouldWait = true;\n\t\t\t\t\twrittenTotalObjectsSinceConsumerSync = 0;\n\t\t\t\t}\n\t\t\t\tawait write(`${writtenObjectsInLevel > 0 ? ', ' : ''}${objects.filter(Boolean).map(obj => JSON.stringify(obj)).join(', ')}`, shouldWait);\n\t\t\t\twrittenTotalObjectsSinceConsumerSync += objectCountToRead;\n\t\t\t\twrittenObjectsInLevel += objectCountToRead;\n\n\t\t\t} while (totalReadObjectsInLevel < countObjectHeaders)\n\n\n\t\t\tawait write('], ', false);\n\n\t\t\t// only NOT in the persistent level, we have saveVersion\n\t\t\tif (!isPersistentLevel) {\n\t\t\t\tif (reader.context.saveVersion >= SaveCustomVersion.SerializePerStreamableLevelTOCVersion) {\n\t\t\t\t\tconst saveCustomVersion = reader.readInt32();\n\t\t\t\t\tawait write(`\"saveCustomVersion\": ${saveCustomVersion}, `, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// only in persistent level, we have LevelToDestroyedActorsMap\n\t\t\tif (isPersistentLevel) {\n\t\t\t\tdestroyedActorsMap = LevelToDestroyedActorsMap.read(reader);\n\t\t\t\tawait write(`\"destroyedActorsMap\": ${JSON.stringify(destroyedActorsMap)}, `, false);\n\t\t\t}\n\n\t\t\tawait write('\"collectables\": [', false);\n\n\t\t\t// only NOT in the persistent level, we have 2nd collectables.\n\t\t\tif (!isPersistentLevel) {\n\t\t\t\tcollectables = ObjectReferencesList.ReadList(reader);\n\t\t\t}\n\n\t\t\tawait write(`${collectables.map(obj => JSON.stringify(obj)).join(', ')}`, true);\n\n\t\t\tawait write(']', false);\n\t\t\tawait write('}', false);\n\t\t}\n\t}\n}"]}
1
+ {"version":3,"file":"readable-stream-parser.js","sourceRoot":"","sources":["../../../../src/parser/stream/reworked/readable-stream-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { HierarchyVersion } from \"../../context/hierarchical-version-context\";\nimport { UnsupportedVersionError } from '../../error/parser.error';\nimport { DataBlob } from \"../../satisfactory/save/data-blob\";\nimport { Level } from \"../../satisfactory/save/level\";\nimport { LevelToDestroyedActorsMap } from '../../satisfactory/save/level-to-destroyed-actors-map';\nimport { ObjectReferencesList } from '../../satisfactory/save/object-references-list';\nimport { SatisfactorySave } from \"../../satisfactory/save/satisfactory-save\";\nimport { SatisfactorySaveHeader } from '../../satisfactory/save/satisfactory-save-header';\nimport { ChunkCompressionInfo } from \"../../satisfactory/save/save-body-chunks\";\nimport { SaveCustomVersion } from '../../satisfactory/save/save-custom-version';\nimport { SaveReader } from '../../satisfactory/save/save-reader';\nimport { TOCBlob } from \"../../satisfactory/save/toc-blob\";\nimport { ObjectReference } from '../../satisfactory/types/structs/ObjectReference';\nimport { SaveBodyValidation } from \"../../satisfactory/types/structs/SaveBodyValidation\";\nimport { FSaveObjectVersionData } from \"../../satisfactory/types/structs/binary/FSaveObjectVersionData\";\n\ninterface StreamWeb {\n\tReadableStream: any;\n\tQueuingStrategy: any;\n\tReadableStreamDefaultController: any;\n}\n\nconst streamWeb: StreamWeb = (() => {\n\ttry {\n\t\treturn require('stream/web');\n\t} catch {\n\t\ttry {\n\t\t\treturn require('web-streams-polyfill');\n\t\t} catch {\n\t\t\treturn {\n\t\t\t\tReadableStream: (globalThis as any).ReadableStream as any,\n\t\t\t\tQueuingStrategy: (globalThis as any).QueuingStrategy as any,\n\t\t\t\tReadableStreamDefaultController: (globalThis as any).ReadableStreamDefaultController as any\n\t\t\t};\n\t\t}\n\t}\n})();\n\nconst DEFAULT_BYTE_HIGHWATERMARK = 1024 * 1024 * 200;\t// 200MiB\nconst createStringLengthQueuingStrategy = (highWaterMark: number = DEFAULT_BYTE_HIGHWATERMARK / 4): any => ({\n\thighWaterMark,\n\tsize: (chunk: string | undefined) => {\n\t\tif (chunk === undefined) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn chunk.length;\n\t}\n});\n\nclass SimpleWaitForConsumerLock {\n\tlocked: boolean = false;\n\tunlockWasCalledInTheMeantime: boolean = false;\n\texecutionFn: (() => void) | undefined = undefined;\n\n\t/** activate lock and set function to execute on unlock.\n\t * If at least 1 unlock was called before this call, immediately unlock.\n\t */\n\tpublic lock(executionFn: () => void) {\n\t\tthis.executionFn = executionFn;\n\t\tthis.locked = true;\n\t\tif (this.unlockWasCalledInTheMeantime) {\n\t\t\tthis.unlock();\n\t\t}\n\t}\n\n\t/**\n\t * unlock and execute stored function if present.\n\t */\n\tpublic unlock() {\n\t\tthis.locked = false;\n\t\tif (this.executionFn) {\n\t\t\tthis.executionFn();\n\t\t\tthis.executionFn = undefined;\n\t\t} else {\n\t\t\tthis.unlockWasCalledInTheMeantime = true;\n\t\t}\n\t}\n};\n\n/**\n * Creates a ReadableStream from Binary file, that actually waits until the reading operator has caught up before it pushes more.\n */\nexport class ReadableStreamParser {\n\n\tprivate static CreateReadableStreamForParsingSave = (\n\t\tonStart: (controller: any) => void,\n\t\tonCancel: (reason: any) => void,\n\t\tonPullRequest: (desiredSize: number) => void,\n\t\thighWaterMark = DEFAULT_BYTE_HIGHWATERMARK / 4\n\t) => {\n\t\tlet ourController: any = null;\n\t\tconst stream = new (streamWeb.ReadableStream as any)({\n\t\t\tstart: (controller: any) => {\n\t\t\t\tourController = controller;\n\t\t\t\tonStart(ourController);\n\t\t\t},\n\t\t\tpull: (controller: any) => {\n\t\t\t\tonPullRequest(ourController!.desiredSize ?? 1);\n\t\t\t},\n\t\t\tcancel: (reason: any) => {\n\t\t\t\tconsole.warn('parsing stream was canceled!', reason);\n\t\t\t\tif (ourController !== null) {\n\t\t\t\t\tourController.close();\n\t\t\t\t}\n\t\t\t\tonCancel(reason);\n\t\t\t}\n\t\t}, createStringLengthQueuingStrategy(highWaterMark));\n\n\t\t// create handle to close source.\n\t\tconst finish = () => {\n\t\t\tif (ourController !== null) {\n\t\t\t\tourController?.close();\n\t\t\t}\n\t\t}\n\n\t\treturn { stream, controller: ourController!, finish };\n\t};\n\n\t/**\n\t * the more elegant way to parse saves, instead of using the plain ParseSave. Since streaming will not hold the converted JSON in memory at once.\n\t * @param name the save name\n\t * @param bytes the save file as UInt8Array\n\t * @param onDecompressedSaveBody a callback to report back on the decompressed binary save body.\n\t * @param onProgress a callback to report back on the parsing progress. Optionally contains a message.\n\t * @returns a WHATWG compliant readable stream of strings (They are valid JSON and represent a {@link SatisfactorySave} object). And a method to actually start the streaming for more precise control.\n\t */\n\tpublic static CreateReadableStreamFromSaveToJson = (\n\t\tname: string,\n\t\tbytes: ArrayBufferLike,\n\t\toptions?: Partial<{\n\t\t\tonDecompressedSaveBody: (buffer: ArrayBufferLike) => void,\n\t\t\tonProgress: (progress: number, message?: string) => void\n\t\t}>\n\t): { stream: any, startStreaming: () => Promise<void> } => {\n\n\t\t// create a simple lock to sync with consumer of the stream. Aka handle backpressure.\n\t\tconst waitForConsumerLock = new SimpleWaitForConsumerLock();\n\t\tconst waitForConsumer = async () => {\n\t\t\treturn new Promise<void>((resolve, reject) => {\n\t\t\t\twaitForConsumerLock.lock(resolve);\n\t\t\t});\n\t\t}\n\n\t\tconst { stream, controller, finish } = ReadableStreamParser.CreateReadableStreamForParsingSave(\n\t\t\t(controller) => {\n\t\t\t\t//startStreaming();\n\t\t\t},\n\t\t\t(reason) => { },\n\t\t\t(desiredSize) => {\n\t\t\t\t// consumer (to be more correct, the internal buffer!) is ready, unlock syncing lock.\n\t\t\t\twaitForConsumerLock.unlock();\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * pushes a value into the readable stream. Optionally waits for the \"pull\" signal of the stream before writing.\n\t\t * @param value the value to write\n\t\t * @param waitForConsumerToBeReady whether the process should wait until the \"pull\" signal of the stream.\n\t\t */\n\t\tconst write = async (value: string, waitForConsumerToBeReady = true): Promise<void> => {\n\t\t\tif (waitForConsumerToBeReady) {\n\t\t\t\tawait waitForConsumer();\n\t\t\t}\n\t\t\tcontroller.enqueue(value);\n\t\t}\n\n\t\tconst startStreaming = async (): Promise<void> => {\n\n\t\t\tconst reader = new SaveReader(bytes, options?.onProgress);\n\n\t\t\t// read header\n\t\t\tconst header = SatisfactorySaveHeader.Parse(reader);\n\t\t\tconst save = new SatisfactorySave(name, header);\n\n\t\t\t// guard save version\n\t\t\tconst roughSaveVersion = SaveReader.GetApproximateSaveVersion(header.saveVersion);\n\t\t\tif (roughSaveVersion === '<U6') {\n\t\t\t\tthrow new UnsupportedVersionError('Game Version < U6 is not supported in the parser. Please save the file in a newer game version.');\n\t\t\t}\n\n\t\t\t// inflate chunks\n\t\t\tconst inflateResult = reader.inflateChunks();\n\t\t\tsave.compressionInfo = inflateResult.compressionInfo;\n\n\t\t\t// call callback on decompressed save body\n\t\t\tif (options?.onDecompressedSaveBody !== undefined) {\n\t\t\t\toptions.onDecompressedSaveBody(reader.getBuffer());\n\t\t\t}\n\n\t\t\t// might be padding?\n\t\t\tif (reader.context.saveVersion.header >= SaveCustomVersion.UnrealEngine5) {\n\t\t\t\treader.readInt32();\n\t\t\t}\n\n\t\t\t// read FSaveObjectVersionData\n\t\t\tlet saveObjectVersionData = save.objectVersionData;\n\t\t\tif (reader.context.saveVersion.header >= SaveCustomVersion.SerializeDataPackageVersionAndCustomVersions) {\n\t\t\t\tsaveObjectVersionData = FSaveObjectVersionData.read(reader);\n\t\t\t\treader.context.packageFileVersionUE5 = HierarchyVersion.CreateOnHeader(saveObjectVersionData.packageFileVersion.ue5Version);\n\t\t\t}\n\n\t\t\t// world partition and validation\n\t\t\tlet saveBodyValidation = save.saveBodyValidation;\n\t\t\tif (reader.context.saveVersion.header >= SaveCustomVersion.IntroducedWorldPartition) {\n\t\t\t\tsaveBodyValidation = SaveBodyValidation.Parse(reader);\n\t\t\t}\n\t\t\tawait ReadableStreamParser.WriteHeaderAndFieldsBeforeLevel(write, name, inflateResult.compressionInfo, header, saveBodyValidation, saveObjectVersionData);\n\n\n\t\t\t// parse levels\n\t\t\tawait ReadableStreamParser.ReadWriteLevels(write, reader, save.header.mapName, save.header.buildVersion);\n\t\t\tawait write(`}`, false);\n\n\t\t\t// unresolved data\n\t\t\tif (reader.getBufferPosition() < reader.getBufferLength()) {\n\t\t\t\tconst countUnresolvedWorldSaveData = reader.readInt32();\n\t\t\t\tif (countUnresolvedWorldSaveData) {\n\t\t\t\t\tsave.unresolvedWorldSaveData = [];\n\t\t\t\t\tfor (let i = 0; i < countUnresolvedWorldSaveData; i++) {\n\t\t\t\t\t\tsave.unresolvedWorldSaveData.push(ObjectReference.read(reader));\n\t\t\t\t\t}\n\t\t\t\t\tawait write(`, \"unresolvedWorldSaveData\": ${JSON.stringify(save.unresolvedWorldSaveData)} `, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options?.onProgress !== undefined) {\n\t\t\t\toptions.onProgress(1, 'finished parsing.');\n\t\t\t}\n\n\t\t\t// close save object.\n\t\t\tawait write(`}`, true);\n\t\t\tfinish();\n\t\t};\n\n\t\treturn { stream, startStreaming };\n\t}\n\n\n\tprivate static WriteHeaderAndFieldsBeforeLevel = async (\n\t\twrite: (value: string, waitTilConsumingEndIsReady?: boolean) => Promise<void>,\n\t\tname: string,\n\t\tcompressionInfo: ChunkCompressionInfo,\n\t\theader: SatisfactorySaveHeader,\n\t\tsaveBodyValidation: SaveBodyValidation,\n\t\tsaveObjectVersionData?: FSaveObjectVersionData\n\t) => {\n\t\tconst compressionInfoEntry = `\"compressionInfo\": ${JSON.stringify(compressionInfo)}`;\n\t\tconst saveBodyValidationEntry = saveBodyValidation !== undefined ? `, \"saveBodyValidation\": ${JSON.stringify(saveBodyValidation)}` : '';\n\t\tconst saveObjectVersionDataEntry = saveObjectVersionData !== undefined ? `, \"objectVersionData\": ${JSON.stringify(saveObjectVersionData)}` : '';\n\t\treturn write(`{\"header\": ${JSON.stringify(header)}, \"name\": \"${name}\", ${compressionInfoEntry}${saveBodyValidationEntry}${saveObjectVersionDataEntry}, \"levels\": {`, false);\n\t}\n\n\tprivate static async ReadWriteLevels(\n\t\twrite: (value: string, waitTilConsumingEndIsReady?: boolean) => Promise<void>,\n\t\treader: SaveReader,\n\t\tmapName: string,\n\t\tbuildVersion: number,\n\t): Promise<void> {\n\n\t\tconst batchingSizeOfObjects = 1000;\n\t\tconst thresholdOfWrittenObjectsUntilWaitingForConsumerAgain = 3 * batchingSizeOfObjects;\n\n\t\tconst levelCount = reader.readInt32();\n\t\treader.onProgressCallback(reader.getBufferProgress(), `reading pack of ${levelCount + 1} levels.`);\n\n\t\tlet writtenTotalObjectsSinceConsumerSync = 0;\n\t\tlet collectables: ObjectReference[] = [];\n\t\tlet destroyedActorsMap: LevelToDestroyedActorsMap = {};\n\t\tfor (let j = 0; j <= levelCount; j++) {\n\t\t\tlet levelName = (j === levelCount) ? '' + mapName : reader.readString();\n\t\t\tconst level: Level = {\n\t\t\t\tname: levelName,\n\t\t\t\tobjects: [],\n\t\t\t\tcollectables: [],\n\t\t\t\twritesDestroyedActorsInTOCBlob: false\n\t\t\t}\n\t\t\tconst isPersistentLevel = levelName === mapName;\n\n\t\t\tif (j % 500 === 0) {\n\t\t\t\treader.onProgressCallback(reader.getBufferProgress(), `reading level [${(j + 1)}/${(levelCount + 1)}] ${levelName}`);\n\t\t\t}\n\t\t\tawait write(`${j > 0 ? ', ' : ''}\"${levelName}\": {\"name\": \"${levelName}\",`, false);\n\n\t\t\t// read blobs later\n\t\t\tconst tocBlobMarker = TOCBlob.SkipOver(reader);\n\t\t\tconst dataBlobMarker = DataBlob.SkipOver(reader);\n\n\t\t\t// save Version in Streaming level\n\t\t\tif (!isPersistentLevel) {\n\t\t\t\tif (reader.context.saveVersion.header >= SaveCustomVersion.SerializePerStreamableLevelTOCVersion) {\n\t\t\t\t\tlevel.saveCustomVersion = reader.readInt32();\n\t\t\t\t\tawait write(`\"saveCustomVersion\": ${level.saveCustomVersion},`, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// for persistent level, we have LevelToDestroyedActorsMap, else collectibles + object version data\n\t\t\t// 2nd appearance of destroyed actors / collectables. the lists are equal at both locations\n\t\t\tif (isPersistentLevel) {\n\t\t\t\tconst destroyedActorsMap = LevelToDestroyedActorsMap.read(reader);\n\t\t\t\tawait write(`\"destroyedActorsMap\": ${JSON.stringify(destroyedActorsMap)},`, false);\n\t\t\t} else {\n\t\t\t\tlevel.collectables = ObjectReferencesList.ReadList(reader);\n\n\t\t\t\tif (reader.context.saveVersion.header >= SaveCustomVersion.SerializeDataPackageVersionAndCustomVersions) {\n\t\t\t\t\tconst shouldSerializePerObjectVersionData = reader.readInt32() >= 1;\n\t\t\t\t\tif (shouldSerializePerObjectVersionData) {\n\t\t\t\t\t\tlevel.objectVersionData = FSaveObjectVersionData.read(reader);\n\t\t\t\t\t\tawait write(`\"objectVersionData\": ${JSON.stringify(level.objectVersionData)},`, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tawait write(`\"collectables\": [${level.collectables.map(obj => JSON.stringify(obj)).join(', ')}],`, false);\n\n\t\t\t// set appropriate version context.\n\t\t\tHierarchyVersion.SetOnLevel(reader.context.saveVersion, level.saveCustomVersion);\n\t\t\tHierarchyVersion.SetOnLevel(reader.context.packageFileVersionUE5, level.objectVersionData?.packageFileVersion.ue5Version);\n\n\t\t\t// jump back and read TOCBlob, DataBlob with accurate save version\n\t\t\tconst endOfLevelPosition = reader.getBufferPosition();\n\n\n\t\t\t// we will intentionally NOT wait for next pull request, since these few characters don't make waiting useful.\n\t\t\tawait write(`\"objects\": [`, false);\n\t\t\treader.jumpTo(tocBlobMarker.position);\n\n\n\t\t\t// we do the same as TOCBlob.read & DataBlob.read. but jumping back and forth between batches.\n\t\t\tlet countObjectHeaders = reader.readInt32();\n\t\t\tlet totalReadObjectsInLevel = 0;\n\t\t\tlet writtenObjectsInLevel = 0;\n\t\t\tlet afterHeadersOfBatch = reader.getBufferPosition();\t// at first no batch is read.\n\t\t\tlet afterObjectsOfBatch = -1;\n\n\t\t\tdo {\n\n\t\t\t\t// jump to after last read batch\n\t\t\t\treader.jumpTo(afterHeadersOfBatch);\n\n\t\t\t\t// read batch\n\t\t\t\tconst objectCountToRead = Math.min(countObjectHeaders - totalReadObjectsInLevel, batchingSizeOfObjects);\n\t\t\t\tconst objects = TOCBlob.ReadNObjectHeaders(reader, objectCountToRead);\n\t\t\t\tafterHeadersOfBatch = reader.getBufferPosition();\n\n\t\t\t\t// 1st lsit of collectables / destroyed actors in toc blob.\n\t\t\t\tif (countObjectHeaders === totalReadObjectsInLevel + objects.length) {\n\t\t\t\t\tlet remainingSize = tocBlobMarker.length - (reader.getBufferPosition() - tocBlobMarker.position);\n\t\t\t\t\tif (remainingSize > 0) {\n\t\t\t\t\t\tif (isPersistentLevel) {\n\t\t\t\t\t\t\tdestroyedActorsMap = LevelToDestroyedActorsMap.read(reader);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcollectables = ObjectReferencesList.ReadList(reader);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlevel.writesDestroyedActorsInTOCBlob = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (totalReadObjectsInLevel === 0) {\n\n\t\t\t\t\t// jump to after all headers\n\t\t\t\t\treader.jumpTo(dataBlobMarker.position);\n\t\t\t\t\tconst posBeforeContents = reader.getBufferPosition();\n\t\t\t\t\tconst countEntities = reader.readInt32();\n\t\t\t\t\tafterObjectsOfBatch = reader.getBufferPosition();\t// at first no batch is read.\n\t\t\t\t} else {\n\t\t\t\t\treader.jumpTo(afterObjectsOfBatch);\n\t\t\t\t}\n\n\t\t\t\tDataBlob.ReadNObjectContents(reader, objectCountToRead, objects, 0);\n\t\t\t\tafterObjectsOfBatch = reader.getBufferPosition();\n\t\t\t\ttotalReadObjectsInLevel += objectCountToRead;\n\t\t\t\tif (countObjectHeaders > 10000 && totalReadObjectsInLevel % 10000 === 0) {\n\t\t\t\t\treader.onProgressCallback(reader.getBufferProgress(), `read object count [${(totalReadObjectsInLevel + 1)}/${(countObjectHeaders + 1)}] in level ${levelName}`);\n\t\t\t\t}\n\n\t\t\t\t// we should wait even if the objects of many levels accumulate to several hundred.\n\t\t\t\tlet shouldWait = false;\n\t\t\t\tif (writtenTotalObjectsSinceConsumerSync >= thresholdOfWrittenObjectsUntilWaitingForConsumerAgain) {\n\t\t\t\t\t// will wait til consumer catches up. Because we wrote ${writtenTotalObjectsSinceConsumerSync} objects without waiting.\n\t\t\t\t\tshouldWait = true;\n\t\t\t\t\twrittenTotalObjectsSinceConsumerSync = 0;\n\t\t\t\t}\n\t\t\t\tawait write(`${writtenObjectsInLevel > 0 ? ', ' : ''}${objects.filter(Boolean).map(obj => JSON.stringify(obj)).join(', ')}`, shouldWait);\n\t\t\t\twrittenTotalObjectsSinceConsumerSync += objectCountToRead;\n\t\t\t\twrittenObjectsInLevel += objectCountToRead;\n\n\t\t\t} while (totalReadObjectsInLevel < countObjectHeaders)\n\n\n\t\t\tawait write('], ', false);\n\t\t\tawait write(`\"writesDestroyedActorsInTOCBlob\": ${JSON.stringify(level.writesDestroyedActorsInTOCBlob)}`, false);\n\n\t\t\treader.jumpTo(endOfLevelPosition);\n\t\t\tawait write('}', false);\n\t\t}\n\t}\n}"]}
@@ -0,0 +1,17 @@
1
+ export declare enum ETextHistoryType {
2
+ None = -1,
3
+ Base = 0,
4
+ NamedFormat = 1,
5
+ OrderedFormat = 2,
6
+ ArgumentFormat = 3,
7
+ AsNumber = 4,
8
+ AsPercent = 5,
9
+ AsCurrency = 6,
10
+ AsDate = 7,
11
+ AsTime = 8,
12
+ AsDateTime = 9,
13
+ Transform = 10,
14
+ StringTableEntry = 11,
15
+ TextGenerator = 12
16
+ }
17
+ //# sourceMappingURL=ETextHistoryType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ETextHistoryType.d.ts","sourceRoot":"","sources":["../../../src/parser/unreal-engine/ETextHistoryType.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IACxB,IAAI,KAAK;IACT,IAAI,IAAI;IACR,WAAW,IAAA;IACX,aAAa,IAAA;IACb,cAAc,IAAA;IACd,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,UAAU,IAAA;IACV,MAAM,IAAA;IACN,MAAM,IAAA;IACN,UAAU,IAAA;IACV,SAAS,KAAA;IACT,gBAAgB,KAAA;IAChB,aAAa,KAAA;CAChB"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ETextHistoryType = void 0;
4
+ var ETextHistoryType;
5
+ (function (ETextHistoryType) {
6
+ ETextHistoryType[ETextHistoryType["None"] = -1] = "None";
7
+ ETextHistoryType[ETextHistoryType["Base"] = 0] = "Base";
8
+ ETextHistoryType[ETextHistoryType["NamedFormat"] = 1] = "NamedFormat";
9
+ ETextHistoryType[ETextHistoryType["OrderedFormat"] = 2] = "OrderedFormat";
10
+ ETextHistoryType[ETextHistoryType["ArgumentFormat"] = 3] = "ArgumentFormat";
11
+ ETextHistoryType[ETextHistoryType["AsNumber"] = 4] = "AsNumber";
12
+ ETextHistoryType[ETextHistoryType["AsPercent"] = 5] = "AsPercent";
13
+ ETextHistoryType[ETextHistoryType["AsCurrency"] = 6] = "AsCurrency";
14
+ ETextHistoryType[ETextHistoryType["AsDate"] = 7] = "AsDate";
15
+ ETextHistoryType[ETextHistoryType["AsTime"] = 8] = "AsTime";
16
+ ETextHistoryType[ETextHistoryType["AsDateTime"] = 9] = "AsDateTime";
17
+ ETextHistoryType[ETextHistoryType["Transform"] = 10] = "Transform";
18
+ ETextHistoryType[ETextHistoryType["StringTableEntry"] = 11] = "StringTableEntry";
19
+ ETextHistoryType[ETextHistoryType["TextGenerator"] = 12] = "TextGenerator";
20
+ })(ETextHistoryType || (exports.ETextHistoryType = ETextHistoryType = {}));
21
+ //# sourceMappingURL=ETextHistoryType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ETextHistoryType.js","sourceRoot":"","sources":["../../../src/parser/unreal-engine/ETextHistoryType.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAeX;AAfD,WAAY,gBAAgB;IACxB,wDAAS,CAAA;IACT,uDAAQ,CAAA;IACR,qEAAW,CAAA;IACX,yEAAa,CAAA;IACb,2EAAc,CAAA;IACd,+DAAQ,CAAA;IACR,iEAAS,CAAA;IACT,mEAAU,CAAA;IACV,2DAAM,CAAA;IACN,2DAAM,CAAA;IACN,mEAAU,CAAA;IACV,kEAAS,CAAA;IACT,gFAAgB,CAAA;IAChB,0EAAa,CAAA;AACjB,CAAC,EAfW,gBAAgB,gCAAhB,gBAAgB,QAe3B","sourcesContent":["export enum ETextHistoryType {\n None = -1,\n Base = 0,\n NamedFormat,\n OrderedFormat,\n ArgumentFormat,\n AsNumber,\n AsPercent,\n AsCurrency,\n AsDate,\n AsTime,\n AsDateTime,\n Transform,\n StringTableEntry,\n TextGenerator\n}"]}
@@ -0,0 +1,24 @@
1
+ export declare enum EUnrealEngineObjectUE5Version {
2
+ INITIAL_VERSION = 1000,
3
+ NAMES_REFERENCED_FROM_EXPORT_DATA = 1001,
4
+ PAYLOAD_TOC = 1002,
5
+ OPTIONAL_RESOURCES = 1003,
6
+ LARGE_WORLD_COORDINATES = 1004,
7
+ REMOVE_OBJECT_EXPORT_PACKAGE_GUID = 1005,
8
+ TRACK_OBJECT_EXPORT_IS_INHERITED = 1006,
9
+ FSOFTOBJECTPATH_REMOVE_ASSET_PATH_FNAMES = 1007,
10
+ ADD_SOFTOBJECTPATH_LIST = 1008,
11
+ DATA_RESOURCES = 1009,
12
+ SCRIPT_SERIALIZATION_OFFSET = 1010,
13
+ PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION = 1011,
14
+ PROPERTY_TAG_COMPLETE_TYPE_NAME = 1012,
15
+ ASSETREGISTRY_PACKAGEBUILDDEPENDENCIES = 1013,
16
+ METADATA_SERIALIZATION_OFFSET = 1014,
17
+ VERSE_CELLS = 1015,
18
+ PACKAGE_SAVED_HASH = 1016,
19
+ OS_SUB_OBJECT_SHADOW_SERIALIZATION = 1017,
20
+ IMPORT_TYPE_HIERARCHIES = 1018,
21
+ AUTOMATIC_VERSION_PLUS_ONE = 1019,
22
+ AUTOMATIC_VERSION = 1018
23
+ }
24
+ //# sourceMappingURL=EUnrealEngineObjectUE5Version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EUnrealEngineObjectUE5Version.d.ts","sourceRoot":"","sources":["../../../src/parser/unreal-engine/EUnrealEngineObjectUE5Version.ts"],"names":[],"mappings":"AAIA,oBAAY,6BAA6B;IAMrC,eAAe,OAAO;IAGtB,iCAAiC,OAAA;IAGjC,WAAW,OAAA;IAGX,kBAAkB,OAAA;IAGlB,uBAAuB,OAAA;IAGvB,iCAAiC,OAAA;IAGjC,gCAAgC,OAAA;IAGhC,wCAAwC,OAAA;IAGxC,uBAAuB,OAAA;IAGvB,cAAc,OAAA;IAGd,2BAA2B,OAAA;IAK3B,oDAAoD,OAAA;IAGpD,+BAA+B,OAAA;IAG/B,sCAAsC,OAAA;IAGtC,6BAA6B,OAAA;IAG7B,WAAW,OAAA;IAGX,kBAAkB,OAAA;IAGlB,kCAAkC,OAAA;IAGlC,uBAAuB,OAAA;IAIvB,0BAA0B,OAAA;IAC1B,iBAAiB,OAAiC;CACrD"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EUnrealEngineObjectUE5Version = void 0;
4
+ var EUnrealEngineObjectUE5Version;
5
+ (function (EUnrealEngineObjectUE5Version) {
6
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["INITIAL_VERSION"] = 1000] = "INITIAL_VERSION";
7
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["NAMES_REFERENCED_FROM_EXPORT_DATA"] = 1001] = "NAMES_REFERENCED_FROM_EXPORT_DATA";
8
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["PAYLOAD_TOC"] = 1002] = "PAYLOAD_TOC";
9
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["OPTIONAL_RESOURCES"] = 1003] = "OPTIONAL_RESOURCES";
10
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["LARGE_WORLD_COORDINATES"] = 1004] = "LARGE_WORLD_COORDINATES";
11
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["REMOVE_OBJECT_EXPORT_PACKAGE_GUID"] = 1005] = "REMOVE_OBJECT_EXPORT_PACKAGE_GUID";
12
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["TRACK_OBJECT_EXPORT_IS_INHERITED"] = 1006] = "TRACK_OBJECT_EXPORT_IS_INHERITED";
13
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["FSOFTOBJECTPATH_REMOVE_ASSET_PATH_FNAMES"] = 1007] = "FSOFTOBJECTPATH_REMOVE_ASSET_PATH_FNAMES";
14
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["ADD_SOFTOBJECTPATH_LIST"] = 1008] = "ADD_SOFTOBJECTPATH_LIST";
15
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["DATA_RESOURCES"] = 1009] = "DATA_RESOURCES";
16
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["SCRIPT_SERIALIZATION_OFFSET"] = 1010] = "SCRIPT_SERIALIZATION_OFFSET";
17
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION"] = 1011] = "PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION";
18
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["PROPERTY_TAG_COMPLETE_TYPE_NAME"] = 1012] = "PROPERTY_TAG_COMPLETE_TYPE_NAME";
19
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["ASSETREGISTRY_PACKAGEBUILDDEPENDENCIES"] = 1013] = "ASSETREGISTRY_PACKAGEBUILDDEPENDENCIES";
20
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["METADATA_SERIALIZATION_OFFSET"] = 1014] = "METADATA_SERIALIZATION_OFFSET";
21
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["VERSE_CELLS"] = 1015] = "VERSE_CELLS";
22
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["PACKAGE_SAVED_HASH"] = 1016] = "PACKAGE_SAVED_HASH";
23
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["OS_SUB_OBJECT_SHADOW_SERIALIZATION"] = 1017] = "OS_SUB_OBJECT_SHADOW_SERIALIZATION";
24
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["IMPORT_TYPE_HIERARCHIES"] = 1018] = "IMPORT_TYPE_HIERARCHIES";
25
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["AUTOMATIC_VERSION_PLUS_ONE"] = 1019] = "AUTOMATIC_VERSION_PLUS_ONE";
26
+ EUnrealEngineObjectUE5Version[EUnrealEngineObjectUE5Version["AUTOMATIC_VERSION"] = 1018] = "AUTOMATIC_VERSION";
27
+ })(EUnrealEngineObjectUE5Version || (exports.EUnrealEngineObjectUE5Version = EUnrealEngineObjectUE5Version = {}));
28
+ ;
29
+ //# sourceMappingURL=EUnrealEngineObjectUE5Version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EUnrealEngineObjectUE5Version.js","sourceRoot":"","sources":["../../../src/parser/unreal-engine/EUnrealEngineObjectUE5Version.ts"],"names":[],"mappings":";;;AAIA,IAAY,6BAoEX;AApED,WAAY,6BAA6B;IAMrC,0GAAsB,CAAA;IAGtB,8IAAiC,CAAA;IAGjC,kGAAW,CAAA;IAGX,gHAAkB,CAAA;IAGlB,0HAAuB,CAAA;IAGvB,8IAAiC,CAAA;IAGjC,4IAAgC,CAAA;IAGhC,4JAAwC,CAAA;IAGxC,0HAAuB,CAAA;IAGvB,wGAAc,CAAA;IAGd,kIAA2B,CAAA;IAK3B,oLAAoD,CAAA;IAGpD,0IAA+B,CAAA;IAG/B,wJAAsC,CAAA;IAGtC,sIAA6B,CAAA;IAG7B,kGAAW,CAAA;IAGX,gHAAkB,CAAA;IAGlB,gJAAkC,CAAA;IAGlC,0HAAuB,CAAA;IAIvB,gIAA0B,CAAA;IAC1B,8GAAkD,CAAA;AACtD,CAAC,EApEW,6BAA6B,6CAA7B,6BAA6B,QAoExC;AAAA,CAAC","sourcesContent":["\n/**\n * Source: https://github.com/EpicGames/UnrealEngine/blob/260bb2e1c5610b31c63a36206eedd289409c5f11/Engine/Source/Runtime/Core/Public/UObject/ObjectVersion.h#L40\n */\nexport enum EUnrealEngineObjectUE5Version {\n // Note that currently the oldest loadable package version is EUnrealEngineObjectUEVersion::VER_UE4_OLDEST_LOADABLE_PACKAGE\n // this can be enabled should we ever deprecate UE4 versions entirely\n //OLDEST_LOADABLE_PACKAGE = ???,\n\n // The original UE5 version, at the time this was added the UE4 version was 522, so UE5 will start from 1000 to show a clear difference\n INITIAL_VERSION = 1000,\n\n // Support stripping names that are not referenced from export data\n NAMES_REFERENCED_FROM_EXPORT_DATA,\n\n // Added a payload table of contents to the package summary\n PAYLOAD_TOC,\n\n // Added data to identify references from and to optional package\n OPTIONAL_RESOURCES,\n\n // Large world coordinates converts a number of core types to double components by default.\n LARGE_WORLD_COORDINATES,\n\n // Remove package GUID from FObjectExport\n REMOVE_OBJECT_EXPORT_PACKAGE_GUID,\n\n // Add IsInherited to the FObjectExport entry\n TRACK_OBJECT_EXPORT_IS_INHERITED,\n\n // Replace FName asset path in FSoftObjectPath with (package name, asset name) pair FTopLevelAssetPath\n FSOFTOBJECTPATH_REMOVE_ASSET_PATH_FNAMES,\n\n // Add a soft object path list to the package summary for fast remap\n ADD_SOFTOBJECTPATH_LIST,\n\n // Added bulk/data resource table\n DATA_RESOURCES,\n\n // Added script property serialization offset to export table entries for saved, versioned packages\n SCRIPT_SERIALIZATION_OFFSET,\n\n // Adding property tag extension,\n // Support for overridable serialization on UObject,\n // Support for overridable logic in containers\n PROPERTY_TAG_EXTENSION_AND_OVERRIDABLE_SERIALIZATION,\n\n // Added property tag complete type name and serialization type\n PROPERTY_TAG_COMPLETE_TYPE_NAME,\n\n // Changed UE::AssetRegistry::WritePackageData to include PackageBuildDependencies\n ASSETREGISTRY_PACKAGEBUILDDEPENDENCIES,\n\n // Added meta data serialization offset to for saved, versioned packages\n METADATA_SERIALIZATION_OFFSET,\n\n // Added VCells to the object graph\n VERSE_CELLS,\n\n // Changed PackageFileSummary to write FIoHash PackageSavedHash instead of FGuid Guid\n PACKAGE_SAVED_HASH,\n\n // OS shadow serialization of subobjects\n OS_SUB_OBJECT_SHADOW_SERIALIZATION,\n\n // Adds a table of hierarchical type information for imports in a package\n IMPORT_TYPE_HIERARCHIES,\n\n // -----<new versions can be added before this line>-------------------------------------------------\n // - this needs to be the last line (see note below)\n AUTOMATIC_VERSION_PLUS_ONE,\n AUTOMATIC_VERSION = AUTOMATIC_VERSION_PLUS_ONE - 1\n};"]}
@@ -1 +1 @@
1
- window.navigationData = "data:application/octet-stream;base64,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"
1
+ window.navigationData = "data:application/octet-stream;base64,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"