innodb-utils 5.1.0

InnoDB file analysis toolkit
Documentation
# @ringo380/innodb-utils

InnoDB file analysis toolkit compiled to WebAssembly.

## Installation

```bash
npm install @ringo380/innodb-utils
```

## Usage

With a bundler (Webpack 5+, Vite, Rollup with WASM plugin):

```javascript
import { get_tablespace_info, validate_checksums } from '@ringo380/innodb-utils';

const fileBuffer = await fetch('table.ibd').then(r => r.arrayBuffer());
const data = new Uint8Array(fileBuffer);

const info = JSON.parse(get_tablespace_info(data));
console.log(`Page size: ${info.page_size}, Pages: ${info.page_count}`);

const checksums = JSON.parse(validate_checksums(data));
console.log(`Valid: ${checksums.valid_pages}/${checksums.total_pages}`);
```

The WASM module is automatically initialized by the bundler — no `init()` call needed.

## Available Functions

All functions accept a `Uint8Array` of the file contents and return a JSON string.

- `get_tablespace_info(data)` - Basic tablespace metadata
- `parse_tablespace(data)` - Page-by-page header details
- `analyze_pages(data, page_number)` - Detailed page analysis (pass `-1n` for all pages)
- `validate_checksums(data)` - Checksum validation for all pages
- `extract_sdi(data)` - Extract SDI metadata from MySQL 8.0+ tablespaces
- `hex_dump_page(data, page_number, offset, length)` - Hex dump of page bytes
- `assess_recovery(data)` - Recovery assessment
- `diff_tablespaces(data1, data2)` - Compare two tablespace files
- `parse_redo_log(data)` - Parse InnoDB redo log files
- `inspect_index_records(data, page_number)` - Inspect records on INDEX pages
- `decrypt_tablespace(data, keyring)` - Decrypt encrypted tablespace
- `get_encryption_info(data)` - Get encryption metadata

## BigInt Parameters

Some functions accept `i64` or `u64` parameters that map to JavaScript `BigInt` values.
For example, `analyze_pages` expects a `BigInt` page number:

```javascript
// Analyze all pages
const all = JSON.parse(analyze_pages(data, -1n));

// Analyze a specific page
const page3 = JSON.parse(analyze_pages(data, 3n));
```

## License

MIT