@@ -22,7 +22,7 @@ export class File<T = unknown> extends DataBuddyUtils implements FileInterface<T
2222 const workingPath = this . workingPath ( path )
2323 const data = await fs . readFile ( `${ workingPath } /${ filename } .json` , 'utf-8' )
2424 return JSON . parse ( data )
25- } catch ( error ) {
25+ } catch ( error : any ) {
2626 if ( error . code === 'ENOENT' ) {
2727 return null
2828 } else {
@@ -31,7 +31,7 @@ export class File<T = unknown> extends DataBuddyUtils implements FileInterface<T
3131 }
3232 }
3333
34- async create ( { path, filename, data } : UpsertParams < T > ) : Promise < ReturnData < T > > {
34+ async create ( { path, filename, data, format = false } : UpsertParams < T > ) : Promise < ReturnData < T > > {
3535 this . validatePathAndFilename ( path , filename )
3636 const sanitizedData = this . sanitizeData ( data )
3737 const workingPath = this . workingPath ( path )
@@ -40,18 +40,28 @@ export class File<T = unknown> extends DataBuddyUtils implements FileInterface<T
4040 throw new Error ( `File ${ filename } already exists in ${ workingPath } ` )
4141 }
4242 await fs . mkdir ( workingPath , { recursive : true } )
43- await fs . writeFile ( `${ workingPath } /${ filename } .json` , JSON . stringify ( sanitizedData , null , 4 ) )
43+ await fs . writeFile (
44+ `${ workingPath } /${ filename } .json` ,
45+ JSON . stringify ( sanitizedData , null , format ? 4 : 0 )
46+ )
4447 return this . read ( { path, filename } )
4548 }
4649
47- async update ( params : BaseParams & { data : T ; mode ?: 'replace' } ) : Promise < ReturnData < T > >
48- async update ( params : BaseParams & { data : Partial < T > ; mode : 'merge' } ) : Promise < ReturnData < T > >
50+ async update (
51+ params : BaseParams & { data : T ; mode ?: 'replace' ; format ?: boolean }
52+ ) : Promise < ReturnData < T > >
53+ async update (
54+ params : BaseParams & { data : Partial < T > ; mode : 'merge' ; format ?: boolean }
55+ ) : Promise < ReturnData < T > >
4956 async update ( {
5057 path,
5158 filename,
5259 data,
5360 mode = 'replace' ,
54- } : BaseParams & { data : T | Partial < T > ; mode ?: 'replace' | 'merge' } ) : Promise < ReturnData < T > > {
61+ format = false ,
62+ } : BaseParams & { data : T | Partial < T > ; mode ?: 'replace' | 'merge' ; format ?: boolean } ) : Promise <
63+ ReturnData < T >
64+ > {
5565 this . validatePathAndFilename ( path , filename )
5666 const workingPath = this . workingPath ( path )
5767
@@ -62,15 +72,16 @@ export class File<T = unknown> extends DataBuddyUtils implements FileInterface<T
6272 let updatedData : T
6373 if ( mode === 'merge' ) {
6474 const currentData = await this . read ( { path, filename } )
65- if ( ! currentData ) {
66- throw new Error ( `File ${ filename } does not exist in ${ workingPath } ` )
67- }
68- updatedData = { ...currentData , ...data }
75+ updatedData = { ...currentData , ...data } as T
6976 } else {
7077 updatedData = data as T
7178 }
7279
73- await fs . writeFile ( `${ workingPath } /${ filename } .json` , JSON . stringify ( updatedData , null , 4 ) )
80+ await fs . mkdir ( workingPath , { recursive : true } )
81+ await fs . writeFile (
82+ `${ workingPath } /${ filename } .json` ,
83+ JSON . stringify ( updatedData , null , format ? 4 : 0 )
84+ )
7485 return this . read ( { path, filename } )
7586 }
7687
@@ -81,7 +92,7 @@ export class File<T = unknown> extends DataBuddyUtils implements FileInterface<T
8192 try {
8293 await fs . unlink ( `${ workingPath } /${ filename } .json` )
8394 return true
84- } catch ( error ) {
95+ } catch ( error : any ) {
8596 if ( error . code === 'ENOENT' ) {
8697 return false
8798 } else {
0 commit comments