-
Notifications
You must be signed in to change notification settings - Fork 31
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: file support for electron renderer
- Loading branch information
1 parent
fb3180c
commit 6526bf3
Showing
2 changed files
with
70 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
import { Blob } from "./package.js" | ||
|
||
/** | ||
* @implements {globalThis.File} | ||
*/ | ||
export const WebFile = class File extends Blob { | ||
/** | ||
* | ||
* @param {BlobPart[]} init | ||
* @param {string} name - A USVString representing the file name or the path | ||
* to the file. | ||
* @param {FilePropertyBag} [options] | ||
*/ | ||
constructor( | ||
init, | ||
name = panic(new TypeError("File constructor requires name argument")), | ||
options = {} | ||
) { | ||
super(init, options) | ||
// Per File API spec https://w3c.github.io/FileAPI/#file-constructor | ||
// Every "/" character of file name must be replaced with a ":". | ||
/** @private */ | ||
this._name = name | ||
// It appears that browser do not follow the spec here. | ||
// String(name).replace(/\//g, ":") | ||
/** @private */ | ||
this._lastModified = options.lastModified || Date.now() | ||
} | ||
|
||
/** | ||
* The name of the file referenced by the File object. | ||
* @type {string} | ||
*/ | ||
get name() { | ||
return this._name | ||
} | ||
|
||
/** | ||
* The path the URL of the File is relative to. | ||
* @type {string} | ||
*/ | ||
get webkitRelativePath() { | ||
return "" | ||
} | ||
|
||
/** | ||
* Returns the last modified time of the file, in millisecond since the UNIX | ||
* epoch (January 1st, 1970 at Midnight). | ||
* @returns {number} | ||
*/ | ||
get lastModified() { | ||
return this._lastModified | ||
} | ||
|
||
get [Symbol.toStringTag]() { | ||
return "File" | ||
} | ||
} | ||
|
||
/** | ||
* @param {*} error | ||
* @returns {never} | ||
*/ | ||
const panic = error => { | ||
throw error | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters