UNPKG

xo-vmdk-to-vhd

Version:
53 lines (52 loc) 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseVhdToBlocks = parseVhdToBlocks; var _assert = _interopRequireDefault(require("assert")); var _parseVhdStream = require("vhd-lib/parseVhdStream.js"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } async function next(iterator, type, skipableType) { let item; do { const cursor = await iterator.next(); _assert.default.strictEqual(cursor.done, false, 'iterator is done'); item = cursor.value; } while (item.type === skipableType); _assert.default.strictEqual(item.type, type); return item; } async function* onlyBlocks(iterable, blockSize) { for await (const item of iterable) { if (item.type === 'block') { const { id, data } = item; yield { lba: id * blockSize, block: data }; } } } async function parseVhdToBlocks(vhdStream) { const iterator = (0, _parseVhdStream.parseVhdStream)(vhdStream); const { footer } = await next(iterator, 'footer'); const { header } = await next(iterator, 'header'); const { blockCount } = await next(iterator, 'bat', 'parentLocator'); return { blockSize: header.blockSize, blockCount, diskSize: footer.currentSize, geometry: footer.diskGeometry, blocks: onlyBlocks(iterator, header.blockSize) }; } //# sourceMappingURL=parseVhdToBlocks.js.map