@remotion/media-parser 4.0.319 → 4.0.320
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/containers/iso-base-media/mvhd.d.ts +30 -0
- package/dist/containers/iso-base-media/mvhd.js +65 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/server-worker.mjs +24 -3
- package/dist/esm/worker-server-entry.mjs +26 -2
- package/dist/esm/worker-web-entry.mjs +26 -2
- package/dist/esm/worker.mjs +24 -3
- package/dist/parse-media-on-worker-entry.js +24 -3
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/worker-types.d.ts +6 -0
- package/dist/worker-server.js +26 -2
- package/package.json +3 -3
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { BufferIterator } from '../../iterator/buffer-iterator';
|
|
2
|
+
import type { BaseBox } from './base-type';
|
|
3
|
+
export type ThreeDMatrix = [
|
|
4
|
+
number,
|
|
5
|
+
number,
|
|
6
|
+
number,
|
|
7
|
+
number,
|
|
8
|
+
number,
|
|
9
|
+
number,
|
|
10
|
+
number,
|
|
11
|
+
number,
|
|
12
|
+
number
|
|
13
|
+
];
|
|
14
|
+
export interface MvhdBox extends BaseBox {
|
|
15
|
+
durationInUnits: number;
|
|
16
|
+
durationInSeconds: number;
|
|
17
|
+
creationTime: number | null;
|
|
18
|
+
modificationTime: number | null;
|
|
19
|
+
timeScale: number;
|
|
20
|
+
rate: number;
|
|
21
|
+
volume: number;
|
|
22
|
+
matrix: ThreeDMatrix;
|
|
23
|
+
nextTrackId: number;
|
|
24
|
+
type: 'mvhd-box';
|
|
25
|
+
}
|
|
26
|
+
export declare const parseMvhd: ({ iterator, offset, size, }: {
|
|
27
|
+
iterator: BufferIterator;
|
|
28
|
+
offset: number;
|
|
29
|
+
size: number;
|
|
30
|
+
}) => MvhdBox;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseMvhd = void 0;
|
|
4
|
+
const buffer_iterator_1 = require("../../iterator/buffer-iterator");
|
|
5
|
+
const to_date_1 = require("./to-date");
|
|
6
|
+
const parseMvhd = ({ iterator, offset, size, }) => {
|
|
7
|
+
const version = iterator.getUint8();
|
|
8
|
+
// Flags, we discard them
|
|
9
|
+
iterator.discard(3);
|
|
10
|
+
const creationTime = version === 1 ? iterator.getUint64() : iterator.getUint32();
|
|
11
|
+
const modificationTime = version === 1 ? iterator.getUint64() : iterator.getUint32();
|
|
12
|
+
const timeScale = iterator.getUint32();
|
|
13
|
+
const durationInUnits = version === 1 ? iterator.getUint64() : iterator.getUint32();
|
|
14
|
+
const durationInSeconds = Number(durationInUnits) / timeScale;
|
|
15
|
+
const rateArray = iterator.getSlice(4);
|
|
16
|
+
const rateView = (0, buffer_iterator_1.getArrayBufferIterator)(rateArray, rateArray.length);
|
|
17
|
+
const rate = rateView.getInt8() * 10 +
|
|
18
|
+
rateView.getInt8() +
|
|
19
|
+
rateView.getInt8() * 0.1 +
|
|
20
|
+
rateView.getInt8() * 0.01;
|
|
21
|
+
const volumeArray = iterator.getSlice(2);
|
|
22
|
+
const volumeView = (0, buffer_iterator_1.getArrayBufferIterator)(volumeArray, volumeArray.length);
|
|
23
|
+
const volume = volumeView.getInt8() + volumeView.getInt8() * 0.1;
|
|
24
|
+
// reserved 16bit
|
|
25
|
+
iterator.discard(2);
|
|
26
|
+
// reserved 32bit x2
|
|
27
|
+
iterator.discard(4);
|
|
28
|
+
iterator.discard(4);
|
|
29
|
+
// matrix
|
|
30
|
+
const matrix = [
|
|
31
|
+
iterator.getFixedPointSigned1616Number(),
|
|
32
|
+
iterator.getFixedPointSigned1616Number(),
|
|
33
|
+
iterator.getFixedPointSigned230Number(),
|
|
34
|
+
iterator.getFixedPointSigned1616Number(),
|
|
35
|
+
iterator.getFixedPointSigned1616Number(),
|
|
36
|
+
iterator.getFixedPointSigned230Number(),
|
|
37
|
+
iterator.getFixedPointSigned1616Number(),
|
|
38
|
+
iterator.getFixedPointSigned1616Number(),
|
|
39
|
+
iterator.getFixedPointSigned230Number(),
|
|
40
|
+
];
|
|
41
|
+
// pre-defined
|
|
42
|
+
iterator.discard(4 * 6);
|
|
43
|
+
// next track id
|
|
44
|
+
const nextTrackId = iterator.getUint32();
|
|
45
|
+
volumeView.destroy();
|
|
46
|
+
const bytesRemaining = size - (iterator.counter.getOffset() - offset);
|
|
47
|
+
if (bytesRemaining !== 0) {
|
|
48
|
+
throw new Error('expected 0 bytes ' + bytesRemaining);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
creationTime: (0, to_date_1.toUnixTimestamp)(Number(creationTime)),
|
|
52
|
+
modificationTime: (0, to_date_1.toUnixTimestamp)(Number(modificationTime)),
|
|
53
|
+
timeScale,
|
|
54
|
+
durationInUnits: Number(durationInUnits),
|
|
55
|
+
durationInSeconds,
|
|
56
|
+
rate,
|
|
57
|
+
volume,
|
|
58
|
+
matrix: matrix,
|
|
59
|
+
nextTrackId,
|
|
60
|
+
type: 'mvhd-box',
|
|
61
|
+
boxSize: size,
|
|
62
|
+
offset,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
exports.parseMvhd = parseMvhd;
|
package/dist/esm/index.mjs
CHANGED
|
@@ -18105,7 +18105,7 @@ var downloadAndParseMedia = async (options) => {
|
|
|
18105
18105
|
return returnValue;
|
|
18106
18106
|
};
|
|
18107
18107
|
// src/version.ts
|
|
18108
|
-
var VERSION = "4.0.
|
|
18108
|
+
var VERSION = "4.0.320";
|
|
18109
18109
|
|
|
18110
18110
|
// src/index.ts
|
|
18111
18111
|
var MediaParserInternals = {
|
|
@@ -252,6 +252,7 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
252
252
|
return prom.promise;
|
|
253
253
|
});
|
|
254
254
|
const callbacks = {};
|
|
255
|
+
const trackDoneCallbacks = {};
|
|
255
256
|
function onMessage(message) {
|
|
256
257
|
const data = message.data;
|
|
257
258
|
if (data.type === "response-done") {
|
|
@@ -435,15 +436,35 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
435
436
|
if (!callback) {
|
|
436
437
|
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
437
438
|
}
|
|
438
|
-
await callback(data.payload.value);
|
|
439
|
-
|
|
439
|
+
const trackDoneCallback = await callback(data.payload.value);
|
|
440
|
+
if (trackDoneCallback) {
|
|
441
|
+
trackDoneCallbacks[data.payload.trackId] = trackDoneCallback;
|
|
442
|
+
}
|
|
443
|
+
return {
|
|
444
|
+
payloadType: "on-sample-response",
|
|
445
|
+
registeredTrackDoneCallback: Boolean(trackDoneCallback)
|
|
446
|
+
};
|
|
440
447
|
}
|
|
441
448
|
if (data.payload.callbackType === "on-video-sample") {
|
|
442
449
|
const callback = callbacks[data.payload.trackId];
|
|
443
450
|
if (!callback) {
|
|
444
451
|
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
445
452
|
}
|
|
446
|
-
await callback(data.payload.value);
|
|
453
|
+
const trackDoneCallback = await callback(data.payload.value);
|
|
454
|
+
if (trackDoneCallback) {
|
|
455
|
+
trackDoneCallbacks[data.payload.trackId] = trackDoneCallback;
|
|
456
|
+
}
|
|
457
|
+
return {
|
|
458
|
+
payloadType: "on-sample-response",
|
|
459
|
+
registeredTrackDoneCallback: Boolean(trackDoneCallback)
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
if (data.payload.callbackType === "track-done") {
|
|
463
|
+
const trackDoneCallback = trackDoneCallbacks[data.payload.trackId];
|
|
464
|
+
if (!trackDoneCallback) {
|
|
465
|
+
throw new Error(`No track done callback registered for track ${data.payload.trackId}`);
|
|
466
|
+
}
|
|
467
|
+
trackDoneCallback();
|
|
447
468
|
return { payloadType: "void" };
|
|
448
469
|
}
|
|
449
470
|
throw new Error(`Unknown callback type: ${data.payload}`);
|
|
@@ -18585,11 +18585,23 @@ var startParsing = async (message, reader) => {
|
|
|
18585
18585
|
return null;
|
|
18586
18586
|
}
|
|
18587
18587
|
return async (sample) => {
|
|
18588
|
-
await executeCallback({
|
|
18588
|
+
const audioSampleRes = await executeCallback({
|
|
18589
18589
|
callbackType: "on-audio-sample",
|
|
18590
18590
|
value: sample,
|
|
18591
18591
|
trackId: params.track.trackId
|
|
18592
18592
|
});
|
|
18593
|
+
if (audioSampleRes.payloadType !== "on-sample-response") {
|
|
18594
|
+
throw new Error("Invalid response from callback");
|
|
18595
|
+
}
|
|
18596
|
+
if (!audioSampleRes.registeredTrackDoneCallback) {
|
|
18597
|
+
return;
|
|
18598
|
+
}
|
|
18599
|
+
return async () => {
|
|
18600
|
+
await executeCallback({
|
|
18601
|
+
callbackType: "track-done",
|
|
18602
|
+
trackId: params.track.trackId
|
|
18603
|
+
});
|
|
18604
|
+
};
|
|
18593
18605
|
};
|
|
18594
18606
|
} : null,
|
|
18595
18607
|
onVideoTrack: postOnVideoTrack ? async (params) => {
|
|
@@ -18604,11 +18616,23 @@ var startParsing = async (message, reader) => {
|
|
|
18604
18616
|
return null;
|
|
18605
18617
|
}
|
|
18606
18618
|
return async (sample) => {
|
|
18607
|
-
await executeCallback({
|
|
18619
|
+
const videoSampleRes = await executeCallback({
|
|
18608
18620
|
callbackType: "on-video-sample",
|
|
18609
18621
|
value: sample,
|
|
18610
18622
|
trackId: params.track.trackId
|
|
18611
18623
|
});
|
|
18624
|
+
if (videoSampleRes.payloadType !== "on-sample-response") {
|
|
18625
|
+
throw new Error("Invalid response from callback");
|
|
18626
|
+
}
|
|
18627
|
+
if (!videoSampleRes.registeredTrackDoneCallback) {
|
|
18628
|
+
return;
|
|
18629
|
+
}
|
|
18630
|
+
return async () => {
|
|
18631
|
+
await executeCallback({
|
|
18632
|
+
callbackType: "track-done",
|
|
18633
|
+
trackId: params.track.trackId
|
|
18634
|
+
});
|
|
18635
|
+
};
|
|
18612
18636
|
};
|
|
18613
18637
|
} : null,
|
|
18614
18638
|
onDiscardedData: null,
|
|
@@ -18454,11 +18454,23 @@ var startParsing = async (message, reader) => {
|
|
|
18454
18454
|
return null;
|
|
18455
18455
|
}
|
|
18456
18456
|
return async (sample) => {
|
|
18457
|
-
await executeCallback({
|
|
18457
|
+
const audioSampleRes = await executeCallback({
|
|
18458
18458
|
callbackType: "on-audio-sample",
|
|
18459
18459
|
value: sample,
|
|
18460
18460
|
trackId: params.track.trackId
|
|
18461
18461
|
});
|
|
18462
|
+
if (audioSampleRes.payloadType !== "on-sample-response") {
|
|
18463
|
+
throw new Error("Invalid response from callback");
|
|
18464
|
+
}
|
|
18465
|
+
if (!audioSampleRes.registeredTrackDoneCallback) {
|
|
18466
|
+
return;
|
|
18467
|
+
}
|
|
18468
|
+
return async () => {
|
|
18469
|
+
await executeCallback({
|
|
18470
|
+
callbackType: "track-done",
|
|
18471
|
+
trackId: params.track.trackId
|
|
18472
|
+
});
|
|
18473
|
+
};
|
|
18462
18474
|
};
|
|
18463
18475
|
} : null,
|
|
18464
18476
|
onVideoTrack: postOnVideoTrack ? async (params) => {
|
|
@@ -18473,11 +18485,23 @@ var startParsing = async (message, reader) => {
|
|
|
18473
18485
|
return null;
|
|
18474
18486
|
}
|
|
18475
18487
|
return async (sample) => {
|
|
18476
|
-
await executeCallback({
|
|
18488
|
+
const videoSampleRes = await executeCallback({
|
|
18477
18489
|
callbackType: "on-video-sample",
|
|
18478
18490
|
value: sample,
|
|
18479
18491
|
trackId: params.track.trackId
|
|
18480
18492
|
});
|
|
18493
|
+
if (videoSampleRes.payloadType !== "on-sample-response") {
|
|
18494
|
+
throw new Error("Invalid response from callback");
|
|
18495
|
+
}
|
|
18496
|
+
if (!videoSampleRes.registeredTrackDoneCallback) {
|
|
18497
|
+
return;
|
|
18498
|
+
}
|
|
18499
|
+
return async () => {
|
|
18500
|
+
await executeCallback({
|
|
18501
|
+
callbackType: "track-done",
|
|
18502
|
+
trackId: params.track.trackId
|
|
18503
|
+
});
|
|
18504
|
+
};
|
|
18481
18505
|
};
|
|
18482
18506
|
} : null,
|
|
18483
18507
|
onDiscardedData: null,
|
package/dist/esm/worker.mjs
CHANGED
|
@@ -252,6 +252,7 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
252
252
|
return prom.promise;
|
|
253
253
|
});
|
|
254
254
|
const callbacks = {};
|
|
255
|
+
const trackDoneCallbacks = {};
|
|
255
256
|
function onMessage(message) {
|
|
256
257
|
const data = message.data;
|
|
257
258
|
if (data.type === "response-done") {
|
|
@@ -435,15 +436,35 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
|
|
|
435
436
|
if (!callback) {
|
|
436
437
|
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
437
438
|
}
|
|
438
|
-
await callback(data.payload.value);
|
|
439
|
-
|
|
439
|
+
const trackDoneCallback = await callback(data.payload.value);
|
|
440
|
+
if (trackDoneCallback) {
|
|
441
|
+
trackDoneCallbacks[data.payload.trackId] = trackDoneCallback;
|
|
442
|
+
}
|
|
443
|
+
return {
|
|
444
|
+
payloadType: "on-sample-response",
|
|
445
|
+
registeredTrackDoneCallback: Boolean(trackDoneCallback)
|
|
446
|
+
};
|
|
440
447
|
}
|
|
441
448
|
if (data.payload.callbackType === "on-video-sample") {
|
|
442
449
|
const callback = callbacks[data.payload.trackId];
|
|
443
450
|
if (!callback) {
|
|
444
451
|
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
445
452
|
}
|
|
446
|
-
await callback(data.payload.value);
|
|
453
|
+
const trackDoneCallback = await callback(data.payload.value);
|
|
454
|
+
if (trackDoneCallback) {
|
|
455
|
+
trackDoneCallbacks[data.payload.trackId] = trackDoneCallback;
|
|
456
|
+
}
|
|
457
|
+
return {
|
|
458
|
+
payloadType: "on-sample-response",
|
|
459
|
+
registeredTrackDoneCallback: Boolean(trackDoneCallback)
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
if (data.payload.callbackType === "track-done") {
|
|
463
|
+
const trackDoneCallback = trackDoneCallbacks[data.payload.trackId];
|
|
464
|
+
if (!trackDoneCallback) {
|
|
465
|
+
throw new Error(`No track done callback registered for track ${data.payload.trackId}`);
|
|
466
|
+
}
|
|
467
|
+
trackDoneCallback();
|
|
447
468
|
return { payloadType: "void" };
|
|
448
469
|
}
|
|
449
470
|
throw new Error(`Unknown callback type: ${data.payload}`);
|
|
@@ -93,6 +93,7 @@ const parseMediaOnWorkerImplementation = async ({ controller, reader, ...params
|
|
|
93
93
|
return prom.promise;
|
|
94
94
|
});
|
|
95
95
|
const callbacks = {};
|
|
96
|
+
const trackDoneCallbacks = {};
|
|
96
97
|
function onMessage(message) {
|
|
97
98
|
const data = message.data;
|
|
98
99
|
if (data.type === 'response-done') {
|
|
@@ -284,15 +285,35 @@ const parseMediaOnWorkerImplementation = async ({ controller, reader, ...params
|
|
|
284
285
|
if (!callback) {
|
|
285
286
|
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
286
287
|
}
|
|
287
|
-
await callback(data.payload.value);
|
|
288
|
-
|
|
288
|
+
const trackDoneCallback = await callback(data.payload.value);
|
|
289
|
+
if (trackDoneCallback) {
|
|
290
|
+
trackDoneCallbacks[data.payload.trackId] = trackDoneCallback;
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
payloadType: 'on-sample-response',
|
|
294
|
+
registeredTrackDoneCallback: Boolean(trackDoneCallback),
|
|
295
|
+
};
|
|
289
296
|
}
|
|
290
297
|
if (data.payload.callbackType === 'on-video-sample') {
|
|
291
298
|
const callback = callbacks[data.payload.trackId];
|
|
292
299
|
if (!callback) {
|
|
293
300
|
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
294
301
|
}
|
|
295
|
-
await callback(data.payload.value);
|
|
302
|
+
const trackDoneCallback = await callback(data.payload.value);
|
|
303
|
+
if (trackDoneCallback) {
|
|
304
|
+
trackDoneCallbacks[data.payload.trackId] = trackDoneCallback;
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
payloadType: 'on-sample-response',
|
|
308
|
+
registeredTrackDoneCallback: Boolean(trackDoneCallback),
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
if (data.payload.callbackType === 'track-done') {
|
|
312
|
+
const trackDoneCallback = trackDoneCallbacks[data.payload.trackId];
|
|
313
|
+
if (!trackDoneCallback) {
|
|
314
|
+
throw new Error(`No track done callback registered for track ${data.payload.trackId}`);
|
|
315
|
+
}
|
|
316
|
+
trackDoneCallback();
|
|
296
317
|
return { payloadType: 'void' };
|
|
297
318
|
}
|
|
298
319
|
throw new Error(`Unknown callback type: ${data.payload}`);
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.320";
|
package/dist/version.js
CHANGED
|
@@ -240,6 +240,9 @@ export type ResponseCallbackPayload = {
|
|
|
240
240
|
callbackType: 'on-video-sample';
|
|
241
241
|
value: MediaParserVideoSample;
|
|
242
242
|
trackId: number;
|
|
243
|
+
} | {
|
|
244
|
+
callbackType: 'track-done';
|
|
245
|
+
trackId: number;
|
|
243
246
|
} | {
|
|
244
247
|
callbackType: 'm3u-associated-playlists-selection';
|
|
245
248
|
value: SelectM3uAssociatedPlaylistsFnOptions;
|
|
@@ -263,6 +266,9 @@ export type AcknowledgePayload = {
|
|
|
263
266
|
} | {
|
|
264
267
|
payloadType: 'on-video-track-response';
|
|
265
268
|
registeredCallback: boolean;
|
|
269
|
+
} | {
|
|
270
|
+
payloadType: 'on-sample-response';
|
|
271
|
+
registeredTrackDoneCallback: boolean;
|
|
266
272
|
};
|
|
267
273
|
export type AcknowledgeCallback = {
|
|
268
274
|
type: 'acknowledge-callback';
|
package/dist/worker-server.js
CHANGED
|
@@ -328,11 +328,23 @@ const startParsing = async (message, reader) => {
|
|
|
328
328
|
return null;
|
|
329
329
|
}
|
|
330
330
|
return async (sample) => {
|
|
331
|
-
await executeCallback({
|
|
331
|
+
const audioSampleRes = await executeCallback({
|
|
332
332
|
callbackType: 'on-audio-sample',
|
|
333
333
|
value: sample,
|
|
334
334
|
trackId: params.track.trackId,
|
|
335
335
|
});
|
|
336
|
+
if (audioSampleRes.payloadType !== 'on-sample-response') {
|
|
337
|
+
throw new Error('Invalid response from callback');
|
|
338
|
+
}
|
|
339
|
+
if (!audioSampleRes.registeredTrackDoneCallback) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
return async () => {
|
|
343
|
+
await executeCallback({
|
|
344
|
+
callbackType: 'track-done',
|
|
345
|
+
trackId: params.track.trackId,
|
|
346
|
+
});
|
|
347
|
+
};
|
|
336
348
|
};
|
|
337
349
|
}
|
|
338
350
|
: null,
|
|
@@ -349,11 +361,23 @@ const startParsing = async (message, reader) => {
|
|
|
349
361
|
return null;
|
|
350
362
|
}
|
|
351
363
|
return async (sample) => {
|
|
352
|
-
await executeCallback({
|
|
364
|
+
const videoSampleRes = await executeCallback({
|
|
353
365
|
callbackType: 'on-video-sample',
|
|
354
366
|
value: sample,
|
|
355
367
|
trackId: params.track.trackId,
|
|
356
368
|
});
|
|
369
|
+
if (videoSampleRes.payloadType !== 'on-sample-response') {
|
|
370
|
+
throw new Error('Invalid response from callback');
|
|
371
|
+
}
|
|
372
|
+
if (!videoSampleRes.registeredTrackDoneCallback) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
return async () => {
|
|
376
|
+
await executeCallback({
|
|
377
|
+
callbackType: 'track-done',
|
|
378
|
+
trackId: params.track.trackId,
|
|
379
|
+
});
|
|
380
|
+
};
|
|
357
381
|
};
|
|
358
382
|
}
|
|
359
383
|
: null,
|
package/package.json
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/media-parser",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.320",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@types/wicg-file-system-access": "2023.10.5",
|
|
11
11
|
"eslint": "9.19.0",
|
|
12
12
|
"@types/bun": "1.2.8",
|
|
13
|
-
"@remotion/example-videos": "4.0.
|
|
14
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
13
|
+
"@remotion/example-videos": "4.0.320",
|
|
14
|
+
"@remotion/eslint-config-internal": "4.0.320"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public"
|