@etothepii/satisfactory-file-parser 3.3.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +6 -0
- package/CHANGELOG.md +35 -4
- package/GUIDE.md +11 -7
- package/README.md +8 -6
- package/build/index.d.ts +112 -101
- package/build/index.d.ts.map +1 -1
- package/build/index.js +43 -40
- package/build/index.js.map +1 -1
- package/build/parser/byte/binary-readable.interface.d.ts +1 -0
- package/build/parser/byte/binary-readable.interface.d.ts.map +1 -1
- package/build/parser/byte/binary-readable.interface.js.map +1 -1
- package/build/parser/byte/byte-reader.class.d.ts +1 -0
- package/build/parser/byte/byte-reader.class.d.ts.map +1 -1
- package/build/parser/byte/byte-reader.class.js +6 -2
- package/build/parser/byte/byte-reader.class.js.map +1 -1
- package/build/parser/byte/byte-writer.class.d.ts +1 -0
- package/build/parser/byte/byte-writer.class.d.ts.map +1 -1
- package/build/parser/byte/byte-writer.class.js +6 -0
- package/build/parser/byte/byte-writer.class.js.map +1 -1
- package/build/parser/context/context-reader.d.ts +1 -1
- package/build/parser/context/context-reader.d.ts.map +1 -1
- package/build/parser/context/context-reader.js.map +1 -1
- package/build/parser/context/context-writer.d.ts +1 -1
- package/build/parser/context/context-writer.d.ts.map +1 -1
- package/build/parser/context/context-writer.js.map +1 -1
- package/build/parser/context/hierarchical-version-context.d.ts +11 -0
- package/build/parser/context/hierarchical-version-context.d.ts.map +1 -0
- package/build/parser/context/hierarchical-version-context.js +24 -0
- package/build/parser/context/hierarchical-version-context.js.map +1 -0
- package/build/parser/context/{context.d.ts → reader-writer-context.d.ts} +5 -3
- package/build/parser/context/reader-writer-context.d.ts.map +1 -0
- package/build/parser/context/{context.js → reader-writer-context.js} +1 -1
- package/build/parser/context/reader-writer-context.js.map +1 -0
- package/build/parser/parser.d.ts.map +1 -1
- package/build/parser/parser.js +36 -20
- package/build/parser/parser.js.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-config-version.d.ts +4 -2
- package/build/parser/satisfactory/blueprint/blueprint-config-version.d.ts.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-config-version.js +4 -2
- package/build/parser/satisfactory/blueprint/blueprint-config-version.js.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-config.d.ts +4 -5
- package/build/parser/satisfactory/blueprint/blueprint-config.d.ts.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-config.js +16 -14
- package/build/parser/satisfactory/blueprint/blueprint-config.js.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-header.d.ts +2 -0
- package/build/parser/satisfactory/blueprint/blueprint-header.d.ts.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-header.js +18 -2
- package/build/parser/satisfactory/blueprint/blueprint-header.js.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-reader.d.ts.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-reader.js +6 -2
- package/build/parser/satisfactory/blueprint/blueprint-reader.js.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-writer.d.ts.map +1 -1
- package/build/parser/satisfactory/blueprint/blueprint-writer.js +5 -2
- package/build/parser/satisfactory/blueprint/blueprint-writer.js.map +1 -1
- package/build/parser/satisfactory/save/data-blob.d.ts +17 -0
- package/build/parser/satisfactory/save/data-blob.d.ts.map +1 -0
- package/build/parser/satisfactory/save/data-blob.js +137 -0
- package/build/parser/satisfactory/save/data-blob.js.map +1 -0
- package/build/parser/satisfactory/save/level.d.ts +5 -10
- package/build/parser/satisfactory/save/level.d.ts.map +1 -1
- package/build/parser/satisfactory/save/level.js +52 -180
- package/build/parser/satisfactory/save/level.js.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save-header.d.ts.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save-header.js +5 -3
- package/build/parser/satisfactory/save/satisfactory-save-header.js.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save.d.ts +3 -1
- package/build/parser/satisfactory/save/satisfactory-save.d.ts.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save.js.map +1 -1
- package/build/parser/satisfactory/save/save-body-chunks.js +2 -2
- package/build/parser/satisfactory/save/save-body-chunks.js.map +1 -1
- package/build/parser/satisfactory/save/save-custom-version.d.ts +8 -2
- package/build/parser/satisfactory/save/save-custom-version.d.ts.map +1 -1
- package/build/parser/satisfactory/save/save-custom-version.js +8 -2
- package/build/parser/satisfactory/save/save-custom-version.js.map +1 -1
- package/build/parser/satisfactory/save/save-reader.d.ts +2 -2
- package/build/parser/satisfactory/save/save-reader.d.ts.map +1 -1
- package/build/parser/satisfactory/save/save-reader.js +16 -13
- package/build/parser/satisfactory/save/save-reader.js.map +1 -1
- package/build/parser/satisfactory/save/save-writer.d.ts.map +1 -1
- package/build/parser/satisfactory/save/save-writer.js +4 -1
- package/build/parser/satisfactory/save/save-writer.js.map +1 -1
- package/build/parser/satisfactory/save/save.types.d.ts +1 -1
- package/build/parser/satisfactory/save/save.types.d.ts.map +1 -1
- package/build/parser/satisfactory/save/save.types.js.map +1 -1
- package/build/parser/satisfactory/save/toc-blob.d.ts +18 -0
- package/build/parser/satisfactory/save/toc-blob.d.ts.map +1 -0
- package/build/parser/satisfactory/save/toc-blob.js +97 -0
- package/build/parser/satisfactory/save/toc-blob.js.map +1 -0
- package/build/parser/satisfactory/types/objects/SaveObject.d.ts +4 -0
- package/build/parser/satisfactory/types/objects/SaveObject.d.ts.map +1 -1
- package/build/parser/satisfactory/types/objects/SaveObject.js +19 -5
- package/build/parser/satisfactory/types/objects/SaveObject.js.map +1 -1
- package/build/parser/satisfactory/types/property/PropertiesList.d.ts +4 -4
- package/build/parser/satisfactory/types/property/PropertiesList.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/PropertiesList.js +73 -114
- package/build/parser/satisfactory/types/property/PropertiesList.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.d.ts +9 -12
- package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.js +12 -7
- package/build/parser/satisfactory/types/property/generic/AbstractBaseProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/BoolProperty.d.ts +10 -5
- package/build/parser/satisfactory/types/property/generic/BoolProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/BoolProperty.js +20 -23
- package/build/parser/satisfactory/types/property/generic/BoolProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/ByteProperty.d.ts +12 -7
- package/build/parser/satisfactory/types/property/generic/ByteProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/ByteProperty.js +37 -34
- package/build/parser/satisfactory/types/property/generic/ByteProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/DoubleProperty.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/DoubleProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/DoubleProperty.js +15 -23
- package/build/parser/satisfactory/types/property/generic/DoubleProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/EnumProperty.d.ts +10 -5
- package/build/parser/satisfactory/types/property/generic/EnumProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/EnumProperty.js +17 -23
- package/build/parser/satisfactory/types/property/generic/EnumProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/FloatProperty.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/FloatProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/FloatProperty.js +15 -23
- package/build/parser/satisfactory/types/property/generic/FloatProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Int64Property.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/Int64Property.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Int64Property.js +15 -23
- package/build/parser/satisfactory/types/property/generic/Int64Property.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Int8Property.d.ts +8 -4
- package/build/parser/satisfactory/types/property/generic/Int8Property.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Int8Property.js +11 -20
- package/build/parser/satisfactory/types/property/generic/Int8Property.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/IntProperty.d.ts +20 -0
- package/build/parser/satisfactory/types/property/generic/IntProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/IntProperty.js +25 -0
- package/build/parser/satisfactory/types/property/generic/IntProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/InterfaceProperty.d.ts +21 -0
- package/build/parser/satisfactory/types/property/generic/InterfaceProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/InterfaceProperty.js +26 -0
- package/build/parser/satisfactory/types/property/generic/InterfaceProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/NameProperty.d.ts +20 -0
- package/build/parser/satisfactory/types/property/generic/NameProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/NameProperty.js +25 -0
- package/build/parser/satisfactory/types/property/generic/NameProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/ObjectProperty.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/ObjectProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/ObjectProperty.js +15 -23
- package/build/parser/satisfactory/types/property/generic/ObjectProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/SingleProperty.d.ts +20 -0
- package/build/parser/satisfactory/types/property/generic/SingleProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/SingleProperty.js +25 -0
- package/build/parser/satisfactory/types/property/generic/SingleProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.js +15 -23
- package/build/parser/satisfactory/types/property/generic/SoftObjectProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/StrProperty.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/StrProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/StrProperty.js +15 -23
- package/build/parser/satisfactory/types/property/generic/StrProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/TextProperty.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/TextProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/TextProperty.js +38 -45
- package/build/parser/satisfactory/types/property/generic/TextProperty.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Uint32Property.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/Uint32Property.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Uint32Property.js +15 -23
- package/build/parser/satisfactory/types/property/generic/Uint32Property.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Uint64Property.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/Uint64Property.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Uint64Property.js +14 -22
- package/build/parser/satisfactory/types/property/generic/Uint64Property.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Uint8Property.d.ts +9 -5
- package/build/parser/satisfactory/types/property/generic/Uint8Property.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/Uint8Property.js +14 -22
- package/build/parser/satisfactory/types/property/generic/Uint8Property.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.d.ts +15 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.js +129 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.d.ts +55 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.js +24 -0
- package/build/parser/satisfactory/types/property/generic/containers/ArrayPropertySpecificTypes.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/MapProperty.d.ts +20 -0
- package/build/parser/satisfactory/types/property/generic/containers/MapProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/{MapProperty.js → containers/MapProperty.js} +52 -61
- package/build/parser/satisfactory/types/property/generic/containers/MapProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetProperty.d.ts +14 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetProperty.js +90 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.d.ts +34 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.js +17 -0
- package/build/parser/satisfactory/types/property/generic/containers/SetPropertySpecificTypes.js.map +1 -0
- package/build/parser/satisfactory/types/property/generic/containers/StructProperty.d.ts +59 -0
- package/build/parser/satisfactory/types/property/generic/containers/StructProperty.d.ts.map +1 -0
- package/build/parser/satisfactory/types/property/generic/{StructProperty.js → containers/StructProperty.js} +69 -82
- package/build/parser/satisfactory/types/property/generic/containers/StructProperty.js.map +1 -0
- package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.d.ts +2 -0
- package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.js +14 -5
- package/build/parser/satisfactory/types/property/special/BuildableSubsystemSpecialProperties.js.map +1 -1
- package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/special/PlayerSpecialProperties.js.map +1 -1
- package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.js +2 -2
- package/build/parser/satisfactory/types/property/special/PowerLineSpecialProperties.js.map +1 -1
- package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.d.ts +4 -2
- package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.js +4 -2
- package/build/parser/satisfactory/types/property/special/runtime-buildable-instance-data-version.js.map +1 -1
- package/build/parser/satisfactory/types/structs/GUIDInfo.d.ts +4 -4
- package/build/parser/satisfactory/types/structs/GUIDInfo.d.ts.map +1 -1
- package/build/parser/satisfactory/types/structs/GUIDInfo.js +6 -6
- package/build/parser/satisfactory/types/structs/GUIDInfo.js.map +1 -1
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.d.ts.map +1 -1
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.js +0 -2
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.js.map +1 -1
- package/build/parser/satisfactory/types/structs/SoftObjectReference.d.ts +1 -1
- package/build/parser/satisfactory/types/structs/SoftObjectReference.d.ts.map +1 -1
- package/build/parser/satisfactory/types/structs/SoftObjectReference.js +2 -2
- package/build/parser/satisfactory/types/structs/SoftObjectReference.js.map +1 -1
- package/build/parser/satisfactory/types/structs/binary/FCustomVersion.d.ts +12 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersion.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersion.js +21 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersion.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.d.ts +11 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.js +22 -0
- package/build/parser/satisfactory/types/structs/binary/FCustomVersionContainer.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FEngineVersion.d.ts +14 -0
- package/build/parser/satisfactory/types/structs/binary/FEngineVersion.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FEngineVersion.js +24 -0
- package/build/parser/satisfactory/types/structs/binary/FEngineVersion.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.d.ts +12 -0
- package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.js +22 -0
- package/build/parser/satisfactory/types/structs/binary/FLocalUserNetIdBundle.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.d.ts +11 -0
- package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.js +18 -0
- package/build/parser/satisfactory/types/structs/binary/FPackageFileVersion.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.d.ts +11 -0
- package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.js +38 -0
- package/build/parser/satisfactory/types/structs/binary/FPlayerInfoHandle.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTag.d.ts +30 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTag.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTag.js +182 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTag.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.d.ts +11 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.js +26 -0
- package/build/parser/satisfactory/types/structs/binary/FPropertyTagNode.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.d.ts +17 -0
- package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.js +27 -0
- package/build/parser/satisfactory/types/structs/binary/FSaveObjectVersionData.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.d.ts +11 -0
- package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.js +21 -0
- package/build/parser/satisfactory/types/structs/binary/FUniqueNetIdRepl.js.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.d.ts +12 -0
- package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.js +22 -0
- package/build/parser/satisfactory/types/structs/binary/LBBalancerIndexing.js.map +1 -0
- package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.d.ts +22 -0
- package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.js +40 -0
- package/build/parser/satisfactory/types/structs/mods/FicsItNetworks/FINLuaRuntimePersistenceState.js.map +1 -0
- package/build/parser/stream/reworked/readable-stream-parser.d.ts +2 -3
- package/build/parser/stream/reworked/readable-stream-parser.d.ts.map +1 -1
- package/build/parser/stream/reworked/readable-stream-parser.js +90 -50
- package/build/parser/stream/reworked/readable-stream-parser.js.map +1 -1
- package/build/parser/unreal-engine/ETextHistoryType.d.ts +17 -0
- package/build/parser/unreal-engine/ETextHistoryType.d.ts.map +1 -0
- package/build/parser/unreal-engine/ETextHistoryType.js +21 -0
- package/build/parser/unreal-engine/ETextHistoryType.js.map +1 -0
- package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.d.ts +24 -0
- package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.d.ts.map +1 -0
- package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.js +29 -0
- package/build/parser/unreal-engine/EUnrealEngineObjectUE5Version.js.map +1 -0
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/BlueprintConfigReader.html +4 -4
- package/docs/classes/BlueprintReader.html +4 -4
- package/docs/classes/CompressionLibraryError.html +27 -6
- package/docs/classes/ContextReader.html +4 -4
- package/docs/classes/ContextWriter.html +4 -4
- package/docs/classes/CorruptBlueprintError.html +27 -6
- package/docs/classes/CorruptSaveError.html +27 -6
- package/docs/classes/Parser.html +6 -6
- package/docs/classes/ParserError.html +27 -6
- package/docs/classes/ReadableStreamParser.html +2 -2
- package/docs/classes/SatisfactorySave.html +2 -2
- package/docs/classes/SaveComponent.html +2 -2
- package/docs/classes/SaveEntity.html +2 -2
- package/docs/classes/SaveObject.html +2 -2
- package/docs/classes/SaveReader.html +4 -4
- package/docs/classes/SaveStreamJsonStringifier.html +2 -2
- package/docs/classes/SaveStreamWriter.html +2 -2
- package/docs/classes/SaveWriter.html +4 -4
- package/docs/classes/TimeoutError.html +27 -6
- package/docs/classes/UnimplementedError.html +27 -6
- package/docs/classes/UnsupportedVersionError.html +27 -6
- package/docs/enums/Alignment.html +2 -2
- package/docs/enums/BlueprintConfigVersion.html +2 -2
- package/docs/enums/BlueprintHeaderVersion.html +2 -2
- package/docs/enums/CompressionAlgorithmCode.html +2 -2
- package/docs/enums/FactoryGameCustomVersion.html +2 -2
- package/docs/enums/RuntimeBuildableInstanceDataVersion.html +2 -2
- package/docs/enums/SaveCustomVersion.html +10 -10
- package/docs/enums/SaveHeaderType.html +2 -2
- package/docs/functions/AbstractBaseProperty.Create.html +1 -1
- package/docs/functions/ArrayProperty.CalcOverhead.html +1 -1
- package/docs/functions/ArrayProperty.Parse.html +1 -1
- package/docs/functions/ArrayProperty.Serialize.html +1 -1
- package/docs/functions/BlueprintConfig.Parse.html +1 -1
- package/docs/functions/BlueprintConfig.Serialize.html +1 -1
- package/docs/functions/BlueprintHeader.Parse.html +1 -1
- package/docs/functions/BlueprintHeader.Serialize.html +1 -1
- package/docs/functions/BoolArrayProperty.Parse.html +1 -1
- package/docs/functions/BoolArrayProperty.Serialize.html +1 -1
- package/docs/functions/BoolProperty.CalcOverhead.html +1 -1
- package/docs/functions/BoolProperty.Parse.html +1 -1
- package/docs/functions/BoolProperty.ReadValue.html +1 -1
- package/docs/functions/BoolProperty.Serialize.html +1 -1
- package/docs/functions/BoolProperty.SerializeValue.html +1 -1
- package/docs/functions/BuildableSubsystemSpecialProperties.Parse.html +1 -1
- package/docs/functions/BuildableSubsystemSpecialProperties.Serialize.html +1 -1
- package/docs/functions/BuildableTypeInstance.Parse.html +1 -1
- package/docs/functions/BuildableTypeInstance.Serialize.html +1 -1
- package/docs/functions/ByteArrayProperty.Parse.html +1 -1
- package/docs/functions/ByteArrayProperty.Serialize.html +1 -1
- package/docs/functions/ByteProperty.CalcOverhead.html +1 -1
- package/docs/functions/ByteProperty.Parse.html +1 -1
- package/docs/functions/ByteProperty.ReadValue.html +1 -1
- package/docs/functions/ByteProperty.Serialize.html +1 -1
- package/docs/functions/ByteProperty.SerializeValue.html +1 -1
- package/docs/functions/CircuitSpecialProperties.Parse.html +1 -1
- package/docs/functions/CircuitSpecialProperties.Serialize.html +1 -1
- package/docs/functions/ConveyorChainActorSpecialProperties.Parse.html +1 -1
- package/docs/functions/ConveyorChainActorSpecialProperties.Serialize.html +1 -1
- package/docs/functions/ConveyorSpecialProperties.Parse.html +1 -1
- package/docs/functions/ConveyorSpecialProperties.Serialize.html +1 -1
- package/docs/functions/DoubleArrayProperty.Parse.html +1 -1
- package/docs/functions/DoubleArrayProperty.Serialize.html +1 -1
- package/docs/functions/DoubleProperty.CalcOverhead.html +1 -1
- package/docs/functions/DoubleProperty.Parse.html +1 -1
- package/docs/functions/DoubleProperty.ReadValue.html +1 -1
- package/docs/functions/DoubleProperty.Serialize.html +1 -1
- package/docs/functions/DoubleProperty.SerializeValue.html +1 -1
- package/docs/functions/DynamicStructPropertyValue.read.html +1 -1
- package/docs/functions/DynamicStructPropertyValue.write.html +1 -1
- package/docs/functions/EmptySpecialProperties.Parse.html +1 -1
- package/docs/functions/EmptySpecialProperties.Serialize.html +1 -1
- package/docs/functions/EnumArrayProperty.Parse.html +1 -1
- package/docs/functions/EnumArrayProperty.Serialize.html +1 -1
- package/docs/functions/EnumProperty.CalcOverhead.html +1 -1
- package/docs/functions/EnumProperty.Parse.html +1 -1
- package/docs/functions/EnumProperty.ReadValue.html +1 -1
- package/docs/functions/EnumProperty.Serialize.html +1 -1
- package/docs/functions/EnumProperty.SerializeValue.html +1 -1
- package/docs/functions/FClientIdentityInfo.read.html +1 -1
- package/docs/functions/FClientIdentityInfo.write.html +1 -1
- package/docs/functions/FColor.read.html +1 -1
- package/docs/functions/FColor.write.html +1 -1
- package/docs/functions/FGDynamicStruct.Parse.html +1 -1
- package/docs/functions/FGDynamicStruct.Serialize.html +1 -1
- package/docs/functions/FICFrameRange.read.html +1 -1
- package/docs/functions/FICFrameRange.write.html +1 -1
- package/docs/functions/FINGPUT1BufferPixel.read.html +1 -1
- package/docs/functions/FINGPUT1BufferPixel.write.html +1 -1
- package/docs/functions/FINItemStateFileSystem.IsFINItemStateFileSystem.html +1 -1
- package/docs/functions/FINItemStateFileSystem.read.html +1 -1
- package/docs/functions/FINItemStateFileSystem.write.html +1 -1
- package/docs/functions/FINNetworkTrace.read.html +1 -1
- package/docs/functions/FINNetworkTrace.write.html +1 -1
- package/docs/functions/FLBBalancerIndexing.read.html +1 -1
- package/docs/functions/FLBBalancerIndexing.write.html +1 -1
- package/docs/functions/FLinearColor.read.html +1 -1
- package/docs/functions/FLinearColor.write.html +1 -1
- package/docs/functions/FloatArrayProperty.Parse.html +1 -1
- package/docs/functions/FloatArrayProperty.Serialize.html +1 -1
- package/docs/functions/FloatProperty.CalcOverhead.html +1 -1
- package/docs/functions/FloatProperty.Parse.html +1 -1
- package/docs/functions/FloatProperty.ReadValue.html +1 -1
- package/docs/functions/FloatProperty.Serialize.html +1 -1
- package/docs/functions/FloatProperty.SerializeValue.html +1 -1
- package/docs/functions/GUID.read.html +1 -1
- package/docs/functions/GUID.write.html +1 -1
- package/docs/functions/GUIDInfo.read.html +1 -1
- package/docs/functions/GUIDInfo.write.html +1 -1
- package/docs/functions/Int32ArrayProperty.Parse.html +1 -1
- package/docs/functions/Int32ArrayProperty.Serialize.html +1 -1
- package/docs/functions/Int32Property.CalcOverhead.html +1 -1
- package/docs/functions/Int32Property.Parse.html +1 -1
- package/docs/functions/Int32Property.ReadValue.html +1 -1
- package/docs/functions/Int32Property.Serialize.html +1 -1
- package/docs/functions/Int32Property.SerializeValue.html +1 -1
- package/docs/functions/Int32SetProperty.Parse.html +1 -1
- package/docs/functions/Int32SetProperty.Serialize.html +1 -1
- package/docs/functions/Int64ArrayProperty.Parse.html +1 -1
- package/docs/functions/Int64ArrayProperty.Serialize.html +1 -1
- package/docs/functions/Int64Property.CalcOverhead.html +1 -1
- package/docs/functions/Int64Property.Parse.html +1 -1
- package/docs/functions/Int64Property.ReadValue.html +1 -1
- package/docs/functions/Int64Property.Serialize.html +1 -1
- package/docs/functions/Int64Property.SerializeValue.html +1 -1
- package/docs/functions/Int8Property.CalcOverhead.html +1 -1
- package/docs/functions/Int8Property.Parse.html +1 -1
- package/docs/functions/Int8Property.ReadValue.html +1 -1
- package/docs/functions/Int8Property.Serialize.html +1 -1
- package/docs/functions/Int8Property.SerializeValue.html +1 -1
- package/docs/functions/Level.ReadAllObjectContents.html +1 -1
- package/docs/functions/Level.ReadAllObjectHeaders.html +1 -1
- package/docs/functions/Level.ReadLevel.html +1 -1
- package/docs/functions/Level.ReadNObjectContents.html +1 -1
- package/docs/functions/Level.ReadNObjectHeaders.html +1 -1
- package/docs/functions/Level.SerializeAllObjectContents.html +1 -1
- package/docs/functions/Level.SerializeAllObjectHeaders.html +1 -1
- package/docs/functions/Level.SerializeLevel.html +1 -1
- package/docs/functions/LevelToDestroyedActorsMap.read.html +1 -1
- package/docs/functions/LevelToDestroyedActorsMap.write.html +1 -1
- package/docs/functions/MD5Hash.read.html +1 -1
- package/docs/functions/MD5Hash.write.html +1 -1
- package/docs/functions/MapProperty.CalcOverhead.html +1 -1
- package/docs/functions/MapProperty.Parse.html +1 -1
- package/docs/functions/MapProperty.Serialize.html +1 -1
- package/docs/functions/ObjectArrayProperty.Parse.html +1 -1
- package/docs/functions/ObjectArrayProperty.Serialize.html +1 -1
- package/docs/functions/ObjectProperty.CalcOverhead.html +1 -1
- package/docs/functions/ObjectProperty.Parse.html +1 -1
- package/docs/functions/ObjectProperty.ReadValue.html +1 -1
- package/docs/functions/ObjectProperty.Serialize.html +1 -1
- package/docs/functions/ObjectProperty.SerializeValue.html +1 -1
- package/docs/functions/ObjectReference.IsEqual.html +1 -1
- package/docs/functions/ObjectReference.read.html +1 -1
- package/docs/functions/ObjectReference.write.html +1 -1
- package/docs/functions/ObjectSetProperty.Parse.html +1 -1
- package/docs/functions/ObjectSetProperty.Serialize.html +1 -1
- package/docs/functions/ObjectsListSpecialProperties.Parse.html +1 -1
- package/docs/functions/ObjectsListSpecialProperties.Serialize.html +1 -1
- package/docs/functions/PlayerSpecialProperties.Parse.html +1 -1
- package/docs/functions/PlayerSpecialProperties.Serialize.html +1 -1
- package/docs/functions/PowerLineSpecialProperties.Parse.html +1 -1
- package/docs/functions/PowerLineSpecialProperties.Serialize.html +1 -1
- package/docs/functions/PropertiesList.ParseList.html +1 -1
- package/docs/functions/PropertiesList.ParseSingleProperty.html +1 -1
- package/docs/functions/PropertiesList.SerializeList.html +1 -1
- package/docs/functions/PropertiesList.SerializeSingleProperty.html +1 -1
- package/docs/functions/SatisfactorySaveHeader.Parse.html +1 -1
- package/docs/functions/SatisfactorySaveHeader.Serialize.html +1 -1
- package/docs/functions/SaveBodyChunks.CompressDataIntoChunks.html +1 -1
- package/docs/functions/SaveBodyChunks.DecompressChunks.html +1 -1
- package/docs/functions/SaveBodyValidation.Parse.html +1 -1
- package/docs/functions/SaveBodyValidation.Serialize.html +1 -1
- package/docs/functions/SetProperty.CalcOverhead.html +1 -1
- package/docs/functions/SetProperty.Parse.html +1 -1
- package/docs/functions/SetProperty.Serialize.html +1 -1
- package/docs/functions/SoftObjectArrayProperty.Parse.html +1 -1
- package/docs/functions/SoftObjectArrayProperty.Serialize.html +1 -1
- package/docs/functions/SoftObjectProperty.CalcOverhead.html +1 -0
- package/docs/functions/SoftObjectProperty.Parse.html +1 -0
- package/docs/functions/SoftObjectProperty.ReadValue.html +1 -0
- package/docs/functions/SoftObjectProperty.Serialize.html +1 -0
- package/docs/functions/SoftObjectProperty.SerializeValue.html +1 -0
- package/docs/functions/SoftObjectReference.read.html +1 -1
- package/docs/functions/SoftObjectReference.write.html +1 -1
- package/docs/functions/SpecialDroneActionProperties.Parse.html +1 -1
- package/docs/functions/SpecialDroneActionProperties.Serialize.html +1 -1
- package/docs/functions/SpecialProperties.ParseClassSpecificSpecialProperties.html +1 -1
- package/docs/functions/SpecialProperties.SerializeClassSpecificSpecialProperties.html +1 -1
- package/docs/functions/StrArrayProperty.Parse.html +1 -1
- package/docs/functions/StrArrayProperty.Serialize.html +1 -1
- package/docs/functions/StrProperty.CalcOverhead.html +1 -1
- package/docs/functions/StrProperty.Parse.html +1 -1
- package/docs/functions/StrProperty.ReadValue.html +1 -1
- package/docs/functions/StrProperty.Serialize.html +1 -1
- package/docs/functions/StrProperty.SerializeValue.html +1 -1
- package/docs/functions/StrSetProperty.Parse.html +1 -1
- package/docs/functions/StrSetProperty.Serialize.html +1 -1
- package/docs/functions/StructArrayProperty.Parse.html +1 -1
- package/docs/functions/StructArrayProperty.Serialize.html +1 -1
- package/docs/functions/StructProperty.CalcOverhead.html +1 -1
- package/docs/functions/StructProperty.Parse.html +1 -1
- package/docs/functions/StructProperty.ParseValue.html +1 -1
- package/docs/functions/StructProperty.Serialize.html +1 -1
- package/docs/functions/StructProperty.SerializeValue.html +1 -1
- package/docs/functions/StructSetProperty.Parse.html +1 -1
- package/docs/functions/StructSetProperty.Serialize.html +1 -1
- package/docs/functions/TextArrayProperty.Parse.html +1 -1
- package/docs/functions/TextArrayProperty.Serialize.html +1 -1
- package/docs/functions/TextProperty.CalcOverhead.html +1 -1
- package/docs/functions/TextProperty.Parse.html +1 -1
- package/docs/functions/TextProperty.ReadValue.html +1 -1
- package/docs/functions/TextProperty.Serialize.html +1 -1
- package/docs/functions/TextProperty.SerializeValue.html +1 -1
- package/docs/functions/Transform.Parse.html +1 -1
- package/docs/functions/Transform.ParseF.html +1 -1
- package/docs/functions/Transform.Serialize.html +1 -1
- package/docs/functions/Transform.SerializeF.html +1 -1
- package/docs/functions/Uint32Property.CalcOverhead.html +1 -1
- package/docs/functions/Uint32Property.Parse.html +1 -1
- package/docs/functions/Uint32Property.ReadValue.html +1 -1
- package/docs/functions/Uint32Property.Serialize.html +1 -1
- package/docs/functions/Uint32Property.SerializeValue.html +1 -1
- package/docs/functions/Uint32SetProperty.Parse.html +1 -1
- package/docs/functions/Uint32SetProperty.Serialize.html +1 -1
- package/docs/functions/Uint64Property.CalcOverhead.html +1 -1
- package/docs/functions/Uint64Property.Parse.html +1 -1
- package/docs/functions/Uint64Property.ReadValue.html +1 -1
- package/docs/functions/Uint64Property.Serialize.html +1 -1
- package/docs/functions/Uint64Property.SerializeValue.html +1 -1
- package/docs/functions/Uint8Property.CalcOverhead.html +1 -1
- package/docs/functions/Uint8Property.Parse.html +1 -1
- package/docs/functions/Uint8Property.ReadValue.html +1 -1
- package/docs/functions/Uint8Property.Serialize.html +1 -1
- package/docs/functions/Uint8Property.SerializeValue.html +1 -1
- package/docs/functions/VehiclePhysicsData.Parse.html +1 -1
- package/docs/functions/VehiclePhysicsData.Serialize.html +1 -1
- package/docs/functions/VehicleSpecialProperties.Parse.html +1 -1
- package/docs/functions/VehicleSpecialProperties.Serialize.html +1 -1
- package/docs/functions/col4.ParseBGRA.html +1 -1
- package/docs/functions/col4.ParseRGBA.html +1 -1
- package/docs/functions/col4.SerializeBGRA.html +1 -1
- package/docs/functions/col4.SerializeRGBA.html +1 -1
- package/docs/functions/isArrayProperty.html +1 -1
- package/docs/functions/isBoolArrayProperty.html +1 -1
- package/docs/functions/isBoolProperty.html +1 -1
- package/docs/functions/isBuildableSubsystemSpecialProperties.html +1 -1
- package/docs/functions/isByteArrayProperty.html +1 -1
- package/docs/functions/isByteProperty.html +1 -1
- package/docs/functions/isCircuitSpecialProperties.html +1 -1
- package/docs/functions/isConveyorChainActorSpecialProperties.html +1 -1
- package/docs/functions/isConveyorSpecialProperties.html +1 -1
- package/docs/functions/isDoubleArrayProperty.html +1 -1
- package/docs/functions/isDoubleProperty.html +1 -1
- package/docs/functions/isEmptySpecialProperties.html +1 -1
- package/docs/functions/isEnumArrayProperty.html +1 -1
- package/docs/functions/isEnumProperty.html +1 -1
- package/docs/functions/isFloatArrayProperty.html +1 -1
- package/docs/functions/isFloatProperty.html +1 -1
- package/docs/functions/isInt32ArrayProperty.html +1 -1
- package/docs/functions/isInt32Property.html +1 -1
- package/docs/functions/isInt32SetProperty.html +1 -1
- package/docs/functions/isInt64ArrayProperty.html +1 -1
- package/docs/functions/isInt64Property.html +1 -1
- package/docs/functions/isInt8Property.html +1 -1
- package/docs/functions/isMapProperty.html +1 -1
- package/docs/functions/isObjectArrayProperty.html +1 -1
- package/docs/functions/isObjectProperty.html +1 -1
- package/docs/functions/isObjectSetProperty.html +1 -1
- package/docs/functions/isObjectsListSpecialProperties.html +1 -1
- package/docs/functions/isPlayerSpecialProperties.html +1 -1
- package/docs/functions/isPowerLineSpecialProperties.html +1 -1
- package/docs/functions/isSaveComponent.html +1 -1
- package/docs/functions/isSaveEntity.html +1 -1
- package/docs/functions/isSetProperty.html +1 -1
- package/docs/functions/isSoftObjectArrayProperty.html +1 -1
- package/docs/functions/isSoftObjectProperty.html +1 -0
- package/docs/functions/isSpecialDroneActionProperties.html +1 -1
- package/docs/functions/isStrArrayProperty.html +1 -1
- package/docs/functions/isStrProperty.html +1 -1
- package/docs/functions/isStrSetProperty.html +1 -1
- package/docs/functions/isStructArrayProperty.html +1 -1
- package/docs/functions/isStructProperty.html +1 -1
- package/docs/functions/isStructSetProperty.html +1 -1
- package/docs/functions/isTextArrayProperty.html +1 -1
- package/docs/functions/isTextProperty.html +1 -1
- package/docs/functions/isUInt64Property.html +1 -1
- package/docs/functions/isUint32Property.html +1 -1
- package/docs/functions/isUint32SetProperty.html +1 -1
- package/docs/functions/isUint8Property.html +1 -1
- package/docs/functions/isVehicleSpecialProperties.html +1 -1
- package/docs/functions/vec2.Parse.html +1 -1
- package/docs/functions/vec2.ParseF.html +1 -1
- package/docs/functions/vec2.Serialize.html +1 -1
- package/docs/functions/vec2.SerializeF.html +1 -1
- package/docs/functions/vec3.Parse.html +1 -1
- package/docs/functions/vec3.ParseF.html +1 -1
- package/docs/functions/vec3.ParseInt.html +1 -1
- package/docs/functions/vec3.Serialize.html +1 -1
- package/docs/functions/vec3.SerializeF.html +1 -1
- package/docs/functions/vec3.SerializeInt.html +1 -1
- package/docs/functions/vec3.add.html +1 -1
- package/docs/functions/vec3.length.html +1 -1
- package/docs/functions/vec3.mult.html +1 -1
- package/docs/functions/vec3.norm.html +1 -1
- package/docs/functions/vec3.sub.html +1 -1
- package/docs/functions/vec4.Parse.html +1 -1
- package/docs/functions/vec4.ParseF.html +1 -1
- package/docs/functions/vec4.Serialize.html +1 -1
- package/docs/functions/vec4.SerializeF.html +1 -1
- package/docs/index.html +3 -2
- package/docs/interfaces/Blueprint.html +2 -2
- package/docs/interfaces/BlueprintConfig-1.html +2 -2
- package/docs/interfaces/SaveComponentHeader.html +2 -2
- package/docs/interfaces/SaveEntityHeader.html +2 -2
- package/docs/interfaces/SaveObjectHeader.html +2 -2
- package/docs/modules/AbstractBaseProperty.html +1 -1
- package/docs/modules/ArrayProperty.html +1 -1
- package/docs/modules/BlueprintConfig.html +1 -1
- package/docs/modules/BlueprintHeader.html +1 -1
- package/docs/modules/BoolArrayProperty.html +1 -1
- package/docs/modules/BoolProperty.html +1 -1
- package/docs/modules/BuildableSubsystemSpecialProperties.html +1 -1
- package/docs/modules/BuildableTypeInstance.html +1 -1
- package/docs/modules/ByteArrayProperty.html +1 -1
- package/docs/modules/ByteProperty.html +1 -1
- package/docs/modules/CircuitSpecialProperties.html +1 -1
- package/docs/modules/ConveyorChainActorSpecialProperties.html +1 -1
- package/docs/modules/ConveyorSpecialProperties.html +1 -1
- package/docs/modules/DoubleArrayProperty.html +1 -1
- package/docs/modules/DoubleProperty.html +1 -1
- package/docs/modules/DynamicStructPropertyValue.html +1 -1
- package/docs/modules/EmptySpecialProperties.html +1 -1
- package/docs/modules/EnumArrayProperty.html +1 -1
- package/docs/modules/EnumProperty.html +1 -1
- package/docs/modules/FClientIdentityInfo.html +1 -1
- package/docs/modules/FColor.html +1 -1
- package/docs/modules/FGDynamicStruct.html +1 -1
- package/docs/modules/FICFrameRange.html +1 -1
- package/docs/modules/FINGPUT1BufferPixel.html +1 -1
- package/docs/modules/FINItemStateFileSystem.html +1 -1
- package/docs/modules/FINNetworkTrace.html +1 -1
- package/docs/modules/FLBBalancerIndexing.html +1 -1
- package/docs/modules/FLinearColor.html +1 -1
- package/docs/modules/FloatArrayProperty.html +1 -1
- package/docs/modules/FloatProperty.html +1 -1
- package/docs/modules/GUID.html +1 -1
- package/docs/modules/GUIDInfo.html +1 -1
- package/docs/modules/Int32ArrayProperty.html +1 -1
- package/docs/modules/Int32Property.html +1 -1
- package/docs/modules/Int32SetProperty.html +1 -1
- package/docs/modules/Int64ArrayProperty.html +1 -1
- package/docs/modules/Int64Property.html +1 -1
- package/docs/modules/Int8Property.html +1 -1
- package/docs/modules/Level.html +1 -1
- package/docs/modules/LevelToDestroyedActorsMap.html +1 -1
- package/docs/modules/MD5Hash.html +1 -1
- package/docs/modules/MapProperty.html +1 -1
- package/docs/modules/ObjectArrayProperty.html +1 -1
- package/docs/modules/ObjectProperty.html +1 -1
- package/docs/modules/ObjectReference.html +1 -1
- package/docs/modules/ObjectSetProperty.html +1 -1
- package/docs/modules/ObjectsListSpecialProperties.html +1 -1
- package/docs/modules/PlayerSpecialProperties.html +1 -1
- package/docs/modules/PowerLineSpecialProperties.html +1 -1
- package/docs/modules/PropertiesList.html +1 -1
- package/docs/modules/SatisfactorySaveHeader.html +1 -1
- package/docs/modules/SaveBodyChunks.html +1 -1
- package/docs/modules/SaveBodyValidation.html +1 -1
- package/docs/modules/SetProperty.html +1 -1
- package/docs/modules/SoftObjectArrayProperty.html +1 -1
- package/docs/modules/SoftObjectProperty.html +6 -0
- package/docs/modules/SoftObjectReference.html +1 -1
- package/docs/modules/SpecialDroneActionProperties.html +1 -1
- package/docs/modules/SpecialProperties.html +1 -1
- package/docs/modules/StrArrayProperty.html +1 -1
- package/docs/modules/StrProperty.html +1 -1
- package/docs/modules/StrSetProperty.html +1 -1
- package/docs/modules/StructArrayProperty.html +1 -1
- package/docs/modules/StructProperty.html +1 -1
- package/docs/modules/StructSetProperty.html +1 -1
- package/docs/modules/TextArrayProperty.html +1 -1
- package/docs/modules/TextProperty.html +1 -1
- package/docs/modules/Transform.html +1 -1
- package/docs/modules/Uint32Property.html +1 -1
- package/docs/modules/Uint32SetProperty.html +1 -1
- package/docs/modules/Uint64Property.html +1 -1
- package/docs/modules/Uint8Property.html +1 -1
- package/docs/modules/VehiclePhysicsData.html +1 -1
- package/docs/modules/VehicleSpecialProperties.html +1 -1
- package/docs/modules/col4.html +1 -1
- package/docs/modules/vec2.html +1 -1
- package/docs/modules/vec3.html +1 -1
- package/docs/modules/vec4.html +1 -1
- package/docs/modules.html +3 -0
- package/docs/types/AbstractBaseProperty-1.html +1 -1
- package/docs/types/ArrayProperty.AvailableArrayPropertyTypes.html +1 -1
- package/docs/types/ArrayPropertyStructValueFields.html +1 -1
- package/docs/types/BasicMultipleStructPropertyValue.html +1 -1
- package/docs/types/BasicStructPropertyValue.html +1 -1
- package/docs/types/BlueprintHeader-1.html +1 -1
- package/docs/types/BlueprintReaderWriterContext.html +1 -1
- package/docs/types/BoolArrayProperty-1.html +1 -1
- package/docs/types/BoolProperty-1.html +1 -1
- package/docs/types/BoxStructPropertyValue.html +1 -1
- package/docs/types/BuildableSubsystemSpecialProperties-1.html +1 -1
- package/docs/types/BuildableTypeInstance-1.html +1 -1
- package/docs/types/ByteArrayProperty-1.html +1 -1
- package/docs/types/ByteProperty-1.html +1 -1
- package/docs/types/BytePropertyValue.html +1 -1
- package/docs/types/ChunkCompressionInfo.html +1 -1
- package/docs/types/ChunkSummary.html +1 -1
- package/docs/types/CircuitSpecialProperties-1.html +1 -1
- package/docs/types/ConveyorChainActorSpecialProperties-1.html +1 -1
- package/docs/types/ConveyorChainSegmentSpecialProperties.html +1 -1
- package/docs/types/ConveyorItemSpecialProperties.html +1 -1
- package/docs/types/ConveyorSpecialProperties-1.html +1 -1
- package/docs/types/DoubleArrayProperty-1.html +1 -1
- package/docs/types/DoubleProperty-1.html +1 -1
- package/docs/types/DynamicStructPropertyValue-1.html +1 -1
- package/docs/types/EmptySpecialProperties-1.html +1 -1
- package/docs/types/EnumArrayProperty-1.html +1 -1
- package/docs/types/EnumProperty-1.html +1 -1
- package/docs/types/FClientIdentityInfo-1.html +1 -1
- package/docs/types/FColor-1.html +1 -1
- package/docs/types/FGDynamicStruct-1.html +1 -1
- package/docs/types/FICFrameRange-1.html +1 -1
- package/docs/types/FICFrameRangeStructPropertyValue.html +1 -1
- package/docs/types/FINGPUT1BufferPixel-1.html +1 -1
- package/docs/types/FINItemStateFileSystem-1.html +1 -1
- package/docs/types/FINNetworkTrace-1.html +1 -1
- package/docs/types/FLBBalancerIndexing-1.html +1 -1
- package/docs/types/FLinearColor-1.html +1 -1
- package/docs/types/FloatArrayProperty-1.html +1 -1
- package/docs/types/FloatProperty-1.html +1 -1
- package/docs/types/GENERIC_MAP_KEY_TYPE.html +1 -1
- package/docs/types/GENERIC_MAP_VALUE_TYPE.html +1 -1
- package/docs/types/GENERIC_STRUCT_PROPERTY_VALUE.html +1 -1
- package/docs/types/GUID-1.html +1 -1
- package/docs/types/GUIDInfo-1.html +1 -1
- package/docs/types/Grids.html +1 -1
- package/docs/types/Int32ArrayProperty-1.html +1 -1
- package/docs/types/Int32Property-1.html +1 -1
- package/docs/types/Int32SetProperty-1.html +1 -1
- package/docs/types/Int64ArrayProperty-1.html +1 -1
- package/docs/types/Int64Property-1.html +1 -1
- package/docs/types/Int8Property-1.html +1 -1
- package/docs/types/InventoryItemStructPropertyValue.html +1 -1
- package/docs/types/Level-1.html +1 -1
- package/docs/types/LevelToDestroyedActorsMap-1.html +1 -1
- package/docs/types/Levels.html +1 -1
- package/docs/types/MAP_STRUCT_PROXY.html +1 -1
- package/docs/types/MD5Hash-1.html +1 -1
- package/docs/types/MapProperty-1.html +1 -1
- package/docs/types/ModData.html +1 -1
- package/docs/types/ObjectArrayProperty-1.html +1 -1
- package/docs/types/ObjectProperty-1.html +1 -1
- package/docs/types/ObjectReference-1.html +1 -1
- package/docs/types/ObjectSetProperty-1.html +1 -1
- package/docs/types/ObjectsListSpecialProperties-1.html +1 -1
- package/docs/types/PlayerSpecialProperties-1.html +1 -1
- package/docs/types/PowerLineSpecialProperties-1.html +1 -1
- package/docs/types/PropertiesMap.html +1 -1
- package/docs/types/RailroadTrackPositionStructPropertyValue.html +1 -1
- package/docs/types/ReaderWriterContext.html +1 -1
- package/docs/types/RoughSaveVersion.html +1 -1
- package/docs/types/SatisfactoryModMetadata.html +1 -1
- package/docs/types/SatisfactorySaveHeader-1.html +1 -1
- package/docs/types/SaveBodyChunks-1.html +1 -1
- package/docs/types/SaveBodyValidation-1.html +1 -1
- package/docs/types/SaveReaderWriterContext.html +1 -1
- package/docs/types/SetProperty.AvailableSetPropertyTypes.html +1 -1
- package/docs/types/SoftObjectArrayProperty-1.html +1 -1
- package/docs/types/SoftObjectProperty-1.html +1 -0
- package/docs/types/SoftObjectReference-1.html +1 -1
- package/docs/types/SpecialDroneAction.html +1 -1
- package/docs/types/SpecialDroneActionProperties-1.html +1 -1
- package/docs/types/SpecialProperties.AvailableSpecialPropertiesTypes.html +1 -1
- package/docs/types/StrArrayProperty-1.html +1 -1
- package/docs/types/StrProperty-1.html +1 -1
- package/docs/types/StrSetProperty-1.html +1 -1
- package/docs/types/StructArrayProperty-1.html +1 -1
- package/docs/types/StructProperty-1.html +1 -1
- package/docs/types/StructSetProperty-1.html +1 -1
- package/docs/types/TextArrayProperty-1.html +1 -1
- package/docs/types/TextProperty-1.html +1 -1
- package/docs/types/TextPropertyValue.html +1 -1
- package/docs/types/Transform-1.html +1 -1
- package/docs/types/Uint32Property-1.html +1 -1
- package/docs/types/Uint32SetProperty-1.html +1 -1
- package/docs/types/Uint64Property-1.html +1 -1
- package/docs/types/Uint8Property-1.html +1 -1
- package/docs/types/VehiclePhysicsData-1.html +1 -1
- package/docs/types/VehicleSpecialProperties-1.html +1 -1
- package/docs/types/col4-1.html +1 -1
- package/docs/types/vec2-1.html +1 -1
- package/docs/types/vec3-1.html +1 -1
- package/docs/types/vec4-1.html +1 -1
- package/docs/variables/DEFAULT_SATISFACTORY_CHUNK_HEADER_SIZE.html +1 -1
- package/docs/variables/EDIT.html +1 -1
- package/docs/variables/FINItemStateFileSystem.ExactStructReference.html +1 -1
- package/docs/variables/SaveBodyChunks.HEADER_V1.html +1 -1
- package/docs/variables/SaveBodyChunks.HEADER_V2.html +1 -1
- package/jsr.json +1 -1
- package/package.json +6 -5
- package/tsconfig.test.json +13 -0
- package/build/parser/context/context.d.ts.map +0 -1
- package/build/parser/context/context.js.map +0 -1
- package/build/parser/file.types.d.ts +0 -14
- package/build/parser/file.types.d.ts.map +0 -1
- package/build/parser/file.types.js +0 -8
- package/build/parser/file.types.js.map +0 -1
- package/build/parser/satisfactory/save/level.class.d.ts +0 -29
- package/build/parser/satisfactory/save/level.class.d.ts.map +0 -1
- package/build/parser/satisfactory/save/level.class.js +0 -204
- package/build/parser/satisfactory/save/level.class.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.d.ts +0 -22
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.js +0 -127
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/BoolArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ByteArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/DoubleArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/EnumArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/FloatArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int32ArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/Int64ArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.d.ts +0 -15
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/ObjectArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.d.ts +0 -15
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/SoftObjectArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StrArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.d.ts +0 -26
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.js +0 -75
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/StructArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.d.ts +0 -15
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/ArrayProperty/TextArrayProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/Int32Property.d.ts +0 -16
- package/build/parser/satisfactory/types/property/generic/Int32Property.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/Int32Property.js +0 -33
- package/build/parser/satisfactory/types/property/generic/Int32Property.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts +0 -25
- package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/MapProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/SetProperty/Int32SetProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.d.ts +0 -15
- package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/SetProperty/ObjectSetProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.d.ts +0 -15
- package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.js +0 -75
- package/build/parser/satisfactory/types/property/generic/SetProperty/SetProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/SetProperty/StrSetProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.js +0 -42
- package/build/parser/satisfactory/types/property/generic/SetProperty/StructSetProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.d.ts +0 -14
- package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.js +0 -23
- package/build/parser/satisfactory/types/property/generic/SetProperty/Uint32SetProperty.js.map +0 -1
- package/build/parser/satisfactory/types/property/generic/StructProperty.d.ts +0 -59
- package/build/parser/satisfactory/types/property/generic/StructProperty.d.ts.map +0 -1
- package/build/parser/satisfactory/types/property/generic/StructProperty.js.map +0 -1
- package/build/parser/satisfactory/types/structs/GUID.d.ts +0 -8
- package/build/parser/satisfactory/types/structs/GUID.d.ts.map +0 -1
- package/build/parser/satisfactory/types/structs/GUID.js +0 -22
- package/build/parser/satisfactory/types/structs/GUID.js.map +0 -1
- package/build/parser/stream/reworked/save-stream-json-stringifier.d.ts +0 -6
- package/build/parser/stream/reworked/save-stream-json-stringifier.d.ts.map +0 -1
- package/build/parser/stream/reworked/save-stream-json-stringifier.js +0 -35
- package/build/parser/stream/reworked/save-stream-json-stringifier.js.map +0 -1
- package/build/parser/stream/reworked/save-stream-writer.class.d.ts +0 -28
- package/build/parser/stream/reworked/save-stream-writer.class.d.ts.map +0 -1
- package/build/parser/stream/reworked/save-stream-writer.class.js +0 -84
- package/build/parser/stream/reworked/save-stream-writer.class.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satisfactory-save-header.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/satisfactory-save-header.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextReader } from '../../context/context-reader';\nimport { ContextWriter } from '../../context/context-writer';\nimport { UnsupportedVersionError } from '../../error/parser.error';\nimport { MD5Hash } from '../types/structs/MD5Hash';\nimport { SaveHeaderType } from './save-header-type';\nimport { SaveReader } from './save-reader';\nimport { SatisfactoryModMetadata } from './save.types';\n\n/** @public */\nexport type SatisfactorySaveHeader = {\n saveHeaderType: number;\n saveVersion: number;\n saveName?: string;\n buildVersion: number;\n mapName: string;\n mapOptions: string;\n sessionName: string;\n playDurationSeconds: number;\n saveDateTime: string;\n sessionVisibility: number;\n rawModMetadataString?: string;\n modMetadata?: SatisfactoryModMetadata;\n isModdedSave?: number;\n saveIdentifier?: string;\n fEditorObjectVersion?: number;\n partitionEnabledFlag?: boolean;\n consistencyHashBytes?: MD5Hash;\n creativeModeEnabled?: boolean;\n}\n\nexport namespace SatisfactorySaveHeader {\n export const Parse = (reader: ContextReader): SatisfactorySaveHeader => {\n\n const header = {\n saveHeaderType: 0,\n saveVersion: 0,\n buildVersion: 0,\n mapName: \"DEFAULT\",\n mapOptions: \"\",\n sessionName: \"\",\n playDurationSeconds: 0,\n saveDateTime: \"0\",\n sessionVisibility: 0\n } as SatisfactorySaveHeader;\n\n header.saveHeaderType = reader.readInt32();\n header.saveVersion = reader.readInt32();\n header.buildVersion = reader.readInt32();\n\n // 14 is 1.1\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveName) {\n header.saveName = reader.readString();\n }\n\n header.mapName = reader.readString();\n reader.context.mapName = header.mapName;\n\n header.mapOptions = reader.readString();\n header.sessionName = reader.readString();\n header.playDurationSeconds = reader.readInt32();\n const rawSaveDateTimeInTicks = reader.readLong(); // in UTC\n const unixMilliseconds = (rawSaveDateTimeInTicks - SaveReader.EPOCH_TICKS) / 10000n;\n header.saveDateTime = unixMilliseconds.toString();\n header.sessionVisibility = reader.readByte();\n\n if (header.saveHeaderType >= SaveHeaderType.UE425EngineUpdate) {\n header.fEditorObjectVersion = reader.readInt32();\n }\n if (header.saveHeaderType >= SaveHeaderType.AddedModdingParams) {\n header.rawModMetadataString = reader.readString();\n try {\n header.modMetadata = JSON.parse(header.rawModMetadataString);\n } catch (error) {\n // ignore.\n }\n header.isModdedSave = reader.readInt32();\n }\n\n // set context\n reader.context.saveHeaderType = header.saveHeaderType;\n reader.context.saveVersion = header.saveVersion;\n reader.context.buildVersion = header.buildVersion;\n reader.context.mods = Object.fromEntries(header.modMetadata?.Mods?.map(mod => [mod.Reference, mod.Version]) ?? []);\n\n //10 is U7\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveIdentifier) {\n header.saveIdentifier = reader.readString();\n }\n\n if (header.saveHeaderType >= SaveHeaderType.AddedWorldPartitionSupport) {\n header.partitionEnabledFlag = reader.readInt32() === 1;\n }\n\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveModificationChecksum) {\n header.consistencyHashBytes = MD5Hash.read(reader);\n }\n\n // 13 is U8 Experimental, Also First 1.0 Release\n if (header.saveHeaderType >= SaveHeaderType.AddedIsCreativeModeEnabled) {\n header.creativeModeEnabled = reader.readInt32() == 1;\n }\n\n if (header.saveVersion < 21) {\n throw new UnsupportedVersionError(\"The save version is too old to support encoding currently. Save in newer game version.\");\n }\n\n return header;\n }\n\n export const Serialize = (writer: ContextWriter, header: SatisfactorySaveHeader): void => {\n\n writer.writeInt32(header.saveHeaderType);\n writer.writeInt32(header.saveVersion);\n writer.writeInt32(header.buildVersion);\n\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveName) {\n writer.writeString(header.saveName ?? '');\n }\n\n writer.writeString(header.mapName);\n writer.writeString(header.mapOptions);\n writer.writeString(header.sessionName);\n writer.writeInt32(header.playDurationSeconds);\n writer.writeInt64(BigInt(header.saveDateTime) * 10000n + SaveReader.EPOCH_TICKS);\n writer.writeByte(header.sessionVisibility);\n\n if (header.saveHeaderType >= SaveHeaderType.UE425EngineUpdate) {\n writer.writeInt32(header.fEditorObjectVersion!);\n }\n if (header.saveHeaderType >= SaveHeaderType.AddedModdingParams) {\n if (header.modMetadata) {\n writer.writeString(JSON.stringify(header.modMetadata));\n } else {\n writer.writeString(header.rawModMetadataString!);\n }\n writer.writeInt32(header.isModdedSave!);\n }\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveIdentifier) {\n writer.writeString(header.saveIdentifier!);\n }\n\n // U8 jumped directly to 13.\n if (header.saveHeaderType >= SaveHeaderType.AddedWorldPartitionSupport) {\n writer.writeInt32(header.partitionEnabledFlag ? 1 : 0);\n }\n\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveModificationChecksum) {\n MD5Hash.write(writer, header.consistencyHashBytes!);\n }\n\n // 13 is U8 Experimental First Release\n if (header.saveHeaderType >= SaveHeaderType.AddedIsCreativeModeEnabled) {\n writer.writeInt32(header.creativeModeEnabled ? 1 : 0);\n }\n\n if (header.saveVersion < 21) {\n throw new UnsupportedVersionError(\"The save version is too old to be supported currently.\");\n }\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"satisfactory-save-header.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/satisfactory-save-header.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextReader } from '../../context/context-reader';\nimport { ContextWriter } from '../../context/context-writer';\nimport { HierarchyVersion } from '../../context/hierarchical-version-context';\nimport { UnsupportedVersionError } from '../../error/parser.error';\nimport { MD5Hash } from '../types/structs/MD5Hash';\nimport { SaveCustomVersion } from './save-custom-version';\nimport { SaveHeaderType } from './save-header-type';\nimport { SaveReader } from './save-reader';\nimport { SatisfactoryModMetadata } from './save.types';\n\n/** @public */\nexport type SatisfactorySaveHeader = {\n saveHeaderType: number;\n saveVersion: number;\n saveName?: string;\n buildVersion: number;\n mapName: string;\n mapOptions: string;\n sessionName: string;\n playDurationSeconds: number;\n saveDateTime: string;\n sessionVisibility: number;\n rawModMetadataString?: string;\n modMetadata?: SatisfactoryModMetadata;\n isModdedSave?: number;\n saveIdentifier?: string;\n fEditorObjectVersion?: number;\n partitionEnabledFlag?: boolean;\n consistencyHashBytes?: MD5Hash;\n creativeModeEnabled?: boolean;\n}\n\nexport namespace SatisfactorySaveHeader {\n export const Parse = (reader: ContextReader): SatisfactorySaveHeader => {\n\n const header = {\n saveHeaderType: 0,\n saveVersion: 0,\n buildVersion: 0,\n mapName: \"DEFAULT\",\n mapOptions: \"\",\n sessionName: \"\",\n playDurationSeconds: 0,\n saveDateTime: \"0\",\n sessionVisibility: 0\n } as SatisfactorySaveHeader;\n\n header.saveHeaderType = reader.readInt32();\n header.saveVersion = reader.readInt32();\n header.buildVersion = reader.readInt32();\n\n // 14 is 1.1\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveName) {\n header.saveName = reader.readString();\n }\n\n header.mapName = reader.readString();\n reader.context.mapName = header.mapName;\n\n header.mapOptions = reader.readString();\n header.sessionName = reader.readString();\n header.playDurationSeconds = reader.readInt32();\n const rawSaveDateTimeInTicks = reader.readLong(); // in UTC\n const unixMilliseconds = (rawSaveDateTimeInTicks - SaveReader.EPOCH_TICKS) / 10000n;\n header.saveDateTime = unixMilliseconds.toString();\n header.sessionVisibility = reader.readByte();\n\n if (header.saveHeaderType >= SaveHeaderType.UE425EngineUpdate) {\n header.fEditorObjectVersion = reader.readInt32();\n }\n if (header.saveHeaderType >= SaveHeaderType.AddedModdingParams) {\n header.rawModMetadataString = reader.readString();\n try {\n header.modMetadata = JSON.parse(header.rawModMetadataString);\n } catch (error) {\n // ignore.\n }\n header.isModdedSave = reader.readInt32();\n }\n\n // set context\n reader.context.saveHeaderType = header.saveHeaderType;\n reader.context.saveVersion = HierarchyVersion.CreateOnHeader(header.saveVersion);\n reader.context.buildVersion = header.buildVersion;\n reader.context.mods = Object.fromEntries(header.modMetadata?.Mods?.map(mod => [mod.Reference, mod.Version]) ?? []);\n\n //10 is U7\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveIdentifier) {\n header.saveIdentifier = reader.readString();\n }\n\n if (header.saveHeaderType >= SaveHeaderType.AddedWorldPartitionSupport) {\n header.partitionEnabledFlag = reader.readInt32() === 1;\n }\n\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveModificationChecksum) {\n header.consistencyHashBytes = MD5Hash.read(reader);\n }\n\n // 13 is U8 Experimental, Also First 1.0 Release\n if (header.saveHeaderType >= SaveHeaderType.AddedIsCreativeModeEnabled) {\n header.creativeModeEnabled = reader.readInt32() == 1;\n }\n\n if (header.saveVersion < SaveCustomVersion.SaveFileIsCompressed) {\n throw new UnsupportedVersionError(\"The save version is too old to support encoding currently. Save in newer game version.\");\n }\n\n return header;\n }\n\n export const Serialize = (writer: ContextWriter, header: SatisfactorySaveHeader): void => {\n\n writer.writeInt32(header.saveHeaderType);\n writer.writeInt32(header.saveVersion);\n writer.writeInt32(header.buildVersion);\n\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveName) {\n writer.writeString(header.saveName ?? '');\n }\n\n writer.writeString(header.mapName);\n writer.writeString(header.mapOptions);\n writer.writeString(header.sessionName);\n writer.writeInt32(header.playDurationSeconds);\n writer.writeInt64(BigInt(header.saveDateTime) * 10000n + SaveReader.EPOCH_TICKS);\n writer.writeByte(header.sessionVisibility);\n\n if (header.saveHeaderType >= SaveHeaderType.UE425EngineUpdate) {\n writer.writeInt32(header.fEditorObjectVersion!);\n }\n if (header.saveHeaderType >= SaveHeaderType.AddedModdingParams) {\n if (header.modMetadata) {\n writer.writeString(JSON.stringify(header.modMetadata));\n } else {\n writer.writeString(header.rawModMetadataString!);\n }\n writer.writeInt32(header.isModdedSave!);\n }\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveIdentifier) {\n writer.writeString(header.saveIdentifier!);\n }\n\n // U8 jumped directly to 13.\n if (header.saveHeaderType >= SaveHeaderType.AddedWorldPartitionSupport) {\n writer.writeInt32(header.partitionEnabledFlag ? 1 : 0);\n }\n\n if (header.saveHeaderType >= SaveHeaderType.AddedSaveModificationChecksum) {\n MD5Hash.write(writer, header.consistencyHashBytes!);\n }\n\n // 13 is U8 Experimental First Release\n if (header.saveHeaderType >= SaveHeaderType.AddedIsCreativeModeEnabled) {\n writer.writeInt32(header.creativeModeEnabled ? 1 : 0);\n }\n\n if (header.saveVersion < SaveCustomVersion.SaveFileIsCompressed) {\n throw new UnsupportedVersionError(\"The save version is too old to be supported currently.\");\n }\n }\n}"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FSaveObjectVersionData } from '../types/structs/binary/FSaveObjectVersionData';
|
|
2
2
|
import { ObjectReference } from '../types/structs/ObjectReference';
|
|
3
|
+
import { SaveBodyValidation } from '../types/structs/SaveBodyValidation';
|
|
3
4
|
import { Levels } from './level';
|
|
4
5
|
import { SatisfactorySaveHeader } from './satisfactory-save-header';
|
|
5
6
|
import { ChunkCompressionInfo } from './save-body-chunks';
|
|
@@ -10,6 +11,7 @@ export declare class SatisfactorySave {
|
|
|
10
11
|
levels: Levels;
|
|
11
12
|
compressionInfo?: ChunkCompressionInfo;
|
|
12
13
|
unresolvedWorldSaveData?: ObjectReference[];
|
|
14
|
+
objectVersionData?: FSaveObjectVersionData;
|
|
13
15
|
constructor(name: string, header: SatisfactorySaveHeader);
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=satisfactory-save.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satisfactory-save.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/satisfactory-save.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"satisfactory-save.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/satisfactory-save.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qBAAa,gBAAgB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,sBAAsB,CAAC;IAC/B,kBAAkB,EAAE,kBAAkB,CAAiB;IACvD,MAAM,EAAE,MAAM,CAAM;IACpB,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,uBAAuB,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5C,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;gBAGtC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB;CAOxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satisfactory-save.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/satisfactory-save.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"satisfactory-save.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/satisfactory-save.ts"],"names":[],"mappings":";;;AAOA,MAAa,gBAAgB;IAU5B,YAAY,IAAY,EAAE,MAA8B;QAPjD,uBAAkB,GAAuB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACvD,WAAM,GAAW,EAAE,CAAC;QAO1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC;IACF,CAAC;CACD;AAjBD,4CAiBC","sourcesContent":["import { FSaveObjectVersionData } from '../types/structs/binary/FSaveObjectVersionData';\nimport { ObjectReference } from '../types/structs/ObjectReference';\nimport { SaveBodyValidation } from '../types/structs/SaveBodyValidation';\nimport { Levels } from './level';\nimport { SatisfactorySaveHeader } from './satisfactory-save-header';\nimport { ChunkCompressionInfo } from './save-body-chunks';\n\nexport class SatisfactorySave {\n\tpublic name: string;\n\tpublic header: SatisfactorySaveHeader;\n\tpublic saveBodyValidation: SaveBodyValidation = { grids: {} };\n\tpublic levels: Levels = {};\n\tpublic compressionInfo?: ChunkCompressionInfo;\n\tpublic unresolvedWorldSaveData?: ObjectReference[];\n\tpublic objectVersionData?: FSaveObjectVersionData;\n\n\t// since 1.1 we finally have the save file name in the header.\n\tconstructor(name: string, header: SatisfactorySaveHeader) {\n\t\tthis.name = name;\n\t\tthis.header = header;\n\t\tif (header.saveName !== undefined) {\n\t\t\tthis.name = header.saveName;\n\t\t}\n\t}\n}"]}
|
|
@@ -70,10 +70,10 @@ var SaveBodyChunks;
|
|
|
70
70
|
SaveBodyChunks.CompressDataIntoChunks = (bufferArray, compressionInfo, blueprintOrSave, onBinaryBeforeCompressing, onChunk, alignment = alignment_enum_1.Alignment.LITTLE_ENDIAN) => {
|
|
71
71
|
const totalUncompressedSize = bufferArray.byteLength;
|
|
72
72
|
const chunkHeaderSize = compressionInfo.chunkHeaderVersion === SaveBodyChunks.HEADER_V1 ? 48 : 49;
|
|
73
|
-
const saveBody = new Uint8Array(bufferArray.byteLength +
|
|
73
|
+
const saveBody = new Uint8Array(bufferArray.byteLength + 4);
|
|
74
74
|
saveBody.set(new Uint8Array(bufferArray), 4);
|
|
75
75
|
const miniView = new DataView(saveBody.buffer);
|
|
76
|
-
miniView.setInt32(0, totalUncompressedSize, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
|
|
76
|
+
miniView.setInt32(0, totalUncompressedSize - (blueprintOrSave === 'save' ? 4 : 0), alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
|
|
77
77
|
onBinaryBeforeCompressing(saveBody.buffer);
|
|
78
78
|
let handledByte = 0;
|
|
79
79
|
const chunkSummary = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-body-chunks.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-body-chunks.ts"],"names":[],"mappings":"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","sourcesContent":["import Pako from \"pako\";\nimport { Alignment } from \"../../byte/alignment.enum\";\nimport { CompressionLibraryError, ParserError } from \"../../error/parser.error\";\n\nexport enum CompressionAlgorithmCode {\n ZLIB = 3,\n}\n\nexport type ChunkCompressionInfo = {\n compressionAlgorithm?: CompressionAlgorithmCode;\n chunkHeaderVersion: number;\n packageFileTag: number;\n maxUncompressedChunkContentSize: number;\n}\n\nexport type ChunkSummary = {\n uncompressedSize: number,\n compressedSize: number\n}\n\n\nexport type SaveBodyChunks = {\n uncompressedData: Uint8Array;\n compressionInfo: ChunkCompressionInfo;\n}\n\nexport namespace SaveBodyChunks {\n export const HEADER_V1 = 0x00000000;\n export const HEADER_V2 = 0x22222222;\n\n export const DecompressChunks = (fileBuffer: ArrayBufferLike, alignment = Alignment.LITTLE_ENDIAN): SaveBodyChunks => {\n\n // slicing filebuffer has to happen outside\n var array = new DataView(fileBuffer);\n let currentByte = 0;\n\n let maxUncompressedChunkContentSize = 0;\n let packageFileTag = 0;\n let chunkHeaderSize = 0;\n let chunkHeaderVersion = HEADER_V2;\n let compressionAlgorithm = CompressionAlgorithmCode.ZLIB;\n let currentChunks = [];\n\n do {\n\n\n // get chunk header info. We can safely assume it is the same for every chunk\n if (currentChunks.length === 0) {\n packageFileTag = array.getUint32(currentByte, alignment === Alignment.LITTLE_ENDIAN);\n chunkHeaderVersion = array.getUint32(currentByte + 4, alignment === Alignment.LITTLE_ENDIAN);\n chunkHeaderSize = chunkHeaderVersion === HEADER_V1 ? 48 : 49;\n maxUncompressedChunkContentSize = array.getInt32(currentByte + 8, alignment === Alignment.LITTLE_ENDIAN);\n if (chunkHeaderVersion === HEADER_V2) {\n compressionAlgorithm = array.getUint8(currentByte + 16);\n }\n }\n\n // TODO: rather is int64. but in JS we have to use bigint, which is cumbersome. Find a way.\n const chunkUncompressedLength = array.getInt32(currentByte + (chunkHeaderVersion === HEADER_V1 ? 24 : 25), alignment === Alignment.LITTLE_ENDIAN);\n const chunkCompressedLength = array.getInt32(currentByte + (chunkHeaderVersion === HEADER_V1 ? 32 : 33), alignment === Alignment.LITTLE_ENDIAN);\n\n\n // step to chunk body\n currentByte += chunkHeaderSize;\n\n try {\n // Inflate chunk body\n let currentInflatedChunk = null;\n currentInflatedChunk = Pako.inflate(new Uint8Array(fileBuffer.slice(currentByte, currentByte + chunkCompressedLength)));\n currentChunks.push(currentInflatedChunk);\n\n // step to next chunk\n currentByte += chunkCompressedLength;\n fileBuffer = fileBuffer.slice(currentByte);\n array = new DataView(fileBuffer);\n currentByte = 0;\n\n }\n catch (err) {\n throw new ParserError('ParserError', 'An error occurred while calling pako inflate.' + err);\n }\n\n } while (currentByte < fileBuffer.byteLength)\n\n // Create one big chunk out of the little chunks\n let newChunkLength = currentChunks.map<number>(cc => cc.length).reduce((prev, cur) => prev + cur);\n const bigWholeChunk = new Uint8Array(newChunkLength);\n let currentLength = 0;\n for (let i = 0; i < currentChunks.length; i++) {\n bigWholeChunk.set(currentChunks[i], currentLength);\n currentLength += currentChunks[i].length;\n }\n\n return {\n uncompressedData: bigWholeChunk,\n compressionInfo: {\n chunkHeaderVersion,\n packageFileTag,\n maxUncompressedChunkContentSize,\n compressionAlgorithm\n }\n } satisfies SaveBodyChunks;\n }\n\n export const CompressDataIntoChunks = (\n bufferArray: ArrayBuffer,\n compressionInfo: ChunkCompressionInfo,\n blueprintOrSave: 'blueprint' | 'save',\n onBinaryBeforeCompressing: (binary: ArrayBuffer) => void,\n onChunk: (chunk: Uint8Array) => void,\n alignment: Alignment = Alignment.LITTLE_ENDIAN\n ): ChunkSummary[] => {\n\n const totalUncompressedSize = bufferArray.byteLength;\n const chunkHeaderSize = compressionInfo.chunkHeaderVersion === SaveBodyChunks.HEADER_V1 ? 48 : 49;\n\n const saveBody = new Uint8Array(bufferArray.byteLength + (blueprintOrSave === 'blueprint' ? 4 : 8));\n saveBody.set(new Uint8Array(bufferArray), 4);\n const miniView = new DataView(saveBody.buffer);\n miniView.setInt32(0, totalUncompressedSize, alignment === Alignment.LITTLE_ENDIAN);\n onBinaryBeforeCompressing(saveBody.buffer);\n\n // collect slices of chunks with help of compression info for max chunk size\n let handledByte = 0;\n const chunkSummary: {\n uncompressedSize: number,\n compressedSize: number\n }[] = [];\n while (handledByte < saveBody.byteLength) {\n\n // create uncompressed chunk.\n const uncompressedContentSize = Math.min(compressionInfo.maxUncompressedChunkContentSize, saveBody.byteLength - handledByte);\n const uncompressedChunk = saveBody.buffer.slice(handledByte, handledByte + uncompressedContentSize);\n\n // deflate chunk while we're at it.\n let compressedChunk: Uint8Array = new Uint8Array(0);\n try {\n compressedChunk = Pako.deflate(uncompressedChunk);\n }\n catch (err) {\n throw new CompressionLibraryError(\"Could not compress save data. \" + err);\n }\n\n const chunk = new Uint8Array(chunkHeaderSize + compressedChunk.byteLength);\n chunk.set(compressedChunk, chunkHeaderSize);\n\n // write header\n const view = new DataView(chunk.buffer);\n view.setInt32(0, compressionInfo.packageFileTag, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(4, compressionInfo.chunkHeaderVersion, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(8, compressionInfo.maxUncompressedChunkContentSize, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(12, 0, alignment === Alignment.LITTLE_ENDIAN);\n if (compressionInfo.chunkHeaderVersion === HEADER_V2) {\n view.setUint8(16, CompressionAlgorithmCode.ZLIB);\n }\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 16 : 17, compressedChunk.byteLength, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 20 : 21, 0, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 24 : 25, uncompressedContentSize, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 28 : 29, 0, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 32 : 33, compressedChunk.byteLength, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 36 : 37, 0, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 40 : 41, uncompressedContentSize, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 44 : 45, 0, alignment === Alignment.LITTLE_ENDIAN);\n\n onChunk(chunk);\n chunkSummary.push({\n uncompressedSize: uncompressedContentSize + chunkHeaderSize,\n compressedSize: compressedChunk.byteLength + chunkHeaderSize\n });\n handledByte += uncompressedContentSize;\n }\n\n return chunkSummary;\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"save-body-chunks.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-body-chunks.ts"],"names":[],"mappings":"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","sourcesContent":["import Pako from \"pako\";\nimport { Alignment } from \"../../byte/alignment.enum\";\nimport { CompressionLibraryError, ParserError } from \"../../error/parser.error\";\n\nexport enum CompressionAlgorithmCode {\n ZLIB = 3,\n}\n\nexport type ChunkCompressionInfo = {\n compressionAlgorithm?: CompressionAlgorithmCode;\n chunkHeaderVersion: number;\n packageFileTag: number;\n maxUncompressedChunkContentSize: number;\n}\n\nexport type ChunkSummary = {\n uncompressedSize: number,\n compressedSize: number\n}\n\n\nexport type SaveBodyChunks = {\n uncompressedData: Uint8Array;\n compressionInfo: ChunkCompressionInfo;\n}\n\nexport namespace SaveBodyChunks {\n export const HEADER_V1 = 0x00000000;\n export const HEADER_V2 = 0x22222222;\n\n export const DecompressChunks = (fileBuffer: ArrayBufferLike, alignment = Alignment.LITTLE_ENDIAN): SaveBodyChunks => {\n\n // slicing filebuffer has to happen outside\n var array = new DataView(fileBuffer);\n let currentByte = 0;\n\n let maxUncompressedChunkContentSize = 0;\n let packageFileTag = 0;\n let chunkHeaderSize = 0;\n let chunkHeaderVersion = HEADER_V2;\n let compressionAlgorithm = CompressionAlgorithmCode.ZLIB;\n let currentChunks = [];\n\n do {\n\n\n // get chunk header info. We can safely assume it is the same for every chunk\n if (currentChunks.length === 0) {\n packageFileTag = array.getUint32(currentByte, alignment === Alignment.LITTLE_ENDIAN);\n chunkHeaderVersion = array.getUint32(currentByte + 4, alignment === Alignment.LITTLE_ENDIAN);\n chunkHeaderSize = chunkHeaderVersion === HEADER_V1 ? 48 : 49;\n maxUncompressedChunkContentSize = array.getInt32(currentByte + 8, alignment === Alignment.LITTLE_ENDIAN);\n if (chunkHeaderVersion === HEADER_V2) {\n compressionAlgorithm = array.getUint8(currentByte + 16);\n }\n }\n\n // TODO: rather is int64. but in JS we would have to use bigint. for not it seems int32 suffices.\n const chunkUncompressedLength = array.getInt32(currentByte + (chunkHeaderVersion === HEADER_V1 ? 24 : 25), alignment === Alignment.LITTLE_ENDIAN);\n const chunkCompressedLength = array.getInt32(currentByte + (chunkHeaderVersion === HEADER_V1 ? 32 : 33), alignment === Alignment.LITTLE_ENDIAN);\n\n\n // step to chunk body\n currentByte += chunkHeaderSize;\n\n try {\n // Inflate chunk body\n let currentInflatedChunk = null;\n currentInflatedChunk = Pako.inflate(new Uint8Array(fileBuffer.slice(currentByte, currentByte + chunkCompressedLength)));\n currentChunks.push(currentInflatedChunk);\n\n // step to next chunk\n currentByte += chunkCompressedLength;\n fileBuffer = fileBuffer.slice(currentByte);\n array = new DataView(fileBuffer);\n currentByte = 0;\n\n }\n catch (err) {\n throw new ParserError('ParserError', 'An error occurred while calling pako inflate.' + err);\n }\n\n } while (currentByte < fileBuffer.byteLength)\n\n // Create one big chunk out of the little chunks\n let newChunkLength = currentChunks.map<number>(cc => cc.length).reduce((prev, cur) => prev + cur);\n const bigWholeChunk = new Uint8Array(newChunkLength);\n let currentLength = 0;\n for (let i = 0; i < currentChunks.length; i++) {\n bigWholeChunk.set(currentChunks[i], currentLength);\n currentLength += currentChunks[i].length;\n }\n\n return {\n uncompressedData: bigWholeChunk,\n compressionInfo: {\n chunkHeaderVersion,\n packageFileTag,\n maxUncompressedChunkContentSize,\n compressionAlgorithm\n }\n } satisfies SaveBodyChunks;\n }\n\n export const CompressDataIntoChunks = (\n bufferArray: ArrayBuffer,\n compressionInfo: ChunkCompressionInfo,\n blueprintOrSave: 'blueprint' | 'save',\n onBinaryBeforeCompressing: (binary: ArrayBuffer) => void,\n onChunk: (chunk: Uint8Array) => void,\n alignment: Alignment = Alignment.LITTLE_ENDIAN\n ): ChunkSummary[] => {\n\n const totalUncompressedSize = bufferArray.byteLength;\n const chunkHeaderSize = compressionInfo.chunkHeaderVersion === SaveBodyChunks.HEADER_V1 ? 48 : 49;\n\n const saveBody = new Uint8Array(bufferArray.byteLength + 4);\n saveBody.set(new Uint8Array(bufferArray), 4);\n const miniView = new DataView(saveBody.buffer);\n miniView.setInt32(0, totalUncompressedSize - (blueprintOrSave === 'save' ? 4 : 0), alignment === Alignment.LITTLE_ENDIAN);\n onBinaryBeforeCompressing(saveBody.buffer);\n\n // collect slices of chunks with help of compression info for max chunk size\n let handledByte = 0;\n const chunkSummary: {\n uncompressedSize: number,\n compressedSize: number\n }[] = [];\n while (handledByte < saveBody.byteLength) {\n\n // create uncompressed chunk.\n const uncompressedContentSize = Math.min(compressionInfo.maxUncompressedChunkContentSize, saveBody.byteLength - handledByte);\n const uncompressedChunk = saveBody.buffer.slice(handledByte, handledByte + uncompressedContentSize);\n\n // deflate chunk while we're at it.\n let compressedChunk: Uint8Array = new Uint8Array(0);\n try {\n compressedChunk = Pako.deflate(uncompressedChunk);\n }\n catch (err) {\n throw new CompressionLibraryError(\"Could not compress save data. \" + err);\n }\n\n const chunk = new Uint8Array(chunkHeaderSize + compressedChunk.byteLength);\n chunk.set(compressedChunk, chunkHeaderSize);\n\n // write header\n const view = new DataView(chunk.buffer);\n view.setInt32(0, compressionInfo.packageFileTag, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(4, compressionInfo.chunkHeaderVersion, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(8, compressionInfo.maxUncompressedChunkContentSize, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(12, 0, alignment === Alignment.LITTLE_ENDIAN);\n if (compressionInfo.chunkHeaderVersion === HEADER_V2) {\n view.setUint8(16, CompressionAlgorithmCode.ZLIB);\n }\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 16 : 17, compressedChunk.byteLength, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 20 : 21, 0, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 24 : 25, uncompressedContentSize, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 28 : 29, 0, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 32 : 33, compressedChunk.byteLength, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 36 : 37, 0, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 40 : 41, uncompressedContentSize, alignment === Alignment.LITTLE_ENDIAN);\n view.setInt32(compressionInfo.chunkHeaderVersion === HEADER_V1 ? 44 : 45, 0, alignment === Alignment.LITTLE_ENDIAN);\n\n onChunk(chunk);\n chunkSummary.push({\n uncompressedSize: uncompressedContentSize + chunkHeaderSize,\n compressedSize: compressedChunk.byteLength + chunkHeaderSize\n });\n handledByte += uncompressedContentSize;\n }\n\n return chunkSummary;\n }\n}"]}
|
|
@@ -52,7 +52,13 @@ export declare enum SaveCustomVersion {
|
|
|
52
52
|
BackToBackRailroadSwitches = 50,
|
|
53
53
|
SerializePerStreamableLevelTOCVersion = 51,
|
|
54
54
|
RailroadTrackConnectionCleanup = 52,
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
SerializeDataPackageVersionAndCustomVersions = 53,
|
|
56
|
+
DROPPED_RailroadSubsystemThirdRailConnectionsCleanup = 54,
|
|
57
|
+
RailroadSubsystemThirdRailConnectionsCleanupRedone = 55,
|
|
58
|
+
UnlockAvailableItemDescriptorsForPickedUpItems = 56,
|
|
59
|
+
NewPlayerInfoHandleSerializationFormat = 57,
|
|
60
|
+
FixNewPlayerInfoHandleSerializationFormat = 58,
|
|
61
|
+
VersionPlusOne = 59,
|
|
62
|
+
LatestVersion = 58
|
|
57
63
|
}
|
|
58
64
|
//# sourceMappingURL=save-custom-version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-custom-version.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-custom-version.ts"],"names":[],"mappings":"AAIA,oBAAY,iBAAiB;IAEzB,2BAA2B,IAAI;IAG/B,sBAAsB,IAAA;IAGtB,0BAA0B,IAAA;IAG1B,6BAA6B,IAAA;IAG7B,8BAA8B,IAAA;IAG9B,+BAA+B,IAAA;IAG/B,uBAAuB,IAAA;IAGvB,iCAAiC,IAAA;IAGjC,+BAA+B,IAAA;IAG/B,qCAAqC,IAAA;IAGrC,sBAAsB,KAAA;IAGtB,qCAAqC,KAAA;IAGrC,4BAA4B,KAAA;IAG5B,6BAA6B,KAAA;IAG7B,yDAAyD,KAAA;IAGzD,2BAA2B,KAAA;IAG3B,yCAAyC,KAAA;IAGzC,4BAA4B,KAAA;IAG5B,+BAA+B,KAAA;IAG/B,wBAAwB,KAAA;IAGxB,gBAAgB,KAAA;IAGhB,oBAAoB,KAAA;IAIpB,oBAAoB,KAAA;IAGpB,uBAAuB,KAAA;IAGvB,mBAAmB,KAAA;IAGnB,kBAAkB,KAAA;IAGlB,uBAAuB,KAAA;IAGvB,qBAAqB,KAAA;IAGrB,wBAAwB,KAAA;IAGxB,sBAAsB,KAAA;IAGtB,sBAAsB,KAAA;IAGtB,qCAAqC,KAAA;IAGrC,uBAAuB,KAAA;IAGvB,2BAA2B,KAAA;IAG3B,2BAA2B,KAAA;IAG3B,2BAA2B,KAAA;IAG3B,qBAAqB,KAAA;IAGrB,aAAa,KAAA;IAGb,wBAAwB,KAAA;IAGxB,mBAAmB,KAAA;IAGnB,wBAAwB,KAAA;IAGxB,wBAAwB,KAAA;IAGxB,2BAA2B,KAAA;IAG3B,4BAA4B,KAAA;IAG5B,kBAAkB,KAAA;IAGlB,kCAAkC,KAAA;IAGlC,QAAQ,KAAA;IAGR,YAAY,KAAA;IAGZ,iDAAiD,KAAA;IAGjD,oBAAoB,KAAA;IAGpB,0BAA0B,KAAA;IAG1B,qCAAqC,KAAA;IAGrC,8BAA8B,KAAA;IAG9B,cAAc,KAAA;IACd,aAAa,KAAqB;CACrC"}
|
|
1
|
+
{"version":3,"file":"save-custom-version.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-custom-version.ts"],"names":[],"mappings":"AAIA,oBAAY,iBAAiB;IAEzB,2BAA2B,IAAI;IAG/B,sBAAsB,IAAA;IAGtB,0BAA0B,IAAA;IAG1B,6BAA6B,IAAA;IAG7B,8BAA8B,IAAA;IAG9B,+BAA+B,IAAA;IAG/B,uBAAuB,IAAA;IAGvB,iCAAiC,IAAA;IAGjC,+BAA+B,IAAA;IAG/B,qCAAqC,IAAA;IAGrC,sBAAsB,KAAA;IAGtB,qCAAqC,KAAA;IAGrC,4BAA4B,KAAA;IAG5B,6BAA6B,KAAA;IAG7B,yDAAyD,KAAA;IAGzD,2BAA2B,KAAA;IAG3B,yCAAyC,KAAA;IAGzC,4BAA4B,KAAA;IAG5B,+BAA+B,KAAA;IAG/B,wBAAwB,KAAA;IAGxB,gBAAgB,KAAA;IAGhB,oBAAoB,KAAA;IAIpB,oBAAoB,KAAA;IAGpB,uBAAuB,KAAA;IAGvB,mBAAmB,KAAA;IAGnB,kBAAkB,KAAA;IAGlB,uBAAuB,KAAA;IAGvB,qBAAqB,KAAA;IAGrB,wBAAwB,KAAA;IAGxB,sBAAsB,KAAA;IAGtB,sBAAsB,KAAA;IAGtB,qCAAqC,KAAA;IAGrC,uBAAuB,KAAA;IAGvB,2BAA2B,KAAA;IAG3B,2BAA2B,KAAA;IAG3B,2BAA2B,KAAA;IAG3B,qBAAqB,KAAA;IAGrB,aAAa,KAAA;IAGb,wBAAwB,KAAA;IAGxB,mBAAmB,KAAA;IAGnB,wBAAwB,KAAA;IAGxB,wBAAwB,KAAA;IAGxB,2BAA2B,KAAA;IAG3B,4BAA4B,KAAA;IAG5B,kBAAkB,KAAA;IAGlB,kCAAkC,KAAA;IAGlC,QAAQ,KAAA;IAGR,YAAY,KAAA;IAGZ,iDAAiD,KAAA;IAGjD,oBAAoB,KAAA;IAGpB,0BAA0B,KAAA;IAG1B,qCAAqC,KAAA;IAGrC,8BAA8B,KAAA;IAG9B,4CAA4C,KAAA;IAG5C,oDAAoD,KAAA;IAGpD,kDAAkD,KAAA;IAGlD,8CAA8C,KAAA;IAG9C,sCAAsC,KAAA;IAGtC,yCAAyC,KAAA;IAGzC,cAAc,KAAA;IACd,aAAa,KAAqB;CACrC"}
|
|
@@ -56,8 +56,14 @@ var SaveCustomVersion;
|
|
|
56
56
|
SaveCustomVersion[SaveCustomVersion["BackToBackRailroadSwitches"] = 50] = "BackToBackRailroadSwitches";
|
|
57
57
|
SaveCustomVersion[SaveCustomVersion["SerializePerStreamableLevelTOCVersion"] = 51] = "SerializePerStreamableLevelTOCVersion";
|
|
58
58
|
SaveCustomVersion[SaveCustomVersion["RailroadTrackConnectionCleanup"] = 52] = "RailroadTrackConnectionCleanup";
|
|
59
|
-
SaveCustomVersion[SaveCustomVersion["
|
|
60
|
-
SaveCustomVersion[SaveCustomVersion["
|
|
59
|
+
SaveCustomVersion[SaveCustomVersion["SerializeDataPackageVersionAndCustomVersions"] = 53] = "SerializeDataPackageVersionAndCustomVersions";
|
|
60
|
+
SaveCustomVersion[SaveCustomVersion["DROPPED_RailroadSubsystemThirdRailConnectionsCleanup"] = 54] = "DROPPED_RailroadSubsystemThirdRailConnectionsCleanup";
|
|
61
|
+
SaveCustomVersion[SaveCustomVersion["RailroadSubsystemThirdRailConnectionsCleanupRedone"] = 55] = "RailroadSubsystemThirdRailConnectionsCleanupRedone";
|
|
62
|
+
SaveCustomVersion[SaveCustomVersion["UnlockAvailableItemDescriptorsForPickedUpItems"] = 56] = "UnlockAvailableItemDescriptorsForPickedUpItems";
|
|
63
|
+
SaveCustomVersion[SaveCustomVersion["NewPlayerInfoHandleSerializationFormat"] = 57] = "NewPlayerInfoHandleSerializationFormat";
|
|
64
|
+
SaveCustomVersion[SaveCustomVersion["FixNewPlayerInfoHandleSerializationFormat"] = 58] = "FixNewPlayerInfoHandleSerializationFormat";
|
|
65
|
+
SaveCustomVersion[SaveCustomVersion["VersionPlusOne"] = 59] = "VersionPlusOne";
|
|
66
|
+
SaveCustomVersion[SaveCustomVersion["LatestVersion"] = 58] = "LatestVersion";
|
|
61
67
|
})(SaveCustomVersion || (exports.SaveCustomVersion = SaveCustomVersion = {}));
|
|
62
68
|
;
|
|
63
69
|
//# sourceMappingURL=save-custom-version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-custom-version.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-custom-version.ts"],"names":[],"mappings":";;;AAIA,IAAY,iBAoKX;AApKD,WAAY,iBAAiB;IAEzB,uGAA+B,CAAA;IAG/B,6FAAsB,CAAA;IAGtB,qGAA0B,CAAA;IAG1B,2GAA6B,CAAA;IAG7B,6GAA8B,CAAA;IAG9B,+GAA+B,CAAA;IAG/B,+FAAuB,CAAA;IAGvB,mHAAiC,CAAA;IAGjC,+GAA+B,CAAA;IAG/B,2HAAqC,CAAA;IAGrC,8FAAsB,CAAA;IAGtB,4HAAqC,CAAA;IAGrC,0GAA4B,CAAA;IAG5B,4GAA6B,CAAA;IAG7B,oKAAyD,CAAA;IAGzD,wGAA2B,CAAA;IAG3B,oIAAyC,CAAA;IAGzC,0GAA4B,CAAA;IAG5B,gHAA+B,CAAA;IAG/B,kGAAwB,CAAA;IAGxB,kFAAgB,CAAA;IAGhB,0FAAoB,CAAA;IAIpB,0FAAoB,CAAA;IAGpB,gGAAuB,CAAA;IAGvB,wFAAmB,CAAA;IAGnB,sFAAkB,CAAA;IAGlB,gGAAuB,CAAA;IAGvB,4FAAqB,CAAA;IAGrB,kGAAwB,CAAA;IAGxB,8FAAsB,CAAA;IAGtB,8FAAsB,CAAA;IAGtB,4HAAqC,CAAA;IAGrC,gGAAuB,CAAA;IAGvB,wGAA2B,CAAA;IAG3B,wGAA2B,CAAA;IAG3B,wGAA2B,CAAA;IAG3B,4FAAqB,CAAA;IAGrB,4EAAa,CAAA;IAGb,kGAAwB,CAAA;IAGxB,wFAAmB,CAAA;IAGnB,kGAAwB,CAAA;IAGxB,kGAAwB,CAAA;IAGxB,wGAA2B,CAAA;IAG3B,0GAA4B,CAAA;IAG5B,sFAAkB,CAAA;IAGlB,sHAAkC,CAAA;IAGlC,kEAAQ,CAAA;IAGR,0EAAY,CAAA;IAGZ,oJAAiD,CAAA;IAGjD,0FAAoB,CAAA;IAGpB,sGAA0B,CAAA;IAG1B,4HAAqC,CAAA;IAGrC,8GAA8B,CAAA;IAG9B,8EAAc,CAAA;IACd,4EAAkC,CAAA;AACtC,CAAC,EApKW,iBAAiB,iCAAjB,iBAAiB,QAoK5B;AAAA,CAAC","sourcesContent":["\n/**\n * Source: SaveCustomVersion.h\n */\nexport enum SaveCustomVersion {\n /** 2016/12/20 - Initial version of the save system, saves some character stuff like inventory and health */\n BeforeCustomVersionWasAdded = 0,\n\n /** 2017/01/23 - Now storing transform for all saved actors */\n DROPPED_StoreTransform,\n\n /** 2017/01/25 - Change object header, stops storing map name in savefile. Breaks all backward compability */\n DROPPED_ChangeObjectHeader,\n\n /** 2017/01/30 - Changed serialization of property names to strings instead of ints. Breaks all backward compability */\n DROPPED_PropertyTagsAsStrings,\n\n /** 2017/01/31 - Now store the body state of all vehicles */\n DROPPED_StoreVehiclesBodyState,\n\n /** 2017/02/13 - Store if a actor was stored in the level in the actor TOC */\n DROPPED_ActorPlacedInLevelSaved,\n\n /** 2017/05/02 - Removed outer from save in actor header, now it's saved as a part of the actors property set */\n DROPPED_MovedActorOuter,\n\n /** 2017/05/23 - Rewrote power connections to use actor components. */\n DROPPED_PowerConnectionComponents,\n\n // 2017-10-09: Serialize train timetable\n DROPPED_SerializeTrainTimetable,\n\n // 2017-10-27: FactoryConnection transform converted from World to local\n DROPPED_FactoryConnectionWorldToLocal,\n\n // 2017-11-03: Circuits are now objects and not structs.\n DROPPED_CircuitObjects,\n\n // 2018-02-12: DockingStations now only have one inventory\n DROPPED_DockingStationSingleInventory,\n\n // 2018-03-06: Saving build shortcuts\n DROPPED_SavingBuildShortcuts,\n\n // 2018-04-05 Game Phase manager has been added and functionality has been moved from GameState.\n DROPPED_GamePhaseManagerAdded,\n\n // 2018-10-25 No longer save relative transforms for UFGConnectionComponent.\n DROPPED_RemovedRelativeTransformsFromConnectionComponents,\n\n // 2018-11-19 OnlineSubsystemMCP - Restore a lost pawn since we didn't have peoples EpicID\n DROPPED_MCP_RestoreLostPawn,\n\n // 2018-11-19 Wires no longer save locations, they span between connection components instead\n DROPPED_WireSpanFromConnnectionComponents,\n\n // 2019-01-30 Renamed SaveSessionId\n DROPPED_RenamedSaveSessionId,\n\n // 2019-06-20 GeoThermal generators didn't save resource nodes prior to this which results with issues when being dismantled\n ChangedGeoThermalGeneratorSaved,\n\n // 2019-06-24 NewRailroadSerialization to overwrite old railroad data\n OverwriteOldRailroadData,\n\n // 2019-07-24 Due to a bug in the network optimizations the legs data where trashed, reseting the legs to zero is the best option.\n ResetFactoryLegs,\n\n // 2019-08-28 The large portion of the save file is now compressed. The header is still intact at the start of the file but after that it is compressed with ZLIB.\n SaveFileIsCompressed,\n\n // 2020-02-09: This is so we can check if a save is older than BU3 and do certain migrations. \n // For example save old number of inventory and arm slots to new system\n BU3SaveCompatibility,\n\n // 2020-03-19: Factory Colors have been converted to Linear Color. The buildable subsystem needs to convert from FColor to Linear Color overriding the defaults\n BuildingColorConversion,\n\n // 2020-04-21 Lizard doggos that had the friend status set but did not have a valid spawner saved will be recoupled with their spawner so that they are not killed bc of orphan status\n RescuedFriendDoggos,\n\n // 2020-06-02 Check if we have saved items in our inventory that is relevant to know if they are picked up\n CheckPickedUpItems,\n\n // 2021-02-05 Migrate Building Colros to FCustomUserColorData\n PerInstanceCustomColors,\n\n // 2021-09-14 Fix incorrect positioning of double ramp meshes. We then adjust position of double ramps in older saves in order to account for the change.\n DoubleRampPositioning,\n\n // 2021-09-21 Migrate FGTrain from native only to a blueprint class BP_Train.\n TrainBlueprintClassAdded,\n\n // 2021-12-03: Added sublevel streaming support\n AddedSublevelStreaming,\n\n // 2022-08-10: Added additional track progression path to resource sink subsystem\n AddedResourceSinkTrack,\n\n // 2022-07-28: Added Coloring support to concrete pillars, in post load we check if the swatch if the default one, if so we swap it with concrete.\n AddedColoringSupportToConcretePillars,\n\n // 2022-10-24: Readded since AddedColoringSupportToConcretePillars was merged to main\n AddedResourceSinkTrack2,\n\n // 2022-10-18: Added Cached locations for wire locations for use in visualization in blueprint hologram (can't depend on connection components)\n AddedCachedLocationsForWire,\n\n // 2022-11-17: Added migration of inventories from the old splitters and mergers to the new ones that have a smaller inventories.\n ReworkedSplittersAndMergers,\n\n // 2022-11-23: Added new productivity monitor implementation.\n ReworkedProductivityMonitor,\n\n // 2022-11-25: Nativized shopping list and added blueprint support.\n NativizedShoppingList,\n\n // 2022-07-05: Unreal Engine 5 support\n UnrealEngine5,\n\n // 2022-11-10: Added support for partitioned worlds in conjunction to sub-level saving \n IntroducedWorldPartition,\n\n // 2023-01-09: Tobias: Refactored drone actions to no longer be uobjects in order to fix a crash.\n DroneActionRefactor,\n\n // 2023-01-13: Tobias: Refactored wires to support multiple wire meshes.\n MultipleWireMeshRefactor,\n\n // 2023-01-11: Switched FArchive support to be 64bit in SaveSession\n SwitchTo64BitSaveArchive,\n\n // 20223-06-14: Added PostLoad corrections for splines built from Blueprints (they were broken do to them being now rendered by a shader)\n ResetBrokenBlueprintSplines,\n\n // 2023-09-15: Inventory Item State Refactor - now we save ItemState on FInventoryItems as a FGDynamicStruct, as opposed to AActor pointer\n RefactoredInventoryItemState,\n\n // 2024-04-03: Save version to ensure the paint finishes are in the save data.\n AddedPaintFinishes,\n\n // 2024-06-25: Normailzed Arrive / Leave tangents for conveyor chain spline points on load (this is a migration to mimic current spline generation code)\n NormalizeChainSplineArriveAndLeave,\n\n // 2024-06-04: Arbitrary \"1.0\" version\n Version1,\n\n // 2025-03-12: Tobias: I refactored the poles (conveyor / pipe) a while ago, but missed some save migration code necessary for the pipe poles so I'm adding this now\n PoleRefactor,\n\n // 2025-03-18: Lightweight Buildable Subsystem serializes lightweight buildable version now, to avoid having to bump the save version when updating serialization format for lightweights\n LightweightBuildableSubsystemWritesRuntimeVersion,\n\n // 2025-03-24: ObjectFlags are now serialized for objects and actors during saving. NOTE: Versions from this version till SerializePerStreamableLevelTOCVersion are VOLATILE and might lose sublevel data!!\n SerializeObjectFlags,\n\n // 2025-03-26: Back-to-back railroad switches.\n BackToBackRailroadSwitches,\n\n // 2025-03-28: Serialize per Streamable Level TOC version rather than using the persistent level version for all streamable levels TOC serialization\n SerializePerStreamableLevelTOCVersion,\n\n // 2025-04-23: Cleaning up invalid train track connections for saves prior to 1.1. Clears out ghost / teleporting connections and adds railroad switches where needed if there's a junction that doesn't have them.\n RailroadTrackConnectionCleanup,\n\n // -----<new versions can be added above this line>-------------------------------------------------\n VersionPlusOne,\n LatestVersion = VersionPlusOne - 1\n};"]}
|
|
1
|
+
{"version":3,"file":"save-custom-version.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-custom-version.ts"],"names":[],"mappings":";;;AAIA,IAAY,iBAsLX;AAtLD,WAAY,iBAAiB;IAEzB,uGAA+B,CAAA;IAG/B,6FAAsB,CAAA;IAGtB,qGAA0B,CAAA;IAG1B,2GAA6B,CAAA;IAG7B,6GAA8B,CAAA;IAG9B,+GAA+B,CAAA;IAG/B,+FAAuB,CAAA;IAGvB,mHAAiC,CAAA;IAGjC,+GAA+B,CAAA;IAG/B,2HAAqC,CAAA;IAGrC,8FAAsB,CAAA;IAGtB,4HAAqC,CAAA;IAGrC,0GAA4B,CAAA;IAG5B,4GAA6B,CAAA;IAG7B,oKAAyD,CAAA;IAGzD,wGAA2B,CAAA;IAG3B,oIAAyC,CAAA;IAGzC,0GAA4B,CAAA;IAG5B,gHAA+B,CAAA;IAG/B,kGAAwB,CAAA;IAGxB,kFAAgB,CAAA;IAGhB,0FAAoB,CAAA;IAIpB,0FAAoB,CAAA;IAGpB,gGAAuB,CAAA;IAGvB,wFAAmB,CAAA;IAGnB,sFAAkB,CAAA;IAGlB,gGAAuB,CAAA;IAGvB,4FAAqB,CAAA;IAGrB,kGAAwB,CAAA;IAGxB,8FAAsB,CAAA;IAGtB,8FAAsB,CAAA;IAGtB,4HAAqC,CAAA;IAGrC,gGAAuB,CAAA;IAGvB,wGAA2B,CAAA;IAG3B,wGAA2B,CAAA;IAG3B,wGAA2B,CAAA;IAG3B,4FAAqB,CAAA;IAGrB,4EAAa,CAAA;IAGb,kGAAwB,CAAA;IAGxB,wFAAmB,CAAA;IAGnB,kGAAwB,CAAA;IAGxB,kGAAwB,CAAA;IAGxB,wGAA2B,CAAA;IAG3B,0GAA4B,CAAA;IAG5B,sFAAkB,CAAA;IAGlB,sHAAkC,CAAA;IAGlC,kEAAQ,CAAA;IAGR,0EAAY,CAAA;IAGZ,oJAAiD,CAAA;IAGjD,0FAAoB,CAAA;IAGpB,sGAA0B,CAAA;IAG1B,4HAAqC,CAAA;IAGrC,8GAA8B,CAAA;IAG9B,0IAA4C,CAAA;IAG5C,0JAAoD,CAAA;IAGpD,sJAAkD,CAAA;IAGlD,8IAA8C,CAAA;IAG9C,8HAAsC,CAAA;IAGtC,oIAAyC,CAAA;IAGzC,8EAAc,CAAA;IACd,4EAAkC,CAAA;AACtC,CAAC,EAtLW,iBAAiB,iCAAjB,iBAAiB,QAsL5B;AAAA,CAAC","sourcesContent":["\n/**\n * Source: SaveCustomVersion.h\n */\nexport enum SaveCustomVersion {\n /** 2016/12/20 - Initial version of the save system, saves some character stuff like inventory and health */\n BeforeCustomVersionWasAdded = 0,\n\n /** 2017/01/23 - Now storing transform for all saved actors */\n DROPPED_StoreTransform,\n\n /** 2017/01/25 - Change object header, stops storing map name in savefile. Breaks all backward compability */\n DROPPED_ChangeObjectHeader,\n\n /** 2017/01/30 - Changed serialization of property names to strings instead of ints. Breaks all backward compability */\n DROPPED_PropertyTagsAsStrings,\n\n /** 2017/01/31 - Now store the body state of all vehicles */\n DROPPED_StoreVehiclesBodyState,\n\n /** 2017/02/13 - Store if a actor was stored in the level in the actor TOC */\n DROPPED_ActorPlacedInLevelSaved,\n\n /** 2017/05/02 - Removed outer from save in actor header, now it's saved as a part of the actors property set */\n DROPPED_MovedActorOuter,\n\n /** 2017/05/23 - Rewrote power connections to use actor components. */\n DROPPED_PowerConnectionComponents,\n\n // 2017-10-09: Serialize train timetable\n DROPPED_SerializeTrainTimetable,\n\n // 2017-10-27: FactoryConnection transform converted from World to local\n DROPPED_FactoryConnectionWorldToLocal,\n\n // 2017-11-03: Circuits are now objects and not structs.\n DROPPED_CircuitObjects,\n\n // 2018-02-12: DockingStations now only have one inventory\n DROPPED_DockingStationSingleInventory,\n\n // 2018-03-06: Saving build shortcuts\n DROPPED_SavingBuildShortcuts,\n\n // 2018-04-05 Game Phase manager has been added and functionality has been moved from GameState.\n DROPPED_GamePhaseManagerAdded,\n\n // 2018-10-25 No longer save relative transforms for UFGConnectionComponent.\n DROPPED_RemovedRelativeTransformsFromConnectionComponents,\n\n // 2018-11-19 OnlineSubsystemMCP - Restore a lost pawn since we didn't have peoples EpicID\n DROPPED_MCP_RestoreLostPawn,\n\n // 2018-11-19 Wires no longer save locations, they span between connection components instead\n DROPPED_WireSpanFromConnnectionComponents,\n\n // 2019-01-30 Renamed SaveSessionId\n DROPPED_RenamedSaveSessionId,\n\n // 2019-06-20 GeoThermal generators didn't save resource nodes prior to this which results with issues when being dismantled\n ChangedGeoThermalGeneratorSaved,\n\n // 2019-06-24 NewRailroadSerialization to overwrite old railroad data\n OverwriteOldRailroadData,\n\n // 2019-07-24 Due to a bug in the network optimizations the legs data where trashed, reseting the legs to zero is the best option.\n ResetFactoryLegs,\n\n // 2019-08-28 The large portion of the save file is now compressed. The header is still intact at the start of the file but after that it is compressed with ZLIB.\n SaveFileIsCompressed,\n\n // 2020-02-09: This is so we can check if a save is older than BU3 and do certain migrations. \n // For example save old number of inventory and arm slots to new system\n BU3SaveCompatibility,\n\n // 2020-03-19: Factory Colors have been converted to Linear Color. The buildable subsystem needs to convert from FColor to Linear Color overriding the defaults\n BuildingColorConversion,\n\n // 2020-04-21 Lizard doggos that had the friend status set but did not have a valid spawner saved will be recoupled with their spawner so that they are not killed bc of orphan status\n RescuedFriendDoggos,\n\n // 2020-06-02 Check if we have saved items in our inventory that is relevant to know if they are picked up\n CheckPickedUpItems,\n\n // 2021-02-05 Migrate Building Colros to FCustomUserColorData\n PerInstanceCustomColors,\n\n // 2021-09-14 Fix incorrect positioning of double ramp meshes. We then adjust position of double ramps in older saves in order to account for the change.\n DoubleRampPositioning,\n\n // 2021-09-21 Migrate FGTrain from native only to a blueprint class BP_Train.\n TrainBlueprintClassAdded,\n\n // 2021-12-03: Added sublevel streaming support\n AddedSublevelStreaming,\n\n // 2022-08-10: Added additional track progression path to resource sink subsystem\n AddedResourceSinkTrack,\n\n // 2022-07-28: Added Coloring support to concrete pillars, in post load we check if the swatch if the default one, if so we swap it with concrete.\n AddedColoringSupportToConcretePillars,\n\n // 2022-10-24: Readded since AddedColoringSupportToConcretePillars was merged to main\n AddedResourceSinkTrack2,\n\n // 2022-10-18: Added Cached locations for wire locations for use in visualization in blueprint hologram (can't depend on connection components)\n AddedCachedLocationsForWire,\n\n // 2022-11-17: Added migration of inventories from the old splitters and mergers to the new ones that have a smaller inventories.\n ReworkedSplittersAndMergers,\n\n // 2022-11-23: Added new productivity monitor implementation.\n ReworkedProductivityMonitor,\n\n // 2022-11-25: Nativized shopping list and added blueprint support.\n NativizedShoppingList,\n\n // 2022-07-05: Unreal Engine 5 support\n UnrealEngine5,\n\n // 2022-11-10: Added support for partitioned worlds in conjunction to sub-level saving \n IntroducedWorldPartition,\n\n // 2023-01-09: Tobias: Refactored drone actions to no longer be uobjects in order to fix a crash.\n DroneActionRefactor,\n\n // 2023-01-13: Tobias: Refactored wires to support multiple wire meshes.\n MultipleWireMeshRefactor,\n\n // 2023-01-11: Switched FArchive support to be 64bit in SaveSession\n SwitchTo64BitSaveArchive,\n\n // 20223-06-14: Added PostLoad corrections for splines built from Blueprints (they were broken do to them being now rendered by a shader)\n ResetBrokenBlueprintSplines,\n\n // 2023-09-15: Inventory Item State Refactor - now we save ItemState on FInventoryItems as a FGDynamicStruct, as opposed to AActor pointer\n RefactoredInventoryItemState,\n\n // 2024-04-03: Save version to ensure the paint finishes are in the save data.\n AddedPaintFinishes,\n\n // 2024-06-25: Normailzed Arrive / Leave tangents for conveyor chain spline points on load (this is a migration to mimic current spline generation code)\n NormalizeChainSplineArriveAndLeave,\n\n // 2024-06-04: Arbitrary \"1.0\" version\n Version1,\n\n // 2025-03-12: Tobias: I refactored the poles (conveyor / pipe) a while ago, but missed some save migration code necessary for the pipe poles so I'm adding this now\n PoleRefactor,\n\n // 2025-03-18: Lightweight Buildable Subsystem serializes lightweight buildable version now, to avoid having to bump the save version when updating serialization format for lightweights\n LightweightBuildableSubsystemWritesRuntimeVersion,\n\n // 2025-03-24: ObjectFlags are now serialized for objects and actors during saving. NOTE: Versions from this version till SerializePerStreamableLevelTOCVersion are VOLATILE and might lose sublevel data!!\n SerializeObjectFlags,\n\n // 2025-03-26: Back-to-back railroad switches.\n BackToBackRailroadSwitches,\n\n // 2025-03-28: Serialize per Streamable Level TOC version rather than using the persistent level version for all streamable levels TOC serialization\n SerializePerStreamableLevelTOCVersion,\n\n // 2025-04-23: Cleaning up invalid train track connections for saves prior to 1.1. Clears out ghost / teleporting connections and adds railroad switches where needed if there's a junction that doesn't have them.\n RailroadTrackConnectionCleanup,\n\n // 2025-05-06: Serialize package file version (UE version) and custom versions for serialized object data\n SerializeDataPackageVersionAndCustomVersions,\n\n // 2025-06-26: This version was dropped on 2025-08-06 due to issues introduced internally.\n DROPPED_RailroadSubsystemThirdRailConnectionsCleanup,\n\n // 2025-08-06: Proper fix for third rails leaked into saves.\n RailroadSubsystemThirdRailConnectionsCleanupRedone,\n\n // 2025-12-02: Added available item descriptors system, and automatically unlock all items that are remebered as picked up\n UnlockAvailableItemDescriptorsForPickedUpItems,\n\n // 2025-12-11: Treat Null online services Player Info Handles as valid, use INDEX_NONE to refer to invalid handles instead. Switched to int32 to refer to player info index\n NewPlayerInfoHandleSerializationFormat,\n\n // 2025-12-12: Fix FPlayerInfoHandle serializing the data twice and not sticking to the old format in all cases\n FixNewPlayerInfoHandleSerializationFormat,\n\n // -----<new versions can be added above this line>-------------------------------------------------\n VersionPlusOne,\n LatestVersion = VersionPlusOne - 1\n};"]}
|
|
@@ -7,8 +7,8 @@ export declare class SaveReader extends ContextReader {
|
|
|
7
7
|
onProgressCallback: (progress: number, msg?: string) => void;
|
|
8
8
|
static readonly EPOCH_TICKS = 621355968000000000n;
|
|
9
9
|
constructor(fileBuffer: ArrayBufferLike, onProgressCallback?: (progress: number, msg?: string) => void);
|
|
10
|
-
|
|
11
|
-
static
|
|
10
|
+
static GetApproximateSaveVersion: (saveVersion: number) => RoughSaveVersion;
|
|
11
|
+
static IsGameVersionAtLeast_U1_2: (saveVersion: number) => boolean;
|
|
12
12
|
static IsGameVersionAtLeast_U1_1: (saveVersion: number) => boolean;
|
|
13
13
|
static IsGameVersionAtLeast_U1: (saveVersion: number) => boolean;
|
|
14
14
|
static IsGameVersionAtLeast_U8: (saveVersion: number) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-reader.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"save-reader.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-reader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI7D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAkB,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,eAAO,MAAM,sCAAsC,KAAK,CAAC;AAIzD,qBAAa,UAAW,SAAQ,aAAa;IAKI,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAI;IAF5G,gBAAuB,WAAW,uBAAuB;gBAE7C,UAAU,EAAE,eAAe,EAAS,kBAAkB,GAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,IAAgB;IAKxH,OAAc,yBAAyB,gBAAiB,MAAM,KAAG,gBAAgB,CAc/E;IAEF,OAAc,yBAAyB,gBAAiB,MAAM,aAAgF;IAC9I,OAAc,yBAAyB,gBAAiB,MAAM,aAA4E;IAC1I,OAAc,uBAAuB,gBAAiB,MAAM,aAA+C;IAC3G,OAAc,uBAAuB,gBAAiB,MAAM,aAAoD;IAChH,OAAc,0BAA0B,gBAAiB,MAAM,aAA6D;IAErH,aAAa,IAAI;QAAE,eAAe,EAAE,oBAAoB,CAAA;KAAE;IAqB1D,UAAU,IAAI;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;KAAE;CA2BpD"}
|
|
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SaveReader = exports.DEFAULT_SATISFACTORY_CHUNK_HEADER_SIZE = void 0;
|
|
4
4
|
const alignment_enum_1 = require("../../byte/alignment.enum");
|
|
5
5
|
const context_reader_1 = require("../../context/context-reader");
|
|
6
|
+
const hierarchical_version_context_1 = require("../../context/hierarchical-version-context");
|
|
6
7
|
const parser_error_1 = require("../../error/parser.error");
|
|
8
|
+
const EUnrealEngineObjectUE5Version_1 = require("../../unreal-engine/EUnrealEngineObjectUE5Version");
|
|
7
9
|
const level_1 = require("./level");
|
|
8
10
|
const save_body_chunks_1 = require("./save-body-chunks");
|
|
9
11
|
const save_custom_version_1 = require("./save-custom-version");
|
|
@@ -12,11 +14,7 @@ class SaveReader extends context_reader_1.ContextReader {
|
|
|
12
14
|
constructor(fileBuffer, onProgressCallback = () => { }) {
|
|
13
15
|
super(fileBuffer, alignment_enum_1.Alignment.LITTLE_ENDIAN);
|
|
14
16
|
this.onProgressCallback = onProgressCallback;
|
|
15
|
-
this.
|
|
16
|
-
if (value !== expected) {
|
|
17
|
-
console.warn(`Read a value that's usually '${expected}', but this time '${value}'. Meaning unclear. Especially if you use mods. Raise an issue or contact me if you want.`);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
17
|
+
this.context.packageFileVersionUE5 = hierarchical_version_context_1.HierarchyVersion.CreateOnHeader(EUnrealEngineObjectUE5Version_1.EUnrealEngineObjectUE5Version.INITIAL_VERSION);
|
|
20
18
|
}
|
|
21
19
|
inflateChunks() {
|
|
22
20
|
const result = save_body_chunks_1.SaveBodyChunks.DecompressChunks(this.fileBuffer.slice(this.currentByte), this.alignment);
|
|
@@ -25,8 +23,9 @@ class SaveReader extends context_reader_1.ContextReader {
|
|
|
25
23
|
this.maxByte = this.fileBuffer.byteLength;
|
|
26
24
|
this.bufferView = new DataView(this.fileBuffer);
|
|
27
25
|
const totalBodyRestSize = this.readInt32();
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
const extraBytes = (this.context.saveVersion.header >= save_custom_version_1.SaveCustomVersion.UnrealEngine5 ? 8 : 4);
|
|
27
|
+
if (result.uncompressedData.byteLength !== (totalBodyRestSize + extraBytes)) {
|
|
28
|
+
throw new parser_error_1.CorruptSaveError(`Possibly corrupt. Indicated size of total save body (${totalBodyRestSize + extraBytes}) does not match the uncompressed real size of ${result.uncompressedData.byteLength}.`);
|
|
30
29
|
}
|
|
31
30
|
return {
|
|
32
31
|
compressionInfo: result.compressionInfo
|
|
@@ -36,8 +35,8 @@ class SaveReader extends context_reader_1.ContextReader {
|
|
|
36
35
|
if (!this.context.saveVersion || !this.context.saveHeaderType) {
|
|
37
36
|
throw new parser_error_1.ParserError('ParserError', 'Header and its context must be set before objects can be read.');
|
|
38
37
|
}
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
38
|
+
const approximateSaveVersion = SaveReader.GetApproximateSaveVersion(this.context.saveVersion.header);
|
|
39
|
+
if (approximateSaveVersion === '<U6') {
|
|
41
40
|
throw new parser_error_1.UnsupportedVersionError('Game Version < U6 is not supported in the parser. Please save the file in a newer game version.');
|
|
42
41
|
}
|
|
43
42
|
const levels = {};
|
|
@@ -48,16 +47,19 @@ class SaveReader extends context_reader_1.ContextReader {
|
|
|
48
47
|
if (i % 500 === 0) {
|
|
49
48
|
this.onProgressCallback(this.getBufferProgress(), `reading level [${(i + 1)}/${(levelCount + 1)}] ${levelSingleName}`);
|
|
50
49
|
}
|
|
51
|
-
levels[levelSingleName] = level_1.Level.
|
|
50
|
+
levels[levelSingleName] = level_1.Level.Read(this, levelSingleName);
|
|
52
51
|
}
|
|
53
52
|
return levels;
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
exports.SaveReader = SaveReader;
|
|
57
56
|
SaveReader.EPOCH_TICKS = 621355968000000000n;
|
|
58
|
-
SaveReader.
|
|
59
|
-
if (SaveReader.
|
|
60
|
-
return 'U1.
|
|
57
|
+
SaveReader.GetApproximateSaveVersion = (saveVersion) => {
|
|
58
|
+
if (SaveReader.IsGameVersionAtLeast_U1_2(saveVersion)) {
|
|
59
|
+
return 'U1.2+';
|
|
60
|
+
}
|
|
61
|
+
else if (SaveReader.IsGameVersionAtLeast_U1_1(saveVersion)) {
|
|
62
|
+
return 'U1.1';
|
|
61
63
|
}
|
|
62
64
|
else if (SaveReader.IsGameVersionAtLeast_U1(saveVersion)) {
|
|
63
65
|
return 'U1.0';
|
|
@@ -72,6 +74,7 @@ SaveReader.GetRoughSaveVersion = (saveVersion) => {
|
|
|
72
74
|
return '<U6';
|
|
73
75
|
}
|
|
74
76
|
};
|
|
77
|
+
SaveReader.IsGameVersionAtLeast_U1_2 = (saveVersion) => saveVersion >= save_custom_version_1.SaveCustomVersion.FixNewPlayerInfoHandleSerializationFormat;
|
|
75
78
|
SaveReader.IsGameVersionAtLeast_U1_1 = (saveVersion) => saveVersion >= save_custom_version_1.SaveCustomVersion.SerializePerStreamableLevelTOCVersion;
|
|
76
79
|
SaveReader.IsGameVersionAtLeast_U1 = (saveVersion) => saveVersion >= save_custom_version_1.SaveCustomVersion.Version1;
|
|
77
80
|
SaveReader.IsGameVersionAtLeast_U8 = (saveVersion) => saveVersion >= save_custom_version_1.SaveCustomVersion.UnrealEngine5;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-reader.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-reader.ts"],"names":[],"mappings":";;;AAAA,8DAAsD;AACtD,iEAA6D;AAC7D,2DAAkG;
|
|
1
|
+
{"version":3,"file":"save-reader.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-reader.ts"],"names":[],"mappings":"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","sourcesContent":["import { Alignment } from '../../byte/alignment.enum';\nimport { ContextReader } from '../../context/context-reader';\nimport { HierarchyVersion } from '../../context/hierarchical-version-context';\nimport { CorruptSaveError, ParserError, UnsupportedVersionError } from '../../error/parser.error';\nimport { EUnrealEngineObjectUE5Version } from '../../unreal-engine/EUnrealEngineObjectUE5Version';\nimport { Level } from './level';\nimport { ChunkCompressionInfo, SaveBodyChunks } from './save-body-chunks';\nimport { SaveCustomVersion } from './save-custom-version';\nimport { RoughSaveVersion } from './save.types';\n\n\nexport const DEFAULT_SATISFACTORY_CHUNK_HEADER_SIZE = 49;\n\n\n\nexport class SaveReader extends ContextReader {\n\n\t// the number of .net ticks at the unix epoch\n\tpublic static readonly EPOCH_TICKS = 621355968000000000n;\n\n\tconstructor(fileBuffer: ArrayBufferLike, public onProgressCallback: (progress: number, msg?: string) => void = () => { }) {\n\t\tsuper(fileBuffer, Alignment.LITTLE_ENDIAN);\n\t\tthis.context.packageFileVersionUE5 = HierarchyVersion.CreateOnHeader(EUnrealEngineObjectUE5Version.INITIAL_VERSION);\n\t}\n\n\tpublic static GetApproximateSaveVersion = (saveVersion: number): RoughSaveVersion => {\n\t\tif (SaveReader.IsGameVersionAtLeast_U1_2(saveVersion)) {\n\t\t\treturn 'U1.2+';\n\t\t} else if (SaveReader.IsGameVersionAtLeast_U1_1(saveVersion)) {\n\t\t\treturn 'U1.1';\n\t\t} else if (SaveReader.IsGameVersionAtLeast_U1(saveVersion)) {\n\t\t\treturn 'U1.0';\n\t\t} else if (SaveReader.IsGameVersionAtLeast_U8(saveVersion)) {\n\t\t\treturn 'U8';\n\t\t} else if (SaveReader.IsGameVersionAtLeast_U6_U7(saveVersion)) {\n\t\t\treturn 'U6/U7';\n\t\t} else {\n\t\t\treturn '<U6';\n\t\t}\n\t};\n\n\tpublic static IsGameVersionAtLeast_U1_2 = (saveVersion: number) => saveVersion >= SaveCustomVersion.FixNewPlayerInfoHandleSerializationFormat;\n\tpublic static IsGameVersionAtLeast_U1_1 = (saveVersion: number) => saveVersion >= SaveCustomVersion.SerializePerStreamableLevelTOCVersion;\n\tpublic static IsGameVersionAtLeast_U1 = (saveVersion: number) => saveVersion >= SaveCustomVersion.Version1;\n\tpublic static IsGameVersionAtLeast_U8 = (saveVersion: number) => saveVersion >= SaveCustomVersion.UnrealEngine5;\t// Could be anywhere from UnrealEngine5 (37) to ResetBrokenBlueprintSplinnes (42)\n\tpublic static IsGameVersionAtLeast_U6_U7 = (saveVersion: number) => saveVersion >= SaveCustomVersion.AddedSublevelStreaming;\n\n\tpublic inflateChunks(): { compressionInfo: ChunkCompressionInfo } {\n\n\t\tconst result = SaveBodyChunks.DecompressChunks(this.fileBuffer.slice(this.currentByte), this.alignment);\n\n\t\t// reset on decompressed data.\n\t\tthis.currentByte = 0;\n\t\tthis.fileBuffer = result.uncompressedData.buffer;\n\t\tthis.maxByte = this.fileBuffer.byteLength;\n\t\tthis.bufferView = new DataView(this.fileBuffer);\n\n\t\tconst totalBodyRestSize = this.readInt32();\n\t\tconst extraBytes = (this.context.saveVersion.header >= SaveCustomVersion.UnrealEngine5 ? 8 : 4);\n\t\tif (result.uncompressedData.byteLength !== (totalBodyRestSize + extraBytes)) {\n\t\t\tthrow new CorruptSaveError(`Possibly corrupt. Indicated size of total save body (${totalBodyRestSize + extraBytes}) does not match the uncompressed real size of ${result.uncompressedData.byteLength}.`);\n\t\t}\n\n\t\treturn {\n\t\t\tcompressionInfo: result.compressionInfo\n\t\t};\n\t}\n\n\tpublic readLevels(): { [levelName: string]: Level; } {\n\n\t\tif (!this.context.saveVersion || !this.context.saveHeaderType) {\n\t\t\tthrow new ParserError('ParserError', 'Header and its context must be set before objects can be read.');\n\t\t}\n\n\t\t// guard save version\n\t\tconst approximateSaveVersion = SaveReader.GetApproximateSaveVersion(this.context.saveVersion.header);\n\t\tif (approximateSaveVersion === '<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\tconst levels: { [levelName: string]: Level; } = {};\n\t\tconst levelCount = this.readInt32();\n\t\tthis.onProgressCallback(this.getBufferProgress(), `reading pack of ${levelCount + 1} levels.`);\n\n\t\tfor (let i = 0; i <= levelCount; i++) {\n\t\t\tlet levelSingleName = i === levelCount ? this.context.mapName! : this.readString();\n\t\t\tif (i % 500 === 0) {\n\t\t\t\tthis.onProgressCallback(this.getBufferProgress(), `reading level [${(i + 1)}/${(levelCount + 1)}] ${levelSingleName}`);\n\t\t\t}\n\n\t\t\tlevels[levelSingleName] = Level.Read(this, levelSingleName);\n\t\t}\n\n\t\treturn levels;\n\t}\n}\n\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-writer.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"save-writer.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAK7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAkB,MAAM,oBAAoB,CAAC;AAGxF,qBAAa,UAAW,SAAQ,aAAa;;WAO9B,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;WAUhE,gCAAgC,CAC7C,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,oBAAoB,EACrC,eAAe,EAAE,WAAW,GAAG,MAAM,EACrC,yBAAyB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,EACxD,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACpC,SAAS,GAAE,SAAmC,GAC5C,YAAY,EAAE;IAKV,cAAc,CACpB,eAAe,EAAE,oBAAoB,EACrC,cAAc,EAAE,MAAM,EAEtB,yBAAyB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,EACxD,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EACtC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAClC,YAAY,EAAE;CAgBjB"}
|
|
@@ -3,12 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SaveWriter = void 0;
|
|
4
4
|
const alignment_enum_1 = require("../../byte/alignment.enum");
|
|
5
5
|
const context_writer_1 = require("../../context/context-writer");
|
|
6
|
+
const hierarchical_version_context_1 = require("../../context/hierarchical-version-context");
|
|
6
7
|
const parser_error_1 = require("../../error/parser.error");
|
|
8
|
+
const EUnrealEngineObjectUE5Version_1 = require("../../unreal-engine/EUnrealEngineObjectUE5Version");
|
|
7
9
|
const level_1 = require("./level");
|
|
8
10
|
const save_body_chunks_1 = require("./save-body-chunks");
|
|
9
11
|
class SaveWriter extends context_writer_1.ContextWriter {
|
|
10
12
|
constructor() {
|
|
11
13
|
super(alignment_enum_1.Alignment.LITTLE_ENDIAN);
|
|
14
|
+
this.context.packageFileVersionUE5 = hierarchical_version_context_1.HierarchyVersion.CreateOnHeader(EUnrealEngineObjectUE5Version_1.EUnrealEngineObjectUE5Version.INITIAL_VERSION);
|
|
12
15
|
}
|
|
13
16
|
static WriteLevels(writer, save) {
|
|
14
17
|
writer.writeInt32(Object.keys(save.levels).length - 1);
|
|
@@ -16,7 +19,7 @@ class SaveWriter extends context_writer_1.ContextWriter {
|
|
|
16
19
|
if (level.name !== save.header.mapName) {
|
|
17
20
|
writer.writeString(level.name);
|
|
18
21
|
}
|
|
19
|
-
level_1.Level.
|
|
22
|
+
level_1.Level.Serialize(writer, level);
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
static GenerateCompressedChunksFromData(bufferArray, compressionInfo, blueprintOrSave, onBinaryBeforeCompressing, onChunk, alignment = alignment_enum_1.Alignment.LITTLE_ENDIAN) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-writer.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-writer.ts"],"names":[],"mappings":";;;AAAA,8DAAsD;AACtD,iEAA6D;AAC7D,2DAAuD;AACvD,mCAAgC;AAEhC,yDAAwF;AAGxF,MAAa,UAAW,SAAQ,8BAAa;IAE5C;QACC,KAAK,CAAC,0BAAS,CAAC,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"save-writer.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save-writer.ts"],"names":[],"mappings":";;;AAAA,8DAAsD;AACtD,iEAA6D;AAC7D,6FAA8E;AAC9E,2DAAuD;AACvD,qGAAkG;AAClG,mCAAgC;AAEhC,yDAAwF;AAGxF,MAAa,UAAW,SAAQ,8BAAa;IAE5C;QACC,KAAK,CAAC,0BAAS,CAAC,aAAa,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,qBAAqB,GAAG,+CAAgB,CAAC,cAAc,CAAC,6DAA6B,CAAC,eAAe,CAAC,CAAC;IACrH,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,MAAqB,EAAE,IAAsB;QACtE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YACD,aAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAEM,MAAM,CAAC,gCAAgC,CAC7C,WAAwB,EACxB,eAAqC,EACrC,eAAqC,EACrC,yBAAwD,EACxD,OAAoC,EACpC,YAAuB,0BAAS,CAAC,aAAa;QAG9C,OAAO,iCAAc,CAAC,sBAAsB,CAAC,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,yBAAyB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5I,CAAC;IAEM,cAAc,CACpB,eAAqC,EACrC,cAAsB,EAEtB,yBAAwD,EACxD,QAAsC,EACtC,OAAoC;QAGpC,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,0BAAW,CAAC,aAAa,EAAE,qGAAqG,CAAC,CAAC;QAC7I,CAAC;QAGD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QACzE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAGjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,UAAU,CAAC,gCAAgC,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhK,OAAO,YAAY,CAAC;IACrB,CAAC;CACD;AApDD,gCAoDC","sourcesContent":["import { Alignment } from \"../../byte/alignment.enum\";\nimport { ContextWriter } from '../../context/context-writer';\nimport { HierarchyVersion } from \"../../context/hierarchical-version-context\";\nimport { ParserError } from \"../../error/parser.error\";\nimport { EUnrealEngineObjectUE5Version } from \"../../unreal-engine/EUnrealEngineObjectUE5Version\";\nimport { Level } from './level';\nimport { SatisfactorySave } from \"./satisfactory-save\";\nimport { ChunkCompressionInfo, ChunkSummary, SaveBodyChunks } from \"./save-body-chunks\";\n\n\nexport class SaveWriter extends ContextWriter {\n\n\tconstructor() {\n\t\tsuper(Alignment.LITTLE_ENDIAN);\n\t\tthis.context.packageFileVersionUE5 = HierarchyVersion.CreateOnHeader(EUnrealEngineObjectUE5Version.INITIAL_VERSION);\n\t}\n\n\tpublic static WriteLevels(writer: ContextWriter, save: SatisfactorySave): void {\n\t\twriter.writeInt32(Object.keys(save.levels).length - 1);\n\t\tfor (const level of Object.values(save.levels)) {\n\t\t\tif (level.name !== save.header.mapName) {\n\t\t\t\twriter.writeString(level.name);\n\t\t\t}\n\t\t\tLevel.Serialize(writer, level);\n\t\t}\n\t}\n\n\tpublic static GenerateCompressedChunksFromData(\n\t\tbufferArray: ArrayBuffer,\n\t\tcompressionInfo: ChunkCompressionInfo,\n\t\tblueprintOrSave: 'blueprint' | 'save',\n\t\tonBinaryBeforeCompressing: (binary: ArrayBuffer) => void,\n\t\tonChunk: (chunk: Uint8Array) => void,\n\t\talignment: Alignment = Alignment.LITTLE_ENDIAN\n\t): ChunkSummary[] {\n\n\t\treturn SaveBodyChunks.CompressDataIntoChunks(bufferArray, compressionInfo, blueprintOrSave, onBinaryBeforeCompressing, onChunk, alignment);\n\t}\n\n\tpublic generateChunks(\n\t\tcompressionInfo: ChunkCompressionInfo,\n\t\tposAfterHeader: number,\n\n\t\tonBinaryBeforeCompressing: (binary: ArrayBuffer) => void,\n\t\tonHeader: (header: Uint8Array) => void,\n\t\tonChunk: (chunk: Uint8Array) => void\n\t): ChunkSummary[] {\n\n\t\tif (posAfterHeader <= 0) {\n\t\t\tthrow new ParserError('ParserError', 'Seems like this buffer has no header. Please write the header first before you can generate chunks.');\n\t\t}\n\n\t\t// send plain header first.\n\t\tconst header = new Uint8Array(this.bufferArray.slice(0, posAfterHeader));\n\t\tonHeader(header);\n\n\t\t// create save body\n\t\tthis.bufferArray = this.bufferArray.slice(posAfterHeader);\n\t\tconst chunkSummary = SaveWriter.GenerateCompressedChunksFromData(this.bufferArray, compressionInfo, 'save', onBinaryBeforeCompressing, onChunk, this.alignment);\n\n\t\treturn chunkSummary;\n\t}\n}\n"]}
|
|
@@ -8,5 +8,5 @@ export type SatisfactoryModMetadata = {
|
|
|
8
8
|
FullMapName: string;
|
|
9
9
|
Mods: ModData[];
|
|
10
10
|
};
|
|
11
|
-
export type RoughSaveVersion = '<U6' | 'U6/U7' | 'U8' | 'U1.0' | 'U1.1+';
|
|
11
|
+
export type RoughSaveVersion = '<U6' | 'U6/U7' | 'U8' | 'U1.0' | 'U1.1' | 'U1.2+';
|
|
12
12
|
//# sourceMappingURL=save.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.types.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save.types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAA;AAGD,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,EAAE,CAAC;CACnB,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"save.types.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save.types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,OAAO,GAAG;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB,CAAA;AAGD,MAAM,MAAM,uBAAuB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,EAAE,CAAC;CACnB,CAAA;AAGD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.types.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save.types.ts"],"names":[],"mappings":"","sourcesContent":["\n/** @public */\nexport type ModData = {\n Reference: string;\n Name: string;\n Version: string;\n}\n\n/** @public */\nexport type SatisfactoryModMetadata = {\n Version: number;\n FullMapName: string;\n Mods: ModData[];\n}\n\n/** @public */\nexport type RoughSaveVersion = '<U6' | 'U6/U7' | 'U8' | 'U1.0' | 'U1.1+';"]}
|
|
1
|
+
{"version":3,"file":"save.types.js","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/save.types.ts"],"names":[],"mappings":"","sourcesContent":["\n/** @public */\nexport type ModData = {\n Reference: string;\n Name: string;\n Version: string;\n}\n\n/** @public */\nexport type SatisfactoryModMetadata = {\n Version: number;\n FullMapName: string;\n Mods: ModData[];\n}\n\n/** @public */\nexport type RoughSaveVersion = '<U6' | 'U6/U7' | 'U8' | 'U1.0' | 'U1.1' | 'U1.2+';"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ContextReader } from "../../context/context-reader";
|
|
2
|
+
import { ContextWriter } from "../../context/context-writer";
|
|
3
|
+
import { SaveComponent } from "../types/objects/SaveComponent";
|
|
4
|
+
import { SaveEntity } from "../types/objects/SaveEntity";
|
|
5
|
+
import { Level } from "./level";
|
|
6
|
+
type BlobMarker = {
|
|
7
|
+
position: number;
|
|
8
|
+
length: number;
|
|
9
|
+
};
|
|
10
|
+
export declare namespace TOCBlob {
|
|
11
|
+
function SkipOver(reader: ContextReader): BlobMarker;
|
|
12
|
+
function Read(reader: ContextReader, objectsList: (SaveEntity | SaveComponent)[]): void;
|
|
13
|
+
function ReadNObjectHeaders(reader: ContextReader, count: number): (SaveEntity | SaveComponent)[];
|
|
14
|
+
function Write(writer: ContextWriter, level: Level, isPersistentLevel: boolean): void;
|
|
15
|
+
function SerializeAllObjectHeaders(writer: ContextWriter, objects: (SaveEntity | SaveComponent)[]): void;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=toc-blob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toc-blob.d.ts","sourceRoot":"","sources":["../../../../src/parser/satisfactory/save/toc-blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKhC,KAAK,UAAU,GAAG;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAA;AAKD,yBAAiB,OAAO,CAAC;IAErB,SAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,CAY1D;IAGD,SAAgB,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI,CAU7F;IAED,SAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC,EAAE,CAsBvG;IAED,SAAgB,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,QAsBpF;IAGD,SAAgB,yBAAyB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,UAAU,GAAG,aAAa,CAAC,EAAE,GAAG,IAAI,CAkB9G;CACJ"}
|