@etothepii/satisfactory-file-parser 0.0.33 → 0.0.34

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 (34) hide show
  1. package/build/index.js +41 -51
  2. package/build/parser/byte/alignment.enum.js +8 -18
  3. package/build/parser/byte/binary-operable.interface.js +2 -12
  4. package/build/parser/byte/binary-readable.interface.js +2 -12
  5. package/build/parser/byte/byte-reader.class.js +122 -132
  6. package/build/parser/byte/byte-writer.class.js +133 -143
  7. package/build/parser/error/parser.error.js +40 -50
  8. package/build/parser/file.types.js +2 -12
  9. package/build/parser/parser.js +85 -95
  10. package/build/parser/satisfactory/blueprint/blueprint-reader.js +109 -119
  11. package/build/parser/satisfactory/blueprint/blueprint-writer.js +56 -66
  12. package/build/parser/satisfactory/blueprint/blueprint.types.js +2 -12
  13. package/build/parser/satisfactory/objects/DataFields.js +297 -307
  14. package/build/parser/satisfactory/objects/ObjectReference.js +14 -24
  15. package/build/parser/satisfactory/objects/Property.js +967 -977
  16. package/build/parser/satisfactory/objects/SaveComponent.js +28 -38
  17. package/build/parser/satisfactory/objects/SaveEntity.js +65 -75
  18. package/build/parser/satisfactory/objects/SaveObject.js +26 -36
  19. package/build/parser/satisfactory/save/asynchronous-level.class.js +60 -70
  20. package/build/parser/satisfactory/save/level.class.js +122 -132
  21. package/build/parser/satisfactory/save/satisfactory-save.js +10 -20
  22. package/build/parser/satisfactory/save/save-reader.js +158 -168
  23. package/build/parser/satisfactory/save/save-writer.js +97 -107
  24. package/build/parser/satisfactory/save/save.types.js +2 -12
  25. package/build/parser/satisfactory/structs/util.types.js +89 -99
  26. package/build/parser/stream/byte-stream-reader.class.js +217 -227
  27. package/build/parser/stream/json-stream-state-writer.js +15 -25
  28. package/build/parser/stream/json-stream-writable.js +72 -82
  29. package/build/parser/stream/json-stream-writer.js +122 -132
  30. package/build/parser/stream/save-stream-json-stringifier.js +29 -39
  31. package/build/parser/stream/save-stream-reader.class.js +106 -116
  32. package/build/parser/stream/save-stream-writer.class.js +90 -100
  33. package/build/parser/stream/stream-level.class.js +93 -103
  34. package/package.json +1 -1
