UNPKG

855 BJavaScriptView Raw
1import typeson from './typeson.js'
2const { TypesonPromise, toStringTag } = typeson
3
4const file = {
5 file: {
6 test(x) { return toStringTag(x) === 'File'; },
7 replace(f) {
8 return this.replaceAsync(f);
9 },
10 revive({ name, type, buffer, lastModified }) {
11 return new File([buffer], name, { type, lastModified });
12 },
13 replaceAsync(f) {
14 return new TypesonPromise((resolve, reject) => {
15 const reader = new FileReader();
16 reader.addEventListener('load', () => {
17 resolve({
18 type: f.type,
19 buffer: reader.result,
20 name: f.name,
21 lastModified: f.lastModified
22 });
23 });
24 reader.addEventListener('error', () => {
25 reject(reader.error);
26 });
27 reader.readAsArrayBuffer(f);
28 });
29 }
30 }
31};
32
33export default file;