@remotion/webcodecs 4.0.245 → 4.0.246
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio-decoder.d.ts +2 -1
- package/dist/audio-encoder.d.ts +2 -1
- package/dist/auto-select-writer.d.ts +1 -1
- package/dist/auto-select-writer.js +4 -4
- package/dist/convert-encoded-chunk.d.ts +0 -1
- package/dist/convert-encoded-chunk.js +1 -21
- package/dist/convert-media.d.ts +2 -1
- package/dist/convert-media.js +4 -2
- package/dist/create/event-emitter.d.ts +31 -0
- package/dist/create/event-emitter.js +25 -0
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +2 -0
- package/dist/create/iso-base-media/codec-specific/avc1.js +48 -0
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +22 -0
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +36 -0
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +2 -0
- package/dist/create/iso-base-media/codec-specific/mp4a.js +74 -0
- package/dist/create/iso-base-media/create-colr.d.ts +6 -0
- package/dist/create/iso-base-media/create-colr.js +26 -0
- package/dist/create/iso-base-media/create-ftyp.d.ts +10 -0
- package/dist/create/iso-base-media/create-ftyp.js +22 -0
- package/dist/create/iso-base-media/create-ilst.d.ts +1 -0
- package/dist/create/iso-base-media/create-ilst.js +14 -0
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +2 -0
- package/dist/create/iso-base-media/create-iso-base-media.js +184 -0
- package/dist/create/iso-base-media/create-mdia.d.ts +5 -0
- package/dist/create/iso-base-media/create-mdia.js +18 -0
- package/dist/create/iso-base-media/create-moov.d.ts +5 -0
- package/dist/create/iso-base-media/create-moov.js +18 -0
- package/dist/create/iso-base-media/create-mvhd.d.ts +10 -0
- package/dist/create/iso-base-media/create-mvhd.js +48 -0
- package/dist/create/iso-base-media/create-trak.d.ts +4 -0
- package/dist/create/iso-base-media/create-trak.js +17 -0
- package/dist/create/iso-base-media/create-udta.d.ts +1 -0
- package/dist/create/iso-base-media/create-udta.js +14 -0
- package/dist/create/iso-base-media/create-url.d.ts +1 -0
- package/dist/create/iso-base-media/create-url.js +16 -0
- package/dist/create/iso-base-media/example-stts.d.ts +3 -0
- package/dist/create/iso-base-media/example-stts.js +2797 -0
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +1 -0
- package/dist/create/iso-base-media/ilst/create-cmt.js +26 -0
- package/dist/create/iso-base-media/ilst/create-too.d.ts +1 -0
- package/dist/create/iso-base-media/ilst/create-too.js +27 -0
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +6 -0
- package/dist/create/iso-base-media/mdia/create-mdhd.js +33 -0
- package/dist/create/iso-base-media/mp4-header.d.ts +6 -0
- package/dist/create/iso-base-media/mp4-header.js +48 -0
- package/dist/create/iso-base-media/primitives.d.ts +26 -0
- package/dist/create/iso-base-media/primitives.js +133 -0
- package/dist/create/iso-base-media/serialize-track.d.ts +9 -0
- package/dist/create/iso-base-media/serialize-track.js +63 -0
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +27 -0
- package/dist/create/iso-base-media/trak/create-tkhd.js +97 -0
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +4 -0
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +19 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +22 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +6 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +41 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +45 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +28 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +56 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +23 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +25 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +51 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +16 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +13 -0
- package/dist/create/iso-base-media/udta/create-meta.d.ts +4 -0
- package/dist/create/iso-base-media/udta/create-meta.js +20 -0
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +1 -0
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +32 -0
- package/dist/create/make-track-info.d.ts +20 -0
- package/dist/create/matroska/cluster-segment.d.ts +10 -0
- package/dist/create/matroska/cluster-segment.js +38 -0
- package/dist/create/matroska/cluster.d.ts +25 -0
- package/dist/create/matroska/cluster.js +76 -0
- package/dist/create/matroska/color.d.ts +2 -0
- package/dist/create/matroska/color.js +85 -0
- package/dist/create/matroska/create-matroska-media.d.ts +2 -0
- package/dist/create/matroska/create-matroska-media.js +189 -0
- package/dist/create/matroska/make-duration-with-padding.d.ts +1 -0
- package/dist/create/matroska/make-duration-with-padding.js +15 -0
- package/dist/create/matroska/matroska-cues.d.ts +6 -0
- package/dist/create/matroska/matroska-cues.js +49 -0
- package/dist/create/matroska/matroska-header.d.ts +1 -0
- package/dist/create/matroska/matroska-header.js +66 -0
- package/dist/create/matroska/matroska-info.d.ts +3 -0
- package/dist/create/matroska/matroska-info.js +33 -0
- package/dist/create/matroska/matroska-seek.d.ts +6 -0
- package/dist/create/matroska/matroska-seek.js +32 -0
- package/dist/create/matroska/matroska-segment.d.ts +3 -0
- package/dist/create/matroska/matroska-segment.js +13 -0
- package/dist/create/matroska/matroska-trackentry.d.ts +10 -0
- package/dist/create/matroska/matroska-trackentry.js +249 -0
- package/dist/create/matroska/matroska-utils.d.ts +30 -0
- package/dist/create/matroska/matroska-utils.js +292 -0
- package/dist/create/media-fn.d.ts +32 -0
- package/dist/create/progress-tracker.d.ts +9 -0
- package/dist/create/progress-tracker.js +67 -0
- package/dist/create/timescale.d.ts +1 -0
- package/dist/create/timescale.js +4 -0
- package/dist/create/wav/create-wav.d.ts +2 -0
- package/dist/create/wav/create-wav.js +110 -0
- package/dist/create/with-resolvers.d.ts +10 -0
- package/dist/create/with-resolvers.js +28 -0
- package/dist/esm/buffer.mjs +74 -0
- package/dist/esm/index.mjs +2518 -40
- package/dist/esm/web-fs.mjs +92 -0
- package/dist/from-unix-timestamp.d.ts +1 -0
- package/dist/from-unix-timestamp.js +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/io-manager/io-synchronizer.d.ts +1 -1
- package/dist/io-manager/io-synchronizer.js +5 -4
- package/dist/io-manager/make-timeout-promise.js +2 -2
- package/dist/on-audio-track.d.ts +3 -1
- package/dist/on-video-track.d.ts +3 -1
- package/dist/select-container-creator.d.ts +1 -1
- package/dist/select-container-creator.js +6 -4
- package/dist/test/avc1.test.d.ts +1 -0
- package/dist/test/avc1.test.js +39 -0
- package/dist/test/avcc.test.d.ts +1 -0
- package/dist/test/avcc.test.js +15 -0
- package/dist/test/cmt.test.d.ts +1 -0
- package/dist/test/cmt.test.js +13 -0
- package/dist/test/colr.test.d.ts +1 -0
- package/dist/test/colr.test.js +16 -0
- package/dist/test/create-ftyp.test.d.ts +1 -0
- package/dist/test/create-ftyp.test.js +47 -0
- package/dist/test/create-matroska.test.d.ts +1 -0
- package/dist/test/create-matroska.test.js +101 -0
- package/dist/test/create-mvhd.test.d.ts +1 -0
- package/dist/test/create-mvhd.test.js +108 -0
- package/dist/test/ctts.test.d.ts +1 -0
- package/dist/test/ctts.test.js +49 -0
- package/dist/test/dinf.test.d.ts +1 -0
- package/dist/test/dinf.test.js +12 -0
- package/dist/test/ilst.test.d.ts +1 -0
- package/dist/test/ilst.test.js +22 -0
- package/dist/test/mdhd.test.d.ts +1 -0
- package/dist/test/mdhd.test.js +17 -0
- package/dist/test/meta.test.d.ts +1 -0
- package/dist/test/meta.test.js +26 -0
- package/dist/test/mp4a.test.d.ts +1 -0
- package/dist/test/mp4a.test.js +24 -0
- package/dist/test/pasp.test.d.ts +1 -0
- package/dist/test/pasp.test.js +12 -0
- package/dist/test/stbl.test.js +166 -0
- package/dist/test/stco.test.d.ts +1 -0
- package/dist/test/stco.test.js +34 -0
- package/dist/test/stsc.test.d.ts +1 -0
- package/dist/test/stsc.test.js +63 -0
- package/dist/test/stsd.test.d.ts +1 -0
- package/dist/test/stsd.test.js +264 -0
- package/dist/test/stss.test.d.ts +1 -0
- package/dist/test/stss.test.js +14 -0
- package/dist/test/stsz.test.d.ts +1 -0
- package/dist/test/stsz.test.js +43 -0
- package/dist/test/stts.test.d.ts +1 -0
- package/dist/test/stts.test.js +12 -0
- package/dist/test/tkhd.test.d.ts +1 -0
- package/dist/test/tkhd.test.js +175 -0
- package/dist/test/too.test.d.ts +1 -0
- package/dist/test/too.test.js +12 -0
- package/dist/test/url.test.d.ts +1 -0
- package/dist/test/url.test.js +11 -0
- package/dist/truthy.d.ts +3 -0
- package/dist/truthy.js +6 -0
- package/dist/video-decoder.d.ts +2 -1
- package/dist/video-encoder.d.ts +2 -1
- package/dist/writers/buffer-implementation/writer.d.ts +2 -0
- package/dist/writers/buffer-implementation/writer.js +54 -0
- package/dist/writers/buffer.d.ts +2 -0
- package/dist/writers/buffer.js +7 -0
- package/dist/writers/web-fs.d.ts +3 -0
- package/dist/writers/web-fs.js +75 -0
- package/dist/writers/writer.d.ts +15 -0
- package/package.json +36 -5
- package/dist/get-operation-id.js +0 -1
- package/dist/resizing/resizing.d.ts +0 -13
- package/dist/resizing.d.ts +0 -13
- package/dist/rotate-video-frame.d.ts +0 -9
- package/dist/rotate-video-frame.js +0 -53
- package/dist/scaling.d.ts +0 -13
- /package/dist/{resizing.js → create/make-track-info.js} +0 -0
- /package/dist/{resizing/resizing.js → create/media-fn.js} +0 -0
- /package/dist/{get-operation-id.d.ts → test/stbl.test.d.ts} +0 -0
- /package/dist/{scaling.js → writers/writer.js} +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createWav = void 0;
|
|
4
|
+
const log_1 = require("../../log");
|
|
5
|
+
const numberTo32BiIntLittleEndian = (num) => {
|
|
6
|
+
return new Uint8Array([
|
|
7
|
+
num & 0xff,
|
|
8
|
+
(num >> 8) & 0xff,
|
|
9
|
+
(num >> 16) & 0xff,
|
|
10
|
+
(num >> 24) & 0xff,
|
|
11
|
+
]);
|
|
12
|
+
};
|
|
13
|
+
const numberTo16BitLittleEndian = (num) => {
|
|
14
|
+
return new Uint8Array([num & 0xff, (num >> 8) & 0xff]);
|
|
15
|
+
};
|
|
16
|
+
const BIT_DEPTH = 16;
|
|
17
|
+
const BYTES_PER_SAMPLE = BIT_DEPTH / 8;
|
|
18
|
+
const createWav = async ({ filename, logLevel, onBytesProgress, onMillisecondsProgress, writer, progressTracker, }) => {
|
|
19
|
+
const w = await writer.createContent({ filename, mimeType: 'audio/wav' });
|
|
20
|
+
await w.write(new Uint8Array([0x52, 0x49, 0x46, 0x46])); // "RIFF"
|
|
21
|
+
const sizePosition = w.getWrittenByteCount();
|
|
22
|
+
await w.write(new Uint8Array([0x00, 0x00, 0x00, 0x00])); // Remaining size
|
|
23
|
+
await w.write(new Uint8Array([0x57, 0x41, 0x56, 0x45])); // "WAVE"
|
|
24
|
+
await w.write(new Uint8Array([0x66, 0x6d, 0x74, 0x20])); // "fmt "
|
|
25
|
+
await w.write(new Uint8Array([0x10, 0x00, 0x00, 0x00])); // fmt chunk size = 16
|
|
26
|
+
await w.write(new Uint8Array([0x01, 0x00])); // Audio format (PCM) = 1, set 3 if float32 would be true
|
|
27
|
+
const channelNumPosition = w.getWrittenByteCount();
|
|
28
|
+
await w.write(new Uint8Array([0x01, 0x00])); // Number of channels = 1
|
|
29
|
+
const sampleRatePosition = w.getWrittenByteCount();
|
|
30
|
+
await w.write(new Uint8Array([0x0, 0x0, 0x00, 0x00])); // Sample rate
|
|
31
|
+
const byteRatePosition = w.getWrittenByteCount();
|
|
32
|
+
await w.write(new Uint8Array([0x0, 0x0, 0x00, 0x00])); // Byte rate
|
|
33
|
+
const blockAlignPosition = w.getWrittenByteCount();
|
|
34
|
+
await w.write(new Uint8Array([0x00, 0x00])); // Block align
|
|
35
|
+
await w.write(numberTo16BitLittleEndian(BIT_DEPTH)); // Bits per sample
|
|
36
|
+
await w.write(new Uint8Array([0x64, 0x61, 0x74, 0x61])); // "data"
|
|
37
|
+
const dataSizePosition = w.getWrittenByteCount();
|
|
38
|
+
await w.write(new Uint8Array([0x00, 0x00, 0x00, 0x00])); // Remaining size
|
|
39
|
+
const operationProm = { current: Promise.resolve() };
|
|
40
|
+
const updateSize = async () => {
|
|
41
|
+
const size = w.getWrittenByteCount() - sizePosition - 4;
|
|
42
|
+
await w.updateDataAt(sizePosition, numberTo32BiIntLittleEndian(size));
|
|
43
|
+
const dataSize = w.getWrittenByteCount() - dataSizePosition - 4;
|
|
44
|
+
await w.updateDataAt(dataSizePosition, numberTo32BiIntLittleEndian(dataSize));
|
|
45
|
+
};
|
|
46
|
+
const updateChannelNum = async (numberOfChannels) => {
|
|
47
|
+
await w.updateDataAt(channelNumPosition, new Uint8Array([numberOfChannels, 0x00]));
|
|
48
|
+
};
|
|
49
|
+
const updateSampleRate = async (sampleRate) => {
|
|
50
|
+
await w.updateDataAt(sampleRatePosition, numberTo32BiIntLittleEndian(sampleRate));
|
|
51
|
+
};
|
|
52
|
+
const updateByteRate = async ({ sampleRate, numberOfChannels, }) => {
|
|
53
|
+
await w.updateDataAt(byteRatePosition, numberTo32BiIntLittleEndian(sampleRate * numberOfChannels + BYTES_PER_SAMPLE));
|
|
54
|
+
};
|
|
55
|
+
const updateBlockAlign = async (numberOfChannels) => {
|
|
56
|
+
await w.updateDataAt(blockAlignPosition, new Uint8Array(numberTo16BitLittleEndian(numberOfChannels * BYTES_PER_SAMPLE)));
|
|
57
|
+
};
|
|
58
|
+
const addSample = async (chunk) => {
|
|
59
|
+
var _a;
|
|
60
|
+
log_1.Log.verbose(logLevel, 'Adding sample', chunk);
|
|
61
|
+
await w.write(chunk.data);
|
|
62
|
+
onMillisecondsProgress((chunk.timestamp + ((_a = chunk.duration) !== null && _a !== void 0 ? _a : 0)) / 1000);
|
|
63
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
64
|
+
};
|
|
65
|
+
const waitForFinishPromises = [];
|
|
66
|
+
return {
|
|
67
|
+
save: () => {
|
|
68
|
+
return w.save();
|
|
69
|
+
},
|
|
70
|
+
remove: () => {
|
|
71
|
+
return w.remove();
|
|
72
|
+
},
|
|
73
|
+
addSample: ({ chunk, trackNumber }) => {
|
|
74
|
+
if (trackNumber !== 1) {
|
|
75
|
+
throw new Error('Only one track supported for WAV');
|
|
76
|
+
}
|
|
77
|
+
operationProm.current = operationProm.current.then(() => addSample(chunk));
|
|
78
|
+
progressTracker.updateTrackProgress(trackNumber, chunk.timestamp);
|
|
79
|
+
return operationProm.current;
|
|
80
|
+
},
|
|
81
|
+
updateTrackSampleRate: () => {
|
|
82
|
+
throw new Error('updateTrackSampleRate() not implemented for WAV encoder');
|
|
83
|
+
},
|
|
84
|
+
addWaitForFinishPromise: (promise) => {
|
|
85
|
+
waitForFinishPromises.push(promise);
|
|
86
|
+
},
|
|
87
|
+
async waitForFinish() {
|
|
88
|
+
log_1.Log.verbose(logLevel, 'All write operations queued. Waiting for finish...');
|
|
89
|
+
await Promise.all(waitForFinishPromises.map((p) => p()));
|
|
90
|
+
await operationProm.current;
|
|
91
|
+
await updateSize();
|
|
92
|
+
await w.waitForFinish();
|
|
93
|
+
},
|
|
94
|
+
addTrack: async (track) => {
|
|
95
|
+
if (track.type !== 'audio') {
|
|
96
|
+
throw new Error('Only audio tracks supported for WAV');
|
|
97
|
+
}
|
|
98
|
+
await updateChannelNum(track.numberOfChannels);
|
|
99
|
+
await updateSampleRate(track.sampleRate);
|
|
100
|
+
await updateByteRate({
|
|
101
|
+
sampleRate: track.sampleRate,
|
|
102
|
+
numberOfChannels: track.numberOfChannels,
|
|
103
|
+
});
|
|
104
|
+
await updateBlockAlign(track.numberOfChannels);
|
|
105
|
+
progressTracker.registerTrack(1);
|
|
106
|
+
return Promise.resolve({ trackNumber: 1 });
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
exports.createWav = createWav;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const withResolvers: <T>() => {
|
|
2
|
+
promise: Promise<T>;
|
|
3
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
4
|
+
reject: (reason?: any) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const withResolversAndWaitForReturn: <T>() => {
|
|
7
|
+
getPromiseToImmediatelyReturn: () => Promise<T>;
|
|
8
|
+
reject: (reason: unknown) => void;
|
|
9
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
10
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withResolversAndWaitForReturn = exports.withResolvers = void 0;
|
|
4
|
+
const withResolvers = function () {
|
|
5
|
+
let resolve;
|
|
6
|
+
let reject;
|
|
7
|
+
const promise = new Promise((res, rej) => {
|
|
8
|
+
resolve = res;
|
|
9
|
+
reject = rej;
|
|
10
|
+
});
|
|
11
|
+
return { promise, resolve: resolve, reject: reject };
|
|
12
|
+
};
|
|
13
|
+
exports.withResolvers = withResolvers;
|
|
14
|
+
const withResolversAndWaitForReturn = () => {
|
|
15
|
+
const { promise, reject, resolve } = (0, exports.withResolvers)();
|
|
16
|
+
const { promise: returnPromise, resolve: resolveReturn } = (0, exports.withResolvers)();
|
|
17
|
+
return {
|
|
18
|
+
getPromiseToImmediatelyReturn: () => {
|
|
19
|
+
resolveReturn(undefined);
|
|
20
|
+
return promise;
|
|
21
|
+
},
|
|
22
|
+
reject: (reason) => {
|
|
23
|
+
returnPromise.then(() => reject(reason));
|
|
24
|
+
},
|
|
25
|
+
resolve,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.withResolversAndWaitForReturn = withResolversAndWaitForReturn;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
7
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
8
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
9
|
+
for (let key of __getOwnPropNames(mod))
|
|
10
|
+
if (!__hasOwnProp.call(to, key))
|
|
11
|
+
__defProp(to, key, {
|
|
12
|
+
get: () => mod[key],
|
|
13
|
+
enumerable: true
|
|
14
|
+
});
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
18
|
+
|
|
19
|
+
// src/writers/buffer-implementation/writer.ts
|
|
20
|
+
var createContent = ({ filename, mimeType }) => {
|
|
21
|
+
const buf = new ArrayBuffer(0, {
|
|
22
|
+
maxByteLength: 2000000000
|
|
23
|
+
});
|
|
24
|
+
if (!buf.resize) {
|
|
25
|
+
throw new Error("Could not create buffer writer");
|
|
26
|
+
}
|
|
27
|
+
const write = (newData) => {
|
|
28
|
+
const oldLength = buf.byteLength;
|
|
29
|
+
const newLength = oldLength + newData.byteLength;
|
|
30
|
+
buf.resize(newLength);
|
|
31
|
+
const newArray = new Uint8Array(buf);
|
|
32
|
+
newArray.set(newData, oldLength);
|
|
33
|
+
};
|
|
34
|
+
const updateDataAt = (position, newData) => {
|
|
35
|
+
const newArray = new Uint8Array(buf);
|
|
36
|
+
newArray.set(newData, position);
|
|
37
|
+
};
|
|
38
|
+
let writPromise = Promise.resolve();
|
|
39
|
+
let removed = false;
|
|
40
|
+
const writer = {
|
|
41
|
+
write: (arr) => {
|
|
42
|
+
writPromise = writPromise.then(() => write(arr));
|
|
43
|
+
return writPromise;
|
|
44
|
+
},
|
|
45
|
+
save: () => {
|
|
46
|
+
if (removed) {
|
|
47
|
+
return Promise.reject(new Error("Already called .remove() on the result"));
|
|
48
|
+
}
|
|
49
|
+
const arr = new Uint8Array(buf);
|
|
50
|
+
return Promise.resolve(new File([arr.slice()], filename, { type: mimeType }));
|
|
51
|
+
},
|
|
52
|
+
remove() {
|
|
53
|
+
removed = true;
|
|
54
|
+
return Promise.resolve();
|
|
55
|
+
},
|
|
56
|
+
getWrittenByteCount: () => buf.byteLength,
|
|
57
|
+
updateDataAt: (position, newData) => {
|
|
58
|
+
writPromise = writPromise.then(() => updateDataAt(position, newData));
|
|
59
|
+
return writPromise;
|
|
60
|
+
},
|
|
61
|
+
waitForFinish: async () => {
|
|
62
|
+
await writPromise;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
return Promise.resolve(writer);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// src/writers/buffer.ts
|
|
69
|
+
var bufferWriter = {
|
|
70
|
+
createContent
|
|
71
|
+
};
|
|
72
|
+
export {
|
|
73
|
+
bufferWriter
|
|
74
|
+
};
|