@@ -159,11 +159,9 @@ export class WriteAheadLogFile<T> {
159159 */
160160 append = ( v : T ) => {
161161 if ( ! this . #fd) {
162- this . open ( ) ;
163- }
164- if ( this . #fd) {
165- fs . writeSync ( this . #fd, `${ this . #encode( v ) } \n` ) ;
162+ throw new Error ( 'WAL not opened' ) ;
166163 }
164+ fs . writeSync ( this . #fd, `${ this . #encode( v ) } \n` ) ;
167165 } ;
168166
169167 /** Close the WAL file */
@@ -202,12 +200,16 @@ export class WriteAheadLogFile<T> {
202200 if ( r . errors . length > 0 ) {
203201 // Log repack failure - could add proper logging here
204202 }
205- const validRecords = filterValidRecords ( r . records ) ;
206- fs . mkdirSync ( path . dirname ( out ) , { recursive : true } ) ;
207- fs . writeFileSync (
208- out ,
209- `${ validRecords . map ( v => this . #encode( v ) ) . join ( '\n' ) } \n` ,
203+
204+ // Check if any records are invalid entries (from tolerant codec)
205+ const hasInvalidEntries = r . records . some (
206+ rec => typeof rec === 'object' && rec !== null && '__invalid' in rec ,
210207 ) ;
208+ const recordsToWrite = hasInvalidEntries
209+ ? r . records
210+ : filterValidRecords ( r . records ) ;
211+ fs . mkdirSync ( path . dirname ( out ) , { recursive : true } ) ;
212+ fs . writeFileSync ( out , `${ recordsToWrite . map ( this . #encode) . join ( '\n' ) } \n` ) ;
211213 }
212214}
213215
@@ -364,16 +366,19 @@ export class ShardedWal<T extends object | string = object> {
364366 } ) ) ,
365367 ) ;
366368
367- if ( errors . length > 0 ) {
368- // Log finalize failure - could add proper logging here
369- }
369+ // Check if any records are invalid entries (from tolerant codec)
370+ const hasInvalidEntries = records . some (
371+ r => typeof r === 'object' && r !== null && '__invalid' in r ,
372+ ) ;
370373
371- const validRecords = filterValidRecords ( records ) ;
374+ const recordsToFinalize = hasInvalidEntries
375+ ? records
376+ : filterValidRecords ( records ) ;
372377 const out = path . join ( this . #dir, this . #format. finalPath ( ) ) ;
373378 fs . mkdirSync ( path . dirname ( out ) , {
374379 recursive : true ,
375380 } ) ;
376- fs . writeFileSync ( out , this . #format. finalizer ( validRecords , opt ) ) ;
381+ fs . writeFileSync ( out , this . #format. finalizer ( recordsToFinalize , opt ) ) ;
377382 }
378383
379384 cleanup ( ) {
0 commit comments