file-system-access
Version:
File System Access API implementation (ponyfill) with pluggable storage adapters via IndexedDB, Cache API, in-memory etc.
41 lines (32 loc) • 1.19 kB
text/typescript
import { FileSystemHandle } from './FileSystemHandle.js'
import { FileSystemFileHandleAdapter } from './interfaces.js'
const kAdapter = Symbol('adapter')
export class FileSystemFileHandle extends FileSystemHandle implements globalThis.FileSystemFileHandle {
/** @internal */
[kAdapter]: FileSystemFileHandleAdapter
override readonly kind = 'file'
constructor (adapter: FileSystemFileHandleAdapter) {
super(adapter)
this[kAdapter] = adapter
}
async createWritable (options: FileSystemCreateWritableOptions = {}) {
const { FileSystemWritableFileStream } = await import('./FileSystemWritableFileStream.js')
return new FileSystemWritableFileStream(
await this[kAdapter].createWritable(options)
)
}
async getFile () {
return this[kAdapter].getFile()
}
}
Object.defineProperty(FileSystemFileHandle.prototype, Symbol.toStringTag, {
value: 'FileSystemFileHandle',
writable: false,
enumerable: false,
configurable: true
})
Object.defineProperties(FileSystemFileHandle.prototype, {
createWritable: { enumerable: true },
getFile: { enumerable: true }
})
export default FileSystemFileHandle