@etothepii/satisfactory-file-parser 0.0.11 → 0.0.13

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.
@@ -1,10 +1,14 @@
1
- import { ParseTransform, SerializeTransform } from "../structs/util.types";
2
- import { ObjectReference } from "./ObjectReference";
3
- import { SaveObject } from "./SaveObject";
4
- export const isSaveEntity = (obj) => {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaveEntity = exports.isSaveEntity = void 0;
4
+ const util_types_1 = require("../structs/util.types");
5
+ const ObjectReference_1 = require("./ObjectReference");
6
+ const SaveObject_1 = require("./SaveObject");
7
+ const isSaveEntity = (obj) => {
5
8
  return obj.type === 'SaveEntity';
6
9
  };
7
- class SaveEntity extends SaveObject {
10
+ exports.isSaveEntity = isSaveEntity;
11
+ class SaveEntity extends SaveObject_1.SaveObject {
8
12
  constructor(typePath, rootObject, instanceName, parentEntityName = '', needsTransform = false) {
9
13
  super(typePath, rootObject, instanceName);
10
14
  this.typePath = typePath;
@@ -24,9 +28,9 @@ class SaveEntity extends SaveObject {
24
28
  this.components = [];
25
29
  }
26
30
  static ParseHeader(reader, obj) {
27
- SaveObject.ParseHeader(reader, obj);
31
+ SaveObject_1.SaveObject.ParseHeader(reader, obj);
28
32
  obj.needTransform = reader.readInt32() == 1;
29
- obj.transform = ParseTransform(reader);
33
+ obj.transform = (0, util_types_1.ParseTransform)(reader);
30
34
  obj.wasPlacedInLevel = reader.readInt32() == 1;
31
35
  }
32
36
  static ParseData(entity, length, reader, buildVersion) {
@@ -39,16 +43,16 @@ class SaveEntity extends SaveObject {
39
43
  newLen -= entity.parentObjectName.length + 1;
40
44
  var componentCount = reader.readInt32();
41
45
  for (let i = 0; i < componentCount; i++) {
42
- var componentRef = ObjectReference.Parse(reader);
46
+ var componentRef = ObjectReference_1.ObjectReference.Parse(reader);
43
47
  entity.components.push(componentRef);
44
48
  newLen -= 10 + componentRef.levelName.length + componentRef.pathName.length;
45
49
  }
46
- SaveObject.ParseData(entity, newLen, reader, buildVersion);
50
+ SaveObject_1.SaveObject.ParseData(entity, newLen, reader, buildVersion);
47
51
  }
48
52
  static SerializeHeader(writer, entity) {
49
- SaveObject.SerializeHeader(writer, entity);
53
+ SaveObject_1.SaveObject.SerializeHeader(writer, entity);
50
54
  writer.writeInt32(entity.needTransform ? 1 : 0);
51
- SerializeTransform(writer, entity.transform);
55
+ (0, util_types_1.SerializeTransform)(writer, entity.transform);
52
56
  writer.writeInt32(entity.wasPlacedInLevel ? 1 : 0);
53
57
  }
54
58
  static SerializeData(writer, entity, buildVersion) {
@@ -59,8 +63,8 @@ class SaveEntity extends SaveObject {
59
63
  writer.writeString(com.levelName);
60
64
  writer.writeString(com.pathName);
61
65
  }
62
- SaveObject.SerializeData(writer, entity, buildVersion);
66
+ SaveObject_1.SaveObject.SerializeData(writer, entity, buildVersion);
63
67
  }
64
68
  }
65
69
  SaveEntity.TypeID = 1;
66
- export { SaveEntity };
70
+ exports.SaveEntity = SaveEntity;
@@ -1,10 +1,13 @@
1
- import { DataFields } from "./DataFields";
2
- export class SaveObject {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaveObject = void 0;
4
+ const DataFields_1 = require("./DataFields");
5
+ class SaveObject {
3
6
  constructor(typePath, rootObject, instanceName) {
4
7
  this.typePath = typePath;
5
8
  this.rootObject = rootObject;
6
9
  this.instanceName = instanceName;
7
- this.dataFields = new DataFields();
10
+ this.dataFields = new DataFields_1.DataFields();
8
11
  }
9
12
  static ParseHeader(reader, obj) {
10
13
  obj.typePath = reader.readString();
@@ -17,9 +20,10 @@ export class SaveObject {
17
20
  writer.writeString(obj.instanceName);
18
21
  }
19
22
  static ParseData(obj, length, reader, buildVersion) {
20
- obj.dataFields = DataFields.Parse(length, reader, buildVersion);
23
+ obj.dataFields = DataFields_1.DataFields.Parse(length, reader, buildVersion);
21
24
  }
22
25
  static SerializeData(writer, obj, buildVersion) {
23
- DataFields.Serialize(writer, obj.dataFields, buildVersion);
26
+ DataFields_1.DataFields.Serialize(writer, obj.dataFields, buildVersion);
24
27
  }
25
28
  }
29
+ exports.SaveObject = SaveObject;
@@ -1,7 +1,11 @@
1
- export class SatisfactorySave {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SatisfactorySave = void 0;
4
+ class SatisfactorySave {
2
5
  constructor(header) {
3
6
  this.levels = [];
4
7
  this.trailingCollectedObjects = [];
5
8
  this.header = header;
6
9
  }
7
10
  }
11
+ exports.SatisfactorySave = SatisfactorySave;
@@ -1 +1,2 @@
1
- export {};
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,10 +1,14 @@
1
- export const SerializeCol4RGBA = (writer, value) => {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SerializeTransform = exports.ParseTransform = exports.SerializeVec2 = exports.ParseVec2 = exports.SerializeVec3 = exports.ParseVec3 = exports.norm = exports.mult = exports.length = exports.add = exports.sub = exports.SerializeVec4 = exports.ParseVec4 = exports.ParseCol4BGRA = exports.SerializeCol4BGRA = exports.ParseCol4RGBA = exports.SerializeCol4RGBA = void 0;
4
+ const SerializeCol4RGBA = (writer, value) => {
2
5
  writer.writeFloat(value.r);
3
6
  writer.writeFloat(value.g);
4
7
  writer.writeFloat(value.b);
5
8
  writer.writeFloat(value.a);
6
9
  };
7
- export const ParseCol4RGBA = (reader) => {
10
+ exports.SerializeCol4RGBA = SerializeCol4RGBA;
11
+ const ParseCol4RGBA = (reader) => {
8
12
  return {
9
13
  r: reader.readFloat(),
10
14
  g: reader.readFloat(),
@@ -12,13 +16,15 @@ export const ParseCol4RGBA = (reader) => {
12
16
  a: reader.readFloat(),
13
17
  };
14
18
  };
15
- export const SerializeCol4BGRA = (writer, value) => {
19
+ exports.ParseCol4RGBA = ParseCol4RGBA;
20
+ const SerializeCol4BGRA = (writer, value) => {
16
21
  writer.writeByte(value.b);
17
22
  writer.writeByte(value.g);
18
23
  writer.writeByte(value.r);
19
24
  writer.writeByte(value.a);
20
25
  };
21
- export const ParseCol4BGRA = (reader) => {
26
+ exports.SerializeCol4BGRA = SerializeCol4BGRA;
27
+ const ParseCol4BGRA = (reader) => {
22
28
  return {
23
29
  b: reader.readByte(),
24
30
  g: reader.readByte(),
@@ -26,50 +32,64 @@ export const ParseCol4BGRA = (reader) => {
26
32
  a: reader.readByte(),
27
33
  };
28
34
  };
29
- export const ParseVec4 = (reader) => {
35
+ exports.ParseCol4BGRA = ParseCol4BGRA;
36
+ const ParseVec4 = (reader) => {
30
37
  return {
31
- ...ParseVec3(reader),
38
+ ...(0, exports.ParseVec3)(reader),
32
39
  w: reader.readFloat()
33
40
  };
34
41
  };
35
- export const SerializeVec4 = (writer, vec) => {
36
- SerializeVec3(writer, vec);
42
+ exports.ParseVec4 = ParseVec4;
43
+ const SerializeVec4 = (writer, vec) => {
44
+ (0, exports.SerializeVec3)(writer, vec);
37
45
  writer.writeFloat(vec.w);
38
46
  };
39
- export const sub = (other, vec) => ({ x: other.x - vec.x, y: other.y - vec.y, z: other.z - vec.z });
40
- export const add = (vec, other) => ({ x: vec.x + other.x, y: vec.y + other.y, z: vec.z + other.z });
41
- export const length = (vec) => Math.sqrt(vec.x ** 2 + vec.y ** 2 + vec.z ** 2);
42
- export const mult = (vec, scale) => ({ x: vec.x * scale, y: vec.y * scale, z: vec.z * scale });
43
- export const norm = (vec) => mult(vec, 1. / length(vec));
44
- export const ParseVec3 = (reader) => {
47
+ exports.SerializeVec4 = SerializeVec4;
48
+ const sub = (other, vec) => ({ x: other.x - vec.x, y: other.y - vec.y, z: other.z - vec.z });
49
+ exports.sub = sub;
50
+ const add = (vec, other) => ({ x: vec.x + other.x, y: vec.y + other.y, z: vec.z + other.z });
51
+ exports.add = add;
52
+ const length = (vec) => Math.sqrt(vec.x ** 2 + vec.y ** 2 + vec.z ** 2);
53
+ exports.length = length;
54
+ const mult = (vec, scale) => ({ x: vec.x * scale, y: vec.y * scale, z: vec.z * scale });
55
+ exports.mult = mult;
56
+ const norm = (vec) => (0, exports.mult)(vec, 1. / (0, exports.length)(vec));
57
+ exports.norm = norm;
58
+ const ParseVec3 = (reader) => {
45
59
  return {
46
- ...ParseVec2(reader),
60
+ ...(0, exports.ParseVec2)(reader),
47
61
  z: reader.readFloat()
48
62
  };
49
63
  };
50
- export const SerializeVec3 = (writer, vec) => {
51
- SerializeVec2(writer, vec);
64
+ exports.ParseVec3 = ParseVec3;
65
+ const SerializeVec3 = (writer, vec) => {
66
+ (0, exports.SerializeVec2)(writer, vec);
52
67
  writer.writeFloat(vec.z);
53
68
  };
54
- export const ParseVec2 = (reader) => {
69
+ exports.SerializeVec3 = SerializeVec3;
70
+ const ParseVec2 = (reader) => {
55
71
  return {
56
72
  x: reader.readFloat(),
57
73
  y: reader.readFloat(),
58
74
  };
59
75
  };
60
- export const SerializeVec2 = (writer, vec) => {
76
+ exports.ParseVec2 = ParseVec2;
77
+ const SerializeVec2 = (writer, vec) => {
61
78
  writer.writeFloat(vec.x);
62
79
  writer.writeFloat(vec.y);
63
80
  };
64
- export const ParseTransform = (reader) => {
81
+ exports.SerializeVec2 = SerializeVec2;
82
+ const ParseTransform = (reader) => {
65
83
  return {
66
- rotation: ParseVec4(reader),
67
- translation: ParseVec3(reader),
68
- scale3d: ParseVec3(reader),
84
+ rotation: (0, exports.ParseVec4)(reader),
85
+ translation: (0, exports.ParseVec3)(reader),
86
+ scale3d: (0, exports.ParseVec3)(reader),
69
87
  };
70
88
  };
71
- export const SerializeTransform = (writer, transform) => {
72
- SerializeVec4(writer, transform.rotation);
73
- SerializeVec3(writer, transform.translation);
74
- SerializeVec3(writer, transform.scale3d);
89
+ exports.ParseTransform = ParseTransform;
90
+ const SerializeTransform = (writer, transform) => {
91
+ (0, exports.SerializeVec4)(writer, transform.rotation);
92
+ (0, exports.SerializeVec3)(writer, transform.translation);
93
+ (0, exports.SerializeVec3)(writer, transform.scale3d);
75
94
  };
95
+ exports.SerializeTransform = SerializeTransform;
@@ -1,17 +1,23 @@
1
- import Pako from "pako";
2
- import { Alignment } from "./byte/alignment.enum";
3
- import { ByteReader } from "./byte/byte-reader.class";
4
- import { CompressionLibraryError, CorruptSaveError, ParserError, UnsupportedVersionError } from "./error/parser.error";
5
- import { Level } from "./satisfactory/level.class";
6
- import { isSaveComponent } from "./satisfactory/objects/SaveComponent";
7
- import { isSaveEntity } from "./satisfactory/objects/SaveEntity";
8
- export const projectionFilterApplies = (config, object) => {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Conveyor = exports.SaveReader = exports.projectionFilterApplies = void 0;
7
+ const pako_1 = __importDefault(require("pako"));
8
+ const alignment_enum_1 = require("./byte/alignment.enum");
9
+ const byte_reader_class_1 = require("./byte/byte-reader.class");
10
+ const parser_error_1 = require("./error/parser.error");
11
+ const level_class_1 = require("./satisfactory/level.class");
12
+ const SaveComponent_1 = require("./satisfactory/objects/SaveComponent");
13
+ const SaveEntity_1 = require("./satisfactory/objects/SaveEntity");
14
+ const projectionFilterApplies = (config, object) => {
9
15
  let cond1 = false;
10
- if (isSaveEntity(object) || (config.includeComponents && isSaveComponent(object))) {
16
+ if ((0, SaveEntity_1.isSaveEntity)(object) || (config.includeComponents && (0, SaveComponent_1.isSaveComponent)(object))) {
11
17
  cond1 = true;
12
18
  }
13
19
  let cond2 = true;
14
- if (isSaveEntity(object)) {
20
+ if ((0, SaveEntity_1.isSaveEntity)(object)) {
15
21
  cond2 = false;
16
22
  if (config.entityPathFilter.behavior === 'whitelist') {
17
23
  cond2 = config.entityPathFilter.list.find(en => object.typePath.startsWith(en)) !== undefined;
@@ -22,9 +28,10 @@ export const projectionFilterApplies = (config, object) => {
22
28
  }
23
29
  return cond1 && cond2;
24
30
  };
25
- class SaveReader extends ByteReader {
31
+ exports.projectionFilterApplies = projectionFilterApplies;
32
+ class SaveReader extends byte_reader_class_1.ByteReader {
26
33
  constructor(fileBuffer, onProgressCallback = () => { }) {
27
- super(fileBuffer, Alignment.LITTLE_ENDIAN);
34
+ super(fileBuffer, alignment_enum_1.Alignment.LITTLE_ENDIAN);
28
35
  this.onProgressCallback = onProgressCallback;
29
36
  this.levels = [];
30
37
  this.trailingCollectedObjects = [];
@@ -77,7 +84,7 @@ class SaveReader extends ByteReader {
77
84
  // all good, ready to read chunks now.
78
85
  }
79
86
  else {
80
- throw new UnsupportedVersionError("The save version is too old to support encoding currently. Save in newer game version.");
87
+ throw new parser_error_1.UnsupportedVersionError("The save version is too old to support encoding currently. Save in newer game version.");
81
88
  }
82
89
  return this.header;
83
90
  }
@@ -96,13 +103,13 @@ class SaveReader extends ByteReader {
96
103
  this.currentByte = this.compressionInfo.chunkHeaderSize;
97
104
  this.handledByte += this.compressionInfo.chunkHeaderSize;
98
105
  if (this.compressionInfo.packageFileTag <= 0) {
99
- this.compressionInfo.packageFileTag = chunkHeader.getInt32(0, this.alignment === Alignment.LITTLE_ENDIAN);
106
+ this.compressionInfo.packageFileTag = chunkHeader.getInt32(0, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
100
107
  }
101
108
  if (this.compressionInfo.maxChunkContentSize <= 0) {
102
- this.compressionInfo.maxChunkContentSize = chunkHeader.getInt32(8, this.alignment === Alignment.LITTLE_ENDIAN);
109
+ this.compressionInfo.maxChunkContentSize = chunkHeader.getInt32(8, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
103
110
  }
104
- const chunkCompressedLength = chunkHeader.getInt32(32, this.alignment === Alignment.LITTLE_ENDIAN);
105
- const chunkUncompressedLength = chunkHeader.getInt32(40, this.alignment === Alignment.LITTLE_ENDIAN);
111
+ const chunkCompressedLength = chunkHeader.getInt32(32, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
112
+ const chunkUncompressedLength = chunkHeader.getInt32(40, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
106
113
  totalUncompressedBodySize += chunkUncompressedLength;
107
114
  const currentChunkSize = chunkCompressedLength;
108
115
  let currentChunk = this.fileBuffer.slice(this.currentByte, this.currentByte + currentChunkSize);
@@ -115,11 +122,11 @@ class SaveReader extends ByteReader {
115
122
  try {
116
123
  // Inflate current chunk
117
124
  let currentInflatedChunk = null;
118
- currentInflatedChunk = Pako.inflate(currentChunk);
125
+ currentInflatedChunk = pako_1.default.inflate(currentChunk);
119
126
  currentChunks.push(currentInflatedChunk);
120
127
  }
121
128
  catch (err) {
122
- throw new CompressionLibraryError("Failed to inflate compressed save data. " + err);
129
+ throw new parser_error_1.CompressionLibraryError("Failed to inflate compressed save data. " + err);
123
130
  }
124
131
  }
125
132
  //TODO we can get rid of file buffer here.
@@ -136,7 +143,7 @@ class SaveReader extends ByteReader {
136
143
  this.bufferView = new DataView(bigWholeChunk.buffer);
137
144
  const dataLength = this.readInt32();
138
145
  if (totalUncompressedBodySize !== dataLength + 4) {
139
- throw new CorruptSaveError(`Possibly corrupt. Indicated size of total save body (${dataLength}) does not match the uncompressed real size of ${totalUncompressedBodySize}.`);
146
+ throw new parser_error_1.CorruptSaveError(`Possibly corrupt. Indicated size of total save body (${dataLength}) does not match the uncompressed real size of ${totalUncompressedBodySize}.`);
140
147
  }
141
148
  return {
142
149
  concatenatedChunkLength: newChunkLength,
@@ -145,10 +152,10 @@ class SaveReader extends ByteReader {
145
152
  }
146
153
  readLevels() {
147
154
  if (!this.header) {
148
- throw new ParserError('ParserError', 'Header must be set before objects can be read.');
155
+ throw new parser_error_1.ParserError('ParserError', 'Header must be set before objects can be read.');
149
156
  }
150
157
  if (this.header.saveVersion < 29) {
151
- throw new UnsupportedVersionError('Support for < U6 is not yet implemented.');
158
+ throw new parser_error_1.UnsupportedVersionError('Support for < U6 is not yet implemented.');
152
159
  }
153
160
  const numSubLevels = this.readInt32();
154
161
  this.levels = new Array(numSubLevels + 1);
@@ -156,19 +163,19 @@ class SaveReader extends ByteReader {
156
163
  for (let j = 0; j <= numSubLevels; j++) {
157
164
  let levelName = (j === numSubLevels) ? '' + this.header.mapName : this.readString();
158
165
  this.onProgressCallback(this.getBufferProgress(), `reading level [${(j + 1)}/${(numSubLevels + 1)}] ${levelName}`);
159
- this.levels[j] = Level.ReadLevel(this, levelName, this.header.buildVersion);
166
+ this.levels[j] = level_class_1.Level.ReadLevel(this, levelName, this.header.buildVersion);
160
167
  }
161
168
  // in U6/U7 there were more collectibles added that do not belong to a particular level
162
169
  if (this.getBufferPosition() < this.bufferView.byteLength) {
163
- this.trailingCollectedObjects = Level.ReadCollectablesList(this);
170
+ this.trailingCollectedObjects = level_class_1.Level.ReadCollectablesList(this);
164
171
  }
165
172
  return this.levels;
166
173
  }
167
174
  }
168
175
  // the number of .net ticks at the unix epoch
169
176
  SaveReader.EPOCH_TICKS = 621355968000000000n;
170
- export { SaveReader };
171
- export class Conveyor {
177
+ exports.SaveReader = SaveReader;
178
+ class Conveyor {
172
179
  static getConveyorBeltRegex() {
173
180
  return /\/Game\/FactoryGame\/Buildable\/Factory\/(ConveyorBeltMk[0-9]+)\/Build_(\1)\.Build_(\1)_C/g;
174
181
  }
@@ -241,3 +248,4 @@ export class Conveyor {
241
248
  return false;
242
249
  }
243
250
  }
251
+ exports.Conveyor = Conveyor;
@@ -1,11 +1,17 @@
1
- import Pako from "pako";
2
- import { Alignment } from "./byte/alignment.enum";
3
- import { ByteWriter } from "./byte/byte-writer.class";
4
- import { ParserError, UnsupportedVersionError } from "./error/parser.error";
5
- import { Level } from "./satisfactory/level.class";
6
- export class SaveWriter extends ByteWriter {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SaveWriter = void 0;
7
+ const pako_1 = __importDefault(require("pako"));
8
+ const alignment_enum_1 = require("./byte/alignment.enum");
9
+ const byte_writer_class_1 = require("./byte/byte-writer.class");
10
+ const parser_error_1 = require("./error/parser.error");
11
+ const level_class_1 = require("./satisfactory/level.class");
12
+ class SaveWriter extends byte_writer_class_1.ByteWriter {
7
13
  constructor() {
8
- super(Alignment.LITTLE_ENDIAN);
14
+ super(alignment_enum_1.Alignment.LITTLE_ENDIAN);
9
15
  }
10
16
  static WriteHeader(writer, header) {
11
17
  writer.writeInt32(header.saveHeaderType);
@@ -36,7 +42,7 @@ export class SaveWriter extends ByteWriter {
36
42
  // ready to write levels now.
37
43
  }
38
44
  else {
39
- throw new UnsupportedVersionError("The save version is too old to be supported currently.");
45
+ throw new parser_error_1.UnsupportedVersionError("The save version is too old to be supported currently.");
40
46
  }
41
47
  }
42
48
  static WriteLevels(writer, save, buildVersion) {
@@ -45,17 +51,17 @@ export class SaveWriter extends ByteWriter {
45
51
  if (level.name !== save.header.mapName) {
46
52
  writer.writeString(level.name);
47
53
  }
48
- Level.WriteLevel(writer, level, buildVersion);
54
+ level_class_1.Level.WriteLevel(writer, level, buildVersion);
49
55
  }
50
- Level.SerializeCollectablesList(writer, save.trailingCollectedObjects);
56
+ level_class_1.Level.SerializeCollectablesList(writer, save.trailingCollectedObjects);
51
57
  }
52
- static GenerateCompressedChunksFromData(bufferArray, compressionInfo, onBinaryBeforeCompressing, onChunk, onFinish, alignment = Alignment.LITTLE_ENDIAN) {
58
+ static GenerateCompressedChunksFromData(bufferArray, compressionInfo, onBinaryBeforeCompressing, onChunk, onFinish, alignment = alignment_enum_1.Alignment.LITTLE_ENDIAN) {
53
59
  const errors = [];
54
60
  const totalUncompressedSize = bufferArray.byteLength;
55
61
  const saveBody = new Uint8Array(bufferArray.byteLength + 4);
56
62
  saveBody.set(new Uint8Array(bufferArray), 4);
57
63
  const miniView = new DataView(saveBody.buffer);
58
- miniView.setInt32(0, totalUncompressedSize, alignment === Alignment.LITTLE_ENDIAN);
64
+ miniView.setInt32(0, totalUncompressedSize, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
59
65
  onBinaryBeforeCompressing(saveBody.buffer);
60
66
  // collect slices of chunks with help of compression info for max chunk size
61
67
  let handledByte = 0;
@@ -67,7 +73,7 @@ export class SaveWriter extends ByteWriter {
67
73
  // deflate chunk while we're at it.
68
74
  let compressedChunk = new Uint8Array(0);
69
75
  try {
70
- compressedChunk = Pako.deflate(uncompressedChunk);
76
+ compressedChunk = pako_1.default.deflate(uncompressedChunk);
71
77
  }
72
78
  catch (err) {
73
79
  errors.push("An error occurred while calling pako deflate. -> " + err);
@@ -76,18 +82,18 @@ export class SaveWriter extends ByteWriter {
76
82
  chunk.set(compressedChunk, compressionInfo.chunkHeaderSize);
77
83
  // write header
78
84
  const view = new DataView(chunk.buffer);
79
- view.setInt32(0, compressionInfo.packageFileTag, alignment === Alignment.LITTLE_ENDIAN);
80
- view.setInt32(4, 0, alignment === Alignment.LITTLE_ENDIAN);
81
- view.setInt32(8, compressionInfo.maxChunkContentSize, alignment === Alignment.LITTLE_ENDIAN);
82
- view.setInt32(12, 0, alignment === Alignment.LITTLE_ENDIAN);
83
- view.setInt32(16, compressedChunk.byteLength, alignment === Alignment.LITTLE_ENDIAN);
84
- view.setInt32(20, 0, alignment === Alignment.LITTLE_ENDIAN);
85
- view.setInt32(24, uncompressedContentSize, alignment === Alignment.LITTLE_ENDIAN);
86
- view.setInt32(28, 0, alignment === Alignment.LITTLE_ENDIAN);
87
- view.setInt32(32, compressedChunk.byteLength, alignment === Alignment.LITTLE_ENDIAN);
88
- view.setInt32(36, 0, alignment === Alignment.LITTLE_ENDIAN);
89
- view.setInt32(40, uncompressedContentSize, alignment === Alignment.LITTLE_ENDIAN);
90
- view.setInt32(44, 0, alignment === Alignment.LITTLE_ENDIAN);
85
+ view.setInt32(0, compressionInfo.packageFileTag, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
86
+ view.setInt32(4, 0, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
87
+ view.setInt32(8, compressionInfo.maxChunkContentSize, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
88
+ view.setInt32(12, 0, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
89
+ view.setInt32(16, compressedChunk.byteLength, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
90
+ view.setInt32(20, 0, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
91
+ view.setInt32(24, uncompressedContentSize, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
92
+ view.setInt32(28, 0, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
93
+ view.setInt32(32, compressedChunk.byteLength, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
94
+ view.setInt32(36, 0, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
95
+ view.setInt32(40, uncompressedContentSize, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
96
+ view.setInt32(44, 0, alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
91
97
  onChunk(chunk);
92
98
  chunkSummary.push({
93
99
  uncompressedSize: uncompressedContentSize + compressionInfo.chunkHeaderSize,
@@ -102,7 +108,7 @@ export class SaveWriter extends ByteWriter {
102
108
  }
103
109
  generateChunks(compressionInfo, posAfterHeader, onBinaryBeforeCompressing, onHeader, onChunk, onFinish) {
104
110
  if (posAfterHeader <= 0) {
105
- throw new ParserError('ParserError', 'Seems like this buffer has no header. Please write the header first before you can generate chunks.');
111
+ throw new parser_error_1.ParserError('ParserError', 'Seems like this buffer has no header. Please write the header first before you can generate chunks.');
106
112
  }
107
113
  // send plain header first.
108
114
  const header = new Uint8Array(this.bufferArray.slice(0, posAfterHeader));
@@ -112,3 +118,4 @@ export class SaveWriter extends ByteWriter {
112
118
  SaveWriter.GenerateCompressedChunksFromData(this.bufferArray, compressionInfo, onBinaryBeforeCompressing, onChunk, onFinish, this.alignment);
113
119
  }
114
120
  }
121
+ exports.SaveWriter = SaveWriter;
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@etothepii/satisfactory-file-parser",
3
3
  "author": "etothepii",
4
- "version": "0.0.11",
4
+ "version": "0.0.13",
5
5
  "description": "A file parser for satisfactory files. Includes save files and blueprint files.",
6
6
  "main": "build/index.js",
7
- "type": "module",
8
7
  "keywords": [
9
8
  "satisfactory",
10
9
  "save",