@etothepii/satisfactory-file-parser 0.0.3 → 0.0.4

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