native-file-system-adapter-ts
Version:
Native File System API
61 lines • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileSystemHandleImpl = void 0;
const kAdapter = Symbol('adapter');
class FileSystemHandleImpl {
constructor(adapter) {
this.name = adapter.name;
this[kAdapter] = adapter;
}
async queryPermission({ mode } = { mode: 'read' }) {
const handle = this[kAdapter];
if (handle.queryPermission) {
return handle.queryPermission({ mode });
}
if (mode === 'read') {
return 'granted';
}
else if (mode === 'readwrite') {
return handle.writable ? 'granted' : 'denied';
}
else {
throw new TypeError(`Mode ${mode} must be 'read' or 'readwrite'`);
}
}
async requestPermission({ mode } = { mode: 'read' }) {
const handle = this[kAdapter];
if (handle.requestPermission) {
return handle.requestPermission({ mode });
}
if (mode === 'read') {
return 'granted';
}
else if (mode === 'readwrite') {
return handle.writable ? 'granted' : 'denied';
}
else {
throw new TypeError(`Mode ${mode} must be 'read' or 'readwrite'`);
}
}
async remove(options = { recursive: false }) {
await this[kAdapter].remove(options);
}
async isSameEntry(other) {
if (this === other)
return true;
if (!(other instanceof FileSystemHandleImpl)) {
return false;
}
if (this.kind !== other.kind || !other[kAdapter])
return false;
return this[kAdapter].isSameEntry(other[kAdapter]);
}
}
exports.FileSystemHandleImpl = FileSystemHandleImpl;
Object.defineProperty(FileSystemHandleImpl.prototype, Symbol.toStringTag, {
value: 'FileSystemHandle',
writable: false,
enumerable: false,
configurable: true,
});
//# sourceMappingURL=file-system-handle.js.map