@etothepii/satisfactory-file-parser 2.1.3 → 3.0.2

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 (800) hide show
  1. package/CHANGELOG.md +128 -103
  2. package/LICENCE.md +1 -1
  3. package/README.md +39 -21
  4. package/build/index.d.ts +13 -1
  5. package/build/index.d.ts.map +1 -1
  6. package/build/index.js +14 -3
  7. package/build/index.js.map +1 -1
  8. package/build/parser/byte/byte-reader.class.d.ts +7 -5
  9. package/build/parser/byte/byte-reader.class.d.ts.map +1 -1
  10. package/build/parser/byte/byte-reader.class.js +6 -4
  11. package/build/parser/byte/byte-reader.class.js.map +1 -1
  12. package/build/parser/byte/byte-writer.class.d.ts +1 -0
  13. package/build/parser/byte/byte-writer.class.d.ts.map +1 -1
  14. package/build/parser/byte/byte-writer.class.js +3 -0
  15. package/build/parser/byte/byte-writer.class.js.map +1 -1
  16. package/build/parser/context/context-reader.d.ts +6 -0
  17. package/build/parser/context/context-reader.d.ts.map +1 -0
  18. package/build/parser/context/context-reader.js +13 -0
  19. package/build/parser/context/context-reader.js.map +1 -0
  20. package/build/parser/context/context-writer.d.ts +6 -0
  21. package/build/parser/context/context-writer.d.ts.map +1 -0
  22. package/build/parser/context/context-writer.js +13 -0
  23. package/build/parser/context/context-writer.js.map +1 -0
  24. package/build/parser/context/context.d.ts +16 -0
  25. package/build/parser/context/context.d.ts.map +1 -0
  26. package/build/parser/context/context.js +3 -0
  27. package/build/parser/context/context.js.map +1 -0
  28. package/build/parser/error/parser.error.d.ts +3 -0
  29. package/build/parser/error/parser.error.d.ts.map +1 -1
  30. package/build/parser/error/parser.error.js +7 -1
  31. package/build/parser/error/parser.error.js.map +1 -1
  32. package/build/parser/parser.d.ts +5 -5
  33. package/build/parser/parser.d.ts.map +1 -1
  34. package/build/parser/parser.js +50 -22
  35. package/build/parser/parser.js.map +1 -1
  36. package/build/parser/satisfactory/blueprint/blueprint-config-version.d.ts +10 -0
  37. package/build/parser/satisfactory/blueprint/blueprint-config-version.d.ts.map +1 -0
  38. package/build/parser/satisfactory/blueprint/blueprint-config-version.js +14 -0
  39. package/build/parser/satisfactory/blueprint/blueprint-config-version.js.map +1 -0
  40. package/build/parser/satisfactory/blueprint/blueprint-config.d.ts +21 -0
  41. package/build/parser/satisfactory/blueprint/blueprint-config.d.ts.map +1 -0
  42. package/build/parser/satisfactory/blueprint/blueprint-config.js +56 -0
  43. package/build/parser/satisfactory/blueprint/blueprint-config.js.map +1 -0
  44. package/build/parser/satisfactory/blueprint/blueprint-header.d.ts +24 -0
  45. package/build/parser/satisfactory/blueprint/blueprint-header.d.ts.map +1 -0
  46. package/build/parser/satisfactory/blueprint/blueprint-header.js +61 -0
  47. package/build/parser/satisfactory/blueprint/blueprint-header.js.map +1 -0
  48. package/build/parser/satisfactory/blueprint/blueprint-reader.d.ts +11 -14
  49. package/build/parser/satisfactory/blueprint/blueprint-reader.d.ts.map +1 -1
  50. package/build/parser/satisfactory/blueprint/blueprint-reader.js +15 -99
  51. package/build/parser/satisfactory/blueprint/blueprint-reader.js.map +1 -1
  52. package/build/parser/satisfactory/blueprint/blueprint-writer.d.ts +6 -9
  53. package/build/parser/satisfactory/blueprint/blueprint-writer.d.ts.map +1 -1
  54. package/build/parser/satisfactory/blueprint/blueprint-writer.js +7 -39
  55. package/build/parser/satisfactory/blueprint/blueprint-writer.js.map +1 -1
  56. package/build/parser/satisfactory/blueprint/blueprint.types.d.ts +3 -16
  57. package/build/parser/satisfactory/blueprint/blueprint.types.d.ts.map +1 -1
  58. package/build/parser/satisfactory/blueprint/blueprint.types.js.map +1 -1
  59. package/build/parser/satisfactory/edit/edit-constants.d.ts +80 -0
  60. package/build/parser/satisfactory/edit/edit-constants.d.ts.map +1 -1
  61. package/build/parser/satisfactory/edit/edit-constants.js +80 -0
  62. package/build/parser/satisfactory/edit/edit-constants.js.map +1 -1
  63. package/build/parser/satisfactory/save/factory-game-custom-version.d.ts +34 -0
  64. package/build/parser/satisfactory/save/factory-game-custom-version.d.ts.map +1 -0
  65. package/build/parser/satisfactory/save/factory-game-custom-version.js +39 -0
  66. package/build/parser/satisfactory/save/factory-game-custom-version.js.map +1 -0
  67. package/build/parser/satisfactory/save/level-to-destroyed-actors-map.d.ts +9 -0
  68. package/build/parser/satisfactory/save/level-to-destroyed-actors-map.d.ts.map +1 -0
  69. package/build/parser/satisfactory/save/level-to-destroyed-actors-map.js +32 -0
  70. package/build/parser/satisfactory/save/level-to-destroyed-actors-map.js.map +1 -0
  71. package/build/parser/satisfactory/save/level.class.d.ts +16 -10
  72. package/build/parser/satisfactory/save/level.class.d.ts.map +1 -1
  73. package/build/parser/satisfactory/save/level.class.js +70 -24
  74. package/build/parser/satisfactory/save/level.class.js.map +1 -1
  75. package/build/parser/satisfactory/save/object-references-list.d.ts +4 -4
  76. package/build/parser/satisfactory/save/object-references-list.d.ts.map +1 -1
  77. package/build/parser/satisfactory/save/object-references-list.js.map +1 -1
  78. package/build/parser/satisfactory/save/satisfactory-save-header.d.ts +29 -0
  79. package/build/parser/satisfactory/save/satisfactory-save-header.d.ts.map +1 -0
  80. package/build/parser/satisfactory/save/satisfactory-save-header.js +111 -0
  81. package/build/parser/satisfactory/save/satisfactory-save-header.js.map +1 -0
  82. package/build/parser/satisfactory/save/satisfactory-save.d.ts +6 -4
  83. package/build/parser/satisfactory/save/satisfactory-save.d.ts.map +1 -1
  84. package/build/parser/satisfactory/save/satisfactory-save.js +4 -1
  85. package/build/parser/satisfactory/save/satisfactory-save.js.map +1 -1
  86. package/build/parser/satisfactory/save/save-body-chunks.d.ts +25 -0
  87. package/build/parser/satisfactory/save/save-body-chunks.d.ts.map +1 -0
  88. package/build/parser/satisfactory/save/save-body-chunks.js +118 -0
  89. package/build/parser/satisfactory/save/save-body-chunks.js.map +1 -0
  90. package/build/parser/satisfactory/save/save-custom-version.d.ts +57 -0
  91. package/build/parser/satisfactory/save/save-custom-version.d.ts.map +1 -0
  92. package/build/parser/satisfactory/save/save-custom-version.js +62 -0
  93. package/build/parser/satisfactory/save/save-custom-version.js.map +1 -0
  94. package/build/parser/satisfactory/save/save-header-type.d.ts +18 -0
  95. package/build/parser/satisfactory/save/save-header-type.d.ts.map +1 -0
  96. package/build/parser/satisfactory/save/save-header-type.js +22 -0
  97. package/build/parser/satisfactory/save/save-header-type.js.map +1 -0
  98. package/build/parser/satisfactory/save/save-reader.d.ts +14 -12
  99. package/build/parser/satisfactory/save/save-reader.d.ts.map +1 -1
  100. package/build/parser/satisfactory/save/save-reader.js +32 -134
  101. package/build/parser/satisfactory/save/save-reader.js.map +1 -1
  102. package/build/parser/satisfactory/save/save-writer.d.ts +7 -9
  103. package/build/parser/satisfactory/save/save-writer.d.ts.map +1 -1
  104. package/build/parser/satisfactory/save/save-writer.js +8 -95
  105. package/build/parser/satisfactory/save/save-writer.js.map +1 -1
  106. package/build/parser/satisfactory/save/save.types.d.ts +5 -25
  107. package/build/parser/satisfactory/save/save.types.d.ts.map +1 -1
  108. package/build/parser/satisfactory/save/save.types.js.map +1 -1
  109. package/build/parser/satisfactory/types/objects/SaveComponent.d.ts +6 -5
  110. package/build/parser/satisfactory/types/objects/SaveComponent.d.ts.map +1 -1
  111. package/build/parser/satisfactory/types/objects/SaveComponent.js +2 -2
  112. package/build/parser/satisfactory/types/objects/SaveComponent.js.map +1 -1
  113. package/build/parser/satisfactory/types/objects/SaveEntity.d.ts +7 -8
  114. package/build/parser/satisfactory/types/objects/SaveEntity.d.ts.map +1 -1
  115. package/build/parser/satisfactory/types/objects/SaveEntity.js +7 -10
  116. package/build/parser/satisfactory/types/objects/SaveEntity.js.map +1 -1
  117. package/build/parser/satisfactory/types/objects/SaveObject.d.ts +11 -9
  118. package/build/parser/satisfactory/types/objects/SaveObject.d.ts.map +1 -1
  119. package/build/parser/satisfactory/types/objects/SaveObject.js +17 -9
  120. package/build/parser/satisfactory/types/objects/SaveObject.js.map +1 -1
  121. package/build/parser/satisfactory/types/property/PropertiesList.d.ts +6 -6
  122. package/build/parser/satisfactory/types/property/PropertiesList.d.ts.map +1 -1
  123. package/build/parser/satisfactory/types/property/PropertiesList.js +7 -7
  124. package/build/parser/satisfactory/types/property/PropertiesList.js.map +1 -1
  125. package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.js.map +1 -1
  126. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.d.ts +4 -4
  127. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.d.ts.map +1 -1
  128. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.js.map +1 -1
  129. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.d.ts +4 -4
  130. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.d.ts.map +1 -1
  131. package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.js.map +1 -1
  132. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.d.ts +4 -4
  133. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.d.ts.map +1 -1
  134. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.js.map +1 -1
  135. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.d.ts +4 -4
  136. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.d.ts.map +1 -1
  137. package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.js.map +1 -1
  138. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.d.ts +4 -4
  139. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.d.ts.map +1 -1
  140. package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.js.map +1 -1
  141. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.d.ts +4 -4
  142. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.d.ts.map +1 -1
  143. package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.js.map +1 -1
  144. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.d.ts +4 -4
  145. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.d.ts.map +1 -1
  146. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.js.map +1 -1
  147. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.d.ts +4 -4
  148. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.d.ts.map +1 -1
  149. package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.js.map +1 -1
  150. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.d.ts +4 -4
  151. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.d.ts.map +1 -1
  152. package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.js.map +1 -1
  153. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.d.ts +4 -4
  154. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.d.ts.map +1 -1
  155. package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.js.map +1 -1
  156. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.d.ts +4 -4
  157. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.d.ts.map +1 -1
  158. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.js.map +1 -1
  159. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.d.ts +4 -4
  160. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.d.ts.map +1 -1
  161. package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.js.map +1 -1
  162. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.d.ts +4 -4
  163. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.d.ts.map +1 -1
  164. package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.js.map +1 -1
  165. package/build/parser/satisfactory/types/property/generic/BoolProperty.d.ts +6 -6
  166. package/build/parser/satisfactory/types/property/generic/BoolProperty.d.ts.map +1 -1
  167. package/build/parser/satisfactory/types/property/generic/BoolProperty.js.map +1 -1
  168. package/build/parser/satisfactory/types/property/generic/ByteProperty.d.ts +6 -6
  169. package/build/parser/satisfactory/types/property/generic/ByteProperty.d.ts.map +1 -1
  170. package/build/parser/satisfactory/types/property/generic/ByteProperty.js.map +1 -1
  171. package/build/parser/satisfactory/types/property/generic/DoubleProperty.d.ts +6 -6
  172. package/build/parser/satisfactory/types/property/generic/DoubleProperty.d.ts.map +1 -1
  173. package/build/parser/satisfactory/types/property/generic/DoubleProperty.js.map +1 -1
  174. package/build/parser/satisfactory/types/property/generic/EnumProperty.d.ts +6 -6
  175. package/build/parser/satisfactory/types/property/generic/EnumProperty.d.ts.map +1 -1
  176. package/build/parser/satisfactory/types/property/generic/EnumProperty.js.map +1 -1
  177. package/build/parser/satisfactory/types/property/generic/FloatProperty.d.ts +6 -6
  178. package/build/parser/satisfactory/types/property/generic/FloatProperty.d.ts.map +1 -1
  179. package/build/parser/satisfactory/types/property/generic/FloatProperty.js.map +1 -1
  180. package/build/parser/satisfactory/types/property/generic/Int32Property.d.ts +6 -6
  181. package/build/parser/satisfactory/types/property/generic/Int32Property.d.ts.map +1 -1
  182. package/build/parser/satisfactory/types/property/generic/Int32Property.js.map +1 -1
  183. package/build/parser/satisfactory/types/property/generic/Int64Property.d.ts +6 -6
  184. package/build/parser/satisfactory/types/property/generic/Int64Property.d.ts.map +1 -1
  185. package/build/parser/satisfactory/types/property/generic/Int64Property.js.map +1 -1
  186. package/build/parser/satisfactory/types/property/generic/Int8Property.d.ts +6 -6
  187. package/build/parser/satisfactory/types/property/generic/Int8Property.d.ts.map +1 -1
  188. package/build/parser/satisfactory/types/property/generic/Int8Property.js.map +1 -1
  189. package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts +4 -4
  190. package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts.map +1 -1
  191. package/build/parser/satisfactory/types/property/generic/MapProperty.js +5 -5
  192. package/build/parser/satisfactory/types/property/generic/MapProperty.js.map +1 -1
  193. package/build/parser/satisfactory/types/property/generic/ObjectProperty.d.ts +6 -6
  194. package/build/parser/satisfactory/types/property/generic/ObjectProperty.d.ts.map +1 -1
  195. package/build/parser/satisfactory/types/property/generic/ObjectProperty.js.map +1 -1
  196. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.d.ts +4 -4
  197. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.d.ts.map +1 -1
  198. package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.js.map +1 -1
  199. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.d.ts +4 -4
  200. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.d.ts.map +1 -1
  201. package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.js.map +1 -1
  202. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.d.ts +4 -4
  203. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.d.ts.map +1 -1
  204. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.js +4 -1
  205. package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.js.map +1 -1
  206. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.d.ts +4 -4
  207. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.d.ts.map +1 -1
  208. package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.js.map +1 -1
  209. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.d.ts +4 -4
  210. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.d.ts.map +1 -1
  211. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.js +1 -2
  212. package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.js.map +1 -1
  213. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.d.ts +4 -4
  214. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.d.ts.map +1 -1
  215. package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.js.map +1 -1
  216. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.d.ts +6 -6
  217. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.d.ts.map +1 -1
  218. package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.js.map +1 -1
  219. package/build/parser/satisfactory/types/property/generic/StrProperty.d.ts +6 -6
  220. package/build/parser/satisfactory/types/property/generic/StrProperty.d.ts.map +1 -1
  221. package/build/parser/satisfactory/types/property/generic/StrProperty.js.map +1 -1
  222. package/build/parser/satisfactory/types/property/generic/StructProperty.d.ts +11 -15
  223. package/build/parser/satisfactory/types/property/generic/StructProperty.d.ts.map +1 -1
  224. package/build/parser/satisfactory/types/property/generic/StructProperty.js +32 -36
  225. package/build/parser/satisfactory/types/property/generic/StructProperty.js.map +1 -1
  226. package/build/parser/satisfactory/types/property/generic/TextProperty.d.ts +6 -6
  227. package/build/parser/satisfactory/types/property/generic/TextProperty.d.ts.map +1 -1
  228. package/build/parser/satisfactory/types/property/generic/TextProperty.js.map +1 -1
  229. package/build/parser/satisfactory/types/property/generic/Uint32Property.d.ts +6 -6
  230. package/build/parser/satisfactory/types/property/generic/Uint32Property.d.ts.map +1 -1
  231. package/build/parser/satisfactory/types/property/generic/Uint32Property.js.map +1 -1
  232. package/build/parser/satisfactory/types/property/generic/Uint64Property.d.ts +6 -6
  233. package/build/parser/satisfactory/types/property/generic/Uint64Property.d.ts.map +1 -1
  234. package/build/parser/satisfactory/types/property/generic/Uint64Property.js.map +1 -1
  235. package/build/parser/satisfactory/types/property/generic/Uint8Property.d.ts +6 -6
  236. package/build/parser/satisfactory/types/property/generic/Uint8Property.d.ts.map +1 -1
  237. package/build/parser/satisfactory/types/property/generic/Uint8Property.js.map +1 -1
  238. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.d.ts +25 -5
  239. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.d.ts.map +1 -1
  240. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.js +70 -44
  241. package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.js.map +1 -1
  242. package/build/parser/satisfactory/types/property/special/CircuitSpecialProperties.d.ts +4 -4
  243. package/build/parser/satisfactory/types/property/special/CircuitSpecialProperties.d.ts.map +1 -1
  244. package/build/parser/satisfactory/types/property/special/CircuitSpecialProperties.js.map +1 -1
  245. package/build/parser/satisfactory/types/property/special/ConveyorChainActorSpecialProperties.d.ts +4 -4
  246. package/build/parser/satisfactory/types/property/special/ConveyorChainActorSpecialProperties.d.ts.map +1 -1
  247. package/build/parser/satisfactory/types/property/special/ConveyorChainActorSpecialProperties.js.map +1 -1
  248. package/build/parser/satisfactory/types/property/special/ConveyorSpecialProperties.d.ts +4 -4
  249. package/build/parser/satisfactory/types/property/special/ConveyorSpecialProperties.d.ts.map +1 -1
  250. package/build/parser/satisfactory/types/property/special/ConveyorSpecialProperties.js +2 -2
  251. package/build/parser/satisfactory/types/property/special/ConveyorSpecialProperties.js.map +1 -1
  252. package/build/parser/satisfactory/types/property/special/EmptySpecialProperties.d.ts +4 -4
  253. package/build/parser/satisfactory/types/property/special/EmptySpecialProperties.d.ts.map +1 -1
  254. package/build/parser/satisfactory/types/property/special/EmptySpecialProperties.js.map +1 -1
  255. package/build/parser/satisfactory/types/property/special/ObjectsListSpecialProperties.d.ts +4 -4
  256. package/build/parser/satisfactory/types/property/special/ObjectsListSpecialProperties.d.ts.map +1 -1
  257. package/build/parser/satisfactory/types/property/special/ObjectsListSpecialProperties.js.map +1 -1
  258. package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.d.ts +4 -4
  259. package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.d.ts.map +1 -1
  260. package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.js.map +1 -1
  261. package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.d.ts +4 -4
  262. package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.d.ts.map +1 -1
  263. package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.js +12 -3
  264. package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.js.map +1 -1
  265. package/build/parser/satisfactory/types/property/special/SpecialDroneActionProperties.d.ts +4 -4
  266. package/build/parser/satisfactory/types/property/special/SpecialDroneActionProperties.d.ts.map +1 -1
  267. package/build/parser/satisfactory/types/property/special/SpecialDroneActionProperties.js +4 -4
  268. package/build/parser/satisfactory/types/property/special/SpecialDroneActionProperties.js.map +1 -1
  269. package/build/parser/satisfactory/types/property/special/SpecialProperties.d.ts +4 -4
  270. package/build/parser/satisfactory/types/property/special/SpecialProperties.d.ts.map +1 -1
  271. package/build/parser/satisfactory/types/property/special/SpecialProperties.js.map +1 -1
  272. package/build/parser/satisfactory/types/property/special/VehicleSpecialProperties.d.ts +6 -9
  273. package/build/parser/satisfactory/types/property/special/VehicleSpecialProperties.d.ts.map +1 -1
  274. package/build/parser/satisfactory/types/property/special/VehicleSpecialProperties.js +3 -8
  275. package/build/parser/satisfactory/types/property/special/VehicleSpecialProperties.js.map +1 -1
  276. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.d.ts +8 -0
  277. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.d.ts.map +1 -0
  278. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.js +12 -0
  279. package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.js.map +1 -0
  280. package/build/parser/satisfactory/types/structs/DynamicStructPropertyValue.d.ts +4 -4
  281. package/build/parser/satisfactory/types/structs/DynamicStructPropertyValue.d.ts.map +1 -1
  282. package/build/parser/satisfactory/types/structs/DynamicStructPropertyValue.js +4 -4
  283. package/build/parser/satisfactory/types/structs/DynamicStructPropertyValue.js.map +1 -1
  284. package/build/parser/satisfactory/types/structs/FGDynamicStruct.d.ts +14 -0
  285. package/build/parser/satisfactory/types/structs/FGDynamicStruct.d.ts.map +1 -0
  286. package/build/parser/satisfactory/types/structs/FGDynamicStruct.js +34 -0
  287. package/build/parser/satisfactory/types/structs/FGDynamicStruct.js.map +1 -0
  288. package/build/parser/satisfactory/types/structs/GUID.d.ts +4 -4
  289. package/build/parser/satisfactory/types/structs/GUID.d.ts.map +1 -1
  290. package/build/parser/satisfactory/types/structs/GUID.js.map +1 -1
  291. package/build/parser/satisfactory/types/structs/GUIDInfo.d.ts +4 -4
  292. package/build/parser/satisfactory/types/structs/GUIDInfo.d.ts.map +1 -1
  293. package/build/parser/satisfactory/types/structs/GUIDInfo.js.map +1 -1
  294. package/build/parser/satisfactory/types/structs/MD5Hash.d.ts +4 -4
  295. package/build/parser/satisfactory/types/structs/MD5Hash.d.ts.map +1 -1
  296. package/build/parser/satisfactory/types/structs/MD5Hash.js.map +1 -1
  297. package/build/parser/satisfactory/types/structs/ObjectReference.d.ts +5 -4
  298. package/build/parser/satisfactory/types/structs/ObjectReference.d.ts.map +1 -1
  299. package/build/parser/satisfactory/types/structs/ObjectReference.js +1 -0
  300. package/build/parser/satisfactory/types/structs/ObjectReference.js.map +1 -1
  301. package/build/parser/satisfactory/types/structs/SoftObjectReference.d.ts +4 -4
  302. package/build/parser/satisfactory/types/structs/SoftObjectReference.d.ts.map +1 -1
  303. package/build/parser/satisfactory/types/structs/SoftObjectReference.js.map +1 -1
  304. package/build/parser/satisfactory/types/structs/Transform.d.ts +6 -6
  305. package/build/parser/satisfactory/types/structs/Transform.d.ts.map +1 -1
  306. package/build/parser/satisfactory/types/structs/Transform.js.map +1 -1
  307. package/build/parser/satisfactory/types/structs/VehiclePhysicsData.d.ts +17 -0
  308. package/build/parser/satisfactory/types/structs/VehiclePhysicsData.d.ts.map +1 -0
  309. package/build/parser/satisfactory/types/structs/VehiclePhysicsData.js +26 -0
  310. package/build/parser/satisfactory/types/structs/VehiclePhysicsData.js.map +1 -0
  311. package/build/parser/satisfactory/types/structs/col4.d.ts +6 -6
  312. package/build/parser/satisfactory/types/structs/col4.d.ts.map +1 -1
  313. package/build/parser/satisfactory/types/structs/col4.js.map +1 -1
  314. package/build/parser/satisfactory/types/structs/mods/FicsItCam/FICFrameRange.d.ts +4 -4
  315. package/build/parser/satisfactory/types/structs/mods/FicsItCam/FICFrameRange.d.ts.map +1 -1
  316. package/build/parser/satisfactory/types/structs/mods/FicsItCam/FICFrameRange.js.map +1 -1
  317. package/build/parser/satisfactory/types/structs/vec2.d.ts +6 -6
  318. package/build/parser/satisfactory/types/structs/vec2.d.ts.map +1 -1
  319. package/build/parser/satisfactory/types/structs/vec2.js.map +1 -1
  320. package/build/parser/satisfactory/types/structs/vec3.d.ts +8 -8
  321. package/build/parser/satisfactory/types/structs/vec3.d.ts.map +1 -1
  322. package/build/parser/satisfactory/types/structs/vec3.js.map +1 -1
  323. package/build/parser/satisfactory/types/structs/vec4.d.ts +6 -6
  324. package/build/parser/satisfactory/types/structs/vec4.d.ts.map +1 -1
  325. package/build/parser/satisfactory/types/structs/vec4.js.map +1 -1
  326. package/build/parser/stream/reworked/readable-stream-parser.d.ts +2 -2
  327. package/build/parser/stream/reworked/readable-stream-parser.d.ts.map +1 -1
  328. package/build/parser/stream/reworked/readable-stream-parser.js +59 -20
  329. package/build/parser/stream/reworked/readable-stream-parser.js.map +1 -1
  330. package/build/parser/stream/reworked/save-stream-json-stringifier.js +1 -1
  331. package/build/parser/stream/reworked/save-stream-json-stringifier.js.map +1 -1
  332. package/build/parser/stream/reworked/save-stream-writer.class.d.ts +2 -2
  333. package/build/parser/stream/reworked/save-stream-writer.class.d.ts.map +1 -1
  334. package/build/parser/stream/reworked/save-stream-writer.class.js.map +1 -1
  335. package/docs/assets/highlight.css +4 -4
  336. package/docs/assets/navigation.js +1 -1
  337. package/docs/assets/search.js +1 -1
  338. package/docs/classes/BlueprintConfigReader.html +7 -6
  339. package/docs/classes/BlueprintConfigWriter.html +6 -4
  340. package/docs/classes/BlueprintReader.html +7 -5
  341. package/docs/classes/BlueprintWriter.html +6 -4
  342. package/docs/classes/CompressionLibraryError.html +2 -2
  343. package/docs/classes/CorruptBlueprintError.html +11 -0
  344. package/docs/classes/CorruptSaveError.html +2 -2
  345. package/docs/classes/Parser.html +13 -13
  346. package/docs/classes/ParserError.html +2 -2
  347. package/docs/classes/ReadableStreamParser.html +4 -4
  348. package/docs/classes/SatisfactorySave.html +3 -2
  349. package/docs/classes/SaveComponent.html +6 -5
  350. package/docs/classes/SaveEntity.html +6 -6
  351. package/docs/classes/SaveObject.html +6 -5
  352. package/docs/classes/SaveReader.html +11 -7
  353. package/docs/classes/SaveStreamJsonStringifier.html +2 -2
  354. package/docs/classes/SaveStreamWriter.html +2 -2
  355. package/docs/classes/SaveWriter.html +6 -4
  356. package/docs/classes/TimeoutError.html +2 -2
  357. package/docs/classes/UnimplementedError.html +2 -2
  358. package/docs/classes/UnsupportedVersionError.html +2 -2
  359. package/docs/enums/BlueprintConfigVersion.html +9 -0
  360. package/docs/enums/CompressionAlgorithmCode.html +2 -0
  361. package/docs/enums/FactoryGameCustomVersion.html +33 -0
  362. package/docs/enums/RuntimeBuildableInstanceDataVersion.html +7 -0
  363. package/docs/enums/SaveCustomVersion.html +64 -0
  364. package/docs/enums/SaveHeaderType.html +17 -0
  365. package/docs/functions/AbstractBaseProperty.Create.html +1 -1
  366. package/docs/functions/ArrayProperty.CalcOverhead.html +1 -1
  367. package/docs/functions/ArrayProperty.Parse.html +1 -1
  368. package/docs/functions/ArrayProperty.Serialize.html +1 -1
  369. package/docs/functions/BlueprintConfig.Parse.html +1 -0
  370. package/docs/functions/BlueprintConfig.Serialize.html +1 -0
  371. package/docs/functions/BlueprintHeader.Parse.html +1 -0
  372. package/docs/functions/BlueprintHeader.Serialize.html +1 -0
  373. package/docs/functions/BoolArrayProperty.Parse.html +1 -1
  374. package/docs/functions/BoolArrayProperty.Serialize.html +1 -1
  375. package/docs/functions/BoolProperty.CalcOverhead.html +1 -1
  376. package/docs/functions/BoolProperty.Parse.html +1 -1
  377. package/docs/functions/BoolProperty.ReadValue.html +1 -1
  378. package/docs/functions/BoolProperty.Serialize.html +1 -1
  379. package/docs/functions/BoolProperty.SerializeValue.html +1 -1
  380. package/docs/functions/BuildableSubsystemSpecialProperties.Parse.html +1 -1
  381. package/docs/functions/BuildableSubsystemSpecialProperties.Serialize.html +1 -1
  382. package/docs/functions/BuildableTypeInstance.Parse.html +1 -0
  383. package/docs/functions/BuildableTypeInstance.Serialize.html +1 -0
  384. package/docs/functions/ByteArrayProperty.Parse.html +1 -1
  385. package/docs/functions/ByteArrayProperty.Serialize.html +1 -1
  386. package/docs/functions/ByteProperty.CalcOverhead.html +1 -1
  387. package/docs/functions/ByteProperty.Parse.html +1 -1
  388. package/docs/functions/ByteProperty.ReadValue.html +1 -1
  389. package/docs/functions/ByteProperty.Serialize.html +1 -1
  390. package/docs/functions/ByteProperty.SerializeValue.html +1 -1
  391. package/docs/functions/CircuitSpecialProperties.Parse.html +1 -1
  392. package/docs/functions/CircuitSpecialProperties.Serialize.html +1 -1
  393. package/docs/functions/ConveyorChainActorSpecialProperties.Parse.html +1 -1
  394. package/docs/functions/ConveyorChainActorSpecialProperties.Serialize.html +1 -1
  395. package/docs/functions/ConveyorSpecialProperties.Parse.html +1 -1
  396. package/docs/functions/ConveyorSpecialProperties.Serialize.html +1 -1
  397. package/docs/functions/DoubleArrayProperty.Parse.html +1 -1
  398. package/docs/functions/DoubleArrayProperty.Serialize.html +1 -1
  399. package/docs/functions/DoubleProperty.CalcOverhead.html +1 -1
  400. package/docs/functions/DoubleProperty.Parse.html +1 -1
  401. package/docs/functions/DoubleProperty.ReadValue.html +1 -1
  402. package/docs/functions/DoubleProperty.Serialize.html +1 -1
  403. package/docs/functions/DoubleProperty.SerializeValue.html +1 -1
  404. package/docs/functions/DynamicStructPropertyValue.read.html +1 -1
  405. package/docs/functions/DynamicStructPropertyValue.write.html +1 -1
  406. package/docs/functions/EmptySpecialProperties.Parse.html +1 -1
  407. package/docs/functions/EmptySpecialProperties.Serialize.html +1 -1
  408. package/docs/functions/EnumArrayProperty.Parse.html +1 -1
  409. package/docs/functions/EnumArrayProperty.Serialize.html +1 -1
  410. package/docs/functions/EnumProperty.CalcOverhead.html +1 -1
  411. package/docs/functions/EnumProperty.Parse.html +1 -1
  412. package/docs/functions/EnumProperty.ReadValue.html +1 -1
  413. package/docs/functions/EnumProperty.Serialize.html +1 -1
  414. package/docs/functions/EnumProperty.SerializeValue.html +1 -1
  415. package/docs/functions/FGDynamicStruct.Parse.html +1 -0
  416. package/docs/functions/FGDynamicStruct.Serialize.html +1 -0
  417. package/docs/functions/FICFrameRange.Parse.html +1 -1
  418. package/docs/functions/FICFrameRange.Serialize.html +1 -1
  419. package/docs/functions/FloatArrayProperty.Parse.html +1 -1
  420. package/docs/functions/FloatArrayProperty.Serialize.html +1 -1
  421. package/docs/functions/FloatProperty.CalcOverhead.html +1 -1
  422. package/docs/functions/FloatProperty.Parse.html +1 -1
  423. package/docs/functions/FloatProperty.ReadValue.html +1 -1
  424. package/docs/functions/FloatProperty.Serialize.html +1 -1
  425. package/docs/functions/FloatProperty.SerializeValue.html +1 -1
  426. package/docs/functions/GUID.read.html +1 -1
  427. package/docs/functions/GUID.write.html +1 -1
  428. package/docs/functions/GUIDInfo.read.html +1 -1
  429. package/docs/functions/GUIDInfo.write.html +1 -1
  430. package/docs/functions/Int32ArrayProperty.Parse.html +1 -1
  431. package/docs/functions/Int32ArrayProperty.Serialize.html +1 -1
  432. package/docs/functions/Int32Property.CalcOverhead.html +1 -1
  433. package/docs/functions/Int32Property.Parse.html +1 -1
  434. package/docs/functions/Int32Property.ReadValue.html +1 -1
  435. package/docs/functions/Int32Property.Serialize.html +1 -1
  436. package/docs/functions/Int32Property.SerializeValue.html +1 -1
  437. package/docs/functions/Int32SetProperty.Parse.html +1 -1
  438. package/docs/functions/Int32SetProperty.Serialize.html +1 -1
  439. package/docs/functions/Int64ArrayProperty.Parse.html +1 -1
  440. package/docs/functions/Int64ArrayProperty.Serialize.html +1 -1
  441. package/docs/functions/Int64Property.CalcOverhead.html +1 -1
  442. package/docs/functions/Int64Property.Parse.html +1 -1
  443. package/docs/functions/Int64Property.ReadValue.html +1 -1
  444. package/docs/functions/Int64Property.Serialize.html +1 -1
  445. package/docs/functions/Int64Property.SerializeValue.html +1 -1
  446. package/docs/functions/Int8Property.CalcOverhead.html +1 -1
  447. package/docs/functions/Int8Property.Parse.html +1 -1
  448. package/docs/functions/Int8Property.ReadValue.html +1 -1
  449. package/docs/functions/Int8Property.Serialize.html +1 -1
  450. package/docs/functions/Int8Property.SerializeValue.html +1 -1
  451. package/docs/functions/Level.ReadAllObjectContents.html +1 -1
  452. package/docs/functions/Level.ReadAllObjectHeaders.html +1 -1
  453. package/docs/functions/Level.ReadLevel.html +1 -1
  454. package/docs/functions/Level.ReadNObjectContents.html +1 -1
  455. package/docs/functions/Level.ReadNObjectHeaders.html +1 -1
  456. package/docs/functions/Level.SerializeAllObjectContents.html +1 -1
  457. package/docs/functions/Level.SerializeAllObjectHeaders.html +1 -1
  458. package/docs/functions/Level.SerializeLevel.html +1 -1
  459. package/docs/functions/MD5Hash.read.html +1 -1
  460. package/docs/functions/MD5Hash.write.html +1 -1
  461. package/docs/functions/MapProperty.CalcOverhead.html +1 -1
  462. package/docs/functions/MapProperty.Parse.html +1 -1
  463. package/docs/functions/MapProperty.Serialize.html +1 -1
  464. package/docs/functions/ObjectArrayProperty.Parse.html +1 -1
  465. package/docs/functions/ObjectArrayProperty.Serialize.html +1 -1
  466. package/docs/functions/ObjectProperty.CalcOverhead.html +1 -1
  467. package/docs/functions/ObjectProperty.Parse.html +1 -1
  468. package/docs/functions/ObjectProperty.ReadValue.html +1 -1
  469. package/docs/functions/ObjectProperty.Serialize.html +1 -1
  470. package/docs/functions/ObjectProperty.SerializeValue.html +1 -1
  471. package/docs/functions/ObjectReference.IsEqual.html +1 -0
  472. package/docs/functions/ObjectReference.read.html +1 -1
  473. package/docs/functions/ObjectReference.write.html +1 -1
  474. package/docs/functions/ObjectSetProperty.Parse.html +1 -1
  475. package/docs/functions/ObjectSetProperty.Serialize.html +1 -1
  476. package/docs/functions/ObjectsListSpecialProperties.Parse.html +1 -1
  477. package/docs/functions/ObjectsListSpecialProperties.Serialize.html +1 -1
  478. package/docs/functions/PlayerSpecialProperties.Parse.html +1 -1
  479. package/docs/functions/PlayerSpecialProperties.Serialize.html +1 -1
  480. package/docs/functions/PowerLineSpecialProperties.Parse.html +1 -1
  481. package/docs/functions/PowerLineSpecialProperties.Serialize.html +1 -1
  482. package/docs/functions/PropertiesList.ParseList.html +1 -1
  483. package/docs/functions/PropertiesList.ParseSingleProperty.html +1 -1
  484. package/docs/functions/PropertiesList.SerializeList.html +1 -1
  485. package/docs/functions/PropertiesList.SerializeSingleProperty.html +1 -1
  486. package/docs/functions/SatisfactorySaveHeader.Parse.html +1 -0
  487. package/docs/functions/SatisfactorySaveHeader.Serialize.html +1 -0
  488. package/docs/functions/SaveBodyChunks.CompressDataIntoChunks.html +1 -0
  489. package/docs/functions/SaveBodyChunks.DecompressChunks.html +1 -0
  490. package/docs/functions/SetProperty.CalcOverhead.html +1 -1
  491. package/docs/functions/SetProperty.Parse.html +1 -1
  492. package/docs/functions/SetProperty.Serialize.html +1 -1
  493. package/docs/functions/SoftObjectArrayProperty.Parse.html +1 -1
  494. package/docs/functions/SoftObjectArrayProperty.Serialize.html +1 -1
  495. package/docs/functions/SoftObjectReference.read.html +1 -1
  496. package/docs/functions/SoftObjectReference.write.html +1 -1
  497. package/docs/functions/SpecialDroneActionProperties.Parse.html +1 -1
  498. package/docs/functions/SpecialDroneActionProperties.Serialize.html +1 -1
  499. package/docs/functions/SpecialProperties.ParseClassSpecificSpecialProperties.html +1 -1
  500. package/docs/functions/SpecialProperties.SerializeClassSpecificSpecialProperties.html +1 -1
  501. package/docs/functions/StrArrayProperty.Parse.html +1 -1
  502. package/docs/functions/StrArrayProperty.Serialize.html +1 -1
  503. package/docs/functions/StrProperty.CalcOverhead.html +1 -1
  504. package/docs/functions/StrProperty.Parse.html +1 -1
  505. package/docs/functions/StrProperty.ReadValue.html +1 -1
  506. package/docs/functions/StrProperty.Serialize.html +1 -1
  507. package/docs/functions/StrProperty.SerializeValue.html +1 -1
  508. package/docs/functions/StrSetProperty.Parse.html +1 -1
  509. package/docs/functions/StrSetProperty.Serialize.html +1 -1
  510. package/docs/functions/StructArrayProperty.Parse.html +1 -1
  511. package/docs/functions/StructArrayProperty.Serialize.html +1 -1
  512. package/docs/functions/StructProperty.CalcOverhead.html +1 -1
  513. package/docs/functions/StructProperty.Parse.html +1 -1
  514. package/docs/functions/StructProperty.ParseValue.html +1 -1
  515. package/docs/functions/StructProperty.Serialize.html +1 -1
  516. package/docs/functions/StructProperty.SerializeValue.html +1 -1
  517. package/docs/functions/StructSetProperty.Parse.html +1 -1
  518. package/docs/functions/StructSetProperty.Serialize.html +1 -1
  519. package/docs/functions/TextArrayProperty.Parse.html +1 -1
  520. package/docs/functions/TextArrayProperty.Serialize.html +1 -1
  521. package/docs/functions/TextProperty.CalcOverhead.html +1 -1
  522. package/docs/functions/TextProperty.Parse.html +1 -1
  523. package/docs/functions/TextProperty.ReadValue.html +1 -1
  524. package/docs/functions/TextProperty.Serialize.html +1 -1
  525. package/docs/functions/TextProperty.SerializeValue.html +1 -1
  526. package/docs/functions/Transform.Parse.html +1 -1
  527. package/docs/functions/Transform.ParseF.html +1 -1
  528. package/docs/functions/Transform.Serialize.html +1 -1
  529. package/docs/functions/Transform.SerializeF.html +1 -1
  530. package/docs/functions/Uint32Property.CalcOverhead.html +1 -1
  531. package/docs/functions/Uint32Property.Parse.html +1 -1
  532. package/docs/functions/Uint32Property.ReadValue.html +1 -1
  533. package/docs/functions/Uint32Property.Serialize.html +1 -1
  534. package/docs/functions/Uint32Property.SerializeValue.html +1 -1
  535. package/docs/functions/Uint32SetProperty.Parse.html +1 -1
  536. package/docs/functions/Uint32SetProperty.Serialize.html +1 -1
  537. package/docs/functions/Uint64Property.CalcOverhead.html +1 -1
  538. package/docs/functions/Uint64Property.Parse.html +1 -1
  539. package/docs/functions/Uint64Property.ReadValue.html +1 -1
  540. package/docs/functions/Uint64Property.Serialize.html +1 -1
  541. package/docs/functions/Uint64Property.SerializeValue.html +1 -1
  542. package/docs/functions/Uint8Property.CalcOverhead.html +1 -1
  543. package/docs/functions/Uint8Property.Parse.html +1 -1
  544. package/docs/functions/Uint8Property.ReadValue.html +1 -1
  545. package/docs/functions/Uint8Property.Serialize.html +1 -1
  546. package/docs/functions/Uint8Property.SerializeValue.html +1 -1
  547. package/docs/functions/VehiclePhysicsData.Parse.html +1 -0
  548. package/docs/functions/VehiclePhysicsData.Serialize.html +1 -0
  549. package/docs/functions/VehicleSpecialProperties.Parse.html +1 -1
  550. package/docs/functions/VehicleSpecialProperties.Serialize.html +1 -1
  551. package/docs/functions/col4.ParseBGRA.html +1 -1
  552. package/docs/functions/col4.ParseRGBA.html +1 -1
  553. package/docs/functions/col4.SerializeBGRA.html +1 -1
  554. package/docs/functions/col4.SerializeRGBA.html +1 -1
  555. package/docs/functions/isArrayProperty.html +1 -1
  556. package/docs/functions/isBoolArrayProperty.html +1 -1
  557. package/docs/functions/isBoolProperty.html +1 -1
  558. package/docs/functions/isBuildableSubsystemSpecialProperties.html +1 -1
  559. package/docs/functions/isByteArrayProperty.html +1 -1
  560. package/docs/functions/isByteProperty.html +1 -1
  561. package/docs/functions/isCircuitSpecialProperties.html +1 -1
  562. package/docs/functions/isConveyorChainActorSpecialProperties.html +1 -1
  563. package/docs/functions/isConveyorSpecialProperties.html +1 -1
  564. package/docs/functions/isDoubleArrayProperty.html +1 -1
  565. package/docs/functions/isDoubleProperty.html +1 -1
  566. package/docs/functions/isEmptySpecialProperties.html +1 -1
  567. package/docs/functions/isEnumArrayProperty.html +1 -1
  568. package/docs/functions/isEnumProperty.html +1 -1
  569. package/docs/functions/isFloatArrayProperty.html +1 -1
  570. package/docs/functions/isFloatProperty.html +1 -1
  571. package/docs/functions/isInt32ArrayProperty.html +1 -1
  572. package/docs/functions/isInt32Property.html +1 -1
  573. package/docs/functions/isInt32SetProperty.html +1 -1
  574. package/docs/functions/isInt64ArrayProperty.html +1 -1
  575. package/docs/functions/isInt64Property.html +1 -1
  576. package/docs/functions/isInt8Property.html +1 -1
  577. package/docs/functions/isMapProperty.html +1 -1
  578. package/docs/functions/isObjectArrayProperty.html +1 -1
  579. package/docs/functions/isObjectProperty.html +1 -1
  580. package/docs/functions/isObjectSetProperty.html +1 -1
  581. package/docs/functions/isObjectsListSpecialProperties.html +1 -1
  582. package/docs/functions/isPlayerSpecialProperties.html +1 -1
  583. package/docs/functions/isPowerLineSpecialProperties.html +1 -1
  584. package/docs/functions/isSaveComponent.html +1 -1
  585. package/docs/functions/isSaveEntity.html +1 -1
  586. package/docs/functions/isSetProperty.html +1 -1
  587. package/docs/functions/isSoftObjectArrayProperty.html +1 -1
  588. package/docs/functions/isSpecialDroneActionProperties.html +1 -1
  589. package/docs/functions/isStrArrayProperty.html +1 -1
  590. package/docs/functions/isStrProperty.html +1 -1
  591. package/docs/functions/isStrSetProperty.html +1 -1
  592. package/docs/functions/isStructArrayProperty.html +1 -1
  593. package/docs/functions/isStructProperty.html +1 -1
  594. package/docs/functions/isStructSetProperty.html +1 -1
  595. package/docs/functions/isTextArrayProperty.html +1 -1
  596. package/docs/functions/isTextProperty.html +1 -1
  597. package/docs/functions/isUInt64Property.html +1 -1
  598. package/docs/functions/isUint32Property.html +1 -1
  599. package/docs/functions/isUint32SetProperty.html +1 -1
  600. package/docs/functions/isUint8Property.html +1 -1
  601. package/docs/functions/isVehicleSpecialProperties.html +1 -1
  602. package/docs/functions/vec2.Parse.html +1 -1
  603. package/docs/functions/vec2.ParseF.html +1 -1
  604. package/docs/functions/vec2.Serialize.html +1 -1
  605. package/docs/functions/vec2.SerializeF.html +1 -1
  606. package/docs/functions/vec3.Parse.html +1 -1
  607. package/docs/functions/vec3.ParseF.html +1 -1
  608. package/docs/functions/vec3.ParseInt.html +1 -1
  609. package/docs/functions/vec3.Serialize.html +1 -1
  610. package/docs/functions/vec3.SerializeF.html +1 -1
  611. package/docs/functions/vec3.SerializeInt.html +1 -1
  612. package/docs/functions/vec3.add.html +1 -1
  613. package/docs/functions/vec3.length.html +1 -1
  614. package/docs/functions/vec3.mult.html +1 -1
  615. package/docs/functions/vec3.norm.html +1 -1
  616. package/docs/functions/vec3.sub.html +1 -1
  617. package/docs/functions/vec4.Parse.html +1 -1
  618. package/docs/functions/vec4.ParseF.html +1 -1
  619. package/docs/functions/vec4.Serialize.html +1 -1
  620. package/docs/functions/vec4.SerializeF.html +1 -1
  621. package/docs/hierarchy.html +1 -1
  622. package/docs/index.html +34 -21
  623. package/docs/interfaces/Blueprint.html +2 -2
  624. package/docs/interfaces/BlueprintConfig-1.html +8 -0
  625. package/docs/interfaces/SaveComponentHeader.html +3 -2
  626. package/docs/interfaces/SaveEntityHeader.html +3 -2
  627. package/docs/interfaces/SaveObjectHeader.html +3 -2
  628. package/docs/modules/AbstractBaseProperty.html +1 -1
  629. package/docs/modules/ArrayProperty.html +1 -1
  630. package/docs/modules/BlueprintConfig.html +3 -0
  631. package/docs/modules/BlueprintHeader.html +3 -0
  632. package/docs/modules/BoolArrayProperty.html +1 -1
  633. package/docs/modules/BoolProperty.html +1 -1
  634. package/docs/modules/BuildableSubsystemSpecialProperties.html +1 -1
  635. package/docs/modules/BuildableTypeInstance.html +3 -0
  636. package/docs/modules/ByteArrayProperty.html +1 -1
  637. package/docs/modules/ByteProperty.html +1 -1
  638. package/docs/modules/CircuitSpecialProperties.html +1 -1
  639. package/docs/modules/ConveyorChainActorSpecialProperties.html +1 -1
  640. package/docs/modules/ConveyorSpecialProperties.html +1 -1
  641. package/docs/modules/DoubleArrayProperty.html +1 -1
  642. package/docs/modules/DoubleProperty.html +1 -1
  643. package/docs/modules/DynamicStructPropertyValue.html +1 -1
  644. package/docs/modules/EmptySpecialProperties.html +1 -1
  645. package/docs/modules/EnumArrayProperty.html +1 -1
  646. package/docs/modules/EnumProperty.html +1 -1
  647. package/docs/modules/FGDynamicStruct.html +3 -0
  648. package/docs/modules/FICFrameRange.html +1 -1
  649. package/docs/modules/FloatArrayProperty.html +1 -1
  650. package/docs/modules/FloatProperty.html +1 -1
  651. package/docs/modules/GUID.html +1 -1
  652. package/docs/modules/GUIDInfo.html +1 -1
  653. package/docs/modules/Int32ArrayProperty.html +1 -1
  654. package/docs/modules/Int32Property.html +1 -1
  655. package/docs/modules/Int32SetProperty.html +1 -1
  656. package/docs/modules/Int64ArrayProperty.html +1 -1
  657. package/docs/modules/Int64Property.html +1 -1
  658. package/docs/modules/Int8Property.html +1 -1
  659. package/docs/modules/Level.html +1 -1
  660. package/docs/modules/MD5Hash.html +1 -1
  661. package/docs/modules/MapProperty.html +1 -1
  662. package/docs/modules/ObjectArrayProperty.html +1 -1
  663. package/docs/modules/ObjectProperty.html +1 -1
  664. package/docs/modules/ObjectReference.html +2 -1
  665. package/docs/modules/ObjectSetProperty.html +1 -1
  666. package/docs/modules/ObjectsListSpecialProperties.html +1 -1
  667. package/docs/modules/PlayerSpecialProperties.html +1 -1
  668. package/docs/modules/PowerLineSpecialProperties.html +1 -1
  669. package/docs/modules/PropertiesList.html +1 -1
  670. package/docs/modules/SatisfactorySaveHeader.html +3 -0
  671. package/docs/modules/SaveBodyChunks.html +5 -0
  672. package/docs/modules/SetProperty.html +1 -1
  673. package/docs/modules/SoftObjectArrayProperty.html +1 -1
  674. package/docs/modules/SoftObjectReference.html +1 -1
  675. package/docs/modules/SpecialDroneActionProperties.html +1 -1
  676. package/docs/modules/SpecialProperties.html +1 -1
  677. package/docs/modules/StrArrayProperty.html +1 -1
  678. package/docs/modules/StrProperty.html +1 -1
  679. package/docs/modules/StrSetProperty.html +1 -1
  680. package/docs/modules/StructArrayProperty.html +1 -1
  681. package/docs/modules/StructProperty.html +1 -1
  682. package/docs/modules/StructSetProperty.html +1 -1
  683. package/docs/modules/TextArrayProperty.html +1 -1
  684. package/docs/modules/TextProperty.html +1 -1
  685. package/docs/modules/Transform.html +1 -1
  686. package/docs/modules/Uint32Property.html +1 -1
  687. package/docs/modules/Uint32SetProperty.html +1 -1
  688. package/docs/modules/Uint64Property.html +1 -1
  689. package/docs/modules/Uint8Property.html +1 -1
  690. package/docs/modules/VehiclePhysicsData.html +3 -0
  691. package/docs/modules/VehicleSpecialProperties.html +1 -1
  692. package/docs/modules/col4.html +1 -1
  693. package/docs/modules/vec2.html +1 -1
  694. package/docs/modules/vec3.html +1 -1
  695. package/docs/modules/vec4.html +1 -1
  696. package/docs/modules.html +31 -7
  697. package/docs/types/AbstractBaseProperty-1.html +1 -1
  698. package/docs/types/ArrayProperty.AvailableArrayPropertyTypes.html +1 -1
  699. package/docs/types/ArrayPropertyStructValueFields.html +1 -1
  700. package/docs/types/BasicMultipleStructPropertyValue.html +1 -1
  701. package/docs/types/BasicStructPropertyValue.html +1 -1
  702. package/docs/types/BlueprintHeader-1.html +1 -0
  703. package/docs/types/BoolArrayProperty-1.html +1 -1
  704. package/docs/types/BoolProperty-1.html +1 -1
  705. package/docs/types/BoxStructPropertyValue.html +1 -1
  706. package/docs/types/BuildableSubsystemSpecialProperties-1.html +1 -1
  707. package/docs/types/BuildableTypeInstance-1.html +1 -0
  708. package/docs/types/ByteArray4.html +1 -0
  709. package/docs/types/ByteArrayProperty-1.html +1 -1
  710. package/docs/types/ByteProperty-1.html +1 -1
  711. package/docs/types/BytePropertyValue.html +1 -1
  712. package/docs/types/ChunkCompressionInfo.html +1 -0
  713. package/docs/types/ChunkSummary.html +1 -0
  714. package/docs/types/CircuitSpecialProperties-1.html +1 -1
  715. package/docs/types/ClientIdentityInfo.html +1 -1
  716. package/docs/types/ConveyorChainActorSpecialProperties-1.html +1 -1
  717. package/docs/types/ConveyorChainSegmentSpecialProperties.html +1 -1
  718. package/docs/types/ConveyorItemSpecialProperties.html +1 -1
  719. package/docs/types/ConveyorSpecialProperties-1.html +1 -1
  720. package/docs/types/DoubleArrayProperty-1.html +1 -1
  721. package/docs/types/DoubleProperty-1.html +1 -1
  722. package/docs/types/DynamicStructPropertyValue-1.html +1 -1
  723. package/docs/types/EmptySpecialProperties-1.html +1 -1
  724. package/docs/types/EnumArrayProperty-1.html +1 -1
  725. package/docs/types/EnumProperty-1.html +1 -1
  726. package/docs/types/FGDynamicStruct-1.html +1 -0
  727. package/docs/types/FICFrameRange-1.html +1 -1
  728. package/docs/types/FICFrameRangeStructPropertyValue.html +1 -1
  729. package/docs/types/FloatArrayProperty-1.html +1 -1
  730. package/docs/types/FloatProperty-1.html +1 -1
  731. package/docs/types/GENERIC_MAP_KEY_TYPE.html +1 -1
  732. package/docs/types/GENERIC_MAP_VALUE_TYPE.html +1 -1
  733. package/docs/types/GENERIC_STRUCT_PROPERTY_VALUE.html +1 -1
  734. package/docs/types/GUID-1.html +1 -1
  735. package/docs/types/GUIDInfo-1.html +1 -1
  736. package/docs/types/Grids.html +1 -0
  737. package/docs/types/Int32ArrayProperty-1.html +1 -1
  738. package/docs/types/Int32Property-1.html +1 -1
  739. package/docs/types/Int32SetProperty-1.html +1 -1
  740. package/docs/types/Int64ArrayProperty-1.html +1 -1
  741. package/docs/types/Int64Property-1.html +1 -1
  742. package/docs/types/Int8Property-1.html +1 -1
  743. package/docs/types/InventoryItemStructPropertyValue.html +1 -1
  744. package/docs/types/Level-1.html +3 -1
  745. package/docs/types/Levels.html +1 -0
  746. package/docs/types/MAP_STRUCT_KEY_PROXY.html +1 -1
  747. package/docs/types/MD5Hash-1.html +1 -1
  748. package/docs/types/MapProperty-1.html +1 -1
  749. package/docs/types/ModData.html +1 -0
  750. package/docs/types/ObjectArrayProperty-1.html +1 -1
  751. package/docs/types/ObjectProperty-1.html +1 -1
  752. package/docs/types/ObjectReference-1.html +1 -1
  753. package/docs/types/ObjectSetProperty-1.html +1 -1
  754. package/docs/types/ObjectsListSpecialProperties-1.html +1 -1
  755. package/docs/types/PlayerSpecialProperties-1.html +1 -1
  756. package/docs/types/PowerLineSpecialProperties-1.html +1 -1
  757. package/docs/types/PropertiesMap.html +1 -1
  758. package/docs/types/RailroadTrackPositionStructPropertyValue.html +1 -1
  759. package/docs/types/RoughSaveVersion.html +1 -1
  760. package/docs/types/SatisfactoryModMetadata.html +1 -0
  761. package/docs/types/SatisfactorySaveHeader-1.html +1 -0
  762. package/docs/types/SaveBodyChunks-1.html +1 -0
  763. package/docs/types/SaveBodyValidation.html +1 -0
  764. package/docs/types/SetProperty.AvailableSetPropertyTypes.html +1 -1
  765. package/docs/types/SoftObjectArrayProperty-1.html +1 -1
  766. package/docs/types/SoftObjectReference-1.html +1 -1
  767. package/docs/types/SpecialDroneAction.html +1 -1
  768. package/docs/types/SpecialDroneActionProperties-1.html +1 -1
  769. package/docs/types/SpecialProperties.AvailableSpecialPropertiesTypes.html +1 -1
  770. package/docs/types/StrArrayProperty-1.html +1 -1
  771. package/docs/types/StrProperty-1.html +1 -1
  772. package/docs/types/StrSetProperty-1.html +1 -1
  773. package/docs/types/StructArrayProperty-1.html +1 -1
  774. package/docs/types/StructProperty-1.html +1 -1
  775. package/docs/types/StructSetProperty-1.html +1 -1
  776. package/docs/types/TextArrayProperty-1.html +1 -1
  777. package/docs/types/TextProperty-1.html +1 -1
  778. package/docs/types/TextPropertyValue.html +1 -1
  779. package/docs/types/Transform-1.html +1 -1
  780. package/docs/types/Uint32Property-1.html +1 -1
  781. package/docs/types/Uint32SetProperty-1.html +1 -1
  782. package/docs/types/Uint64Property-1.html +1 -1
  783. package/docs/types/Uint8Property-1.html +1 -1
  784. package/docs/types/VehiclePhysicsData-1.html +1 -0
  785. package/docs/types/VehicleSpecialProperties-1.html +1 -1
  786. package/docs/types/col4-1.html +1 -1
  787. package/docs/types/vec2-1.html +1 -1
  788. package/docs/types/vec3-1.html +1 -1
  789. package/docs/types/vec4-1.html +1 -1
  790. package/docs/variables/DEFAULT_SATISFACTORY_CHUNK_HEADER_SIZE.html +1 -0
  791. package/docs/variables/EDIT.html +1 -1
  792. package/docs/variables/SaveBodyChunks.HEADER_V1.html +1 -0
  793. package/docs/variables/SaveBodyChunks.HEADER_V2.html +1 -0
  794. package/package.json +3 -1
  795. package/docs/interfaces/BlueprintConfig.html +0 -6
  796. package/docs/interfaces/ModData.html +0 -4
  797. package/docs/interfaces/SatisfactoryModMetadata.html +0 -4
  798. package/docs/interfaces/SatisfactorySaveHeader.html +0 -18
  799. package/docs/types/BlueprintHeader.html +0 -1
  800. package/docs/types/BuildableTypeInstance.html +0 -1