@@ -1,113 +1,103 @@
1
- (function (factory) {
2
- if (typeof module === "object" && typeof module.exports === "object") {
3
- var v = factory(require, exports);
4
- if (v !== undefined) module.exports = v;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StreamLevel = void 0;
4
+ const __1 = require("../..");
5
+ const SaveComponent_1 = require("../satisfactory/objects/SaveComponent");
6
+ const SaveEntity_1 = require("../satisfactory/objects/SaveEntity");
7
+ class StreamLevel {
8
+ constructor(name) {
9
+ this.name = name;
5
10
  }
6
- else if (typeof define === "function" && define.amd) {
7
- define(["require", "exports", "../..", "../satisfactory/objects/SaveComponent", "../satisfactory/objects/SaveEntity"], factory);
11
+ static async ReadLevelAsync(reader, writer, levelName, buildVersion) {
12
+ const binaryLength = reader.readInt32();
13
+ await reader.allocate(binaryLength);
14
+ const objectHeaders = StreamLevel.ReadObjectHeaders(reader);
15
+ const collectables = __1.Level.ReadCollectablesList(reader);
16
+ await writer.openLevel(levelName);
17
+ await StreamLevel.StreamObjectContentsAsync(reader, writer, objectHeaders, buildVersion);
18
+ await writer.switchInLevelToCollectables();
19
+ await writer.writeCollectables(...collectables);
20
+ await writer.endLevel();
21
+ __1.Level.ReadCollectablesList(reader);
22
+ return;
8
23
  }
9
- })(function (require, exports) {
10
- "use strict";
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.StreamLevel = void 0;
13
- const __1 = require("../..");
14
- const SaveComponent_1 = require("../satisfactory/objects/SaveComponent");
15
- const SaveEntity_1 = require("../satisfactory/objects/SaveEntity");
16
- class StreamLevel {
17
- constructor(name) {
18
- this.name = name;
24
+ static ReadObjectHeaders(reader) {
25
+ let countObjectHeaders = reader.readInt32();
26
+ const headers = [];
27
+ for (let i = 0; i < countObjectHeaders; i++) {
28
+ let objectType = reader.readInt32();
29
+ switch (objectType) {
30
+ case 1:
31
+ headers.push({
32
+ typePath: reader.readString(),
33
+ rootObject: reader.readString(),
34
+ instanceName: reader.readString(),
35
+ needTransform: reader.readInt32() == 1,
36
+ transform: (0, __1.ParseTransform)(reader),
37
+ wasPlacedInLevel: reader.readInt32() == 1
38
+ });
39
+ break;
40
+ case 0:
41
+ headers.push({
42
+ typePath: reader.readString(),
43
+ rootObject: reader.readString(),
44
+ instanceName: reader.readString(),
45
+ parentEntityName: reader.readString()
46
+ });
47
+ break;
48
+ default:
49
+ console.log('Unknown object type', objectType);
50
+ break;
51
+ }
19
52
  }
20
- static async ReadLevelAsync(reader, writer, levelName, buildVersion) {
21
- const binaryLength = reader.readInt32();
22
- await reader.allocate(binaryLength);
23
- const objectHeaders = StreamLevel.ReadObjectHeaders(reader);
24
- const collectables = __1.Level.ReadCollectablesList(reader);
25
- await writer.openLevel(levelName);
26
- await StreamLevel.StreamObjectContentsAsync(reader, writer, objectHeaders, buildVersion);
27
- await writer.switchInLevelToCollectables();
28
- await writer.writeCollectables(...collectables);
29
- await writer.endLevel();
30
- __1.Level.ReadCollectablesList(reader);
31
- return;
53
+ return headers;
54
+ }
55
+ static async StreamObjectContentsAsync(reader, writer, headerList, buildVersion) {
56
+ const binarySize = reader.readInt32();
57
+ const posBefore = reader.getBufferPosition();
58
+ await reader.allocate(Math.min(binarySize, 300 * 1000 * 1000));
59
+ const countEntities = reader.readInt32();
60
+ if (countEntities !== headerList.length) {
61
+ throw new Error(`possibly corrupt. entity content count ${countEntities} does not object count of ${headerList.length}`);
32
62
  }
33
- static ReadObjectHeaders(reader) {
34
- let countObjectHeaders = reader.readInt32();
35
- const headers = [];
36
- for (let i = 0; i < countObjectHeaders; i++) {
37
- let objectType = reader.readInt32();
38
- switch (objectType) {
39
- case 1:
40
- headers.push({
41
- typePath: reader.readString(),
42
- rootObject: reader.readString(),
43
- instanceName: reader.readString(),
44
- needTransform: reader.readInt32() == 1,
45
- transform: (0, __1.ParseTransform)(reader),
46
- wasPlacedInLevel: reader.readInt32() == 1
47
- });
48
- break;
49
- case 0:
50
- headers.push({
51
- typePath: reader.readString(),
52
- rootObject: reader.readString(),
53
- instanceName: reader.readString(),
54
- parentEntityName: reader.readString()
55
- });
56
- break;
57
- default:
58
- console.log('Unknown object type', objectType);
59
- break;
60
- }
63
+ let bufferedObjects = [];
64
+ for (let i = 0; i < countEntities; i++) {
65
+ if ((i + 1) % 10000 === 0) {
66
+ await writer.writeObjects(...bufferedObjects);
67
+ bufferedObjects = [];
61
68
  }
62
- return headers;
63
- }
64
- static async StreamObjectContentsAsync(reader, writer, headerList, buildVersion) {
65
- const binarySize = reader.readInt32();
66
- const posBefore = reader.getBufferPosition();
67
- await reader.allocate(Math.min(binarySize, 300 * 1000 * 1000));
68
- const countEntities = reader.readInt32();
69
- if (countEntities !== headerList.length) {
70
- throw new Error(`possibly corrupt. entity content count ${countEntities} does not object count of ${headerList.length}`);
69
+ const len = reader.readInt32();
70
+ if (reader.getAmountAllocatedLeft() <= len) {
71
+ const allocateAmount = Math.min(binarySize - (reader.getBufferPosition() - posBefore) + 4, 300 * 1000 * 1000);
72
+ await reader.allocate(allocateAmount);
71
73
  }
72
- let bufferedObjects = [];
73
- for (let i = 0; i < countEntities; i++) {
74
- if ((i + 1) % 10000 === 0) {
75
- await writer.writeObjects(...bufferedObjects);
76
- bufferedObjects = [];
77
- }
78
- const len = reader.readInt32();
79
- if (reader.getAmountAllocatedLeft() <= len) {
80
- const allocateAmount = Math.min(binarySize - (reader.getBufferPosition() - posBefore) + 4, 300 * 1000 * 1000);
81
- await reader.allocate(allocateAmount);
82
- }
83
- const before = reader.getBufferPosition();
84
- const obj = headerList.shift();
85
- if (!obj) {
86
- throw new Error();
87
- }
88
- const isComponent = obj.parentEntityName !== undefined;
89
- if (!isComponent) {
90
- const entity = new SaveEntity_1.SaveEntity(obj.typePath, obj.rootObject, obj.instanceName, '', obj.needTransform);
91
- SaveEntity_1.SaveEntity.ParseData(entity, len, reader, buildVersion, obj.typePath);
92
- bufferedObjects.push(entity);
93
- }
94
- else if (isComponent) {
95
- const component = new SaveComponent_1.SaveComponent(obj.typePath, obj.rootObject, obj.instanceName, obj.parentEntityName);
96
- SaveComponent_1.SaveComponent.ParseData(component, len, reader, buildVersion, obj.typePath);
97
- bufferedObjects.push(component);
98
- }
99
- const after = reader.getBufferPosition();
100
- if (after - before !== len) {
101
- console.warn('entity may be corrupt.', i);
102
- }
74
+ const before = reader.getBufferPosition();
75
+ const obj = headerList.shift();
76
+ if (!obj) {
77
+ throw new Error();
103
78
  }
104
- await writer.writeObjects(...bufferedObjects);
105
- bufferedObjects = [];
106
- const posAfter = reader.getBufferPosition();
107
- if (posAfter - posBefore !== binarySize) {
108
- console.warn('save seems corrupt.', this.name);
79
+ const isComponent = obj.parentEntityName !== undefined;
80
+ if (!isComponent) {
81
+ const entity = new SaveEntity_1.SaveEntity(obj.typePath, obj.rootObject, obj.instanceName, '', obj.needTransform);
82
+ SaveEntity_1.SaveEntity.ParseData(entity, len, reader, buildVersion, obj.typePath);
83
+ bufferedObjects.push(entity);
109
84
  }
85
+ else if (isComponent) {
86
+ const component = new SaveComponent_1.SaveComponent(obj.typePath, obj.rootObject, obj.instanceName, obj.parentEntityName);
87
+ SaveComponent_1.SaveComponent.ParseData(component, len, reader, buildVersion, obj.typePath);
88
+ bufferedObjects.push(component);
89
+ }
90
+ const after = reader.getBufferPosition();
91
+ if (after - before !== len) {
92
+ console.warn('entity may be corrupt.', i);
93
+ }
94
+ }
95
+ await writer.writeObjects(...bufferedObjects);
96
+ bufferedObjects = [];
97
+ const posAfter = reader.getBufferPosition();
98
+ if (posAfter - posBefore !== binarySize) {
99
+ console.warn('save seems corrupt.', this.name);
110
100
  }
111
101
  }
112
- exports.StreamLevel = StreamLevel;
113
- });
102
+ }
103
+ exports.StreamLevel = StreamLevel;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@etothepii/satisfactory-file-parser",
3
3
  "author": "etothepii",
4
- "version": "0.0.33",
4
+ "version": "0.0.34",
5
5
  "description": "A file parser for satisfactory files. Includes save files and blueprint files.",
6
6
  "types": "./build/index.d.ts",
7
7
  "main": "./build/index.js",