12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.CoreFileSystemFileHandle = void 0;
- const CoreFileSystemHandle_1 = require("./CoreFileSystemHandle");
- const CoreFileSystemSyncAccessHandle_1 = require("./CoreFileSystemSyncAccessHandle");
- const util_1 = require("./util");
- const CoreFileSystemWritableFileStream_1 = require("./CoreFileSystemWritableFileStream");
- class CoreFileSystemFileHandle extends CoreFileSystemHandle_1.CoreFileSystemHandle {
- constructor(_core, __path, ctx = {}) {
- const fullCtx = (0, util_1.ctx)(ctx);
- super('file', (0, util_1.basename)(__path, fullCtx.separator), fullCtx);
- this._core = _core;
- this.__path = __path;
- this.ctx = fullCtx;
- }
- /**
- * 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 link = this._core.getResolvedLinkOrThrow(path);
- const node = link.getNode();
- if (!node.isFile()) {
- throw new Error('Not a file');
- }
- // Get file stats for lastModified
- const lastModified = node.mtime ? node.mtime.getTime() : Date.now();
- // Read file content
- const buffer = node.getBuffer();
- const data = new Uint8Array(buffer);
- const file = new File([data], this.name, { lastModified });
- return file;
- }
- catch (error) {
- if (error instanceof DOMException)
- throw error;
- if (error && typeof error === 'object') {
- switch (error.code) {
- case "EACCES" /* ERROR_CODE.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 CoreFileSystemSyncAccessHandle_1.CoreFileSystemSyncAccessHandle(this._core, 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 CoreFileSystemWritableFileStream_1.CoreFileSystemWritableFileStream(this._core, this.__path, keepExistingData);
- }
- }
- exports.CoreFileSystemFileHandle = CoreFileSystemFileHandle;
- //# sourceMappingURL=CoreFileSystemFileHandle.js.map
|