@@ -18,7 +18,7 @@ class ByteReader {
18
18
  }
19
19
  reset(newFileBuffer) {
20
20
  this.fileBuffer = newFileBuffer;
21
- this.bufferView = new DataView(newFileBuffer, 0, this.fileBuffer.byteLength);
21
+ this.bufferView = new DataView(this.fileBuffer, 0, this.fileBuffer.byteLength);
22
22
  this.maxByte = newFileBuffer.byteLength;
23
23
  this.currentByte = 0;
24
24
  this.handledByte = 0;
@@ -28,10 +28,10 @@ class ByteReader {
28
28
  return;
29
29
  }
30
30
  readByte() {
31
- return parseInt(this.bufferView.getUint8(this.currentByte++).toString());
31
+ return this.readUint8();
32
32
  }
33
33
  readBytes(count) {
34
- return new Uint8Array(new Array(count).fill(0).map(pl => this.bufferView.getUint8(this.currentByte++)));
34
+ return new Uint8Array(new Array(count).fill(0).map(pl => this.readByte()));
35
35
  }
36
36
  bytesToHexRepresentation(bytes) {
37
37
  return bytes.map(byte => ('0' + byte.toString(16)).slice(-2));
@@ -62,6 +62,9 @@ class ByteReader {
62
62
  this.currentByte += 4;
63
63
  return data;
64
64
  }
65
+ readInt32Zero() {
66
+ this.readInt32();
67
+ }
65
68
  readUint32() {
66
69
  let data = this.bufferView.getUint32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
67
70
  this.currentByte += 4;
@@ -92,7 +95,6 @@ class ByteReader {
92
95
  }
93
96
  readString() {
94
97
  let strLength = this.readInt32();
95
- let startBytes = this.currentByte;
96
98
  if (strLength === 0) {
97
99
  return '';
98
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"byte-reader.class.js","sourceRoot":"","sources":["../../../src/parser/byte/byte-reader.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { CorruptSaveError } from '../error/parser.error';\nimport { Alignment } from \"./alignment.enum\";\nimport { BinaryReadable } from \"./binary-readable.interface\";\n\n/** @public */\nexport abstract class ByteReader implements BinaryReadable {\n\n\tprotected bufferView!: DataView;\n\tprotected fileBuffer!: ArrayBuffer;\n\tpublic alignment: Alignment;\n\n\tprotected currentByte: number = 0;\n\tprotected handledByte: number = 0;\n\tprotected maxByte: number = 0;\n\n\tconstructor(fileBuffer: ArrayBuffer, alignment: Alignment) {\n\t\tthis.alignment = alignment;\n\t\tthis.reset(fileBuffer);\n\t}\n\n\t/**\n\t * Resets the reader on the given arraybuffer to start from the beginning.\n\t * @param newFileBuffer the new array buffer to be read.\n\t */\n\tpublic reset(newFileBuffer: ArrayBuffer) {\n\t\tthis.fileBuffer = newFileBuffer;\n\t\tthis.bufferView = new DataView(newFileBuffer, 0, this.fileBuffer.byteLength);\n\t\tthis.maxByte = newFileBuffer.byteLength;\n\t\tthis.currentByte = 0;\n\t\tthis.handledByte = 0;\n\t}\n\n\t/*\n\t * Byte Manipulation\n\t */\n\tpublic skipBytes(byteLength = 1): void {\n\t\tthis.currentByte += byteLength;\n\t\treturn;\n\t}\n\tpublic readByte(): number {\n\t\t// TODO can i not just readByte() ??\n\t\treturn parseInt(this.bufferView.getUint8(this.currentByte++).toString());\n\t}\n\tpublic readBytes(count: number): Uint8Array {\n\t\treturn new Uint8Array(new Array(count).fill(0).map(pl => this.bufferView.getUint8(this.currentByte++)));\n\t}\n\tpublic bytesToHexRepresentation(bytes: number[]): string[] {\n\t\treturn bytes.map(byte => ('0' + byte.toString(16)).slice(-2));\n\t}\n\tpublic readHex(byteLength: number, hexSeparator: string = ' '): string {\n\t\treturn this.bytesToHexRepresentation(Array.from(this.readBytes(byteLength))).join(hexSeparator);\n\t}\n\tpublic readInt8(): number {\n\t\tlet data = this.bufferView.getInt8(this.currentByte++);\n\t\treturn data;\n\t}\n\tpublic readUint8(): number {\n\t\tlet data = this.bufferView.getUint8(this.currentByte++);\n\t\treturn data;\n\t}\n\tpublic readInt16(): number {\n\t\tlet data = this.bufferView.getInt16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t\treturn data;\n\t}\n\tpublic readUint16(): number {\n\t\tlet data = this.bufferView.getUint16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t\treturn data;\n\t}\n\tpublic readInt32(): number {\n\t\tlet data = this.bufferView.getInt32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t\treturn data;\n\t}\n\tpublic readUint32(): number {\n\t\tlet data = this.bufferView.getUint32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t\treturn data;\n\t}\n\tpublic readLong(): bigint {\n\t\tlet data = this.bufferView.getBigInt64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t\treturn data;\n\t}\n\tpublic readInt64(): bigint {\n\t\treturn this.readLong();\n\t}\n\tpublic readUint64(): bigint {\n\t\tlet data = this.bufferView.getBigUint64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t\treturn data;\n\t}\n\n\tpublic readFloat32(): number {\n\t\tlet data = this.bufferView.getFloat32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t\treturn data;\n\t}\n\tpublic readDouble(): number {\n\t\tlet data = this.bufferView.getFloat64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t\treturn data;\n\t}\n\tpublic readString(): string {\n\t\tlet strLength = this.readInt32();\n\t\tlet startBytes = this.currentByte;\n\n\t\tif (strLength === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Range error!\n\t\tif (strLength > (this.bufferView.buffer.byteLength - this.currentByte)) {\n\t\t\tlet errorMessage = `Cannot read string of length ${strLength} at position ${this.currentByte} as it exceeds the end at ${this.bufferView.buffer.byteLength}`;\n\t\t\tthrow new Error(errorMessage);\n\t\t}\n\n\t\t// it uses UTF16 if text is non-ascii, even if it would fit into UTF8.\n\t\tif (strLength < 0) {\n\t\t\tconst string = new Array(-strLength - 1).fill('').map(c => String.fromCharCode(this.readUint16()));\n\t\t\tthis.currentByte += 2;\n\t\t\treturn string.join('');\n\t\t}\n\n\t\t//default UTF-8\n\t\ttry {\n\t\t\tconst string = new Array(strLength - 1).fill('').map(c => String.fromCharCode(this.readUint8()));\n\t\t\tthis.currentByte += 1;\n\t\t\treturn string.join('');\n\t\t}\n\t\tcatch (error) {\n\t\t\tthrow new CorruptSaveError(`Cannot read UTF8 string of length ${strLength} at position ${this.currentByte}.`);\n\t\t}\n\t}\n\n\tpublic getBufferPosition = (): number => this.currentByte;\n\n\tpublic getBufferSlice = (begin: number, end: number | undefined): ArrayBuffer => this.bufferView.buffer.slice(begin, end);\n\n\tpublic getBufferProgress = (): number => this.currentByte / this.bufferView.buffer.byteLength;\n\n\tpublic getBufferLength = (): number => this.bufferView.buffer.byteLength;\n\n\tpublic getBuffer = (): ArrayBuffer => this.bufferView.buffer;\n}"]}
1
+ {"version":3,"file":"byte-reader.class.js","sourceRoot":"","sources":["../../../src/parser/byte/byte-reader.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { CorruptSaveError } from '../error/parser.error';\nimport { Alignment } from \"./alignment.enum\";\nimport { BinaryReadable } from \"./binary-readable.interface\";\n\n/** @public */\nexport abstract class ByteReader implements BinaryReadable {\n\n\tprotected bufferView!: DataView;\n\tprotected fileBuffer!: ArrayBufferLike;\n\tpublic alignment: Alignment;\n\tpublic context: any;\n\n\tprotected currentByte: number = 0;\n\tprotected handledByte: number = 0;\n\tprotected maxByte: number = 0;\n\n\tconstructor(fileBuffer: ArrayBufferLike, alignment: Alignment) {\n\t\tthis.alignment = alignment;\n\t\tthis.reset(fileBuffer);\n\t}\n\n\t/**\n\t * Resets the reader on the given arraybuffer to start from the beginning.\n\t * @param newFileBuffer the new array buffer to be read.\n\t */\n\tpublic reset(newFileBuffer: ArrayBufferLike) {\n\t\tthis.fileBuffer = newFileBuffer;\n\t\tthis.bufferView = new DataView(this.fileBuffer, 0, this.fileBuffer.byteLength);\n\t\tthis.maxByte = newFileBuffer.byteLength;\n\t\tthis.currentByte = 0;\n\t\tthis.handledByte = 0;\n\t}\n\n\t/*\n\t * Byte Manipulation\n\t */\n\tpublic skipBytes(byteLength = 1): void {\n\t\tthis.currentByte += byteLength;\n\t\treturn;\n\t}\n\tpublic readByte(): number {\n\t\treturn this.readUint8();\n\t}\n\tpublic readBytes(count: number): Uint8Array {\n\t\treturn new Uint8Array(new Array(count).fill(0).map(pl => this.readByte()));\n\t}\n\tpublic bytesToHexRepresentation(bytes: number[]): string[] {\n\t\treturn bytes.map(byte => ('0' + byte.toString(16)).slice(-2));\n\t}\n\tpublic readHex(byteLength: number, hexSeparator: string = ' '): string {\n\t\treturn this.bytesToHexRepresentation(Array.from(this.readBytes(byteLength))).join(hexSeparator);\n\t}\n\tpublic readInt8(): number {\n\t\tlet data = this.bufferView.getInt8(this.currentByte++);\n\t\treturn data;\n\t}\n\tpublic readUint8(): number {\n\t\tlet data = this.bufferView.getUint8(this.currentByte++);\n\t\treturn data;\n\t}\n\tpublic readInt16(): number {\n\t\tlet data = this.bufferView.getInt16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t\treturn data;\n\t}\n\tpublic readUint16(): number {\n\t\tlet data = this.bufferView.getUint16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t\treturn data;\n\t}\n\tpublic readInt32(): number {\n\t\tlet data = this.bufferView.getInt32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t\treturn data;\n\t}\n\t/**\n\t * Reads an int32 and we dismiss it, because its always 0.\n\t */\n\tpublic readInt32Zero(): void {\n\t\tthis.readInt32();\n\t}\n\tpublic readUint32(): number {\n\t\tlet data = this.bufferView.getUint32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t\treturn data;\n\t}\n\tpublic readLong(): bigint {\n\t\tlet data = this.bufferView.getBigInt64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t\treturn data;\n\t}\n\tpublic readInt64(): bigint {\n\t\treturn this.readLong();\n\t}\n\tpublic readUint64(): bigint {\n\t\tlet data = this.bufferView.getBigUint64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t\treturn data;\n\t}\n\n\tpublic readFloat32(): number {\n\t\tlet data = this.bufferView.getFloat32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t\treturn data;\n\t}\n\tpublic readDouble(): number {\n\t\tlet data = this.bufferView.getFloat64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t\treturn data;\n\t}\n\tpublic readString(): string {\n\t\tlet strLength = this.readInt32();\n\n\t\tif (strLength === 0) {\n\t\t\treturn '';\n\t\t}\n\n\t\t// Range error!\n\t\tif (strLength > (this.bufferView.buffer.byteLength - this.currentByte)) {\n\t\t\tlet errorMessage = `Cannot read string of length ${strLength} at position ${this.currentByte} as it exceeds the end at ${this.bufferView.buffer.byteLength}`;\n\t\t\tthrow new Error(errorMessage);\n\t\t}\n\n\t\t// it uses UTF16 if text is non-ascii, even if it would fit into UTF8.\n\t\tif (strLength < 0) {\n\t\t\tconst string = new Array(-strLength - 1).fill('').map(c => String.fromCharCode(this.readUint16()));\n\t\t\tthis.currentByte += 2;\n\t\t\treturn string.join('');\n\t\t}\n\n\t\t//default UTF-8\n\t\ttry {\n\t\t\tconst string = new Array(strLength - 1).fill('').map(c => String.fromCharCode(this.readUint8()));\n\t\t\tthis.currentByte += 1;\n\t\t\treturn string.join('');\n\t\t}\n\t\tcatch (error) {\n\t\t\tthrow new CorruptSaveError(`Cannot read UTF8 string of length ${strLength} at position ${this.currentByte}.`);\n\t\t}\n\t}\n\n\tpublic getBufferPosition = (): number => this.currentByte;\n\n\tpublic getBufferSlice = (begin: number, end: number | undefined): ArrayBufferLike => this.bufferView.buffer.slice(begin, end);\n\n\tpublic getBufferProgress = (): number => this.currentByte / this.bufferView.buffer.byteLength;\n\n\tpublic getBufferLength = (): number => this.bufferView.buffer.byteLength;\n\n\tpublic getBuffer = (): ArrayBufferLike => this.bufferView.buffer;\n}"]}
@@ -16,6 +16,7 @@ export declare abstract class ByteWriter implements BinaryWritable {
16
16
  writeInt16(value: number): void;
17
17
  writeUint16(value: number): void;
18
18
  writeInt32(value: number): void;
19
+ writeInt32Zero(): void;
19
20
  writeUint32(value: number): void;
20
21
  writeInt64(value: bigint): void;
21
22
  writeUint64(value: bigint): void;
@@ -1 +1 @@
1
- {"version":3,"file":"byte-writer.class.d.ts","sourceRoot":"","sources":["../../../src/parser/byte/byte-writer.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,8BAAsB,UAAW,YAAW,cAAc;IAElD,SAAS,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;IAE/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAElB,SAAS,EAAE,SAAS,EAAE,UAAU,GAAE,MAAY;IAUnD,SAAS,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI;IAIlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAGtC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAG/B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,WAAW,CAAC,KAAK,EAAE,MAAM;IAwBhC,OAAc,iBAAiB,UAAW,MAAM,KAAG,OAAO,CAAiC;IAEpF,iBAAiB,QAAO,MAAM,CAAqB;IAEnD,cAAc,UAAW,MAAM,QAAQ,MAAM,KAAG,WAAW,CAAuC;IAElG,eAAe,QAAO,MAAM,CAAgC;IAE5D,iBAAiB,QAAO,MAAM,CAAmD;IAEjF,2BAA2B,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAahF,SAAS,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,IAAI;IAOpF,SAAS,CAAC,cAAc,IAAI,IAAI;IAIzB,UAAU,IAAI,WAAW;WAKlB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;WAShC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;CAMnF"}
1
+ {"version":3,"file":"byte-writer.class.d.ts","sourceRoot":"","sources":["../../../src/parser/byte/byte-writer.class.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,8BAAsB,UAAW,YAAW,cAAc;IAElD,SAAS,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC;IAE/B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAElB,SAAS,EAAE,SAAS,EAAE,UAAU,GAAE,MAAY;IAUnD,SAAS,CAAC,KAAK,GAAE,MAAU,GAAG,IAAI;IAIlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAGtC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAInC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAG/B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ/B,cAAc,IAAI,IAAI;IAGtB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,WAAW,CAAC,KAAK,EAAE,MAAM;IAwBhC,OAAc,iBAAiB,UAAW,MAAM,KAAG,OAAO,CAAiC;IAEpF,iBAAiB,QAAO,MAAM,CAAqB;IAEnD,cAAc,UAAW,MAAM,QAAQ,MAAM,KAAG,WAAW,CAAuC;IAElG,eAAe,QAAO,MAAM,CAAgC;IAE5D,iBAAiB,QAAO,MAAM,CAAmD;IAEjF,2BAA2B,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAahF,SAAS,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,IAAI;IAOpF,SAAS,CAAC,cAAc,IAAI,IAAI;IAIzB,UAAU,IAAI,WAAW;WAKlB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;WAShC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;CAMnF"}
@@ -56,6 +56,9 @@ class ByteWriter {
56
56
  this.bufferView.setInt32(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
57
57
  this.currentByte += 4;
58
58
  }
59
+ writeInt32Zero() {
60
+ this.writeInt32(0);
61
+ }
59
62
  writeUint32(value) {
60
63
  this.extendBufferIfNeeded(4);
61
64
  this.bufferView.setUint32(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
@@ -1 +1 @@
1
- {"version":3,"file":"byte-writer.class.js","sourceRoot":"","sources":["../../../src/parser/byte/byte-writer.class.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Alignment } from \"./alignment.enum\";\nimport { BinaryWritable } from './binary-writable.interface';\n\n/** @public */\nexport abstract class ByteWriter implements BinaryWritable {\n\n\tpublic alignment: Alignment;\n\tprotected bufferArray: ArrayBuffer;\n\tprotected bufferView: DataView;\n\n\tprotected currentByte: number;\n\n\tconstructor(alignment: Alignment, bufferSize: number = 500) {\n\t\tthis.alignment = alignment;\n\t\tthis.bufferArray = new ArrayBuffer(bufferSize);\n\t\tthis.bufferView = new DataView(this.bufferArray);\n\t\tthis.currentByte = 0;\n\t}\n\n\t/*\n\t * Byte Manipulation\n\t */\n\tpublic skipBytes(count: number = 1): void {\n\t\tthis.extendBufferIfNeeded(count);\n\t\tthis.currentByte += count;\n\t}\n\tpublic jumpTo(pos: number): void {\n\t\tconst count = pos - this.getBufferPosition();\n\t\tthis.skipBytes(count);\n\t}\n\tpublic writeByte(value: number): void {\n\t\tthis.extendBufferIfNeeded(1);\n\t\tthis.bufferView.setUint8(this.currentByte, value);\n\t\tthis.currentByte += 1;\n\t}\n\tpublic writeBytesArray(bytes: number[]): void {\n\t\tthis.writeBytes(new Uint8Array(bytes));\n\t}\n\tpublic writeBytes(bytes: Uint8Array): void {\n\t\tthis.extendBufferIfNeeded(bytes.length);\n\t\tbytes.forEach(byte => this.bufferView.setUint8(this.currentByte++, byte));\n\t}\n\tpublic writeInt8(value: number): void {\n\t\tthis.extendBufferIfNeeded(1);\n\t\tthis.bufferView.setInt8(this.currentByte, value);\n\t\tthis.currentByte += 1;\n\t}\n\tpublic writeUint8(value: number): void {\n\t\tthis.writeByte(value);\n\t}\n\tpublic writeInt16(value: number): void {\n\t\tthis.extendBufferIfNeeded(2);\n\t\tthis.bufferView.setInt16(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t}\n\tpublic writeUint16(value: number): void {\n\t\tthis.extendBufferIfNeeded(2);\n\t\tthis.bufferView.setUint16(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t}\n\tpublic writeInt32(value: number): void {\n\t\tthis.extendBufferIfNeeded(4);\n\t\tthis.bufferView.setInt32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t}\n\tpublic writeUint32(value: number): void {\n\t\tthis.extendBufferIfNeeded(4);\n\t\tthis.bufferView.setUint32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t}\n\tpublic writeInt64(value: bigint): void {\n\t\tthis.extendBufferIfNeeded(8);\n\t\tthis.bufferView.setBigInt64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t}\n\tpublic writeUint64(value: bigint): void {\n\t\tthis.extendBufferIfNeeded(8);\n\t\tthis.bufferView.setBigUint64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t}\n\tpublic writeFloat32(value: number): void {\n\t\tthis.extendBufferIfNeeded(4);\n\t\tthis.bufferView.setFloat32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t}\n\tpublic writeDouble(value: number): void {\n\t\tthis.extendBufferIfNeeded(8);\n\t\tthis.bufferView.setFloat64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t}\n\tpublic writeString(value: string) {\n\t\tif (value.length === 0) {\n\t\t\tthis.writeInt32(0);\n\t\t\treturn;\n\t\t}\n\n\t\t// if it's safe to use ASCII, use UTF8.\n\t\tif (ByteWriter.IsASCIICompatible(value)) {\n\t\t\tthis.writeInt32(value.length + 1);\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tthis.writeByte(value.charCodeAt(i));\n\t\t\t}\n\t\t\tthis.writeUint8(0);\n\t\t}\n\t\t// write UTF16\n\t\telse {\n\t\t\tthis.writeInt32(-value.length - 1);\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tthis.writeUint16(value.charCodeAt(i));\n\t\t\t}\n\t\t\tthis.writeUint16(0);\n\t\t}\n\t}\n\n\tpublic static IsASCIICompatible = (value: string): boolean => /^[\\x00-\\x7F]*$/.test(value);\n\n\tpublic getBufferPosition = (): number => this.currentByte;\n\n\tpublic getBufferSlice = (start: number, end?: number): ArrayBuffer => this.bufferArray.slice(start, end);\n\n\tpublic getBufferLength = (): number => this.bufferArray.byteLength;\n\n\tpublic getBufferProgress = (): number => this.currentByte / this.bufferArray.byteLength;\n\n\tpublic writeBinarySizeFromPosition(lenIndicatorPos: number, start: number): void {\n\t\tconst after = this.getBufferPosition();\n\t\tconst writtenBytes = after - start;\n\t\tthis.jumpTo(lenIndicatorPos);\n\t\tthis.writeInt32(writtenBytes);\n\t\tthis.jumpTo(after);\n\t}\n\n\t/**\n\t * automatically extends the current buffer if the given space exceeds the available rest capacity of the current buffer.\n\t * @param countNeededBytes the needed space\n\t * @param factor how big the appended buffer should be in comparison to the current one. Values >= 1 make sense.\n\t */\n\tprotected extendBufferIfNeeded(countNeededBytes: number, factor: number = 1.5): void {\n\t\tif (this.currentByte + countNeededBytes > this.bufferView.byteLength) {\n\t\t\tthis.bufferArray = ByteWriter.AppendBuffer(this.bufferArray, new ArrayBuffer(factor * this.bufferArray.byteLength));\n\t\t\tthis.bufferView = new DataView(this.bufferArray);\n\t\t}\n\t}\n\n\tprotected truncateBuffer(): void {\n\t\tthis.bufferArray = this.bufferArray.slice(0, this.currentByte);\n\t}\n\n\tpublic endWriting(): ArrayBuffer {\n\t\tthis.truncateBuffer();\n\t\treturn this.bufferArray;\n\t}\n\n\tpublic static ToInt32(num: number): Uint8Array {\n\t\treturn new Uint8Array([\n\t\t\t(num & 0xff000000) >> 24,\n\t\t\t(num & 0x00ff0000) >> 16,\n\t\t\t(num & 0x0000ff00) >> 8,\n\t\t\t(num & 0x000000ff)\n\t\t]);\n\t}\n\n\tpublic static AppendBuffer(buffer1: ArrayBuffer, buffer2: ArrayBuffer): ArrayBuffer {\n\t\tvar tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n\t\ttmp.set(new Uint8Array(buffer1), 0);\n\t\ttmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n\t\treturn tmp.buffer;\n\t};\n}"]}
1
+ {"version":3,"file":"byte-writer.class.js","sourceRoot":"","sources":["../../../src/parser/byte/byte-writer.class.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Alignment } from \"./alignment.enum\";\nimport { BinaryWritable } from './binary-writable.interface';\n\n/** @public */\nexport abstract class ByteWriter implements BinaryWritable {\n\n\tpublic alignment: Alignment;\n\tprotected bufferArray: ArrayBuffer;\n\tprotected bufferView: DataView;\n\n\tprotected currentByte: number;\n\n\tconstructor(alignment: Alignment, bufferSize: number = 500) {\n\t\tthis.alignment = alignment;\n\t\tthis.bufferArray = new ArrayBuffer(bufferSize);\n\t\tthis.bufferView = new DataView(this.bufferArray);\n\t\tthis.currentByte = 0;\n\t}\n\n\t/*\n\t * Byte Manipulation\n\t */\n\tpublic skipBytes(count: number = 1): void {\n\t\tthis.extendBufferIfNeeded(count);\n\t\tthis.currentByte += count;\n\t}\n\tpublic jumpTo(pos: number): void {\n\t\tconst count = pos - this.getBufferPosition();\n\t\tthis.skipBytes(count);\n\t}\n\tpublic writeByte(value: number): void {\n\t\tthis.extendBufferIfNeeded(1);\n\t\tthis.bufferView.setUint8(this.currentByte, value);\n\t\tthis.currentByte += 1;\n\t}\n\tpublic writeBytesArray(bytes: number[]): void {\n\t\tthis.writeBytes(new Uint8Array(bytes));\n\t}\n\tpublic writeBytes(bytes: Uint8Array): void {\n\t\tthis.extendBufferIfNeeded(bytes.length);\n\t\tbytes.forEach(byte => this.bufferView.setUint8(this.currentByte++, byte));\n\t}\n\tpublic writeInt8(value: number): void {\n\t\tthis.extendBufferIfNeeded(1);\n\t\tthis.bufferView.setInt8(this.currentByte, value);\n\t\tthis.currentByte += 1;\n\t}\n\tpublic writeUint8(value: number): void {\n\t\tthis.writeByte(value);\n\t}\n\tpublic writeInt16(value: number): void {\n\t\tthis.extendBufferIfNeeded(2);\n\t\tthis.bufferView.setInt16(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t}\n\tpublic writeUint16(value: number): void {\n\t\tthis.extendBufferIfNeeded(2);\n\t\tthis.bufferView.setUint16(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 2;\n\t}\n\tpublic writeInt32(value: number): void {\n\t\tthis.extendBufferIfNeeded(4);\n\t\tthis.bufferView.setInt32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t}\n\t/**\n\t * Writes an int32 and we dismiss it, because its always 0.\n\t */\n\tpublic writeInt32Zero(): void {\n\t\tthis.writeInt32(0);\n\t}\n\tpublic writeUint32(value: number): void {\n\t\tthis.extendBufferIfNeeded(4);\n\t\tthis.bufferView.setUint32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t}\n\tpublic writeInt64(value: bigint): void {\n\t\tthis.extendBufferIfNeeded(8);\n\t\tthis.bufferView.setBigInt64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t}\n\tpublic writeUint64(value: bigint): void {\n\t\tthis.extendBufferIfNeeded(8);\n\t\tthis.bufferView.setBigUint64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t}\n\tpublic writeFloat32(value: number): void {\n\t\tthis.extendBufferIfNeeded(4);\n\t\tthis.bufferView.setFloat32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 4;\n\t}\n\tpublic writeDouble(value: number): void {\n\t\tthis.extendBufferIfNeeded(8);\n\t\tthis.bufferView.setFloat64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);\n\t\tthis.currentByte += 8;\n\t}\n\tpublic writeString(value: string) {\n\t\tif (value.length === 0) {\n\t\t\tthis.writeInt32(0);\n\t\t\treturn;\n\t\t}\n\n\t\t// if it's safe to use ASCII, use UTF8.\n\t\tif (ByteWriter.IsASCIICompatible(value)) {\n\t\t\tthis.writeInt32(value.length + 1);\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tthis.writeByte(value.charCodeAt(i));\n\t\t\t}\n\t\t\tthis.writeUint8(0);\n\t\t}\n\t\t// write UTF16\n\t\telse {\n\t\t\tthis.writeInt32(-value.length - 1);\n\t\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\t\tthis.writeUint16(value.charCodeAt(i));\n\t\t\t}\n\t\t\tthis.writeUint16(0);\n\t\t}\n\t}\n\n\tpublic static IsASCIICompatible = (value: string): boolean => /^[\\x00-\\x7F]*$/.test(value);\n\n\tpublic getBufferPosition = (): number => this.currentByte;\n\n\tpublic getBufferSlice = (start: number, end?: number): ArrayBuffer => this.bufferArray.slice(start, end);\n\n\tpublic getBufferLength = (): number => this.bufferArray.byteLength;\n\n\tpublic getBufferProgress = (): number => this.currentByte / this.bufferArray.byteLength;\n\n\tpublic writeBinarySizeFromPosition(lenIndicatorPos: number, start: number): void {\n\t\tconst after = this.getBufferPosition();\n\t\tconst writtenBytes = after - start;\n\t\tthis.jumpTo(lenIndicatorPos);\n\t\tthis.writeInt32(writtenBytes);\n\t\tthis.jumpTo(after);\n\t}\n\n\t/**\n\t * automatically extends the current buffer if the given space exceeds the available rest capacity of the current buffer.\n\t * @param countNeededBytes the needed space\n\t * @param factor how big the appended buffer should be in comparison to the current one. Values >= 1 make sense.\n\t */\n\tprotected extendBufferIfNeeded(countNeededBytes: number, factor: number = 1.5): void {\n\t\tif (this.currentByte + countNeededBytes > this.bufferView.byteLength) {\n\t\t\tthis.bufferArray = ByteWriter.AppendBuffer(this.bufferArray, new ArrayBuffer(factor * this.bufferArray.byteLength));\n\t\t\tthis.bufferView = new DataView(this.bufferArray);\n\t\t}\n\t}\n\n\tprotected truncateBuffer(): void {\n\t\tthis.bufferArray = this.bufferArray.slice(0, this.currentByte);\n\t}\n\n\tpublic endWriting(): ArrayBuffer {\n\t\tthis.truncateBuffer();\n\t\treturn this.bufferArray;\n\t}\n\n\tpublic static ToInt32(num: number): Uint8Array {\n\t\treturn new Uint8Array([\n\t\t\t(num & 0xff000000) >> 24,\n\t\t\t(num & 0x00ff0000) >> 16,\n\t\t\t(num & 0x0000ff00) >> 8,\n\t\t\t(num & 0x000000ff)\n\t\t]);\n\t}\n\n\tpublic static AppendBuffer(buffer1: ArrayBuffer, buffer2: ArrayBuffer): ArrayBuffer {\n\t\tvar tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n\t\ttmp.set(new Uint8Array(buffer1), 0);\n\t\ttmp.set(new Uint8Array(buffer2), buffer1.byteLength);\n\t\treturn tmp.buffer;\n\t};\n}"]}
@@ -0,0 +1,6 @@
1
+ import { ByteReader } from '../byte/byte-reader.class';
2
+ import { ReaderWriterContext } from './context';
3
+ export declare abstract class ContextReader extends ByteReader {
4
+ context: ReaderWriterContext;
5
+ }
6
+ //# sourceMappingURL=context-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-reader.d.ts","sourceRoot":"","sources":["../../../src/parser/context/context-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGhD,8BAAsB,aAAc,SAAQ,UAAU;IAC3C,OAAO,EAAE,mBAAmB,CAA6B;CACnE"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextReader = void 0;
4
+ const byte_reader_class_1 = require("../byte/byte-reader.class");
5
+ class ContextReader extends byte_reader_class_1.ByteReader {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.context = {};
9
+ }
10
+ }
11
+ exports.ContextReader = ContextReader;
12
+ ;
13
+ //# sourceMappingURL=context-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-reader.js","sourceRoot":"","sources":["../../../src/parser/context/context-reader.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AAIvD,MAAsB,aAAc,SAAQ,8BAAU;IAAtD;;QACW,YAAO,GAAwB,EAAyB,CAAC;IACpE,CAAC;CAAA;AAFD,sCAEC;AAAA,CAAC","sourcesContent":["import { ByteReader } from '../byte/byte-reader.class';\nimport { ReaderWriterContext } from './context';\n\n\nexport abstract class ContextReader extends ByteReader {\n public context: ReaderWriterContext = {} as ReaderWriterContext;\n};"]}
@@ -0,0 +1,6 @@
1
+ import { ByteWriter } from '../byte/byte-writer.class';
2
+ import { ReaderWriterContext } from './context';
3
+ export declare abstract class ContextWriter extends ByteWriter {
4
+ context: ReaderWriterContext;
5
+ }
6
+ //# sourceMappingURL=context-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-writer.d.ts","sourceRoot":"","sources":["../../../src/parser/context/context-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,8BAAsB,aAAc,SAAQ,UAAU;IAC3C,OAAO,EAAE,mBAAmB,CAA6B;CACnE"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextWriter = void 0;
4
+ const byte_writer_class_1 = require("../byte/byte-writer.class");
5
+ class ContextWriter extends byte_writer_class_1.ByteWriter {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.context = {};
9
+ }
10
+ }
11
+ exports.ContextWriter = ContextWriter;
12
+ ;
13
+ //# sourceMappingURL=context-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-writer.js","sourceRoot":"","sources":["../../../src/parser/context/context-writer.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AAGvD,MAAsB,aAAc,SAAQ,8BAAU;IAAtD;;QACW,YAAO,GAAwB,EAAyB,CAAC;IACpE,CAAC;CAAA;AAFD,sCAEC;AAAA,CAAC","sourcesContent":["import { ByteWriter } from '../byte/byte-writer.class';\nimport { ReaderWriterContext } from './context';\n\nexport abstract class ContextWriter extends ByteWriter {\n public context: ReaderWriterContext = {} as ReaderWriterContext;\n};"]}
@@ -0,0 +1,16 @@
1
+ import { ChunkCompressionInfo } from "../satisfactory/save/save-body-chunks";
2
+ export type ReaderWriterContext = SaveReaderWriterContext & BlueprintReaderWriterContext;
3
+ export type SaveReaderWriterContext = {
4
+ saveHeaderType: number;
5
+ saveVersion: number;
6
+ buildVersion: number;
7
+ mapName?: string;
8
+ compressionInfo?: ChunkCompressionInfo;
9
+ };
10
+ export type BlueprintReaderWriterContext = {
11
+ headerVersion: number;
12
+ saveVersion: number;
13
+ buildVersion: number;
14
+ blueprintConfigVersion: number;
15
+ };
16
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/parser/context/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAK7E,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,4BAA4B,CAAA;AAKxF,MAAM,MAAM,uBAAuB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CAC1C,CAAA;AAKD,MAAM,MAAM,4BAA4B,GAAG;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,MAAM,CAAC;CAClC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/parser/context/context.ts"],"names":[],"mappings":"","sourcesContent":["import { ChunkCompressionInfo } from \"../satisfactory/save/save-body-chunks\";\n\n/**\n * Merged Context Type for Saves and Blueprints.\n */\nexport type ReaderWriterContext = SaveReaderWriterContext & BlueprintReaderWriterContext\n\n/**\n * Context for reading/writing save files.\n */\nexport type SaveReaderWriterContext = {\n saveHeaderType: number;\n saveVersion: number;\n buildVersion: number;\n mapName?: string;\n compressionInfo?: ChunkCompressionInfo;\n}\n\n/**\n * Context for reading/writing blueprint files.\n */\nexport type BlueprintReaderWriterContext = {\n headerVersion: number;\n saveVersion: number;\n buildVersion: number;\n blueprintConfigVersion: number;\n}"]}
@@ -7,6 +7,9 @@ export declare class UnsupportedVersionError extends ParserError {
7
7
  export declare class CorruptSaveError extends ParserError {
8
8
  constructor(message?: string);
9
9
  }
10
+ export declare class CorruptBlueprintError extends ParserError {
11
+ constructor(message?: string);
12
+ }
10
13
  export declare class CompressionLibraryError extends ParserError {
11
14
  constructor(message?: string);
12
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.error.d.ts","sourceRoot":"","sources":["../../../src/parser/error/parser.error.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAY,SAAQ,KAAK;gBACtB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5C;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBACxC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBACxC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAC7B,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBACnC,OAAO,CAAC,EAAE,MAAM;CAG/B"}
1
+ {"version":3,"file":"parser.error.d.ts","sourceRoot":"","sources":["../../../src/parser/error/parser.error.ts"],"names":[],"mappings":"AAEA,qBAAa,WAAY,SAAQ,KAAK;gBACtB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI5C;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBACxC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,gBAAiB,SAAQ,WAAW;gBACjC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;gBACtC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBACxC,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAC7B,OAAO,CAAC,EAAE,MAAM;CAG/B;AAED,qBAAa,kBAAmB,SAAQ,WAAW;gBACnC,OAAO,CAAC,EAAE,MAAM;CAG/B"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnimplementedError = exports.TimeoutError = exports.CompressionLibraryError = exports.CorruptSaveError = exports.UnsupportedVersionError = exports.ParserError = void 0;
3
+ exports.UnimplementedError = exports.TimeoutError = exports.CompressionLibraryError = exports.CorruptBlueprintError = exports.CorruptSaveError = exports.UnsupportedVersionError = exports.ParserError = void 0;
4
4
  class ParserError extends Error {
5
5
  constructor(name, message) {
6
6
  super(message);
@@ -20,6 +20,12 @@ class CorruptSaveError extends ParserError {
20
20
  }
21
21
  }
22
22
  exports.CorruptSaveError = CorruptSaveError;
23
+ class CorruptBlueprintError extends ParserError {
24
+ constructor(message) {
25
+ super('CorruptBlueprintError', message ?? 'This blueprint data is most likely corrupt.');
26
+ }
27
+ }
28
+ exports.CorruptBlueprintError = CorruptBlueprintError;
23
29
  class CompressionLibraryError extends ParserError {
24
30
  constructor(message) {
25
31
  super('CompressionLibraryError', message ?? 'Failed to compress/decompress save data.');
@@ -1 +1 @@
1
- {"version":3,"file":"parser.error.js","sourceRoot":"","sources":["../../../src/parser/error/parser.error.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAY,SAAQ,KAAK;IAClC,YAAY,IAAY,EAAE,OAAe;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AALD,kCAKC;AAED,MAAa,uBAAwB,SAAQ,WAAW;IACpD,YAAY,OAAgB;QACxB,KAAK,CAAC,yBAAyB,EAAE,OAAO,IAAI,qCAAqC,CAAC,CAAC;IACvF,CAAC;CACJ;AAJD,0DAIC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC7C,YAAY,OAAgB;QACxB,KAAK,CAAC,kBAAkB,EAAE,OAAO,IAAI,wCAAwC,CAAC,CAAC;IACnF,CAAC;CACJ;AAJD,4CAIC;AAED,MAAa,uBAAwB,SAAQ,WAAW;IACpD,YAAY,OAAgB;QACxB,KAAK,CAAC,yBAAyB,EAAE,OAAO,IAAI,0CAA0C,CAAC,CAAC;IAC5F,CAAC;CACJ;AAJD,0DAIC;AAED,MAAa,YAAa,SAAQ,WAAW;IACzC,YAAY,OAAgB;QACxB,KAAK,CAAC,cAAc,EAAE,OAAO,IAAI,sBAAsB,CAAC,CAAC;IAC7D,CAAC;CACJ;AAJD,oCAIC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IAC/C,YAAY,OAAgB;QACxB,KAAK,CAAC,oBAAoB,EAAE,OAAO,IAAI,0BAA0B,CAAC,CAAC;IACvE,CAAC;CACJ;AAJD,gDAIC","sourcesContent":["\n\nexport class ParserError extends Error {\n constructor(name: string, message: string) {\n super(message);\n this.name = name;\n }\n}\n\nexport class UnsupportedVersionError extends ParserError {\n constructor(message?: string) {\n super('UnsupportedVersionError', message ?? 'This save version is not supported.');\n }\n}\n\nexport class CorruptSaveError extends ParserError {\n constructor(message?: string) {\n super('CorruptSaveError', message ?? 'This save data is most likely corrupt.');\n }\n}\n\nexport class CompressionLibraryError extends ParserError {\n constructor(message?: string) {\n super('CompressionLibraryError', message ?? 'Failed to compress/decompress save data.');\n }\n}\n\nexport class TimeoutError extends ParserError {\n constructor(message?: string) {\n super('TimeoutError', message ?? 'Operation timed out.');\n }\n}\n\nexport class UnimplementedError extends ParserError {\n constructor(message?: string) {\n super('UnimplementedError', message ?? 'Unimplemented Operation.');\n }\n}\n"]}
1
+ {"version":3,"file":"parser.error.js","sourceRoot":"","sources":["../../../src/parser/error/parser.error.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAY,SAAQ,KAAK;IAClC,YAAY,IAAY,EAAE,OAAe;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AALD,kCAKC;AAED,MAAa,uBAAwB,SAAQ,WAAW;IACpD,YAAY,OAAgB;QACxB,KAAK,CAAC,yBAAyB,EAAE,OAAO,IAAI,qCAAqC,CAAC,CAAC;IACvF,CAAC;CACJ;AAJD,0DAIC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC7C,YAAY,OAAgB;QACxB,KAAK,CAAC,kBAAkB,EAAE,OAAO,IAAI,wCAAwC,CAAC,CAAC;IACnF,CAAC;CACJ;AAJD,4CAIC;AAED,MAAa,qBAAsB,SAAQ,WAAW;IAClD,YAAY,OAAgB;QACxB,KAAK,CAAC,uBAAuB,EAAE,OAAO,IAAI,6CAA6C,CAAC,CAAC;IAC7F,CAAC;CACJ;AAJD,sDAIC;AAED,MAAa,uBAAwB,SAAQ,WAAW;IACpD,YAAY,OAAgB;QACxB,KAAK,CAAC,yBAAyB,EAAE,OAAO,IAAI,0CAA0C,CAAC,CAAC;IAC5F,CAAC;CACJ;AAJD,0DAIC;AAED,MAAa,YAAa,SAAQ,WAAW;IACzC,YAAY,OAAgB;QACxB,KAAK,CAAC,cAAc,EAAE,OAAO,IAAI,sBAAsB,CAAC,CAAC;IAC7D,CAAC;CACJ;AAJD,oCAIC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IAC/C,YAAY,OAAgB;QACxB,KAAK,CAAC,oBAAoB,EAAE,OAAO,IAAI,0BAA0B,CAAC,CAAC;IACvE,CAAC;CACJ;AAJD,gDAIC","sourcesContent":["\n\nexport class ParserError extends Error {\n constructor(name: string, message: string) {\n super(message);\n this.name = name;\n }\n}\n\nexport class UnsupportedVersionError extends ParserError {\n constructor(message?: string) {\n super('UnsupportedVersionError', message ?? 'This save version is not supported.');\n }\n}\n\nexport class CorruptSaveError extends ParserError {\n constructor(message?: string) {\n super('CorruptSaveError', message ?? 'This save data is most likely corrupt.');\n }\n}\n\nexport class CorruptBlueprintError extends ParserError {\n constructor(message?: string) {\n super('CorruptBlueprintError', message ?? 'This blueprint data is most likely corrupt.');\n }\n}\n\nexport class CompressionLibraryError extends ParserError {\n constructor(message?: string) {\n super('CompressionLibraryError', message ?? 'Failed to compress/decompress save data.');\n }\n}\n\nexport class TimeoutError extends ParserError {\n constructor(message?: string) {\n super('TimeoutError', message ?? 'Operation timed out.');\n }\n}\n\nexport class UnimplementedError extends ParserError {\n constructor(message?: string) {\n super('UnimplementedError', message ?? 'Unimplemented Operation.');\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
- import { ChunkSummary } from "./file.types";
2
1
  import { Blueprint } from "./satisfactory/blueprint/blueprint.types";
3
2
  import { SatisfactorySave } from "./satisfactory/save/satisfactory-save";
3
+ import { ChunkSummary } from './satisfactory/save/save-body-chunks';
4
4
  export declare class Parser {
5
- static ParseSave(name: string, bytes: ArrayBuffer, options?: Partial<{
6
- onDecompressedSaveBody: (buffer: ArrayBuffer) => void;
5
+ static ParseSave(name: string, bytes: ArrayBufferLike, options?: Partial<{
6
+ onDecompressedSaveBody: (buffer: ArrayBufferLike) => void;
7
7
  onProgressCallback: (progress: number, msg?: string) => void;
8
8
  }>): SatisfactorySave;
9
9
  static WriteSave(save: SatisfactorySave, onHeader: (header: Uint8Array) => void, onChunk: (chunk: Uint8Array) => void, options?: Partial<{
@@ -15,8 +15,8 @@ export declare class Parser {
15
15
  mainFileChunkSummary: ChunkSummary[];
16
16
  configFileBinary: ArrayBuffer;
17
17
  };
18
- static ParseBlueprintFiles(name: string, blueprintFile: Buffer, blueprintConfigFile: Buffer, options?: Partial<{
19
- onDecompressedBlueprintBody: (buffer: ArrayBuffer) => void;
18
+ static ParseBlueprintFiles(name: string, blueprintFile: ArrayBufferLike, blueprintConfigFile: ArrayBufferLike, options?: Partial<{
19
+ onDecompressedBlueprintBody: (buffer: ArrayBufferLike) => void;
20
20
  }>): Blueprint;
21
21
  static JSONStringifyModified: (obj: any, indent?: number) => string;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAMzE,qBAAa,MAAM;WASJ,SAAS,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,EAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,sBAAsB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;QACtD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAC5D,CAAC,GACA,gBAAgB;WA8CL,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EACtC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACpC,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,yBAAyB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;KACzD,CAAC,GACA,YAAY,EAAE;WAuBH,mBAAmB,CAChC,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,iCAAiC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;KACjE,CAAC,GACA;QACF,oBAAoB,EAAE,YAAY,EAAE,CAAC;QACrC,gBAAgB,EAAE,WAAW,CAAA;KAC7B;WAuCa,mBAAmB,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,mBAAmB,EAAE,MAAM,EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,2BAA2B,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;KAC1D,CAAC,GACA,SAAS;IAmCZ,OAAc,qBAAqB,QAAS,GAAG,WAAU,MAAM,KAAO,MAAM,CAQjE;CAEX"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAQpE,qBAAa,MAAM;WASJ,SAAS,CACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,sBAAsB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;QAC1D,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAC5D,CAAC,GACA,gBAAgB;WA0DL,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EACtC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACpC,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,yBAAyB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;KACzD,CAAC,GACA,YAAY,EAAE;WAuCH,mBAAmB,CAChC,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EAC9C,eAAe,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,iCAAiC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;KACjE,CAAC,GACA;QACF,oBAAoB,EAAE,YAAY,EAAE,CAAC;QACrC,gBAAgB,EAAE,WAAW,CAAA;KAC7B;WA+Ca,mBAAmB,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,eAAe,EAC9B,mBAAmB,EAAE,eAAe,EACpC,OAAO,CAAC,EAAE,OAAO,CAAC;QACjB,2BAA2B,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAA;KAC9D,CAAC,GACA,SAAS;IAoCZ,OAAc,qBAAqB,QAAS,GAAG,WAAU,MAAM,KAAO,MAAM,CAQjE;CAEX"}
@@ -2,50 +2,74 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Parser = void 0;
4
4
  const parser_error_1 = require("./error/parser.error");
5
+ const blueprint_config_1 = require("./satisfactory/blueprint/blueprint-config");
6
+ const blueprint_header_1 = require("./satisfactory/blueprint/blueprint-header");
5
7
  const blueprint_reader_1 = require("./satisfactory/blueprint/blueprint-reader");
6
8
  const blueprint_writer_1 = require("./satisfactory/blueprint/blueprint-writer");
7
9
  const satisfactory_save_1 = require("./satisfactory/save/satisfactory-save");
10
+ const satisfactory_save_header_1 = require("./satisfactory/save/satisfactory-save-header");
11
+ const save_custom_version_1 = require("./satisfactory/save/save-custom-version");
8
12
  const save_reader_1 = require("./satisfactory/save/save-reader");
9
13
  const save_writer_1 = require("./satisfactory/save/save-writer");
14
+ const ObjectReference_1 = require("./satisfactory/types/structs/ObjectReference");
10
15
  class Parser {
11
16
  static ParseSave(name, bytes, options) {
12
17
  const reader = new save_reader_1.SaveReader(bytes, options?.onProgressCallback);
13
- const header = reader.readHeader();
18
+ const header = satisfactory_save_header_1.SatisfactorySaveHeader.Parse(reader);
14
19
  const save = new satisfactory_save_1.SatisfactorySave(name, header);
15
- const roughSaveVersion = save_reader_1.SaveReader.GetRoughSaveVersion(header.saveVersion, header.saveHeaderType);
20
+ const roughSaveVersion = save_reader_1.SaveReader.GetRoughSaveVersion(header.saveVersion);
16
21
  if (roughSaveVersion === '<U6') {
17
- throw new parser_error_1.UnsupportedVersionError('Game Version < U6 is not supported.');
18
- }
19
- else if (roughSaveVersion === 'U6/U7') {
20
- throw new parser_error_1.UnsupportedVersionError('Game Version U6/U7 is not supported in this package version. Consider downgrading to the latest package version supporting it, which is 0.0.34');
21
- }
22
- else if (roughSaveVersion === 'U8') {
23
- throw new parser_error_1.UnsupportedVersionError('Game Version U8 is not supported in this package version. Consider downgrading to the latest package version supporting it, which is 0.3.7');
22
+ throw new parser_error_1.UnsupportedVersionError('Game Version < U6 is not supported in the parser. Please save the file in a newer game version.');
24
23
  }
25
24
  const inflateResult = reader.inflateChunks();
26
- save.compressionInfo = reader.compressionInfo;
25
+ save.compressionInfo = inflateResult.compressionInfo;
27
26
  if (options?.onDecompressedSaveBody !== undefined) {
28
27
  options.onDecompressedSaveBody(reader.getBuffer());
29
28
  }
30
- save.gridHash = reader.readSaveBodyHash();
31
- save.grids = reader.readGrids();
29
+ if (reader.context.saveVersion >= save_custom_version_1.SaveCustomVersion.IntroducedWorldPartition) {
30
+ save.gridHash = reader.readSaveBodyHash();
31
+ save.grids = reader.readGrids();
32
+ }
32
33
  save.levels = reader.readLevels();
34
+ const countUnresolvedWorldSaveData = reader.readInt32();
35
+ if (countUnresolvedWorldSaveData) {
36
+ save.unresolvedWorldSaveData = [];
37
+ for (let i = 0; i < countUnresolvedWorldSaveData; i++) {
38
+ save.unresolvedWorldSaveData.push(ObjectReference_1.ObjectReference.read(reader));
39
+ }
40
+ }
41
+ reader.onProgressCallback(reader.getBufferProgress(), 'finished parsing.');
33
42
  return save;
34
43
  }
35
44
  static WriteSave(save, onHeader, onChunk, options) {
36
45
  const writer = new save_writer_1.SaveWriter();
37
- save_writer_1.SaveWriter.WriteHeader(writer, save.header);
46
+ writer.context.saveHeaderType = save.header.saveHeaderType;
47
+ writer.context.saveVersion = save.header.saveVersion;
48
+ writer.context.buildVersion = save.header.buildVersion;
49
+ writer.context.mapName = save.header.mapName;
50
+ satisfactory_save_header_1.SatisfactorySaveHeader.Serialize(writer, save.header);
38
51
  const posAfterHeader = writer.getBufferPosition();
39
- save_writer_1.SaveWriter.WriteSaveBodyHash(writer, save.gridHash);
40
- save_writer_1.SaveWriter.WriteGrids(writer, save.grids);
41
- save_writer_1.SaveWriter.WriteLevels(writer, save, save.header.buildVersion);
52
+ if (writer.context.saveVersion >= save_custom_version_1.SaveCustomVersion.IntroducedWorldPartition) {
53
+ save_writer_1.SaveWriter.WriteSaveBodyHash(writer, save.gridHash);
54
+ save_writer_1.SaveWriter.WriteGrids(writer, save.grids);
55
+ }
56
+ save_writer_1.SaveWriter.WriteLevels(writer, save);
57
+ if (save.unresolvedWorldSaveData && save.unresolvedWorldSaveData.length > 0) {
58
+ writer.writeInt32(save.unresolvedWorldSaveData?.length ?? 0);
59
+ for (const actor of save.unresolvedWorldSaveData ?? []) {
60
+ ObjectReference_1.ObjectReference.write(writer, actor);
61
+ }
62
+ }
42
63
  writer.endWriting();
43
64
  const chunkSummary = writer.generateChunks(save.compressionInfo, posAfterHeader, options?.onBinaryBeforeCompressing ?? (() => { }), onHeader, onChunk);
44
65
  return chunkSummary;
45
66
  }
46
67
  static WriteBlueprintFiles(blueprint, onMainFileHeader, onMainFileChunk, options) {
47
68
  const blueprintWriter = new blueprint_writer_1.BlueprintWriter();
48
- blueprint_writer_1.BlueprintWriter.SerializeHeader(blueprintWriter, blueprint.header);
69
+ blueprintWriter.context.blueprintConfigVersion = blueprint.config.configVersion;
70
+ blueprintWriter.context.saveVersion = blueprint.header.saveVersion;
71
+ blueprintWriter.context.buildVersion = blueprint.header.buildVersion;
72
+ blueprint_header_1.BlueprintHeader.Serialize(blueprintWriter, blueprint.header);
49
73
  const saveBodyPos = blueprintWriter.getBufferPosition();
50
74
  blueprint_writer_1.BlueprintWriter.SerializeObjects(blueprintWriter, blueprint.objects);
51
75
  blueprintWriter.endWriting();
@@ -57,7 +81,10 @@ class Parser {
57
81
  onChunk: onMainFileChunk
58
82
  });
59
83
  const configWriter = new blueprint_writer_1.BlueprintConfigWriter();
60
- blueprint_writer_1.BlueprintConfigWriter.SerializeConfig(configWriter, blueprint.config);
84
+ configWriter.context.blueprintConfigVersion = blueprint.config.configVersion;
85
+ blueprintWriter.context.saveVersion = blueprint.header.saveVersion;
86
+ blueprintWriter.context.buildVersion = blueprint.header.buildVersion;
87
+ blueprint_config_1.BlueprintConfig.Serialize(configWriter, blueprint.config);
61
88
  const configFileBinary = configWriter.endWriting();
62
89
  return {
63
90
  mainFileChunkSummary,
@@ -65,10 +92,11 @@ class Parser {
65
92
  };
66
93
  }
67
94
  static ParseBlueprintFiles(name, blueprintFile, blueprintConfigFile, options) {
68
- const blueprintConfigReader = new blueprint_reader_1.BlueprintConfigReader(new Uint8Array(blueprintConfigFile).buffer);
69
- const config = blueprint_reader_1.BlueprintConfigReader.ParseConfig(blueprintConfigReader);
70
- const blueprintReader = new blueprint_reader_1.BlueprintReader(new Uint8Array(blueprintFile).buffer);
71
- const header = blueprint_reader_1.BlueprintReader.ReadHeader(blueprintReader);
95
+ const blueprintConfigReader = new blueprint_reader_1.BlueprintConfigReader(blueprintConfigFile);
96
+ const config = blueprint_config_1.BlueprintConfig.Parse(blueprintConfigReader);
97
+ const blueprintReader = new blueprint_reader_1.BlueprintReader(blueprintFile);
98
+ blueprintReader.context.blueprintConfigVersion = config.configVersion;
99
+ const header = blueprint_header_1.BlueprintHeader.Parse(blueprintReader);
72
100
  const inflateResult = blueprintReader.inflateChunks();
73
101
  if (options?.onDecompressedBlueprintBody !== undefined) {
74
102
  options.onDecompressedBlueprintBody(inflateResult.inflatedData);
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnsupportedVersionError } from './error/parser.error';\nimport { ChunkSummary } from \"./file.types\";\nimport { BlueprintConfigReader, BlueprintReader } from \"./satisfactory/blueprint/blueprint-reader\";\nimport { BlueprintConfigWriter, BlueprintWriter } from \"./satisfactory/blueprint/blueprint-writer\";\nimport { Blueprint } from \"./satisfactory/blueprint/blueprint.types\";\nimport { SatisfactorySave } from \"./satisfactory/save/satisfactory-save\";\nimport { SaveReader } from './satisfactory/save/save-reader';\nimport { SaveWriter } from \"./satisfactory/save/save-writer\";\n\n\n/** @public */\nexport class Parser {\n\n\t/**\n\t * Parses a given binary buffer as {@link SatisfactorySave}\n\t * @param name the save name. It won't be serialized, so it does not matter how you name it.\n\t * @param bytes the actual binary buffer\n\t * @param options provides callbacks. Either on the decompressed save body or on reported progress as a number [0,1] with an occasional message.\n\t * @returns \n\t */\n\tpublic static ParseSave(\n\t\tname: string,\n\t\tbytes: ArrayBuffer,\n\t\toptions?: Partial<{\n\t\t\tonDecompressedSaveBody: (buffer: ArrayBuffer) => void,\n\t\t\tonProgressCallback: (progress: number, msg?: string) => void\n\t\t}>\n\t): SatisfactorySave {\n\n\t\tconst reader = new SaveReader(bytes, options?.onProgressCallback);\n\n\t\tconst header = reader.readHeader();\n\t\tconst save = new SatisfactorySave(name, header);\n\n\t\t// guard save version\n\t\tconst roughSaveVersion = SaveReader.GetRoughSaveVersion(header.saveVersion, header.saveHeaderType);\n\t\tif (roughSaveVersion === '<U6') {\n\t\t\tthrow new UnsupportedVersionError('Game Version < U6 is not supported.');\n\t\t} else if (roughSaveVersion === 'U6/U7') {\n\t\t\tthrow new UnsupportedVersionError('Game Version U6/U7 is not supported in this package version. Consider downgrading to the latest package version supporting it, which is 0.0.34');\n\t\t} else if (roughSaveVersion === 'U8') {\n\t\t\tthrow new UnsupportedVersionError('Game Version U8 is not supported in this package version. Consider downgrading to the latest package version supporting it, which is 0.3.7');\n\t\t}\n\n\t\t// inflate chunks\n\t\tconst inflateResult = reader.inflateChunks();\n\t\tsave.compressionInfo = reader.compressionInfo;\n\n\t\t// call callback on decompressed save body\n\t\tif (options?.onDecompressedSaveBody !== undefined) {\n\t\t\toptions.onDecompressedSaveBody(reader.getBuffer());\n\t\t}\n\n\t\t// save body validation hash\n\t\tsave.gridHash = reader.readSaveBodyHash();\n\n\t\t// parse grids\n\t\tsave.grids = reader.readGrids();\n\n\t\t// parse levels\n\t\tsave.levels = reader.readLevels();\n\n\t\treturn save;\n\t}\n\n\t/**\n\t * serializes a {@link SatisfactorySave} into binary and reports back on individual callbacks.\n\t * @param save the {@link SatisfactorySave} to serialize into binary.\n\t * @param options provides callbacks. onBinaryBeforeCompressing gets called on the binary save body before it is compressed.\n\t * onHeader gets called on the binary save header, which is always uncompressed.\n\t * onChunk gets called when a chunk of the compressed save body was generated. Often, files' save bodies consist of multiple chunks.\n\t * @returns a summary of the generated chunks.\n\t */\n\tpublic static WriteSave(save: SatisfactorySave,\n\t\tonHeader: (header: Uint8Array) => void,\n\t\tonChunk: (chunk: Uint8Array) => void,\n\t\toptions?: Partial<{\n\t\t\tonBinaryBeforeCompressing: (buffer: ArrayBuffer) => void,\n\t\t}>\n\t): ChunkSummary[] {\n\n\t\tconst writer = new SaveWriter();\n\n\t\tSaveWriter.WriteHeader(writer, save.header);\n\t\tconst posAfterHeader = writer.getBufferPosition();\n\n\t\tSaveWriter.WriteSaveBodyHash(writer, save.gridHash);\n\t\tSaveWriter.WriteGrids(writer, save.grids);\n\t\tSaveWriter.WriteLevels(writer, save, save.header.buildVersion);\n\n\t\twriter.endWriting();\n\t\tconst chunkSummary = writer.generateChunks(save.compressionInfo!, posAfterHeader, options?.onBinaryBeforeCompressing ?? (() => { }), onHeader, onChunk);\n\t\treturn chunkSummary;\n\t}\n\n\t/**\n\t * Writes a {@link Blueprint} object to binary. And reports back on individual callbacks.\n\t * @param blueprint the blueprint to be written\n\t * @param options onMainFileBinaryBeforeCompressing gets called back when the main blueprint file binary is ready before compressing.\n\t * onMainFileHeader gets called back when the main blueprint file header is ready. onMainFileChunk gets called back when a main blueprint file chunk is ready.\n\t * @returns a chunk summary of the main file generated chunks. Plus the binary data of the config file, since it is often very small.\n\t */\n\tpublic static WriteBlueprintFiles(\n\t\tblueprint: Blueprint,\n\t\tonMainFileHeader: (header: Uint8Array) => void,\n\t\tonMainFileChunk: (chunk: Uint8Array) => void,\n\t\toptions?: Partial<{\n\t\t\tonMainFileBinaryBeforeCompressing: (binary: ArrayBuffer) => void,\n\t\t}>\n\t): {\n\t\tmainFileChunkSummary: ChunkSummary[],\n\t\tconfigFileBinary: ArrayBuffer\n\t} {\n\n\t\t// write main blueprint file\n\t\tconst blueprintWriter = new BlueprintWriter();\n\t\tBlueprintWriter.SerializeHeader(blueprintWriter, blueprint.header);\n\t\tconst saveBodyPos = blueprintWriter.getBufferPosition();\n\t\tBlueprintWriter.SerializeObjects(blueprintWriter, blueprint.objects);\n\t\tblueprintWriter.endWriting();\n\t\tlet binaryChunks: Uint8Array[] = [];\n\t\tlet binaryHeader: Uint8Array;\n\t\tconst mainFileChunkSummary = blueprintWriter.generateChunks(\n\t\t\tblueprint.compressionInfo,\n\t\t\tsaveBodyPos,\n\t\t\t{\n\t\t\t\tonBinaryBeforeCompressing: options?.onMainFileBinaryBeforeCompressing ?? (() => { }),\n\t\t\t\tonHeader: onMainFileHeader,\n\t\t\t\tonChunk: onMainFileChunk\n\t\t\t}\n\t\t);\n\n\t\t// write config as well.\n\t\tconst configWriter = new BlueprintConfigWriter();\n\t\tBlueprintConfigWriter.SerializeConfig(configWriter, blueprint.config);\n\t\tconst configFileBinary = configWriter.endWriting();\n\n\t\treturn {\n\t\t\tmainFileChunkSummary,\n\t\t\tconfigFileBinary\n\t\t}\n\t}\n\n\t/**\n\t * Parses two buffers (main blueprint file + config file) into a {@link Blueprint object}\n\t * @param name the name of the blueprint, since it is not part of the binary data and has to be passed.\n\t * @param blueprintFile the main blueprint file \".sbp\"\n\t * @param blueprintConfigFile the config blueprint file \".sbpcfg\"\n\t * @param options provides callbacks. onDecompressedBlueprintBody gets called when the body of the main blueprint file is decompressed.\n\t * @returns \n\t */\n\tpublic static ParseBlueprintFiles(\n\t\tname: string,\n\t\tblueprintFile: Buffer,\n\t\tblueprintConfigFile: Buffer,\n\t\toptions?: Partial<{\n\t\t\tonDecompressedBlueprintBody: (buffer: ArrayBuffer) => void\n\t\t}>\n\t): Blueprint {\n\n\t\t// read config file\n\t\tconst blueprintConfigReader = new BlueprintConfigReader(new Uint8Array(blueprintConfigFile).buffer);\n\t\tconst config = BlueprintConfigReader.ParseConfig(blueprintConfigReader);\n\n\t\t// read actual blueprint file\n\t\tconst blueprintReader = new BlueprintReader(new Uint8Array(blueprintFile).buffer);\n\t\tconst header = BlueprintReader.ReadHeader(blueprintReader);\n\t\tconst inflateResult = blueprintReader.inflateChunks();\n\n\t\t// call back on decompressed body.\n\t\tif (options?.onDecompressedBlueprintBody !== undefined) {\n\t\t\toptions.onDecompressedBlueprintBody(inflateResult.inflatedData);\n\t\t}\n\n\t\tconst blueprintObjects = BlueprintReader.ParseObjects(blueprintReader);\n\t\tconst blueprint: Blueprint = {\n\t\t\tname,\n\t\t\tcompressionInfo: blueprintReader.compressionInfo,\n\t\t\theader: header,\n\t\t\tconfig,\n\t\t\tobjects: blueprintObjects\n\t\t};\n\t\treturn blueprint;\n\t}\n\n\t/**\n\t * It JSON.stringifies any parsed content safely. The original JSON.stringify() has some flaws that get in the way, so it is custom wrapped. The original has some problems:\n\t * 1. it cannot stringify bigints. So we help out by converting it into a string.\n\t * 2. It cannot distinguish between 0 and -0. But a float32 is encoded in a uint8Array for 0 to be [0,0,0,0] (0x00000000) and -0 to be [0,0,0,128] (0x00000080) in little endian.\n\t * @param obj basically anything that can be stringified\n\t * @param indent the indentation, just like with the real JSON stringify.\n\t * @returns a string that is safely stringified.\n\t */\n\tpublic static JSONStringifyModified = (obj: any, indent: number = 0): string =>\n\t\tJSON.stringify(obj, (key, value) => {\n\t\t\tif (typeof value === 'bigint') {\n\t\t\t\treturn value.toString();\n\t\t\t} else if (value === 0 && 1 / value < 0) {\t// -0\n\t\t\t\treturn '-0';\n\t\t\t}\n\t\t\treturn value;\n\t\t}, indent)\n\n}"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { UnsupportedVersionError } from './error/parser.error';\nimport { BlueprintConfig } from './satisfactory/blueprint/blueprint-config';\nimport { BlueprintHeader } from './satisfactory/blueprint/blueprint-header';\nimport { BlueprintConfigReader, BlueprintReader } from \"./satisfactory/blueprint/blueprint-reader\";\nimport { BlueprintConfigWriter, BlueprintWriter } from \"./satisfactory/blueprint/blueprint-writer\";\nimport { Blueprint } from \"./satisfactory/blueprint/blueprint.types\";\nimport { SatisfactorySave } from \"./satisfactory/save/satisfactory-save\";\nimport { SatisfactorySaveHeader } from './satisfactory/save/satisfactory-save-header';\nimport { ChunkSummary } from './satisfactory/save/save-body-chunks';\nimport { SaveCustomVersion } from './satisfactory/save/save-custom-version';\nimport { SaveReader } from './satisfactory/save/save-reader';\nimport { SaveWriter } from \"./satisfactory/save/save-writer\";\nimport { ObjectReference } from './satisfactory/types/structs/ObjectReference';\n\n\n/** @public */\nexport class Parser {\n\n\t/**\n\t * Parses a given binary buffer as {@link SatisfactorySave}\n\t * @param name the save name. It won't be serialized, so it does not matter how you name it.\n\t * @param bytes the actual binary buffer\n\t * @param options provides callbacks. Either on the decompressed save body or on reported progress as a number [0,1] with an occasional message.\n\t * @returns \n\t */\n\tpublic static ParseSave(\n\t\tname: string,\n\t\tbytes: ArrayBufferLike,\n\t\toptions?: Partial<{\n\t\t\tonDecompressedSaveBody: (buffer: ArrayBufferLike) => void,\n\t\t\tonProgressCallback: (progress: number, msg?: string) => void\n\t\t}>\n\t): SatisfactorySave {\n\n\t\tconst reader = new SaveReader(bytes, options?.onProgressCallback);\n\n\t\tconst header = SatisfactorySaveHeader.Parse(reader);\n\t\tconst save = new SatisfactorySave(name, header);\n\n\t\t// guard save version\n\t\tconst roughSaveVersion = SaveReader.GetRoughSaveVersion(header.saveVersion);\n\t\tif (roughSaveVersion === '<U6') {\n\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}\n\n\t\t// inflate chunks\n\t\tconst inflateResult = reader.inflateChunks();\n\t\tsave.compressionInfo = inflateResult.compressionInfo;\n\n\t\t// call callback on decompressed save body\n\t\tif (options?.onDecompressedSaveBody !== undefined) {\n\t\t\toptions.onDecompressedSaveBody(reader.getBuffer());\n\t\t}\n\n\t\tif (reader.context.saveVersion >= SaveCustomVersion.IntroducedWorldPartition) {\n\n\t\t\t// save body validation hash\n\t\t\tsave.gridHash = reader.readSaveBodyHash();\n\n\t\t\t// parse grids\n\t\t\tsave.grids = reader.readGrids();\n\t\t}\n\n\n\t\t// parse levels\n\t\tsave.levels = reader.readLevels();\n\n\t\t// unresolved data, probably not even useful.\n\t\tconst countUnresolvedWorldSaveData = reader.readInt32();\n\t\tif (countUnresolvedWorldSaveData) {\n\t\t\tsave.unresolvedWorldSaveData = [];\n\t\t\tfor (let i = 0; i < countUnresolvedWorldSaveData; i++) {\n\t\t\t\tsave.unresolvedWorldSaveData.push(ObjectReference.read(reader));\n\t\t\t}\n\t\t}\n\n\t\treader.onProgressCallback(reader.getBufferProgress(), 'finished parsing.');\n\n\n\t\treturn save;\n\t}\n\n\t/**\n\t * serializes a {@link SatisfactorySave} into binary and reports back on individual callbacks.\n\t * @param save the {@link SatisfactorySave} to serialize into binary.\n\t * @param options provides callbacks. onBinaryBeforeCompressing gets called on the binary save body before it is compressed.\n\t * onHeader gets called on the binary save header, which is always uncompressed.\n\t * onChunk gets called when a chunk of the compressed save body was generated. Often, files' save bodies consist of multiple chunks.\n\t * @returns a summary of the generated chunks.\n\t */\n\tpublic static WriteSave(save: SatisfactorySave,\n\t\tonHeader: (header: Uint8Array) => void,\n\t\tonChunk: (chunk: Uint8Array) => void,\n\t\toptions?: Partial<{\n\t\t\tonBinaryBeforeCompressing: (buffer: ArrayBuffer) => void,\n\t\t}>\n\t): ChunkSummary[] {\n\n\t\tconst writer = new SaveWriter();\n\t\twriter.context.saveHeaderType = save.header.saveHeaderType;\n\t\twriter.context.saveVersion = save.header.saveVersion;\n\t\twriter.context.buildVersion = save.header.buildVersion;\n\t\twriter.context.mapName = save.header.mapName;\n\n\t\tSatisfactorySaveHeader.Serialize(writer, save.header);\n\t\tconst posAfterHeader = writer.getBufferPosition();\n\n\t\tif (writer.context.saveVersion >= SaveCustomVersion.IntroducedWorldPartition) {\n\t\t\tSaveWriter.WriteSaveBodyHash(writer, save.gridHash);\n\t\t\tSaveWriter.WriteGrids(writer, save.grids);\n\t\t}\n\n\t\tSaveWriter.WriteLevels(writer, save);\n\n\t\t// unresolved data\n\t\t// TODO: check if we ever encounter it.\n\t\tif (save.unresolvedWorldSaveData && save.unresolvedWorldSaveData.length > 0) {\n\t\t\twriter.writeInt32(save.unresolvedWorldSaveData?.length ?? 0);\n\t\t\tfor (const actor of save.unresolvedWorldSaveData ?? []) {\n\t\t\t\tObjectReference.write(writer, actor);\n\t\t\t}\n\t\t}\n\n\t\twriter.endWriting();\n\t\tconst chunkSummary = writer.generateChunks(save.compressionInfo!, posAfterHeader, options?.onBinaryBeforeCompressing ?? (() => { }), onHeader, onChunk);\n\t\treturn chunkSummary;\n\t}\n\n\t/**\n\t * Writes a {@link Blueprint} object to binary. And reports back on individual callbacks.\n\t * @param blueprint the blueprint to be written\n\t * @param options onMainFileBinaryBeforeCompressing gets called back when the main blueprint file binary is ready before compressing.\n\t * onMainFileHeader gets called back when the main blueprint file header is ready. onMainFileChunk gets called back when a main blueprint file chunk is ready.\n\t * @returns a chunk summary of the main file generated chunks. Plus the binary data of the config file, since it is often very small.\n\t */\n\tpublic static WriteBlueprintFiles(\n\t\tblueprint: Blueprint,\n\t\tonMainFileHeader: (header: Uint8Array) => void,\n\t\tonMainFileChunk: (chunk: Uint8Array) => void,\n\t\toptions?: Partial<{\n\t\t\tonMainFileBinaryBeforeCompressing: (binary: ArrayBuffer) => void,\n\t\t}>\n\t): {\n\t\tmainFileChunkSummary: ChunkSummary[],\n\t\tconfigFileBinary: ArrayBuffer\n\t} {\n\n\t\t// write main blueprint file\n\t\tconst blueprintWriter = new BlueprintWriter();\n\t\tblueprintWriter.context.blueprintConfigVersion = blueprint.config.configVersion;\n\t\tblueprintWriter.context.saveVersion = blueprint.header.saveVersion;\n\t\tblueprintWriter.context.buildVersion = blueprint.header.buildVersion;\n\n\t\tBlueprintHeader.Serialize(blueprintWriter, blueprint.header);\n\t\tconst saveBodyPos = blueprintWriter.getBufferPosition();\n\t\tBlueprintWriter.SerializeObjects(blueprintWriter, blueprint.objects);\n\t\tblueprintWriter.endWriting();\n\t\tlet binaryChunks: Uint8Array[] = [];\n\t\tlet binaryHeader: Uint8Array;\n\t\tconst mainFileChunkSummary = blueprintWriter.generateChunks(\n\t\t\tblueprint.compressionInfo,\n\t\t\tsaveBodyPos,\n\t\t\t{\n\t\t\t\tonBinaryBeforeCompressing: options?.onMainFileBinaryBeforeCompressing ?? (() => { }),\n\t\t\t\tonHeader: onMainFileHeader,\n\t\t\t\tonChunk: onMainFileChunk\n\t\t\t}\n\t\t);\n\n\t\t// write config as well.\n\t\tconst configWriter = new BlueprintConfigWriter();\n\t\tconfigWriter.context.blueprintConfigVersion = blueprint.config.configVersion;\n\t\tblueprintWriter.context.saveVersion = blueprint.header.saveVersion;\n\t\tblueprintWriter.context.buildVersion = blueprint.header.buildVersion;\n\n\t\tBlueprintConfig.Serialize(configWriter, blueprint.config);\n\t\tconst configFileBinary = configWriter.endWriting();\n\n\t\treturn {\n\t\t\tmainFileChunkSummary,\n\t\t\tconfigFileBinary\n\t\t}\n\t}\n\n\t/**\n\t * Parses two buffers (main blueprint file + config file) into a {@link Blueprint object}\n\t * @param name the name of the blueprint, since it is not part of the binary data and has to be passed.\n\t * @param blueprintFile the main blueprint file \".sbp\"\n\t * @param blueprintConfigFile the config blueprint file \".sbpcfg\"\n\t * @param options provides callbacks. onDecompressedBlueprintBody gets called when the body of the main blueprint file is decompressed.\n\t * @returns \n\t */\n\tpublic static ParseBlueprintFiles(\n\t\tname: string,\n\t\tblueprintFile: ArrayBufferLike,\n\t\tblueprintConfigFile: ArrayBufferLike,\n\t\toptions?: Partial<{\n\t\t\tonDecompressedBlueprintBody: (buffer: ArrayBufferLike) => void\n\t\t}>\n\t): Blueprint {\n\n\t\t// read config file\n\t\tconst blueprintConfigReader = new BlueprintConfigReader(blueprintConfigFile);\n\t\tconst config = BlueprintConfig.Parse(blueprintConfigReader);\n\n\t\t// read actual blueprint file. with context from config\n\t\tconst blueprintReader = new BlueprintReader(blueprintFile);\n\t\tblueprintReader.context.blueprintConfigVersion = config.configVersion;\n\t\tconst header = BlueprintHeader.Parse(blueprintReader);\n\t\tconst inflateResult = blueprintReader.inflateChunks();\n\n\t\t// call back on decompressed body.\n\t\tif (options?.onDecompressedBlueprintBody !== undefined) {\n\t\t\toptions.onDecompressedBlueprintBody(inflateResult.inflatedData);\n\t\t}\n\n\t\tconst blueprintObjects = BlueprintReader.ParseObjects(blueprintReader);\n\t\tconst blueprint: Blueprint = {\n\t\t\tname,\n\t\t\tcompressionInfo: blueprintReader.compressionInfo,\n\t\t\theader: header,\n\t\t\tconfig,\n\t\t\tobjects: blueprintObjects\n\t\t};\n\t\treturn blueprint;\n\t}\n\n\t/**\n\t * It JSON.stringifies any parsed content safely. The original JSON.stringify() has some flaws that get in the way, so it is custom wrapped. The original has some problems:\n\t * 1. it cannot stringify bigints. So we help out by converting it into a string.\n\t * 2. It cannot distinguish between 0 and -0. But a float32 is encoded in a uint8Array for 0 to be [0,0,0,0] (0x00000000) and -0 to be [0,0,0,128] (0x00000080) in little endian.\n\t * @param obj basically anything that can be stringified\n\t * @param indent the indentation, just like with the real JSON stringify.\n\t * @returns a string that is safely stringified.\n\t */\n\tpublic static JSONStringifyModified = (obj: any, indent: number = 0): string =>\n\t\tJSON.stringify(obj, (key, value) => {\n\t\t\tif (typeof value === 'bigint') {\n\t\t\t\treturn value.toString();\n\t\t\t} else if (value === 0 && 1 / value < 0) {\t// -0\n\t\t\t\treturn '-0';\n\t\t\t}\n\t\t\treturn value;\n\t\t}, indent)\n\n}"]}
@@ -0,0 +1,10 @@
1
+ export declare enum BlueprintConfigVersion {
2
+ InitialVersion = 0,
3
+ AddedMD5Hash = 1,
4
+ RemovedMD5Hash = 2,
5
+ AddedIconLibraryPath = 3,
6
+ AddedLastEditedBy = 4,
7
+ VersionPlusOne = 5,
8
+ LatestVersion = 4
9
+ }
10
+ //# sourceMappingURL=blueprint-config-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint-config-version.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/blueprint/blueprint-config-version.ts"],"names":[],"mappings":"AAIA,oBAAY,sBAAsB;IAC9B,cAAc,IAAA;IACd,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,oBAAoB,IAAA;IACpB,iBAAiB,IAAA;IACjB,cAAc,IAAA;IACd,aAAa,IAAqB;CACrC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlueprintConfigVersion = void 0;
4
+ var BlueprintConfigVersion;
5
+ (function (BlueprintConfigVersion) {
6
+ BlueprintConfigVersion[BlueprintConfigVersion["InitialVersion"] = 0] = "InitialVersion";
7
+ BlueprintConfigVersion[BlueprintConfigVersion["AddedMD5Hash"] = 1] = "AddedMD5Hash";
8
+ BlueprintConfigVersion[BlueprintConfigVersion["RemovedMD5Hash"] = 2] = "RemovedMD5Hash";
9
+ BlueprintConfigVersion[BlueprintConfigVersion["AddedIconLibraryPath"] = 3] = "AddedIconLibraryPath";
10
+ BlueprintConfigVersion[BlueprintConfigVersion["AddedLastEditedBy"] = 4] = "AddedLastEditedBy";
11
+ BlueprintConfigVersion[BlueprintConfigVersion["VersionPlusOne"] = 5] = "VersionPlusOne";
12
+ BlueprintConfigVersion[BlueprintConfigVersion["LatestVersion"] = 4] = "LatestVersion";
13
+ })(BlueprintConfigVersion || (exports.BlueprintConfigVersion = BlueprintConfigVersion = {}));
14
+ //# sourceMappingURL=blueprint-config-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blueprint-config-version.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/blueprint/blueprint-config-version.ts"],"names":[],"mappings":";;;AAIA,IAAY,sBAQX;AARD,WAAY,sBAAsB;IAC9B,uFAAc,CAAA;IACd,mFAAY,CAAA;IACZ,uFAAc,CAAA;IACd,mGAAoB,CAAA;IACpB,6FAAiB,CAAA;IACjB,uFAAc,CAAA;IACd,qFAAkC,CAAA;AACtC,CAAC,EARW,sBAAsB,sCAAtB,sBAAsB,QAQjC","sourcesContent":["\n/**\n * Source: FGFactoryBlueprintTypes.h\n */\nexport enum BlueprintConfigVersion {\n InitialVersion,\n AddedMD5Hash,\n RemovedMD5Hash,\n AddedIconLibraryPath,\n AddedLastEditedBy,\n VersionPlusOne,\n LatestVersion = VersionPlusOne - 1\n}"]}