| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.makeFileSource = void 0;
- const fs_1 = __importDefault(require("fs"));
- const basesource_js_1 = require("./basesource.js");
- function closeAsync(fd) {
- return new Promise((resolve, reject) => {
- fs_1.default.close(fd, (err) => {
- if (err) {
- reject(err);
- }
- else {
- resolve();
- }
- });
- });
- }
- function openAsync(path, flags, mode = undefined) {
- return new Promise((resolve, reject) => {
- fs_1.default.open(path, flags, mode, (err, fd) => {
- if (err) {
- reject(err);
- }
- else {
- resolve(fd);
- }
- });
- });
- }
- function readAsync(...args) {
- return new Promise((resolve, reject) => {
- fs_1.default.read(...args, (err, bytesRead, buffer) => {
- if (err) {
- reject(err);
- }
- else {
- resolve({ bytesRead, buffer });
- }
- });
- });
- }
- class FileSource extends basesource_js_1.BaseSource {
- constructor(path) {
- super();
- this.path = path;
- this.openRequest = openAsync(path, 'r');
- }
- async fetchSlice(slice) {
- // TODO: use `signal`
- const fd = await this.openRequest;
- const { buffer } = await readAsync(fd, Buffer.alloc(slice.length), 0, slice.length, slice.offset);
- return buffer.buffer;
- }
- async close() {
- const fd = await this.openRequest;
- await closeAsync(fd);
- }
- }
- function makeFileSource(path) {
- return new FileSource(path);
- }
- exports.makeFileSource = makeFileSource;
- //# sourceMappingURL=file.js.map
|