1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.NodeFileSystemFileHandle = void 0;
- const NodeFileSystemHandle_1 = require("./NodeFileSystemHandle");
- const NodeFileSystemSyncAccessHandle_1 = require("./NodeFileSystemSyncAccessHandle");
- const util_1 = require("./util");
- const NodeFileSystemWritableFileStream_1 = require("./NodeFileSystemWritableFileStream");
- class NodeFileSystemFileHandle extends NodeFileSystemHandle_1.NodeFileSystemHandle {
- constructor(fs, __path, ctx = {}) {
- ctx = (0, util_1.ctx)(ctx);
- super('file', (0, util_1.basename)(__path, ctx.separator));
- this.fs = fs;
- this.__path = __path;
- this.ctx = ctx;
- }
- /**
- * Returns a {@link Promise} which resolves to a {@link File} object
- * representing the state on disk of the entry represented by the handle.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle/getFile
- */
- async getFile() {
- try {
- const path = this.__path;
- const promises = this.fs.promises;
- const stats = await promises.stat(path);
- // TODO: Once implemented, use promises.readAsBlob() instead of promises.readFile().
- const data = await promises.readFile(path);
- const file = new File([data], this.name, { lastModified: stats.mtime.getTime() });
- return file;
- }
- catch (error) {
- if (error instanceof DOMException)
- throw error;
- if (error && typeof error === 'object') {
- switch (error.code) {
- case 'EPERM':
- case 'EACCES':
- throw (0, util_1.newNotAllowedError)();
- }
- }
- throw error;
- }
- }
- /**
- * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle/createSyncAccessHandle
- */
- get createSyncAccessHandle() {
- if (!this.ctx.syncHandleAllowed)
- return undefined;
- return async () => new NodeFileSystemSyncAccessHandle_1.NodeFileSystemSyncAccessHandle(this.fs, this.__path, this.ctx);
- }
- /**
- * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle/createWritable
- */
- async createWritable({ keepExistingData = false } = { keepExistingData: false }) {
- (0, util_1.assertCanWrite)(this.ctx.mode);
- return new NodeFileSystemWritableFileStream_1.NodeFileSystemWritableFileStream(this.fs, this.__path, keepExistingData);
- }
- }
- exports.NodeFileSystemFileHandle = NodeFileSystemFileHandle;
- //# sourceMappingURL=NodeFileSystemFileHandle.js.map
|