Some checks failed
Main Confidence / confidence (push) Failing after 45s
## Summary - introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries - apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces - expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions) - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions) Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #253
59 lines
1.4 KiB
Plaintext
59 lines
1.4 KiB
Plaintext
export class BufferReader {
|
|
private buffer: Buffer = Buffer.allocUnsafe(0)
|
|
|
|
// TODO(bmc): support non-utf8 encoding?
|
|
private encoding: string = 'utf-8'
|
|
|
|
constructor(private offset: number = 0) {}
|
|
|
|
public setBuffer(offset: number, buffer: Buffer): void {
|
|
this.offset = offset
|
|
this.buffer = buffer
|
|
}
|
|
|
|
public int16(): number {
|
|
const result = this.buffer.readInt16BE(this.offset)
|
|
this.offset += 2
|
|
return result
|
|
}
|
|
|
|
public byte(): number {
|
|
const result = this.buffer[this.offset]
|
|
this.offset++
|
|
return result
|
|
}
|
|
|
|
public int32(): number {
|
|
const result = this.buffer.readInt32BE(this.offset)
|
|
this.offset += 4
|
|
return result
|
|
}
|
|
|
|
public uint32(): number {
|
|
const result = this.buffer.readUInt32BE(this.offset)
|
|
this.offset += 4
|
|
return result
|
|
}
|
|
|
|
public string(length: number): string {
|
|
const result = this.buffer.toString(this.encoding, this.offset, this.offset + length)
|
|
this.offset += length
|
|
return result
|
|
}
|
|
|
|
public cstring(): string {
|
|
const start = this.offset
|
|
let end = start
|
|
// eslint-disable-next-line no-empty
|
|
while (this.buffer[end++] !== 0) {}
|
|
this.offset = end
|
|
return this.buffer.toString(this.encoding, start, end - 1)
|
|
}
|
|
|
|
public bytes(length: number): Buffer {
|
|
const result = this.buffer.slice(this.offset, this.offset + length)
|
|
this.offset += length
|
|
return result
|
|
}
|
|
}
|