@etothepii/satisfactory-file-parser 3.1.3 → 3.2.2
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.
- package/CHANGELOG.md +14 -0
- package/README.md +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/parser/context/context.d.ts +1 -0
- package/build/parser/context/context.d.ts.map +1 -1
- package/build/parser/context/context.js.map +1 -1
- package/build/parser/parser.d.ts.map +1 -1
- package/build/parser/parser.js +4 -4
- package/build/parser/parser.js.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save-header.d.ts.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save-header.js +4 -3
- package/build/parser/satisfactory/save/satisfactory-save-header.js.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save.d.ts +2 -3
- package/build/parser/satisfactory/save/satisfactory-save.d.ts.map +1 -1
- package/build/parser/satisfactory/save/satisfactory-save.js +1 -2
- package/build/parser/satisfactory/save/satisfactory-save.js.map +1 -1
- package/build/parser/satisfactory/save/save-reader.d.ts +0 -20
- package/build/parser/satisfactory/save/save-reader.d.ts.map +1 -1
- package/build/parser/satisfactory/save/save-reader.js +0 -46
- package/build/parser/satisfactory/save/save-reader.js.map +1 -1
- package/build/parser/satisfactory/save/save-writer.d.ts +0 -3
- package/build/parser/satisfactory/save/save-writer.d.ts.map +1 -1
- package/build/parser/satisfactory/save/save-writer.js +0 -25
- package/build/parser/satisfactory/save/save-writer.js.map +1 -1
- package/build/parser/satisfactory/types/property/PropertiesList.js +1 -1
- package/build/parser/satisfactory/types/property/PropertiesList.js.map +1 -1
- package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts +3 -3
- package/build/parser/satisfactory/types/property/generic/MapProperty.d.ts.map +1 -1
- package/build/parser/satisfactory/types/property/generic/MapProperty.js +12 -2
- package/build/parser/satisfactory/types/property/generic/MapProperty.js.map +1 -1
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.d.ts +19 -0
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.d.ts.map +1 -0
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.js +41 -0
- package/build/parser/satisfactory/types/structs/SaveBodyValidation.js.map +1 -0
- package/build/parser/stream/reworked/readable-stream-parser.d.ts +1 -1
- package/build/parser/stream/reworked/readable-stream-parser.d.ts.map +1 -1
- package/build/parser/stream/reworked/readable-stream-parser.js +6 -8
- package/build/parser/stream/reworked/readable-stream-parser.js.map +1 -1
- package/build/parser/stream/reworked/save-stream-json-stringifier.d.ts.map +1 -1
- package/build/parser/stream/reworked/save-stream-json-stringifier.js +1 -2
- package/build/parser/stream/reworked/save-stream-json-stringifier.js.map +1 -1
- package/build/parser/stream/reworked/save-stream-writer.class.d.ts +2 -3
- package/build/parser/stream/reworked/save-stream-writer.class.d.ts.map +1 -1
- package/build/parser/stream/reworked/save-stream-writer.class.js +4 -7
- package/build/parser/stream/reworked/save-stream-writer.class.js.map +1 -1
- package/jsr.json +1 -1
- package/package.json +1 -1
|
@@ -31,13 +31,10 @@ class SaveStreamWriter {
|
|
|
31
31
|
this.writeCompressionInfo = (compressionInfo) => this.createExecutionFunction(['FINISHED_HEADER'], async () => {
|
|
32
32
|
await this.writer.write(`, "compressionInfo": ${JSON.stringify(compressionInfo)}`);
|
|
33
33
|
}, 'WROTE_COMPRESSION_INFO');
|
|
34
|
-
this.
|
|
35
|
-
await this.writer.write(`, "
|
|
36
|
-
}, '
|
|
37
|
-
this.
|
|
38
|
-
await this.writer.write(`, "grids": ${JSON.stringify(grids)}`);
|
|
39
|
-
}, 'WROTE_GRIDS');
|
|
40
|
-
this.openLevels = () => this.createExecutionFunction(['WROTE_GRIDS'], async () => {
|
|
34
|
+
this.writeSaveBodyValidation = (saveBodyValidation) => this.createExecutionFunction(['WROTE_COMPRESSION_INFO'], async () => {
|
|
35
|
+
await this.writer.write(`, "saveBodyValidation": ${JSON.stringify(saveBodyValidation)}`);
|
|
36
|
+
}, 'WROTE_SAVE_BODY_VALIDATION');
|
|
37
|
+
this.openLevels = () => this.createExecutionFunction(['WROTE_SAVE_BODY_VALIDATION'], async () => {
|
|
41
38
|
await this.writer.write(`, "levels": [`);
|
|
42
39
|
}, 'OPENED_LEVELS');
|
|
43
40
|
this.openLevel = (levelName) => this.createExecutionFunction(['OPENED_LEVELS', 'FINISHED_LEVEL'], async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-stream-writer.class.js","sourceRoot":"","sources":["../../../../src/parser/stream/reworked/save-stream-writer.class.ts"],"names":[],"mappings":"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","sourcesContent":["import { WritableStreamDefaultWriter } from \"stream/web\";\nimport { SatisfactorySaveHeader } from '../../satisfactory/save/satisfactory-save-header';\nimport { ChunkCompressionInfo } from \"../../satisfactory/save/save-body-chunks\";\nimport { Grids, SaveBodyValidation } from '../../satisfactory/save/save-reader';\nimport { SaveObject } from \"../../satisfactory/types/objects/SaveObject\";\nimport { ObjectReference } from '../../satisfactory/types/structs/ObjectReference';\n\ntype Mode = 'BEFORE_START' | 'OPENED_SAVE' | 'FINISHED_HEADER' | 'OPENED_LEVELS' | 'FINISHED_LEVELS' | 'OPENED_LEVEL' | 'FINISHED_LEVEL' | 'FINISHED_SAVE'\n\t| 'WROTE_COMPRESSION_INFO' | 'WROTE_OBJECT' | 'SWITCH_TO_COLLECTABLES' | 'WROTE_COLLECTABLE' | 'WROTE_GRID_HASH' | 'WROTE_GRIDS';\n\nclass ModeStateTracker {\n\tconstructor(public mode: Mode) {\n\n\t}\n\n\tpublic checkIsComingFrom(...allowedPredecessors: Mode[]) {\n\t\tif (!allowedPredecessors.includes(this.mode)) {\n\t\t\tthrow new Error(`Wrong order of commands. mode is ${this.mode}. but only ${allowedPredecessors.join(', ')} is/are allowed.`);\n\t\t}\n\t}\n\n\tpublic advance(newMode: Mode) {\n\t\tthis.mode = newMode;\n\t}\n}\n\n/**\n * @deprecated use ReadableStreamParser instead.\n */\nexport class SaveStreamWriter {\n\n\tprivate mode: Mode;\n\tprivate tracker: ModeStateTracker;\n\n\t// we need some flat structure to keep track of number of elements.\n\tprivate formatTracker: {\n\t\tlevels: {\n\t\t\tobjectCount: number;\n\t\t\tcollectablesCount: number;\n\t\t}[]\n\t};\n\n\tconstructor(private writer: WritableStreamDefaultWriter<string>) {\n\t\tthis.mode = 'BEFORE_START';\n\t\tthis.tracker = new ModeStateTracker(this.mode);\n\t\tthis.formatTracker = {\n\t\t\tlevels: []\n\t\t};\n\t}\n\n\tprivate createExecutionFunction = async (allowedInputModes: Mode[], fn: () => Promise<void> | void, targetMode: Mode): Promise<void> => {\n\t\tthis.tracker.checkIsComingFrom(...allowedInputModes);\n\t\tawait fn();\n\t\tthis.tracker.advance(targetMode);\n\t}\n\n\tpublic beginSave = (): Promise<void> => this.createExecutionFunction(\n\t\t['BEFORE_START'],\n\t\tasync () => {\n\t\t\tawait this.writer.write('{');\n\t\t},\n\t\t'OPENED_SAVE'\n\t);\n\n\tpublic writeHeader = (header: SatisfactorySaveHeader): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_SAVE'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`\"header\": ${JSON.stringify(header)}`);\n\t\t},\n\t\t'FINISHED_HEADER'\n\t);\n\n\tpublic writeCompressionInfo = (compressionInfo: ChunkCompressionInfo): Promise<void> => this.createExecutionFunction(\n\t\t['FINISHED_HEADER'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"compressionInfo\": ${JSON.stringify(compressionInfo)}`);\n\t\t},\n\t\t'WROTE_COMPRESSION_INFO'\n\t);\n\n\tpublic writeGridHash = (gridHash: SaveBodyValidation): Promise<void> => this.createExecutionFunction(\n\t\t['WROTE_COMPRESSION_INFO'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"gridHash\": ${JSON.stringify(gridHash)}`);\n\t\t},\n\t\t'WROTE_GRID_HASH'\n\t);\n\n\tpublic writeGrids = (grids: Grids): Promise<void> => this.createExecutionFunction(\n\t\t['WROTE_GRID_HASH'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"grids\": ${JSON.stringify(grids)}`);\n\t\t},\n\t\t'WROTE_GRIDS'\n\t);\n\n\tpublic openLevels = (): Promise<void> => this.createExecutionFunction(\n\t\t['WROTE_GRIDS'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"levels\": [`);\n\t\t},\n\t\t'OPENED_LEVELS'\n\t);\n\n\tpublic openLevel = (levelName: string): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVELS', 'FINISHED_LEVEL'],\n\t\tasync () => {\n\t\t\tthis.formatTracker.levels.push({\n\t\t\t\tobjectCount: 0, collectablesCount: 0\n\t\t\t});\n\t\t\tconst prefix = this.formatTracker.levels.length > 1 ? ', ' : '';\n\t\t\tawait this.writer.write(`${prefix}{\"name\": \"${levelName}\", \"objects\": [`);\n\t\t},\n\t\t'OPENED_LEVEL'\n\t);\n\n\tpublic writeObjects = (...objects: SaveObject[]): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVEL', 'WROTE_OBJECT'],\n\t\tasync () => {\n\t\t\tconst stringified = objects.map(saveObj => JSON.stringify(saveObj));\n\n\t\t\tfor (const obj of stringified) {\n\t\t\t\tawait this.writer.write(`${this.formatTracker.levels.at(-1)!.objectCount >= 1 ? ', ' : ''}${obj}`);\n\t\t\t\tthis.formatTracker.levels.at(-1)!.objectCount++;\n\t\t\t}\n\t\t},\n\t\t'WROTE_OBJECT'\n\t);\n\n\tpublic switchInLevelToCollectables = (...objects: SaveObject[]): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVEL', 'WROTE_OBJECT'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`], \"collectables\": [`);\n\t\t},\n\t\t'SWITCH_TO_COLLECTABLES'\n\t);\n\n\tpublic writeCollectables = (...collectables: ObjectReference[]): Promise<void> => this.createExecutionFunction(\n\t\t['SWITCH_TO_COLLECTABLES', 'WROTE_COLLECTABLE'],\n\t\tasync () => {\n\t\t\tconst stringified = collectables.map(coll => JSON.stringify(coll));\n\n\t\t\tfor (const obj of stringified) {\n\t\t\t\tawait this.writer.write(`${this.formatTracker.levels.at(-1)!.collectablesCount >= 1 ? ', ' : ''}${obj}`);\n\t\t\t\tthis.formatTracker.levels.at(-1)!.collectablesCount++;\n\t\t\t}\n\t\t},\n\t\t'WROTE_COLLECTABLE'\n\t);\n\n\tpublic endLevel = (): Promise<void> => this.createExecutionFunction(\n\t\t['SWITCH_TO_COLLECTABLES', 'WROTE_COLLECTABLE'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`]}`);\n\t\t},\n\t\t'FINISHED_LEVEL'\n\t);\n\n\tpublic endLevels = (): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVELS', 'FINISHED_LEVEL'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`]`);\n\t\t},\n\t\t'FINISHED_LEVELS'\n\t);\n\n\tpublic endSave = (): Promise<void> => this.createExecutionFunction(\n\t\t['FINISHED_LEVELS'],\n\t\tasync () => {\n\t\t\tawait this.writer.write('}');\n\t\t},\n\t\t'FINISHED_SAVE'\n\t);\n\n\tpublic async close(): Promise<void> {\n\t\treturn this.writer.close();\n\t}\n}"]}
|
|
1
|
+
{"version":3,"file":"save-stream-writer.class.js","sourceRoot":"","sources":["../../../../src/parser/stream/reworked/save-stream-writer.class.ts"],"names":[],"mappings":";;;AAUA,MAAM,gBAAgB;IACrB,YAAmB,IAAU;QAAV,SAAI,GAAJ,IAAI,CAAM;IAE7B,CAAC;IAEM,iBAAiB,CAAC,GAAG,mBAA2B;QACtD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,IAAI,cAAc,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9H,CAAC;IACF,CAAC;IAEM,OAAO,CAAC,OAAa;QAC3B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACrB,CAAC;CACD;AAKD,MAAa,gBAAgB;IAa5B,YAAoB,MAA2C;QAA3C,WAAM,GAAN,MAAM,CAAqC;QAQvD,4BAAuB,GAAG,KAAK,EAAE,iBAAyB,EAAE,EAA8B,EAAE,UAAgB,EAAiB,EAAE;YACtI,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,CAAC;YACrD,MAAM,EAAE,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC,CAAA;QAEM,cAAS,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACnE,CAAC,cAAc,CAAC,EAChB,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,EACD,aAAa,CACb,CAAC;QAEK,gBAAW,GAAG,CAAC,MAA8B,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACnG,CAAC,aAAa,CAAC,EACf,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC,EACD,iBAAiB,CACjB,CAAC;QAEK,yBAAoB,GAAG,CAAC,eAAqC,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACnH,CAAC,iBAAiB,CAAC,EACnB,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC,EACD,wBAAwB,CACxB,CAAC;QAEK,4BAAuB,GAAG,CAAC,kBAAsC,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACvH,CAAC,wBAAwB,CAAC,EAC1B,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC,EACD,4BAA4B,CAC5B,CAAC;QAGK,eAAU,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACpE,CAAC,4BAA4B,CAAC,EAC9B,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC,EACD,eAAe,CACf,CAAC;QAEK,cAAS,GAAG,CAAC,SAAiB,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACpF,CAAC,eAAe,EAAE,gBAAgB,CAAC,EACnC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC9B,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,aAAa,SAAS,iBAAiB,CAAC,CAAC;QAC3E,CAAC,EACD,cAAc,CACd,CAAC;QAEK,iBAAY,GAAG,CAAC,GAAG,OAAqB,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAC9F,CAAC,cAAc,EAAE,cAAc,CAAC,EAChC,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAEpE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;gBACnG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC;YACjD,CAAC;QACF,CAAC,EACD,cAAc,CACd,CAAC;QAEK,gCAA2B,GAAG,CAAC,GAAG,OAAqB,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAC7G,CAAC,cAAc,EAAE,cAAc,CAAC,EAChC,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACjD,CAAC,EACD,wBAAwB,CACxB,CAAC;QAEK,sBAAiB,GAAG,CAAC,GAAG,YAA+B,EAAiB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAC7G,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,EAC/C,KAAK,IAAI,EAAE;YACV,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAEnE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;gBACzG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,iBAAiB,EAAE,CAAC;YACvD,CAAC;QACF,CAAC,EACD,mBAAmB,CACnB,CAAC;QAEK,aAAQ,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAClE,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,EAC/C,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,EACD,gBAAgB,CAChB,CAAC;QAEK,cAAS,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACnE,CAAC,eAAe,EAAE,gBAAgB,CAAC,EACnC,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,EACD,iBAAiB,CACjB,CAAC;QAEK,YAAO,GAAG,GAAkB,EAAE,CAAC,IAAI,CAAC,uBAAuB,CACjE,CAAC,iBAAiB,CAAC,EACnB,KAAK,IAAI,EAAE;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,EACD,eAAe,CACf,CAAC;QA1HD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG;YACpB,MAAM,EAAE,EAAE;SACV,CAAC;IACH,CAAC;IAuHM,KAAK,CAAC,KAAK;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACD;AA7ID,4CA6IC","sourcesContent":["import { WritableStreamDefaultWriter } from \"stream/web\";\nimport { SatisfactorySaveHeader } from '../../satisfactory/save/satisfactory-save-header';\nimport { ChunkCompressionInfo } from \"../../satisfactory/save/save-body-chunks\";\nimport { SaveObject } from \"../../satisfactory/types/objects/SaveObject\";\nimport { ObjectReference } from '../../satisfactory/types/structs/ObjectReference';\nimport { Grids, SaveBodyValidation } from \"../../satisfactory/types/structs/SaveBodyValidation\";\n\ntype Mode = 'BEFORE_START' | 'OPENED_SAVE' | 'FINISHED_HEADER' | 'OPENED_LEVELS' | 'FINISHED_LEVELS' | 'OPENED_LEVEL' | 'FINISHED_LEVEL' | 'FINISHED_SAVE'\n\t| 'WROTE_COMPRESSION_INFO' | 'WROTE_OBJECT' | 'SWITCH_TO_COLLECTABLES' | 'WROTE_COLLECTABLE' | 'WROTE_SAVE_BODY_VALIDATION';\n\nclass ModeStateTracker {\n\tconstructor(public mode: Mode) {\n\n\t}\n\n\tpublic checkIsComingFrom(...allowedPredecessors: Mode[]) {\n\t\tif (!allowedPredecessors.includes(this.mode)) {\n\t\t\tthrow new Error(`Wrong order of commands. mode is ${this.mode}. but only ${allowedPredecessors.join(', ')} is/are allowed.`);\n\t\t}\n\t}\n\n\tpublic advance(newMode: Mode) {\n\t\tthis.mode = newMode;\n\t}\n}\n\n/**\n * @deprecated use ReadableStreamParser instead.\n */\nexport class SaveStreamWriter {\n\n\tprivate mode: Mode;\n\tprivate tracker: ModeStateTracker;\n\n\t// we need some flat structure to keep track of number of elements.\n\tprivate formatTracker: {\n\t\tlevels: {\n\t\t\tobjectCount: number;\n\t\t\tcollectablesCount: number;\n\t\t}[]\n\t};\n\n\tconstructor(private writer: WritableStreamDefaultWriter<string>) {\n\t\tthis.mode = 'BEFORE_START';\n\t\tthis.tracker = new ModeStateTracker(this.mode);\n\t\tthis.formatTracker = {\n\t\t\tlevels: []\n\t\t};\n\t}\n\n\tprivate createExecutionFunction = async (allowedInputModes: Mode[], fn: () => Promise<void> | void, targetMode: Mode): Promise<void> => {\n\t\tthis.tracker.checkIsComingFrom(...allowedInputModes);\n\t\tawait fn();\n\t\tthis.tracker.advance(targetMode);\n\t}\n\n\tpublic beginSave = (): Promise<void> => this.createExecutionFunction(\n\t\t['BEFORE_START'],\n\t\tasync () => {\n\t\t\tawait this.writer.write('{');\n\t\t},\n\t\t'OPENED_SAVE'\n\t);\n\n\tpublic writeHeader = (header: SatisfactorySaveHeader): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_SAVE'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`\"header\": ${JSON.stringify(header)}`);\n\t\t},\n\t\t'FINISHED_HEADER'\n\t);\n\n\tpublic writeCompressionInfo = (compressionInfo: ChunkCompressionInfo): Promise<void> => this.createExecutionFunction(\n\t\t['FINISHED_HEADER'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"compressionInfo\": ${JSON.stringify(compressionInfo)}`);\n\t\t},\n\t\t'WROTE_COMPRESSION_INFO'\n\t);\n\n\tpublic writeSaveBodyValidation = (saveBodyValidation: SaveBodyValidation): Promise<void> => this.createExecutionFunction(\n\t\t['WROTE_COMPRESSION_INFO'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"saveBodyValidation\": ${JSON.stringify(saveBodyValidation)}`);\n\t\t},\n\t\t'WROTE_SAVE_BODY_VALIDATION'\n\t);\n\n\n\tpublic openLevels = (): Promise<void> => this.createExecutionFunction(\n\t\t['WROTE_SAVE_BODY_VALIDATION'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`, \"levels\": [`);\n\t\t},\n\t\t'OPENED_LEVELS'\n\t);\n\n\tpublic openLevel = (levelName: string): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVELS', 'FINISHED_LEVEL'],\n\t\tasync () => {\n\t\t\tthis.formatTracker.levels.push({\n\t\t\t\tobjectCount: 0, collectablesCount: 0\n\t\t\t});\n\t\t\tconst prefix = this.formatTracker.levels.length > 1 ? ', ' : '';\n\t\t\tawait this.writer.write(`${prefix}{\"name\": \"${levelName}\", \"objects\": [`);\n\t\t},\n\t\t'OPENED_LEVEL'\n\t);\n\n\tpublic writeObjects = (...objects: SaveObject[]): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVEL', 'WROTE_OBJECT'],\n\t\tasync () => {\n\t\t\tconst stringified = objects.map(saveObj => JSON.stringify(saveObj));\n\n\t\t\tfor (const obj of stringified) {\n\t\t\t\tawait this.writer.write(`${this.formatTracker.levels.at(-1)!.objectCount >= 1 ? ', ' : ''}${obj}`);\n\t\t\t\tthis.formatTracker.levels.at(-1)!.objectCount++;\n\t\t\t}\n\t\t},\n\t\t'WROTE_OBJECT'\n\t);\n\n\tpublic switchInLevelToCollectables = (...objects: SaveObject[]): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVEL', 'WROTE_OBJECT'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`], \"collectables\": [`);\n\t\t},\n\t\t'SWITCH_TO_COLLECTABLES'\n\t);\n\n\tpublic writeCollectables = (...collectables: ObjectReference[]): Promise<void> => this.createExecutionFunction(\n\t\t['SWITCH_TO_COLLECTABLES', 'WROTE_COLLECTABLE'],\n\t\tasync () => {\n\t\t\tconst stringified = collectables.map(coll => JSON.stringify(coll));\n\n\t\t\tfor (const obj of stringified) {\n\t\t\t\tawait this.writer.write(`${this.formatTracker.levels.at(-1)!.collectablesCount >= 1 ? ', ' : ''}${obj}`);\n\t\t\t\tthis.formatTracker.levels.at(-1)!.collectablesCount++;\n\t\t\t}\n\t\t},\n\t\t'WROTE_COLLECTABLE'\n\t);\n\n\tpublic endLevel = (): Promise<void> => this.createExecutionFunction(\n\t\t['SWITCH_TO_COLLECTABLES', 'WROTE_COLLECTABLE'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`]}`);\n\t\t},\n\t\t'FINISHED_LEVEL'\n\t);\n\n\tpublic endLevels = (): Promise<void> => this.createExecutionFunction(\n\t\t['OPENED_LEVELS', 'FINISHED_LEVEL'],\n\t\tasync () => {\n\t\t\tawait this.writer.write(`]`);\n\t\t},\n\t\t'FINISHED_LEVELS'\n\t);\n\n\tpublic endSave = (): Promise<void> => this.createExecutionFunction(\n\t\t['FINISHED_LEVELS'],\n\t\tasync () => {\n\t\t\tawait this.writer.write('}');\n\t\t},\n\t\t'FINISHED_SAVE'\n\t);\n\n\tpublic async close(): Promise<void> {\n\t\treturn this.writer.close();\n\t}\n}"]}
|
package/jsr.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etothepii/satisfactory-file-parser",
|
|
3
3
|
"author": "etothepii",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.2.2",
|
|
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",
|