@etothepii/satisfactory-file-parser 0.1.25 → 0.1.26

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