11import JSZip from "jszip" ;
22import type { Datapack } from "./datapack" ;
3+ import type { ExportSettings } from "./types/settings" ;
34
45interface DatapackChange {
56 datapack : Datapack ;
@@ -64,7 +65,7 @@ export class DatapackModifier {
6465 }
6566 }
6667
67- public async applyChanges ( datapacks : ReadonlyArray < Datapack > ) {
68+ public async applyChanges ( datapacks : ReadonlyArray < Datapack > , export_settings : ExportSettings ) {
6869 console . time ( "Applying changes to packs..." ) ;
6970
7071 // Apply changes to files
@@ -80,8 +81,13 @@ export class DatapackModifier {
8081 const pack_id = file_path . split ( ":" ) [ 0 ] ;
8182
8283 if ( ! ( pack_id in packs ) ) {
83- const dpZip = datapacks . find ( ( dp ) => dp . id === pack_id ) ?. zip ;
84- packs [ pack_id ] = dpZip ! ;
84+ if ( export_settings . modifiedOnly ) {
85+ packs [ pack_id ] = new JSZip ( ) ;
86+ }
87+ else {
88+ const dpZip = datapacks . find ( ( dp ) => dp . id === pack_id ) ?. zip ;
89+ packs [ pack_id ] = dpZip ! ;
90+ }
8591 }
8692
8793 packs [ pack_id ] . file ( file_path . split ( ":" ) [ 1 ] , this . changeCache [ file_path ] ) ;
@@ -92,13 +98,19 @@ export class DatapackModifier {
9298 for ( const pack in packs ) {
9399 if ( Object . prototype . hasOwnProperty . call ( packs , pack ) ) {
94100 const zip = packs [ pack ] ;
95- await this . saveFile ( zip ) ;
101+ await this . saveFile ( zip , export_settings ) ;
96102 }
97103 }
98104 }
99105
100- public async saveFile ( zip : JSZip ) {
101- await zip . generateAsync ( { type :"blob" } ) . then ( ( content ) => {
106+ public async saveFile ( zip : JSZip , export_settings : ExportSettings ) {
107+ await zip . generateAsync ( {
108+ type : "blob" ,
109+ compression : export_settings . compressionLevel == 0 ? "STORE" : "DEFLATE" ,
110+ compressionOptions : {
111+ level : export_settings . compressionLevel
112+ }
113+ } ) . then ( ( content ) => {
102114 var link = document . createElement ( "a" ) , url = URL . createObjectURL ( content ) ;
103115 link . href = url ; link . download = `modified datapack test.zip` ;
104116 document . body . appendChild ( link ) ;
0 commit comments