@etothepii/satisfactory-file-parser 0.0.3 → 0.0.5

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 (60) hide show
  1. package/build/index.d.ts +4 -0
  2. package/build/index.js +7 -0
  3. package/build/parser/blueprint-reader.d.ts +2 -2
  4. package/build/parser/blueprint-reader.js +20 -29
  5. package/build/parser/blueprint-writer.d.ts +2 -2
  6. package/build/parser/blueprint-writer.js +15 -21
  7. package/build/parser/byte/alignment.enum.js +2 -6
  8. package/build/parser/byte/byte-reader.class.js +9 -14
  9. package/build/parser/byte/byte-writer.class.js +10 -14
  10. package/build/parser/error/parser.error.js +4 -12
  11. package/build/parser/{parser.class.d.ts → parser.d.ts} +0 -8
  12. package/build/parser/{parser.class.js → parser.js} +12 -16
  13. package/build/parser/satisfactory/blueprint/blueprint.js +1 -0
  14. package/build/parser/satisfactory/level.class.js +24 -29
  15. package/build/parser/satisfactory/objects/DataFields.d.ts +1 -1
  16. package/build/parser/satisfactory/objects/DataFields.js +72 -77
  17. package/build/parser/satisfactory/objects/ObjectReference.js +1 -6
  18. package/build/parser/satisfactory/objects/Property.d.ts +1 -1
  19. package/build/parser/satisfactory/objects/Property.js +87 -119
  20. package/build/parser/satisfactory/objects/SaveComponent.js +7 -12
  21. package/build/parser/satisfactory/objects/SaveEntity.js +13 -18
  22. package/build/parser/satisfactory/objects/SaveObject.js +5 -10
  23. package/build/parser/satisfactory/satisfactory-save.class.js +1 -6
  24. package/build/parser/{static-data.d.ts → satisfactory/static-data.d.ts} +1 -1
  25. package/build/parser/satisfactory/static-data.js +1 -0
  26. package/build/parser/satisfactory/structs/util.types.js +27 -48
  27. package/build/parser/save-reader.d.ts +1 -1
  28. package/build/parser/save-reader.js +26 -35
  29. package/build/parser/{save-writer.class.js → save-writer.js} +26 -34
  30. package/index.d.ts +2356 -0
  31. package/index.js +2364 -0
  32. package/package.json +6 -3
  33. package/rollup.config.mjs +11 -0
  34. package/.eslintrc.json +0 -28
  35. package/build/parser/blueprint-reader.js.map +0 -1
  36. package/build/parser/blueprint-writer.js.map +0 -1
  37. package/build/parser/byte/alignment.enum.js.map +0 -1
  38. package/build/parser/byte/byte-reader.class.js.map +0 -1
  39. package/build/parser/byte/byte-writer.class.js.map +0 -1
  40. package/build/parser/error/parser.error.js.map +0 -1
  41. package/build/parser/parser.class.js.map +0 -1
  42. package/build/parser/satisfactory/blueprint/blueprint.interface.js +0 -3
  43. package/build/parser/satisfactory/blueprint/blueprint.interface.js.map +0 -1
  44. package/build/parser/satisfactory/level.class.js.map +0 -1
  45. package/build/parser/satisfactory/objects/DataFields.js.map +0 -1
  46. package/build/parser/satisfactory/objects/ObjectReference.js.map +0 -1
  47. package/build/parser/satisfactory/objects/Property.js.map +0 -1
  48. package/build/parser/satisfactory/objects/SaveComponent.js.map +0 -1
  49. package/build/parser/satisfactory/objects/SaveEntity.js.map +0 -1
  50. package/build/parser/satisfactory/objects/SaveObject.js.map +0 -1
  51. package/build/parser/satisfactory/satisfactory-save.class.js.map +0 -1
  52. package/build/parser/satisfactory/structs/util.types.js.map +0 -1
  53. package/build/parser/save-reader.js.map +0 -1
  54. package/build/parser/save-writer.class.js.map +0 -1
  55. package/build/parser/static-data.js +0 -3
  56. package/build/parser/static-data.js.map +0 -1
  57. package/jest.config.json +0 -12
  58. package/tsconfig.json +0 -105
  59. /package/build/parser/satisfactory/blueprint/{blueprint.interface.d.ts → blueprint.d.ts} +0 -0
  60. /package/build/parser/{save-writer.class.d.ts → save-writer.d.ts} +0 -0
