@etothepii/satisfactory-file-parser 0.1.26 → 0.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/build/index.js +60 -25
  2. package/build/parser/byte/alignment.enum.js +5 -2
  3. package/build/parser/byte/binary-operable.interface.js +2 -1
  4. package/build/parser/byte/binary-readable.interface.js +2 -1
  5. package/build/parser/byte/byte-reader.class.js +14 -10
  6. package/build/parser/byte/byte-writer.class.js +13 -10
  7. package/build/parser/error/parser.error.js +15 -6
  8. package/build/parser/file.types.js +5 -2
  9. package/build/parser/parser.js +26 -23
  10. package/build/parser/satisfactory/blueprint/blueprint-reader.js +36 -28
  11. package/build/parser/satisfactory/blueprint/blueprint-writer.js +25 -20
  12. package/build/parser/satisfactory/blueprint/blueprint.types.js +2 -1
  13. package/build/parser/satisfactory/objects/DataFields.js +83 -79
  14. package/build/parser/satisfactory/objects/GUIDInfo.js +8 -5
  15. package/build/parser/satisfactory/objects/ObjectReference.js +5 -2
  16. package/build/parser/satisfactory/objects/Property.js +120 -91
  17. package/build/parser/satisfactory/objects/SaveComponent.js +11 -7
  18. package/build/parser/satisfactory/objects/SaveEntity.js +17 -13
  19. package/build/parser/satisfactory/objects/SaveObject.js +8 -4
  20. package/build/parser/satisfactory/objects/ue/GUID.js +5 -2
  21. package/build/parser/satisfactory/objects/ue/MD5Hash.js +5 -2
  22. package/build/parser/satisfactory/save/asynchronous-level.class.js +16 -12
  23. package/build/parser/satisfactory/save/level.class.js +28 -24
  24. package/build/parser/satisfactory/save/satisfactory-save.js +5 -1
  25. package/build/parser/satisfactory/save/save-reader.js +34 -28
  26. package/build/parser/satisfactory/save/save-writer.js +40 -34
  27. package/build/parser/satisfactory/save/save.types.js +2 -1
  28. package/build/parser/satisfactory/structs/util.types.js +63 -37
  29. package/build/parser/stream/byte-stream-reader.class.js +21 -17
  30. package/build/parser/stream/json-stream-state-writer.js +6 -2
  31. package/build/parser/stream/json-stream-writable.js +5 -1
  32. package/build/parser/stream/json-stream-writer.js +6 -2
  33. package/build/parser/stream/reworked/readable-stream-parser.js +24 -21
  34. package/build/parser/stream/reworked/stream-parser.js +20 -17
  35. package/build/parser/stream/save-stream-json-stringifier.js +7 -3
  36. package/build/parser/stream/save-stream-reader.class.js +24 -18
  37. package/build/parser/stream/save-stream-writer.class.js +5 -1
  38. package/build/parser/stream/stream-level.class.js +15 -11
  39. package/build/parser/stream/stream-parser.js +15 -11
  40. package/package.json +1 -1
@@ -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.SerializeVec2f = exports.ParseVec2f = exports.SerializeVec2 = exports.ParseVec2 = exports.SerializeVec3f = exports.ParseVec3f = exports.SerializeVec3 = exports.ParseVec3 = exports.norm = exports.mult = exports.length = exports.add = exports.sub = exports.SerializeVec4f = exports.ParseVec4f = 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.readFloat32(),
10
14
  g: reader.readFloat32(),
@@ -12,13 +16,15 @@ export const ParseCol4RGBA = (reader) => {
12
16
  a: reader.readFloat32(),
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,80 +32,100 @@ 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.readDouble()
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.writeDouble(vec.w);
38
46
  };
