@revideo/vite-plugin 0.4.7-two.1024 → 0.4.7
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/lib/index.js +22 -40
- package/lib/openInExplorer.js +39 -38
- package/lib/partials/assets.d.ts +3 -5
- package/lib/partials/assets.js +46 -49
- package/lib/partials/corsProxy.d.ts +22 -24
- package/lib/partials/corsProxy.js +151 -175
- package/lib/partials/editor.d.ts +5 -8
- package/lib/partials/editor.js +58 -65
- package/lib/partials/imageExporter.d.ts +3 -5
- package/lib/partials/imageExporter.js +42 -54
- package/lib/partials/meta.d.ts +1 -1
- package/lib/partials/meta.js +52 -61
- package/lib/partials/metrics.d.ts +1 -1
- package/lib/partials/metrics.js +10 -10
- package/lib/partials/projects.d.ts +7 -11
- package/lib/partials/projects.js +69 -73
- package/lib/partials/scenes.d.ts +1 -1
- package/lib/partials/scenes.js +23 -25
- package/lib/partials/settings.d.ts +1 -1
- package/lib/partials/settings.js +62 -67
- package/lib/partials/webgl.d.ts +7 -7
- package/lib/partials/webgl.js +79 -87
- package/lib/plugins.d.ts +76 -76
- package/lib/plugins.js +4 -4
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils.d.ts +3 -3
- package/lib/utils.js +40 -47
- package/lib/versions.d.ts +4 -4
- package/lib/versions.js +23 -28
- package/package.json +4 -4
- package/lib/partials/ffmpegExporter.d.ts +0 -25
- package/lib/partials/ffmpegExporter.js +0 -132
- package/lib/partials/ffmpegExporter.js.map +0 -1
package/lib/versions.js
CHANGED
|
@@ -1,34 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
var __importDefault =
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
7
|
-
Object.defineProperty(exports, '__esModule', {value: true});
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
6
|
exports.getVersions = void 0;
|
|
9
|
-
const fs_1 = __importDefault(require(
|
|
10
|
-
const path_1 = __importDefault(require(
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
11
9
|
function getVersions() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
return {
|
|
11
|
+
core: loadVersion('@revideo/core'),
|
|
12
|
+
two: loadVersion('@revideo/2d'),
|
|
13
|
+
ui: loadVersion('@revideo/ui'),
|
|
14
|
+
vitePlugin: loadVersion('..'),
|
|
15
|
+
};
|
|
18
16
|
}
|
|
19
17
|
exports.getVersions = getVersions;
|
|
20
18
|
function loadVersion(module) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} catch (_) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
19
|
+
try {
|
|
20
|
+
const modulePath = path_1.default.dirname(require.resolve(`${module}/package.json`));
|
|
21
|
+
const packageJsonPath = path_1.default.resolve(modulePath, 'package.json');
|
|
22
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath).toString());
|
|
23
|
+
return packageJson.version ?? null;
|
|
24
|
+
}
|
|
25
|
+
catch (_) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
33
28
|
}
|
|
34
|
-
//# sourceMappingURL=versions.js.map
|
|
29
|
+
//# sourceMappingURL=versions.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revideo/vite-plugin",
|
|
3
|
-
"version": "0.4.7
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"description": "A Vite plugin for revideo projects",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"author": "revideo",
|
|
@@ -23,18 +23,18 @@
|
|
|
23
23
|
"vite": "^4.5"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@revideo/telemetry": "
|
|
26
|
+
"@revideo/telemetry": "0.4.7",
|
|
27
27
|
"@types/follow-redirects": "^1.14.1",
|
|
28
28
|
"@types/formidable": "^3.4.5",
|
|
29
29
|
"@types/mime-types": "^2.1.1"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@revideo/ffmpeg": "
|
|
32
|
+
"@revideo/ffmpeg": "0.4.7",
|
|
33
33
|
"fast-glob": "^3.3.1",
|
|
34
34
|
"follow-redirects": "^1.15.2",
|
|
35
35
|
"formidable": "^3.5.1",
|
|
36
36
|
"mime-types": "^2.1.35",
|
|
37
37
|
"source-map": "^0.6.1"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "237230d4b5a656821e17492434aa2cd5695723d0"
|
|
40
40
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { Plugin, WebSocketServer } from 'vite';
|
|
2
|
-
interface ExporterPluginConfig {
|
|
3
|
-
output: string;
|
|
4
|
-
}
|
|
5
|
-
export declare function ffmpegExporterPlugin({ output }: ExporterPluginConfig): Plugin;
|
|
6
|
-
/**
|
|
7
|
-
* A simple bridge between the FFmpegExporterServer and FFmpegExporterClient.
|
|
8
|
-
*
|
|
9
|
-
* @remarks
|
|
10
|
-
* This class lets the client exporter invoke methods on the server and receive
|
|
11
|
-
* responses using a simple Promise-based API.
|
|
12
|
-
*/
|
|
13
|
-
export declare class FFmpegBridge {
|
|
14
|
-
private readonly ws;
|
|
15
|
-
private readonly config;
|
|
16
|
-
private process;
|
|
17
|
-
constructor(ws: WebSocketServer, config: ExporterPluginConfig);
|
|
18
|
-
private handleMessage;
|
|
19
|
-
private respondSuccess;
|
|
20
|
-
private respondError;
|
|
21
|
-
private videoFrameExtractors;
|
|
22
|
-
private handleVideoFrameMessage;
|
|
23
|
-
private handleRenderFinished;
|
|
24
|
-
}
|
|
25
|
-
export {};
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FFmpegBridge = exports.ffmpegExporterPlugin = void 0;
|
|
4
|
-
const ffmpeg_1 = require("@revideo/ffmpeg");
|
|
5
|
-
function ffmpegExporterPlugin({ output }) {
|
|
6
|
-
return {
|
|
7
|
-
name: 'revideo/ffmpeg',
|
|
8
|
-
configureServer(server) {
|
|
9
|
-
new FFmpegBridge(server.ws, { output });
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
exports.ffmpegExporterPlugin = ffmpegExporterPlugin;
|
|
14
|
-
/**
|
|
15
|
-
* A simple bridge between the FFmpegExporterServer and FFmpegExporterClient.
|
|
16
|
-
*
|
|
17
|
-
* @remarks
|
|
18
|
-
* This class lets the client exporter invoke methods on the server and receive
|
|
19
|
-
* responses using a simple Promise-based API.
|
|
20
|
-
*/
|
|
21
|
-
class FFmpegBridge {
|
|
22
|
-
constructor(ws, config) {
|
|
23
|
-
this.ws = ws;
|
|
24
|
-
this.config = config;
|
|
25
|
-
this.process = null;
|
|
26
|
-
this.handleMessage = async ({ method, data }) => {
|
|
27
|
-
if (method === 'start') {
|
|
28
|
-
try {
|
|
29
|
-
this.process = new ffmpeg_1.FFmpegExporterServer({
|
|
30
|
-
...data,
|
|
31
|
-
...this.config,
|
|
32
|
-
});
|
|
33
|
-
this.respondSuccess(method, await this.process.start());
|
|
34
|
-
}
|
|
35
|
-
catch (e) {
|
|
36
|
-
this.respondError(method, e?.message);
|
|
37
|
-
}
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (!this.process) {
|
|
41
|
-
this.respondError(method, 'The exporting process has not been started.');
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (!(method in this.process)) {
|
|
45
|
-
this.respondError(method, `Unknown method: "${method}".`);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
this.respondSuccess(method, await this.process[method](data));
|
|
50
|
-
}
|
|
51
|
-
catch (e) {
|
|
52
|
-
this.respondError(method, e?.message);
|
|
53
|
-
}
|
|
54
|
-
if (method === 'kill') {
|
|
55
|
-
this.process = null;
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
// List of VideoFrameExtractors
|
|
60
|
-
this.videoFrameExtractors = new Map();
|
|
61
|
-
this.handleVideoFrameMessage = async ({ data }) => {
|
|
62
|
-
const typedData = data;
|
|
63
|
-
// Check if we already have a VideoFrameExtractor for this video
|
|
64
|
-
const id = typedData.filePath + '-' + typedData.id;
|
|
65
|
-
let extractor = this.videoFrameExtractors.get(id);
|
|
66
|
-
const frameDuration = 1 / typedData.fps;
|
|
67
|
-
const isOldFrame = extractor &&
|
|
68
|
-
Math.abs(typedData.startTime - extractor.getLastTime()) <
|
|
69
|
-
frameDuration / 2;
|
|
70
|
-
// If time has not changed, return the last frame
|
|
71
|
-
if (isOldFrame) {
|
|
72
|
-
const frame = extractor.getLastFrame();
|
|
73
|
-
this.ws.send('revideo:ffmpeg-video-frame-res', {
|
|
74
|
-
status: 'success',
|
|
75
|
-
data: {
|
|
76
|
-
frame,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
// If the video has skipped back we need to create a new extractor
|
|
82
|
-
if (extractor &&
|
|
83
|
-
typedData.startTime + frameDuration < extractor.getTime()) {
|
|
84
|
-
extractor.destroy();
|
|
85
|
-
this.videoFrameExtractors.delete(id);
|
|
86
|
-
extractor = undefined;
|
|
87
|
-
}
|
|
88
|
-
// If the video has skipped forward we need to create a new extractor
|
|
89
|
-
if (extractor &&
|
|
90
|
-
typedData.startTime > extractor.getTime() + frameDuration) {
|
|
91
|
-
extractor.destroy();
|
|
92
|
-
this.videoFrameExtractors.delete(id);
|
|
93
|
-
extractor = undefined;
|
|
94
|
-
}
|
|
95
|
-
if (!extractor) {
|
|
96
|
-
extractor = new ffmpeg_1.VideoFrameExtractor(typedData.filePath, typedData.startTime, typedData.fps, typedData.duration, typedData.png);
|
|
97
|
-
this.videoFrameExtractors.set(id, extractor);
|
|
98
|
-
}
|
|
99
|
-
// Go to the frame that is closest to the requested time
|
|
100
|
-
const frame = await extractor.popImage();
|
|
101
|
-
this.ws.send('revideo:ffmpeg-video-frame-res', {
|
|
102
|
-
status: 'success',
|
|
103
|
-
data: {
|
|
104
|
-
frame,
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
this.handleRenderFinished = async () => {
|
|
109
|
-
this.videoFrameExtractors.forEach(extractor => extractor.destroy());
|
|
110
|
-
this.videoFrameExtractors.clear();
|
|
111
|
-
};
|
|
112
|
-
ws.on('revideo:ffmpeg-exporter', this.handleMessage);
|
|
113
|
-
ws.on('revideo:ffmpeg-video-frame', this.handleVideoFrameMessage);
|
|
114
|
-
ws.on('revideo:render-finished', this.handleRenderFinished);
|
|
115
|
-
}
|
|
116
|
-
respondSuccess(method, data = {}) {
|
|
117
|
-
this.ws.send('revideo:ffmpeg-exporter-ack', {
|
|
118
|
-
status: 'success',
|
|
119
|
-
method,
|
|
120
|
-
data,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
respondError(method, message = 'Unknown error.') {
|
|
124
|
-
this.ws.send('revideo:ffmpeg-exporter-ack', {
|
|
125
|
-
status: 'error',
|
|
126
|
-
method,
|
|
127
|
-
message,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.FFmpegBridge = FFmpegBridge;
|
|
132
|
-
//# sourceMappingURL=ffmpegExporter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ffmpegExporter.js","sourceRoot":"","sources":["../../src/partials/ffmpegExporter.ts"],"names":[],"mappings":"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"}
|