@@ -0,0 +1,4 @@
1
+ export { Level } from './parser/satisfactory/level.class';
2
+ export * from './parser/satisfactory/satisfactory-save.class';
3
+ export * from './parser/error/parser.error';
4
+ export { SaveParser } from './parser/parser';
package/build/index.js ADDED
@@ -0,0 +1,7 @@
1
+ // types & classes for convenience
2
+ export { Level } from './parser/satisfactory/level.class';
3
+ export * from './parser/satisfactory/satisfactory-save.class';
4
+ // errors
5
+ export * from './parser/error/parser.error';
6
+ // facade
7
+ export { SaveParser } from './parser/parser';
@@ -1,8 +1,8 @@
1
1
  import { ByteReader } from "./byte/byte-reader.class";
2
- import { SaveEntity } from "./satisfactory/objects/SaveEntity";
2
+ import { BlueprintConfig, BlueprintHeader } from "./satisfactory/blueprint/blueprint";
3
3
  import { SaveComponent } from "./satisfactory/objects/SaveComponent";
4
+ import { SaveEntity } from "./satisfactory/objects/SaveEntity";
4
5
  import { ChunkCompressionInfo } from "./satisfactory/satisfactory-save.class";
5
- import { BlueprintConfig, BlueprintHeader } from "./satisfactory/blueprint/blueprint.interface";
6
6
  export declare class BlueprintReader extends ByteReader {
7
7
  compressionInfo: ChunkCompressionInfo;
8
8
  constructor(bluePrintBuffer: ArrayBuffer);
@@ -1,18 +1,12 @@
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.BlueprintConfigReader = exports.BlueprintReader = void 0;
7
- const alignment_enum_1 = require("./byte/alignment.enum");
8
- const byte_reader_class_1 = require("./byte/byte-reader.class");
9
- const util_types_1 = require("./satisfactory/structs/util.types");
10
- const pako_1 = __importDefault(require("pako"));
11
- const level_class_1 = require("./satisfactory/level.class");
12
- const parser_error_1 = require("./error/parser.error");
13
- class BlueprintReader extends byte_reader_class_1.ByteReader {
1
+ import Pako from "pako";
2
+ import { Alignment } from "./byte/alignment.enum";
3
+ import { ByteReader } from "./byte/byte-reader.class";
4
+ import { ParserError } from "./error/parser.error";
5
+ import { Level } from "./satisfactory/level.class";
6
+ import { ParseCol4RGBA, ParseVec3 } from "./satisfactory/structs/util.types";
7
+ export class BlueprintReader extends ByteReader {
14
8
  constructor(bluePrintBuffer) {
15
- super(bluePrintBuffer, alignment_enum_1.Alignment.LITTLE_ENDIAN);
9
+ super(bluePrintBuffer, Alignment.LITTLE_ENDIAN);
16
10
  this.compressionInfo = {
17
11
  packageFileTag: 0,
18
12
  maxChunkContentSize: 0,
@@ -21,7 +15,7 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
21
15
  }
22
16
  static ReadHeader(reader) {
23
17
  const unk = reader.readBytes(3 * 4); // 02 00 00 00, 24 00 00 00, 7F 3B 03 00 - always
24
- const positionThingOrWhat = (0, util_types_1.ParseVec3)(reader); // 04 00 00 00, 04 00 00 00, 04 00 00 00 - always
18
+ const positionThingOrWhat = ParseVec3(reader); // 04 00 00 00, 04 00 00 00, 04 00 00 00 - always
25
19
  // list of item costs.
26
20
  let itemTypeCount = reader.readInt32();
27
21
  const itemCosts = new Array(itemTypeCount).fill(['', 0]);
@@ -59,13 +53,13 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
59
53
  this.currentByte = this.compressionInfo.chunkHeaderSize;
60
54
  this.handledByte += this.compressionInfo.chunkHeaderSize;
61
55
  if (this.compressionInfo.packageFileTag <= 0) {
62
- this.compressionInfo.packageFileTag = chunkHeader.getUint32(0, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
56
+ this.compressionInfo.packageFileTag = chunkHeader.getUint32(0, this.alignment === Alignment.LITTLE_ENDIAN);
63
57
  }
64
58
  if (this.compressionInfo.maxChunkContentSize <= 0) {
65
- this.compressionInfo.maxChunkContentSize = chunkHeader.getInt32(8, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN); //00 00 02 00 = 131072
59
+ this.compressionInfo.maxChunkContentSize = chunkHeader.getInt32(8, this.alignment === Alignment.LITTLE_ENDIAN); //00 00 02 00 = 131072
66
60
  }
67
- const chunkCompressedLength = chunkHeader.getInt32(32, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
68
- const chunkUncompressedLength = chunkHeader.getInt32(40, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
61
+ const chunkCompressedLength = chunkHeader.getInt32(32, this.alignment === Alignment.LITTLE_ENDIAN);
62
+ const chunkUncompressedLength = chunkHeader.getInt32(40, this.alignment === Alignment.LITTLE_ENDIAN);
69
63
  totalUncompressedBodySize += chunkUncompressedLength;
70
64
  const currentChunkSize = chunkCompressedLength;
71
65
  let currentChunk = this.fileBuffer.slice(this.currentByte, this.currentByte + currentChunkSize);
@@ -77,11 +71,11 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
77
71
  try {
78
72
  // Inflate current chunk
79
73
  let currentInflatedChunk = null;
80
- currentInflatedChunk = pako_1.default.inflate(currentChunk);
74
+ currentInflatedChunk = Pako.inflate(currentChunk);
81
75
  currentChunks.push(currentInflatedChunk);
82
76
  }
83
77
  catch (err) {
84
- throw new parser_error_1.ParserError('ParserError', 'An error occurred while calling pako inflate.' + err);
78
+ throw new ParserError('ParserError', 'An error occurred while calling pako inflate.' + err);
85
79
  }
86
80
  }
87
81
  //TODO we can get rid of file buffer here.
@@ -108,16 +102,15 @@ class BlueprintReader extends byte_reader_class_1.ByteReader {
108
102
  // object headers
109
103
  const objectHeadersBinarySize = reader.readInt32();
110
104
  let objects = [];
111
- level_class_1.Level.ReadObjectHeaders(reader, objects, () => { });
105
+ Level.ReadObjectHeaders(reader, objects, () => { });
112
106
  // objects contents
113
- level_class_1.Level.ReadObjectContents(reader, objects, 0, () => { });
107
+ Level.ReadObjectContents(reader, objects, 0, () => { });
114
108
  return objects;
115
109
  }
116
110
  }
117
- exports.BlueprintReader = BlueprintReader;
118
- class BlueprintConfigReader extends byte_reader_class_1.ByteReader {
111
+ export class BlueprintConfigReader extends ByteReader {
119
112
  constructor(bluePrintConfigBuffer) {
120
- super(bluePrintConfigBuffer, alignment_enum_1.Alignment.LITTLE_ENDIAN);
113
+ super(bluePrintConfigBuffer, Alignment.LITTLE_ENDIAN);
121
114
  this.bluePrintConfigBuffer = bluePrintConfigBuffer;
122
115
  this.parse = () => BlueprintConfigReader.ParseConfig(this);
123
116
  }
@@ -125,7 +118,7 @@ class BlueprintConfigReader extends byte_reader_class_1.ByteReader {
125
118
  const unk = reader.readInt32(); // unknown, seems to always be 02.
126
119
  const description = reader.readString();
127
120
  const unk3 = reader.readInt32(); // iconID. default is 0x0E03 = 782
128
- const colorMaybe = (0, util_types_1.ParseCol4RGBA)(reader); // LinearColor, which is 4x float32 as RGBA
121
+ const colorMaybe = ParseCol4RGBA(reader); // LinearColor, which is 4x float32 as RGBA
129
122
  return {
130
123
  description,
131
124
  color: colorMaybe,
@@ -133,5 +126,3 @@ class BlueprintConfigReader extends byte_reader_class_1.ByteReader {
133
126
  };
134
127
  }
135
128
  }
136
- exports.BlueprintConfigReader = BlueprintConfigReader;
137
- //# sourceMappingURL=blueprint-reader.js.map
@@ -1,8 +1,8 @@
1
- import { ByteWriter } from "./byte/byte-writer.class";
2
- import { BlueprintHeader, BlueprintConfig } from "../parser/satisfactory/blueprint/blueprint.interface";
3
1
  import { SaveComponent } from "../parser/satisfactory/objects/SaveComponent";
4
2
  import { SaveEntity } from "../parser/satisfactory/objects/SaveEntity";
5
3
  import { ChunkCompressionInfo } from "../parser/satisfactory/satisfactory-save.class";
4
+ import { ByteWriter } from "./byte/byte-writer.class";
5
+ import { BlueprintConfig, BlueprintHeader } from "./satisfactory/blueprint/blueprint";
6
6
  export declare class BlueprintWriter extends ByteWriter {
7
7
  constructor();
8
8
  static SerializeHeader(writer: ByteWriter, header: BlueprintHeader): void;
@@ -1,15 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BlueprintConfigWriter = exports.BlueprintWriter = void 0;
4
- const alignment_enum_1 = require("./byte/alignment.enum");
5
- const byte_writer_class_1 = require("./byte/byte-writer.class");
6
- const level_class_1 = require("../parser/satisfactory/level.class");
7
- const util_types_1 = require("../parser/satisfactory/structs/util.types");
8
- const save_writer_class_1 = require("../parser/save-writer.class");
9
- const parser_error_1 = require("./error/parser.error");
10
- class BlueprintWriter extends byte_writer_class_1.ByteWriter {
1
+ import { Level } from "../parser/satisfactory/level.class";
2
+ import { SerializeCol4RGBA } from "../parser/satisfactory/structs/util.types";
3
+ import { Alignment } from "./byte/alignment.enum";
4
+ import { ByteWriter } from "./byte/byte-writer.class";
5
+ import { ParserError } from "./error/parser.error";
6
+ import { SaveWriter } from "./save-writer";
7
+ export class BlueprintWriter extends ByteWriter {
11
8
  constructor() {
12
- super(alignment_enum_1.Alignment.LITTLE_ENDIAN);
9
+ super(Alignment.LITTLE_ENDIAN);
13
10
  }
14
11
  static SerializeHeader(writer, header) {
15
12
  writer.writeInt32(2); // unknown, seems to always be 02.
@@ -35,36 +32,33 @@ class BlueprintWriter extends byte_writer_class_1.ByteWriter {
35
32
  }
36
33
  generateChunks(compressionInfo, posAfterHeader, onBinaryBeforeCompressing, onHeader, onChunk, onFinish) {
37
34
  if (posAfterHeader <= 0) {
38
- throw new parser_error_1.ParserError('ParserError', 'seems like this buffer has no header. Please write the header first before you can generate chunks.');
35
+ throw new ParserError('ParserError', 'seems like this buffer has no header. Please write the header first before you can generate chunks.');
39
36
  }
40
37
  // send plain header first.
41
38
  const header = new Uint8Array(this.bufferArray.slice(0, posAfterHeader));
42
39
  onHeader(header);
43
40
  // create save body
44
41
  this.bufferArray = this.bufferArray.slice(posAfterHeader);
45
- save_writer_class_1.SaveWriter.GenerateCompressedChunksFromData(this.bufferArray, compressionInfo, onBinaryBeforeCompressing, onChunk, onFinish, this.alignment);
42
+ SaveWriter.GenerateCompressedChunksFromData(this.bufferArray, compressionInfo, onBinaryBeforeCompressing, onChunk, onFinish, this.alignment);
46
43
  }
47
44
  static SerializeObjects(writer, objects) {
48
45
  // object headers
49
46
  const headersLenIndicator = writer.getBufferPosition();
50
47
  writer.writeInt32(0);
51
- level_class_1.Level.SerializeObjectHeaders(writer, objects);
48
+ Level.SerializeObjectHeaders(writer, objects);
52
49
  writer.writeBinarySizeFromPosition(headersLenIndicator, headersLenIndicator + 4);
53
50
  // objects contents
54
- level_class_1.Level.SerializeObjectContents(writer, objects, 0);
51
+ Level.SerializeObjectContents(writer, objects, 0);
55
52
  }
56
53
  }
57
- exports.BlueprintWriter = BlueprintWriter;
58
- class BlueprintConfigWriter extends byte_writer_class_1.ByteWriter {
54
+ export class BlueprintConfigWriter extends ByteWriter {
59
55
  constructor() {
60
- super(alignment_enum_1.Alignment.LITTLE_ENDIAN);
56
+ super(Alignment.LITTLE_ENDIAN);
61
57
  }
62
58
  static SerializeConfig(writer, config) {
63
59
  writer.writeInt32(2); // unknown, seems to always be 02.
64
60
  writer.writeString(config.description);
65
61
  writer.writeInt32(config.iconID);
66
- (0, util_types_1.SerializeCol4RGBA)(writer, config.color);
62
+ SerializeCol4RGBA(writer, config.color);
67
63
  }
68
64
  }
69
- exports.BlueprintConfigWriter = BlueprintConfigWriter;
70
- //# sourceMappingURL=blueprint-writer.js.map
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Alignment = void 0;
4
- var Alignment;
1
+ export var Alignment;
5
2
  (function (Alignment) {
6
3
  Alignment[Alignment["BIG_ENDIAN"] = 0] = "BIG_ENDIAN";
7
4
  Alignment[Alignment["LITTLE_ENDIAN"] = 1] = "LITTLE_ENDIAN";
8
- })(Alignment = exports.Alignment || (exports.Alignment = {}));
9
- //# sourceMappingURL=alignment.enum.js.map
5
+ })(Alignment || (Alignment = {}));
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ByteReader = void 0;
4
- const alignment_enum_1 = require("./alignment.enum");
5
- class ByteReader {
1
+ import { Alignment } from "./alignment.enum";
2
+ export class ByteReader {
6
3
  constructor(fileBuffer, alignment) {
7
4
  this.currentByte = 0;
8
5
  this.handledByte = 0;
@@ -57,32 +54,32 @@ class ByteReader {
57
54
  return data;
58
55
  }
59
56
  readUint16() {
60
- let data = this.bufferView.getUint16(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
57
+ let data = this.bufferView.getUint16(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
61
58
  this.currentByte += 2;
62
59
  return data;
63
60
  }
64
61
  readInt32() {
65
- let data = this.bufferView.getInt32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
62
+ let data = this.bufferView.getInt32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
66
63
  this.currentByte += 4;
67
64
  return data;
68
65
  }
69
66
  readUint32() {
70
- let data = this.bufferView.getUint32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
67
+ let data = this.bufferView.getUint32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
71
68
  this.currentByte += 4;
72
69
  return data;
73
70
  }
74
71
  readLong() {
75
- let data = this.bufferView.getBigInt64(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
72
+ let data = this.bufferView.getBigInt64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
76
73
  this.currentByte += 8;
77
74
  return data;
78
75
  }
79
76
  readFloat() {
80
- let data = this.bufferView.getFloat32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
77
+ let data = this.bufferView.getFloat32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
81
78
  this.currentByte += 4;
82
79
  return data;
83
80
  }
84
81
  readDouble() {
85
- let data = this.bufferView.getFloat64(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
82
+ let data = this.bufferView.getFloat64(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
86
83
  this.currentByte += 8;
87
84
  return data;
88
85
  }
@@ -90,7 +87,7 @@ class ByteReader {
90
87
  let payload = '';
91
88
  let counter = this.currentByte;
92
89
  try {
93
- let strLength = this.bufferView.getInt32(this.currentByte, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
90
+ let strLength = this.bufferView.getInt32(this.currentByte, this.alignment === Alignment.LITTLE_ENDIAN);
94
91
  counter += 4;
95
92
  payload = new Array(strLength - 1).fill('').map(c => String.fromCharCode(this.bufferView.getUint8(counter++))).join('');
96
93
  }
@@ -129,5 +126,3 @@ class ByteReader {
129
126
  }
130
127
  }
131
128
  }
132
- exports.ByteReader = ByteReader;
133
- //# sourceMappingURL=byte-reader.class.js.map
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ByteWriter = void 0;
4
- const alignment_enum_1 = require("./alignment.enum");
1
+ import { Alignment } from "./alignment.enum";
5
2
  class ByteWriter {
6
3
  constructor(alignment, bufferSize = 500) {
7
4
  this.getBufferPosition = () => this.currentByte;
@@ -44,42 +41,42 @@ class ByteWriter {
44
41
  }
45
42
  writeInt16(value) {
46
43
  this.extendBufferIfNeeded(2);
47
- this.bufferView.setInt16(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
44
+ this.bufferView.setInt16(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
48
45
  this.currentByte += 2;
49
46
  }
50
47
  writeUint16(value) {
51
48
  this.extendBufferIfNeeded(2);
52
- this.bufferView.setUint16(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
49
+ this.bufferView.setUint16(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
53
50
  this.currentByte += 2;
54
51
  }
55
52
  writeInt32(value) {
56
53
  this.extendBufferIfNeeded(4);
57
- this.bufferView.setInt32(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
54
+ this.bufferView.setInt32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
58
55
  this.currentByte += 4;
59
56
  }
60
57
  writeUint32(value) {
61
58
  this.extendBufferIfNeeded(4);
62
- this.bufferView.setUint32(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
59
+ this.bufferView.setUint32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
63
60
  this.currentByte += 4;
64
61
  }
65
62
  writeInt64(value) {
66
63
  this.extendBufferIfNeeded(8);
67
- this.bufferView.setBigInt64(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
64
+ this.bufferView.setBigInt64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
68
65
  this.currentByte += 8;
69
66
  }
70
67
  writeUint64(value) {
71
68
  this.extendBufferIfNeeded(8);
72
- this.bufferView.setBigUint64(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
69
+ this.bufferView.setBigUint64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
73
70
  this.currentByte += 8;
74
71
  }
75
72
  writeFloat(value) {
76
73
  this.extendBufferIfNeeded(4);
77
- this.bufferView.setFloat32(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
74
+ this.bufferView.setFloat32(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
78
75
  this.currentByte += 4;
79
76
  }
80
77
  writeDouble(value) {
81
78
  this.extendBufferIfNeeded(8);
82
- this.bufferView.setFloat64(this.currentByte, value, this.alignment === alignment_enum_1.Alignment.LITTLE_ENDIAN);
79
+ this.bufferView.setFloat64(this.currentByte, value, this.alignment === Alignment.LITTLE_ENDIAN);
83
80
  this.currentByte += 8;
84
81
  }
85
82
  writeString(value) {
@@ -146,5 +143,4 @@ class ByteWriter {
146
143
  ;
147
144
  }
148
145
  ByteWriter.IsASCIICompatible = (value) => /^[\x00-\x7F]*$/.test(value);
149
- exports.ByteWriter = ByteWriter;
150
- //# sourceMappingURL=byte-writer.class.js.map
146
+ export { ByteWriter };
@@ -1,29 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CompressionLibraryError = exports.CorruptSaveError = exports.UnsupportedVersionError = exports.ParserError = void 0;
4
- class ParserError extends Error {
1
+ export class ParserError extends Error {
5
2
  constructor(name, message) {
6
3
  super(message);
7
4
  this.name = name;
8
5
  }
9
6
  }
10
- exports.ParserError = ParserError;
11
- class UnsupportedVersionError extends ParserError {
7
+ export class UnsupportedVersionError extends ParserError {
12
8
  constructor(message) {
13
9
  super('UnsupportedVersionError', message ?? 'This save version is not supported.');
14
10
  }
15
11
  }
16
- exports.UnsupportedVersionError = UnsupportedVersionError;
17
- class CorruptSaveError extends ParserError {
12
+ export class CorruptSaveError extends ParserError {
18
13
  constructor(message) {
19
14
  super('CorruptSaveError', message ?? 'This save data is most likely corrupt.');
20
15
  }
21
16
  }
22
- exports.CorruptSaveError = CorruptSaveError;
23
- class CompressionLibraryError extends ParserError {
17
+ export class CompressionLibraryError extends ParserError {
24
18
  constructor(message) {
25
19
  super('CompressionLibraryError', message ?? 'Failed to compress/decompress save data.');
26
20
  }
27
21
  }
28
- exports.CompressionLibraryError = CompressionLibraryError;
29
- //# sourceMappingURL=parser.error.js.map
@@ -1,14 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { SatisfactorySave } from "./satisfactory/satisfactory-save.class";
3
3
  import { SaveProjectionConfig } from "./save-reader";
4
- /**
5
- * Represents a parse result of an object type. The errors contain information in case of a failed parsing.
6
- * The parse result contains a valid payload in case of a successful parsing.
7
- */
8
- export type ParseResult<T> = {
9
- payload?: T;
10
- errors: string[];
11
- };
12
4
  export declare class SaveParser {
13
5
  /**
14
6
  * serializes a save file into binary and reports back on individual callbacks.
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SaveParser = void 0;
4
- const level_class_1 = require("./satisfactory/level.class");
5
- const satisfactory_save_class_1 = require("./satisfactory/satisfactory-save.class");
6
- const save_reader_1 = require("./save-reader");
7
- const save_writer_class_1 = require("./save-writer.class");
1
+ import { Level } from "./satisfactory/level.class";
2
+ import { SatisfactorySave } from "./satisfactory/satisfactory-save.class";
3
+ import { SaveReader, projectionFilterApplies } from "./save-reader";
4
+ import { SaveWriter } from "./save-writer";
8
5
  class SaveParser {
9
6
  /**
10
7
  * serializes a save file into binary and reports back on individual callbacks.
@@ -15,10 +12,10 @@ class SaveParser {
15
12
  * @param onFinish gets called when all chunks have been generated. A summary of the chunk sizes and count is reported.
16
13
  */
17
14
  static WriteSave(save, onBinaryBeforeCompressing, onHeader, onChunk, onFinish) {
18
- const writer = new save_writer_class_1.SaveWriter();
19
- save_writer_class_1.SaveWriter.WriteHeader(writer, save.header);
15
+ const writer = new SaveWriter();
16
+ SaveWriter.WriteHeader(writer, save.header);
20
17
  const posAfterHeader = writer.getBufferPosition();
21
- save_writer_class_1.SaveWriter.WriteLevels(writer, save, save.header.buildVersion);
18
+ SaveWriter.WriteLevels(writer, save, save.header.buildVersion);
22
19
  writer.endWriting();
23
20
  writer.generateChunks(save.compressionInfo, posAfterHeader, onBinaryBeforeCompressing, onHeader, onChunk, onFinish);
24
21
  }
@@ -30,10 +27,10 @@ class SaveParser {
30
27
  * @returns a brief summary
31
28
  */
32
29
  static ParseSaveFile(file, onSaveDecompressed = () => { }, onProgress = () => { }) {
33
- const reader = new save_reader_1.SaveReader(file.buffer, onProgress);
30
+ const reader = new SaveReader(file.buffer, onProgress);
34
31
  // read header
35
32
  const header = reader.readHeader();
36
- const save = new satisfactory_save_class_1.SatisfactorySave(header);
33
+ const save = new SatisfactorySave(header);
37
34
  // inflate chunks
38
35
  const inflateResult = reader.inflateChunks();
39
36
  // call callback on decompressed save body
@@ -56,9 +53,9 @@ class SaveParser {
56
53
  header: save.header,
57
54
  trailingCollectedObjects: save.trailingCollectedObjects,
58
55
  levels: save.levels.map(level => {
59
- const lvl = new level_class_1.Level(level.name);
56
+ const lvl = new Level(level.name);
60
57
  lvl.collectables = level.collectables;
61
- lvl.objects = level.objects.filter(obj => (0, save_reader_1.projectionFilterApplies)(config, obj));
58
+ lvl.objects = level.objects.filter(obj => projectionFilterApplies(config, obj));
62
59
  return lvl;
63
60
  })
64
61
  };
@@ -81,5 +78,4 @@ SaveParser.JSONStringifyModified = (obj, indent = 0) => JSON.stringify(obj, (key
81
78
  }
82
79
  return value;
83
80
  }, indent);
84
- exports.SaveParser = SaveParser;
85
- //# sourceMappingURL=parser.class.js.map
81
+ export { SaveParser };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Level = void 0;
4
- const ObjectReference_1 = require("./objects/ObjectReference");
5
- const SaveComponent_1 = require("./objects/SaveComponent");
6
- const SaveEntity_1 = require("./objects/SaveEntity");
7
- class Level {
1
+ import { ObjectReference } from "./objects/ObjectReference";
2
+ import { isSaveComponent, SaveComponent } from "./objects/SaveComponent";
3
+ import { isSaveEntity, SaveEntity } from "./objects/SaveEntity";
4
+ export class Level {
8
5
  constructor(name) {
9
6
  this.name = name;
10
7
  this.objects = [];
@@ -15,12 +12,12 @@ class Level {
15
12
  for (const obj of objects) {
16
13
  switch (obj.type) {
17
14
  case 'SaveEntity':
18
- writer.writeInt32(SaveEntity_1.SaveEntity.TypeID);
19
- SaveEntity_1.SaveEntity.SerializeHeader(writer, obj);
15
+ writer.writeInt32(SaveEntity.TypeID);
16
+ SaveEntity.SerializeHeader(writer, obj);
20
17
  break;
21
18
  case 'SaveComponent':
22
- writer.writeInt32(SaveComponent_1.SaveComponent.TypeID);
23
- SaveComponent_1.SaveComponent.SerializeHeader(writer, obj);
19
+ writer.writeInt32(SaveComponent.TypeID);
20
+ SaveComponent.SerializeHeader(writer, obj);
24
21
  break;
25
22
  default:
26
23
  console.log('Unknown object type', obj);
@@ -46,11 +43,11 @@ class Level {
46
43
  for (const obj of objects) {
47
44
  const lenReplacementPosition = writer.getBufferPosition();
48
45
  writer.writeInt32(0);
49
- if ((0, SaveEntity_1.isSaveEntity)(obj)) {
50
- SaveEntity_1.SaveEntity.SerializeData(writer, obj, buildVersion);
46
+ if (isSaveEntity(obj)) {
47
+ SaveEntity.SerializeData(writer, obj, buildVersion);
51
48
  }
52
- else if ((0, SaveComponent_1.isSaveComponent)(obj)) {
53
- SaveComponent_1.SaveComponent.SerializeData(writer, obj, buildVersion);
49
+ else if (isSaveComponent(obj)) {
50
+ SaveComponent.SerializeData(writer, obj, buildVersion);
54
51
  }
55
52
  writer.writeBinarySizeFromPosition(lenReplacementPosition, lenReplacementPosition + 4);
56
53
  }
@@ -64,14 +61,14 @@ class Level {
64
61
  }
65
62
  let objectType = reader.readInt32();
66
63
  switch (objectType) {
67
- case SaveEntity_1.SaveEntity.TypeID:
68
- let object = new SaveEntity_1.SaveEntity('', '', '', '');
69
- SaveEntity_1.SaveEntity.ParseHeader(reader, object);
64
+ case SaveEntity.TypeID:
65
+ let object = new SaveEntity('', '', '', '');
66
+ SaveEntity.ParseHeader(reader, object);
70
67
  objectsList.push(object);
71
68
  break;
72
- case SaveComponent_1.SaveComponent.TypeID:
73
- let component = new SaveComponent_1.SaveComponent('', '', '', '');
74
- SaveComponent_1.SaveComponent.ParseHeader(reader, component);
69
+ case SaveComponent.TypeID:
70
+ let component = new SaveComponent('', '', '', '');
71
+ SaveComponent.ParseHeader(reader, component);
75
72
  objectsList.push(component);
76
73
  break;
77
74
  default:
@@ -95,11 +92,11 @@ class Level {
95
92
  const len = reader.readInt32();
96
93
  const before = reader.getBufferPosition();
97
94
  const obj = objectsList[i];
98
- if ((0, SaveEntity_1.isSaveEntity)(obj)) {
99
- SaveEntity_1.SaveEntity.ParseData(obj, len, reader, buildVersion);
95
+ if (isSaveEntity(obj)) {
96
+ SaveEntity.ParseData(obj, len, reader, buildVersion);
100
97
  }
101
- else if ((0, SaveComponent_1.isSaveComponent)(obj)) {
102
- SaveComponent_1.SaveComponent.ParseData(obj, len, reader, buildVersion);
98
+ else if (isSaveComponent(obj)) {
99
+ SaveComponent.ParseData(obj, len, reader, buildVersion);
103
100
  }
104
101
  const after = reader.getBufferPosition();
105
102
  if (after - before !== len) {
@@ -131,7 +128,7 @@ class Level {
131
128
  static SerializeCollectablesList(writer, collectables) {
132
129
  writer.writeInt32(collectables.length);
133
130
  for (const collectable of collectables) {
134
- ObjectReference_1.ObjectReference.Serialize(writer, collectable);
131
+ ObjectReference.Serialize(writer, collectable);
135
132
  }
136
133
  }
137
134
  // collected stuff
@@ -139,11 +136,9 @@ class Level {
139
136
  let countCollected = reader.readInt32();
140
137
  const collected = [];
141
138
  for (let i = 0; i < countCollected; i++) {
142
- const collectable = ObjectReference_1.ObjectReference.Parse(reader);
139
+ const collectable = ObjectReference.Parse(reader);
143
140
  collected.push(collectable);
144
141
  }
145
142
  return collected;
146
143
  }
147
144
  }
148
- exports.Level = Level;
149
- //# sourceMappingURL=level.class.js.map
@@ -1,5 +1,5 @@
1
1
  import { ByteReader } from "../../byte/byte-reader.class";
2
- import { SaveWriter } from "../../save-writer.class";
2
+ import { SaveWriter } from "../../save-writer";
3
3
  import { AbstractBaseProperty } from "./Property";
4
4
  export declare class DataFields {
5
5
  properties: any[];