39
- export const ParseVec4f = (reader) => {
47
+ exports.SerializeVec4 = SerializeVec4;
48
+ const ParseVec4f = (reader) => {
40
49
  return {
41
- ...(ParseVec3f(reader)),
50
+ ...((0, exports.ParseVec3f)(reader)),
42
51
  w: reader.readFloat32()
43
52
  };
44
53
  };
45
- export const SerializeVec4f = (writer, vec) => {
46
- SerializeVec3f(writer, vec);
54
+ exports.ParseVec4f = ParseVec4f;
55
+ const SerializeVec4f = (writer, vec) => {
56
+ (0, exports.SerializeVec3f)(writer, vec);
47
57
  writer.writeFloat(vec.w);
48
58
  };
49
- export const sub = (other, vec) => ({ x: other.x - vec.x, y: other.y - vec.y, z: other.z - vec.z });
50
- export const add = (vec, other) => ({ x: vec.x + other.x, y: vec.y + other.y, z: vec.z + other.z });
51
- export const length = (vec) => Math.sqrt(vec.x ** 2 + vec.y ** 2 + vec.z ** 2);
52
- export const mult = (vec, scale) => ({ x: vec.x * scale, y: vec.y * scale, z: vec.z * scale });
53
- export const norm = (vec) => mult(vec, 1. / length(vec));
54
- export const ParseVec3 = (reader) => {
59
+ exports.SerializeVec4f = SerializeVec4f;
60
+ const sub = (other, vec) => ({ x: other.x - vec.x, y: other.y - vec.y, z: other.z - vec.z });
61
+ exports.sub = sub;
62
+ const add = (vec, other) => ({ x: vec.x + other.x, y: vec.y + other.y, z: vec.z + other.z });
63
+ exports.add = add;
64
+ const length = (vec) => Math.sqrt(vec.x ** 2 + vec.y ** 2 + vec.z ** 2);
65
+ exports.length = length;
66
+ const mult = (vec, scale) => ({ x: vec.x * scale, y: vec.y * scale, z: vec.z * scale });
67
+ exports.mult = mult;
68
+ const norm = (vec) => (0, exports.mult)(vec, 1. / (0, exports.length)(vec));
69
+ exports.norm = norm;
70
+ const ParseVec3 = (reader) => {
55
71
  return {
56
- ...(ParseVec2(reader)),
72
+ ...((0, exports.ParseVec2)(reader)),
57
73
  z: reader.readDouble()
58
74
  };
59
75
  };
60
- export const SerializeVec3 = (writer, vec) => {
61
- SerializeVec2(writer, vec);
76
+ exports.ParseVec3 = ParseVec3;
77
+ const SerializeVec3 = (writer, vec) => {
78
+ (0, exports.SerializeVec2)(writer, vec);
62
79
  writer.writeDouble(vec.z);
63
80
  };
64
- export const ParseVec3f = (reader) => {
81
+ exports.SerializeVec3 = SerializeVec3;
82
+ const ParseVec3f = (reader) => {
65
83
  return {
66
- ...(ParseVec2f(reader)),
84
+ ...((0, exports.ParseVec2f)(reader)),
67
85
  z: reader.readFloat32()
68
86
  };
69
87
  };
70
- export const SerializeVec3f = (writer, vec) => {
71
- SerializeVec2f(writer, vec);
88
+ exports.ParseVec3f = ParseVec3f;
89
+ const SerializeVec3f = (writer, vec) => {
90
+ (0, exports.SerializeVec2f)(writer, vec);
72
91
  writer.writeFloat(vec.z);
73
92
  };
74
- export const ParseVec2 = (reader) => {
93
+ exports.SerializeVec3f = SerializeVec3f;
94
+ const ParseVec2 = (reader) => {
75
95
  return {
76
96
  x: reader.readDouble(),
77
97
  y: reader.readDouble(),
78
98
  };
79
99
  };
80
- export const SerializeVec2 = (writer, vec) => {
100
+ exports.ParseVec2 = ParseVec2;
101
+ const SerializeVec2 = (writer, vec) => {
81
102
  writer.writeDouble(vec.x);
82
103
  writer.writeDouble(vec.y);
83
104
  };
84
- export const ParseVec2f = (reader) => {
105
+ exports.SerializeVec2 = SerializeVec2;
106
+ const ParseVec2f = (reader) => {
85
107
  return {
86
108
  x: reader.readFloat32(),
87
109
  y: reader.readFloat32(),
88
110
  };
89
111
  };
90
- export const SerializeVec2f = (writer, vec) => {
112
+ exports.ParseVec2f = ParseVec2f;
113
+ const SerializeVec2f = (writer, vec) => {
91
114
  writer.writeFloat(vec.x);
92
115
  writer.writeFloat(vec.y);
93
116
  };
94
- export const ParseTransform = (reader) => {
117
+ exports.SerializeVec2f = SerializeVec2f;
118
+ const ParseTransform = (reader) => {
95
119
  return {
96
- rotation: ParseVec4f(reader),
97
- translation: ParseVec3f(reader),
98
- scale3d: ParseVec3f(reader),
120
+ rotation: (0, exports.ParseVec4f)(reader),
121
+ translation: (0, exports.ParseVec3f)(reader),
122
+ scale3d: (0, exports.ParseVec3f)(reader),
99
123
  };
100
124
  };
101
- export const SerializeTransform = (writer, transform) => {
102
- SerializeVec4f(writer, transform.rotation);
103
- SerializeVec3f(writer, transform.translation);
104
- SerializeVec3f(writer, transform.scale3d);
125
+ exports.ParseTransform = ParseTransform;
126
+ const SerializeTransform = (writer, transform) => {
127
+ (0, exports.SerializeVec4f)(writer, transform.rotation);
128
+ (0, exports.SerializeVec3f)(writer, transform.translation);
129
+ (0, exports.SerializeVec3f)(writer, transform.scale3d);
105
130
  };
131
+ exports.SerializeTransform = SerializeTransform;
@@ -1,8 +1,11 @@
1
- import { Alignment } from "../byte/alignment.enum";
2
- import { ByteWriter } from "../byte/byte-writer.class";
3
- import { CorruptSaveError, TimeoutError, UnimplementedError } from "../error/parser.error";
4
- export class ByteStreamReader {
5
- constructor(reader, onCloseCallback, timeout = 30000, maxBufferThreshold = 100 * 1000 * 1000, alignment = Alignment.LITTLE_ENDIAN) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ByteStreamReader = void 0;
4
+ const alignment_enum_1 = require("../byte/alignment.enum");
5
+ const byte_writer_class_1 = require("../byte/byte-writer.class");
6
+ const parser_error_1 = require("../error/parser.error");
7
+ class ByteStreamReader {
8
+ constructor(reader, onCloseCallback, timeout = 30000, maxBufferThreshold = 100 * 1000 * 1000, alignment = alignment_enum_1.Alignment.LITTLE_ENDIAN) {
6
9
  this.reader = reader;
7
10
  this.onCloseCallback = onCloseCallback;
8
11
  this.timeout = timeout;
@@ -18,7 +21,7 @@ export class ByteStreamReader {
18
21
  if (!this.inputStreamIsDone) {
19
22
  if (value) {
20
23
  const trailingPos = Math.max(0, this.currentByte - this.trailingBufferSize);
21
- this.operatingStreamBuffer = new Uint8Array(ByteWriter.AppendBuffer(this.operatingStreamBuffer.slice(trailingPos), value));
24
+ this.operatingStreamBuffer = new Uint8Array(byte_writer_class_1.ByteWriter.AppendBuffer(this.operatingStreamBuffer.slice(trailingPos), value));
22
25
  this.operatingDataView = new DataView(this.operatingStreamBuffer.buffer);
23
26
  this.currentByte = Math.min(this.currentByte, this.trailingBufferSize);
24
27
  if (this.operatingStreamBuffer.byteLength > this.maxBufferThreshold) {
@@ -76,7 +79,7 @@ export class ByteStreamReader {
76
79
  }
77
80
  if (this.getAmountAllocatedLeft() < count) {
78
81
  if (this.inputStreamIsDone) {
79
- throw new CorruptSaveError('Input Stream has finished before needed data was received.');
82
+ throw new parser_error_1.CorruptSaveError('Input Stream has finished before needed data was received.');
80
83
  }
81
84
  if (this.paused) {
82
85
  this.resume();
@@ -106,7 +109,7 @@ export class ByteStreamReader {
106
109
  }
107
110
  this.waitingTimeoutHandle = setTimeout(() => {
108
111
  if (!this.inputStreamIsDone) {
109
- reject(new TimeoutError(`Timed out before ${this.neededNextAmountOfBytes} bytes were available to read next.`));
112
+ reject(new parser_error_1.TimeoutError(`Timed out before ${this.neededNextAmountOfBytes} bytes were available to read next.`));
110
113
  }
111
114
  return resolve();
112
115
  }, this.timeout);
@@ -146,31 +149,31 @@ export class ByteStreamReader {
146
149
  }
147
150
  readInt16() {
148
151
  this.totalNumberOfBytesRead += 2;
149
- let data = this.operatingDataView.getInt16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
152
+ let data = this.operatingDataView.getInt16(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
150
153
  this.currentByte += 2;
151
154
  return data;
152
155
  }
153
156
  readUint16() {
154
157
  this.totalNumberOfBytesRead += 2;
155
- let data = this.operatingDataView.getUint16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
158
+ let data = this.operatingDataView.getUint16(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
156
159
  this.currentByte += 2;
157
160
  return data;
158
161
  }
159
162
  readInt32() {
160
163
  this.totalNumberOfBytesRead += 4;
161
- let data = this.operatingDataView.getInt32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
164
+ let data = this.operatingDataView.getInt32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
162
165
  this.currentByte += 4;
163
166
  return data;
164
167
  }
165
168
  readUint32() {
166
169
  this.totalNumberOfBytesRead += 4;
167
- let data = this.operatingDataView.getUint32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
170
+ let data = this.operatingDataView.getUint32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
168
171
  this.currentByte += 4;
169
172
  return data;
170
173
  }
171
174
  readLong() {
172
175
  this.totalNumberOfBytesRead += 8;
173
- let data = this.operatingDataView.getBigInt64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
176
+ let data = this.operatingDataView.getBigInt64(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
174
177
  this.currentByte += 8;
175
178
  return data;
176
179
  }
@@ -179,19 +182,19 @@ export class ByteStreamReader {
179
182
  }
180
183
  readUint64() {
181
184
  this.totalNumberOfBytesRead += 8;
182
- let data = this.operatingDataView.getBigUint64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
185
+ let data = this.operatingDataView.getBigUint64(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
183
186
  this.currentByte += 8;
184
187
  return data;
185
188
  }
186
189
  readFloat32() {
187
190
  this.totalNumberOfBytesRead += 4;
188
- let data = this.operatingDataView.getFloat32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
191
+ let data = this.operatingDataView.getFloat32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
189
192
  this.currentByte += 4;
190
193
  return data;
191
194
  }
192
195
  readDouble() {
193
196
  this.totalNumberOfBytesRead += 8;
194
- let data = this.operatingDataView.getFloat64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
197
+ let data = this.operatingDataView.getFloat64(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
195
198
  this.currentByte += 8;
196
199
  return data;
197
200
  }
@@ -226,7 +229,7 @@ export class ByteStreamReader {
226
229
  return this.totalNumberOfBytesRead;
227
230
  }
228
231
  getBufferProgress() {
229
- throw new UnimplementedError();
232
+ throw new parser_error_1.UnimplementedError();
230
233
  }
231
234
  getBufferLength() {
232
235
  return this.operatingStreamBuffer.byteLength;
@@ -235,3 +238,4 @@ export class ByteStreamReader {
235
238
  return this.operatingStreamBuffer.byteLength - this.currentByte;
236
239
  }
237
240
  }
241
+ exports.ByteStreamReader = ByteStreamReader;
@@ -1,5 +1,8 @@
1
- import { JsonStreamWritable } from "./json-stream-writable";
2
- export class JsonStreamStateWriter extends JsonStreamWritable {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonStreamStateWriter = void 0;
4
+ const json_stream_writable_1 = require("./json-stream-writable");
5
+ class JsonStreamStateWriter extends json_stream_writable_1.JsonStreamWritable {
3
6
  constructor(pushWritable, startState) {
4
7
  super(pushWritable);
5
8
  this.currentState = startState;
@@ -12,3 +15,4 @@ export class JsonStreamStateWriter extends JsonStreamWritable {
12
15
  this.currentState = transition.assignOnFinish;
13
16
  }
14
17
  }
18
+ exports.JsonStreamStateWriter = JsonStreamStateWriter;
@@ -1,4 +1,7 @@
1
- export class JsonStreamWritable {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonStreamWritable = void 0;
4
+ class JsonStreamWritable {
2
5
  constructor(pushWritable) {
3
6
  this.pushWritable = pushWritable;
4
7
  this.isValid = () => this.openedSymbols.length === 0;
@@ -77,3 +80,4 @@ export class JsonStreamWritable {
77
80
  return;
78
81
  }
79
82
  }
83
+ exports.JsonStreamWritable = JsonStreamWritable;
@@ -1,5 +1,8 @@
1
- import { JsonStreamStateWriter } from "./json-stream-state-writer";
2
- export class JsonStreamWriter extends JsonStreamStateWriter {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonStreamWriter = void 0;
4
+ const json_stream_state_writer_1 = require("./json-stream-state-writer");
5
+ class JsonStreamWriter extends json_stream_state_writer_1.JsonStreamStateWriter {
3
6
  constructor(writer) {
4
7
  super(async (value) => await writer.write(value), 'BEFORE_START');
5
8
  this.writer = writer;
@@ -121,3 +124,4 @@ export class JsonStreamWriter extends JsonStreamStateWriter {
121
124
  await this.useTransition(this.stateMachine.closeSave);
122
125
  }
123
126
  }
127
+ exports.JsonStreamWriter = JsonStreamWriter;
@@ -1,10 +1,13 @@
1
+ "use strict";
1
2
  var _a;
2
- import { SatisfactorySave } from "../../satisfactory/save/satisfactory-save";
3
- import { SaveReader } from "../../satisfactory/save/save-reader";
4
- import { ReadableStream } from 'web-streams-polyfill';
5
- import { SaveComponent, isSaveComponent } from "../../satisfactory/objects/SaveComponent";
6
- import { SaveEntity, isSaveEntity } from "../../satisfactory/objects/SaveEntity";
7
- import { Level } from "../../satisfactory/save/level.class";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ReadableStreamParser = void 0;
5
+ const satisfactory_save_1 = require("../../satisfactory/save/satisfactory-save");
6
+ const save_reader_1 = require("../../satisfactory/save/save-reader");
7
+ const web_streams_polyfill_1 = require("web-streams-polyfill");
8
+ const SaveComponent_1 = require("../../satisfactory/objects/SaveComponent");
9
+ const SaveEntity_1 = require("../../satisfactory/objects/SaveEntity");
10
+ const level_class_1 = require("../../satisfactory/save/level.class");
8
11
  const DEFAULT_BYTE_HIGHWATERMARK = 1024 * 1024 * 200;
9
12
  const createStringLengthQueuingStrategy = (highWaterMark = DEFAULT_BYTE_HIGHWATERMARK / 4) => ({
10
13
  highWaterMark,
@@ -94,7 +97,7 @@ class ReadableStreamParser {
94
97
  writtenObjectsInLevel += objectCountToRead;
95
98
  } while (totalReadObjectsInLevel < countObjectHeaders);
96
99
  await write('], "collectables": [', false);
97
- const collectables = Level.ReadCollectablesList(reader);
100
+ const collectables = level_class_1.Level.ReadCollectablesList(reader);
98
101
  await write(`${collectables.map(obj => JSON.stringify(obj)).join(', ')}`, true);
99
102
  await write(']', false);
100
103
  await write('}', false);
@@ -104,7 +107,7 @@ class ReadableStreamParser {
104
107
  _a = ReadableStreamParser;
105
108
  ReadableStreamParser.CreateReadableStreamForParsingSave = (onStart, onCancel, onPullRequest, highWaterMark = DEFAULT_BYTE_HIGHWATERMARK / 4) => {
106
109
  let ourController = null;
107
- const stream = new ReadableStream({
110
+ const stream = new web_streams_polyfill_1.ReadableStream({
108
111
  start: (controller) => {
109
112
  ourController = controller;
110
113
  onStart(ourController);
@@ -145,9 +148,9 @@ ReadableStreamParser.CreateReadableStreamFromSaveToJson = (name, bytes, onDecomp
145
148
  controller.enqueue(value);
146
149
  };
147
150
  const startStreaming = async () => {
148
- const reader = new SaveReader(bytes.buffer, onProgress);
151
+ const reader = new save_reader_1.SaveReader(bytes.buffer, onProgress);
149
152
  const header = reader.readHeader();
150
- const save = new SatisfactorySave(name, header);
153
+ const save = new satisfactory_save_1.SatisfactorySave(name, header);
151
154
  const inflateResult = reader.inflateChunks();
152
155
  onDecompressedSaveBody(reader.getBuffer());
153
156
  const gridHash = reader.readSaveBodyHash();
@@ -169,13 +172,13 @@ ReadableStreamParser.ReadNObjectHeaders = (reader, count) => {
169
172
  let obj;
170
173
  let objectType = reader.readInt32();
171
174
  switch (objectType) {
172
- case SaveEntity.TypeID:
173
- obj = new SaveEntity('', '', '', '');
174
- SaveEntity.ParseHeader(reader, obj);
175
+ case SaveEntity_1.SaveEntity.TypeID:
176
+ obj = new SaveEntity_1.SaveEntity('', '', '', '');
177
+ SaveEntity_1.SaveEntity.ParseHeader(reader, obj);
175
178
  break;
176
- case SaveComponent.TypeID:
177
- obj = new SaveComponent('', '', '', '');
178
- SaveComponent.ParseHeader(reader, obj);
179
+ case SaveComponent_1.SaveComponent.TypeID:
180
+ obj = new SaveComponent_1.SaveComponent('', '', '', '');
181
+ SaveComponent_1.SaveComponent.ParseHeader(reader, obj);
179
182
  break;
180
183
  default:
181
184
  throw new Error('Unknown object type' + objectType);
@@ -190,12 +193,12 @@ ReadableStreamParser.ReadNObjects = (reader, count, objects, buildVersion) => {
190
193
  objects[i].unknownType2 = reader.readInt32();
191
194
  const binarySize = reader.readInt32();
192
195
  const before = reader.getBufferPosition();
193
- if (isSaveEntity(objects[i])) {
194
- SaveEntity.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
196
+ if ((0, SaveEntity_1.isSaveEntity)(objects[i])) {
197
+ SaveEntity_1.SaveEntity.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
195
198
  }
196
- else if (isSaveComponent(objects[i])) {
197
- SaveComponent.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
199
+ else if ((0, SaveComponent_1.isSaveComponent)(objects[i])) {
200
+ SaveComponent_1.SaveComponent.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
198
201
  }
199
202
  }
200
203
  };
201
- export { ReadableStreamParser };
204
+ exports.ReadableStreamParser = ReadableStreamParser;
@@ -1,12 +1,15 @@
1
- import { Level, SatisfactorySave, SaveComponent, SaveEntity, SaveReader } from '../../..';
2
- import { isSaveComponent } from '../../satisfactory/objects/SaveComponent';
3
- import { isSaveEntity } from '../../satisfactory/objects/SaveEntity';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamParser = void 0;
4
+ const __1 = require("../../..");
5
+ const SaveComponent_1 = require("../../satisfactory/objects/SaveComponent");
6
+ const SaveEntity_1 = require("../../satisfactory/objects/SaveEntity");
4
7
  class StreamParser {
5
8
  static async ParseSaveFileToJsonStream(name, bytes, outputJson, onDecompressedSaveBody = () => { }, onProgress = () => { }) {
6
- const reader = new SaveReader(bytes.buffer, onProgress);
9
+ const reader = new __1.SaveReader(bytes.buffer, onProgress);
7
10
  const writer = outputJson.getWriter();
8
11
  const header = reader.readHeader();
9
- const save = new SatisfactorySave(name, header);
12
+ const save = new __1.SatisfactorySave(name, header);
10
13
  const inflateResult = reader.inflateChunks();
11
14
  onDecompressedSaveBody(reader.getBuffer());
12
15
  const gridHash = reader.readSaveBodyHash();
@@ -60,7 +63,7 @@ class StreamParser {
60
63
  await writer.write(`${objects.map(obj => JSON.stringify(obj)).join(', ')}`);
61
64
  } while (totalReadObjects < countObjectHeaders);
62
65
  await writer.write('], "collectables": [');
63
- const collectables = Level.ReadCollectablesList(reader);
66
+ const collectables = __1.Level.ReadCollectablesList(reader);
64
67
  await writer.write(`${collectables.map(obj => JSON.stringify(obj)).join(', ')}`);
65
68
  await writer.write(']');
66
69
  await writer.write('}');
@@ -74,13 +77,13 @@ StreamParser.ReadNObjectHeaders = (reader, count) => {
74
77
  let obj;
75
78
  let objectType = reader.readInt32();
76
79
  switch (objectType) {
77
- case SaveEntity.TypeID:
78
- obj = new SaveEntity('', '', '', '');
79
- SaveEntity.ParseHeader(reader, obj);
80
+ case __1.SaveEntity.TypeID:
81
+ obj = new __1.SaveEntity('', '', '', '');
82
+ __1.SaveEntity.ParseHeader(reader, obj);
80
83
  break;
81
- case SaveComponent.TypeID:
82
- obj = new SaveComponent('', '', '', '');
83
- SaveComponent.ParseHeader(reader, obj);
84
+ case __1.SaveComponent.TypeID:
85
+ obj = new __1.SaveComponent('', '', '', '');
86
+ __1.SaveComponent.ParseHeader(reader, obj);
84
87
  break;
85
88
  default:
86
89
  throw new Error('Unknown object type' + objectType);
@@ -95,12 +98,12 @@ StreamParser.ReadNObjects = (reader, count, objects, buildVersion) => {
95
98
  objects[i].unknownType2 = reader.readInt32();
96
99
  const binarySize = reader.readInt32();
97
100
  const before = reader.getBufferPosition();
98
- if (isSaveEntity(objects[i])) {
99
- SaveEntity.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
101
+ if ((0, SaveEntity_1.isSaveEntity)(objects[i])) {
102
+ __1.SaveEntity.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
100
103
  }
101
- else if (isSaveComponent(objects[i])) {
102
- SaveComponent.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
104
+ else if ((0, SaveComponent_1.isSaveComponent)(objects[i])) {
105
+ __1.SaveComponent.ParseData(objects[i], binarySize, reader, buildVersion, objects[i].typePath);
103
106
  }
104
107
  }
105
108
  };
106
- export { StreamParser };
109
+ exports.StreamParser = StreamParser;
@@ -1,7 +1,10 @@
1
- import { SaveStreamWriter } from "./save-stream-writer.class";
2
- export class SaveStreamJsonStringifier {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaveStreamJsonStringifier = void 0;
4
+ const save_stream_writer_class_1 = require("./save-stream-writer.class");
5
+ class SaveStreamJsonStringifier {
3
6
  static async StreamStringifySave(save, output) {
4
- const writer = new SaveStreamWriter(output.getWriter());
7
+ const writer = new save_stream_writer_class_1.SaveStreamWriter(output.getWriter());
5
8
  await writer.beginSave();
6
9
  await writer.writeHeader(save.header);
7
10
  if (save.compressionInfo) {
@@ -29,3 +32,4 @@ export class SaveStreamJsonStringifier {
29
32
  await writer.close();
30
33
  }
31
34
  }
35
+ exports.SaveStreamJsonStringifier = SaveStreamJsonStringifier;
@@ -1,11 +1,17 @@
1
- import Pako from "pako";
2
- import { CompressionLibraryError, CorruptSaveError, UnsupportedVersionError } from "../..";
3
- import { Alignment } from "../byte/alignment.enum";
4
- import { ByteStreamReader } from "./byte-stream-reader.class";
5
- import { StreamLevel } from "./stream-level.class";
6
- class SaveStreamReader extends ByteStreamReader {
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.SaveStreamReader = void 0;
7
+ const pako_1 = __importDefault(require("pako"));
8
+ const __1 = require("../..");
9
+ const alignment_enum_1 = require("../byte/alignment.enum");
10
+ const byte_stream_reader_class_1 = require("./byte-stream-reader.class");
11
+ const stream_level_class_1 = require("./stream-level.class");
12
+ class SaveStreamReader extends byte_stream_reader_class_1.ByteStreamReader {
7
13
  constructor(reader, maxBufferThreshold, onCloseCallback = async () => { }) {
8
- super(reader, onCloseCallback, 30000, maxBufferThreshold, Alignment.LITTLE_ENDIAN);
14
+ super(reader, onCloseCallback, 30000, maxBufferThreshold, alignment_enum_1.Alignment.LITTLE_ENDIAN);
9
15
  this.compressionInfo = {
10
16
  packageFileTag: 0,
11
17
  maxUncompressedChunkContentSize: 0,
@@ -55,7 +61,7 @@ class SaveStreamReader extends ByteStreamReader {
55
61
  if (header.saveVersion >= 21) {
56
62
  }
57
63
  else {
58
- throw new UnsupportedVersionError("The save version is too old to support encoding currently. Save in newer game version.");
64
+ throw new __1.UnsupportedVersionError("The save version is too old to support encoding currently. Save in newer game version.");
59
65
  }
60
66
  return header;
61
67
  }
@@ -65,22 +71,22 @@ class SaveStreamReader extends ByteStreamReader {
65
71
  this.operatingDataView = new DataView(this.operatingStreamBuffer.buffer);
66
72
  this.currentByte = 0;
67
73
  if (this.compressionInfo.packageFileTag <= 0) {
68
- this.compressionInfo.packageFileTag = this.operatingDataView.getInt32(0, this.alignment === Alignment.LITTLE_ENDIAN);
74
+ this.compressionInfo.packageFileTag = this.operatingDataView.getInt32(0, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
69
75
  }
70
76
  if (this.compressionInfo.maxUncompressedChunkContentSize <= 0) {
71
- this.compressionInfo.maxUncompressedChunkContentSize = this.operatingDataView.getInt32(8, this.alignment === Alignment.LITTLE_ENDIAN);
77
+ this.compressionInfo.maxUncompressedChunkContentSize = this.operatingDataView.getInt32(8, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
72
78
  }
73
- const chunkCompressedLength = this.operatingDataView.getInt32(32, this.alignment === Alignment.LITTLE_ENDIAN);
74
- const chunkUncompressedLength = this.operatingDataView.getInt32(40, this.alignment === Alignment.LITTLE_ENDIAN);
79
+ const chunkCompressedLength = this.operatingDataView.getInt32(32, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
80
+ const chunkUncompressedLength = this.operatingDataView.getInt32(40, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
75
81
  this.currentByte = this.compressionInfo.chunkHeaderSize;
76
82
  await this.allocate(chunkCompressedLength);
77
83
  let currentChunk = this.operatingStreamBuffer.slice(this.currentByte, this.currentByte + chunkCompressedLength);
78
84
  this.currentByte += chunkCompressedLength;
79
85
  this.totalNumberOfBytesRead += chunkUncompressedLength;
80
86
  try {
81
- const uncompressedChunk = Pako.inflate(currentChunk);
87
+ const uncompressedChunk = pako_1.default.inflate(currentChunk);
82
88
  if (uncompressedChunk.byteLength !== chunkUncompressedLength) {
83
- throw new CorruptSaveError('indicated save body chunk size does not match the inflated result. Save is possibly corrupt.');
89
+ throw new __1.CorruptSaveError('indicated save body chunk size does not match the inflated result. Save is possibly corrupt.');
84
90
  }
85
91
  if (this.debug) {
86
92
  console.log(`${new Date().toString()}: decompressed a chunk from ${currentChunk.byteLength} to ${uncompressedChunk.byteLength} bytes.`);
@@ -88,7 +94,7 @@ class SaveStreamReader extends ByteStreamReader {
88
94
  return uncompressedChunk;
89
95
  }
90
96
  catch (err) {
91
- throw new CompressionLibraryError("Failed to inflate compressed save data. " + err);
97
+ throw new __1.CompressionLibraryError("Failed to inflate compressed save data. " + err);
92
98
  }
93
99
  }
94
100
  debugInfo() {
@@ -96,7 +102,7 @@ class SaveStreamReader extends ByteStreamReader {
96
102
  }
97
103
  async streamLevelsToOutput(writer, header) {
98
104
  if (header.saveVersion < 29) {
99
- throw new UnsupportedVersionError('Support for < U6 is not yet implemented.');
105
+ throw new __1.UnsupportedVersionError('Support for < U6 is not yet implemented.');
100
106
  }
101
107
  await this.allocate(100);
102
108
  const numSubLevels = this.readInt32();
@@ -105,11 +111,11 @@ class SaveStreamReader extends ByteStreamReader {
105
111
  if (this.debug) {
106
112
  console.log(`${new Date().toString()}: reading level [${(j)}/${numSubLevels}] ${levelName}`);
107
113
  }
108
- await StreamLevel.ReadLevelAsync(this, writer, levelName, header.buildVersion);
114
+ await stream_level_class_1.StreamLevel.ReadLevelAsync(this, writer, levelName, header.buildVersion);
109
115
  }
110
116
  return;
111
117
  }
112
118
  }
113
119
  SaveStreamReader.EPOCH_TICKS = 621355968000000000n;
114
120
  SaveStreamReader.DEFAULT_SATISFACTORY_CHUNK_HEADER_SIZE = 48;
115
- export { SaveStreamReader };
121
+ exports.SaveStreamReader = SaveStreamReader;
@@ -1,3 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaveStreamWriter = void 0;
1
4
  class ModeStateTracker {
2
5
  constructor(mode) {
3
6
  this.mode = mode;
@@ -11,7 +14,7 @@ class ModeStateTracker {
11
14
  this.mode = newMode;
12
15
  }
13
16
  }
14
- export class SaveStreamWriter {
17
+ class SaveStreamWriter {
15
18
  constructor(writer) {
16
19
  this.writer = writer;
17
20
  this.createExecutionFunction = async (allowedInputModes, fn, targetMode) => {
@@ -80,3 +83,4 @@ export class SaveStreamWriter {
80
83
  return this.writer.close();
81
84
  }
82
85
  }
86
+ exports.SaveStreamWriter = SaveStreamWriter;