@mieweb/pulsevault 0.5.0 → 0.7.0
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/CHANGELOG.md +152 -1
- package/OPERATIONS.md +123 -46
- package/PROTOCOL.md +27 -5
- package/README.md +31 -8
- package/dist/app.d.ts +8 -7
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -3
- package/dist/app.js.map +1 -1
- package/dist/core.d.ts +23 -9
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +106 -21
- package/dist/core.js.map +1 -1
- package/dist/lib/completion.d.ts +22 -5
- package/dist/lib/completion.d.ts.map +1 -1
- package/dist/lib/completion.js +247 -35
- package/dist/lib/completion.js.map +1 -1
- package/dist/lib/deeplinks.d.ts +18 -2
- package/dist/lib/deeplinks.d.ts.map +1 -1
- package/dist/lib/deeplinks.js +13 -2
- package/dist/lib/deeplinks.js.map +1 -1
- package/dist/lib/magic.d.ts +41 -1
- package/dist/lib/magic.d.ts.map +1 -1
- package/dist/lib/magic.js +104 -0
- package/dist/lib/magic.js.map +1 -1
- package/dist/lib/options.d.ts +2 -0
- package/dist/lib/options.d.ts.map +1 -1
- package/dist/lib/options.js +8 -4
- package/dist/lib/options.js.map +1 -1
- package/dist/lib/protocol-version.gen.js +1 -1
- package/dist/lib/pulsevaultTus.d.ts.map +1 -1
- package/dist/lib/pulsevaultTus.js +35 -1
- package/dist/lib/pulsevaultTus.js.map +1 -1
- package/dist/lib/web-ready.d.ts +145 -18
- package/dist/lib/web-ready.d.ts.map +1 -1
- package/dist/lib/web-ready.js +484 -91
- package/dist/lib/web-ready.js.map +1 -1
- package/dist/storage/local.d.ts +3 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +310 -50
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/s3.d.ts.map +1 -1
- package/dist/storage/s3.js +21 -1
- package/dist/storage/s3.js.map +1 -1
- package/dist/storage/types.d.ts +89 -4
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +7 -0
- package/dist/storage/types.js.map +1 -1
- package/package.json +2 -2
- package/protocol/openapi.json +26 -3
- package/protocol/schemas/artifact-status.schema.json +13 -1
- package/protocol/schemas/deep-link.schema.json +2 -2
- package/scripts/web-ready-migrate.mjs +35 -11
package/dist/lib/magic.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
|
+
import { consoleLogger } from './request.js';
|
|
3
|
+
import { isBinaryAvailable, probeVideo, ProbeTimeoutError } from './web-ready.js';
|
|
2
4
|
/**
|
|
3
5
|
* Check whether a file's first bytes match the ISO base media file format
|
|
4
6
|
* (`ftyp` box at offset 4), which covers MP4, MOV, M4V, 3GP, and related
|
|
@@ -100,4 +102,106 @@ export function createS3Mp4Sniffer(storage) {
|
|
|
100
102
|
}
|
|
101
103
|
};
|
|
102
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Whether a file's first bytes open one of the video containers PulseVault accepts: ISO base
|
|
107
|
+
* media (`ftyp`: MP4, MOV, M4V, 3GP), EBML (WebM, MKV) or RIFF `AVI `. A ~12-byte sniff, for
|
|
108
|
+
* when ffprobe isn't installed: it tells a video container from a renamed document, not a
|
|
109
|
+
* playable video from a broken one.
|
|
110
|
+
*/
|
|
111
|
+
export async function sniffVideo(filePath) {
|
|
112
|
+
let fd;
|
|
113
|
+
try {
|
|
114
|
+
fd = await fs.open(filePath, 'r');
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const buf = Buffer.alloc(12);
|
|
121
|
+
const { bytesRead } = await fd.read(buf, 0, 12, 0);
|
|
122
|
+
if (bytesRead < 12)
|
|
123
|
+
return false;
|
|
124
|
+
const ebml = buf[0] === 0x1a && buf[1] === 0x45 && buf[2] === 0xdf && buf[3] === 0xa3;
|
|
125
|
+
const avi = buf.toString('latin1', 0, 4) === 'RIFF' && buf.toString('latin1', 8, 12) === 'AVI ';
|
|
126
|
+
return hasFtypBox(buf) || ebml || avi;
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
await fd.close();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** The limit exactly, as said: `600` → "10 minutes", `61` → "1 minute 1 second", `45.5` → "45.5 seconds". */
|
|
133
|
+
function formatDuration(seconds) {
|
|
134
|
+
const unit = (n, word) => `${n} ${word}${n === 1 ? '' : 's'}`;
|
|
135
|
+
const minutes = Math.floor(seconds / 60);
|
|
136
|
+
// To the millisecond, so 61.25 reads "1 minute 1.25 seconds", never a rounded neighbour.
|
|
137
|
+
const rest = Math.round((seconds - minutes * 60) * 1000) / 1000;
|
|
138
|
+
if (minutes === 0)
|
|
139
|
+
return unit(rest, 'second');
|
|
140
|
+
return rest === 0 ? unit(minutes, 'minute') : `${unit(minutes, 'minute')} ${unit(rest, 'second')}`;
|
|
141
|
+
}
|
|
142
|
+
const warnedNoProbe = new Set();
|
|
143
|
+
/**
|
|
144
|
+
* Build a `validatePayload` hook that checks a video by what it is, not its file name: ffprobe
|
|
145
|
+
* must find a video stream with a duration above zero (and, with `maxDurationSeconds`, not
|
|
146
|
+
* longer than that). Without ffprobe on the host it falls back to `sniffVideo` and logs once.
|
|
147
|
+
* Other kinds pass untouched. Needs the bytes on local disk (the local adapter).
|
|
148
|
+
*
|
|
149
|
+
* A refusal is a `422` whose message a host can show as it is: "That file isn't a video.",
|
|
150
|
+
* "That video is longer than the limit of 10 minutes." or, when ffprobe runs past
|
|
151
|
+
* `probeTimeoutSeconds` (a malformed file), "That video couldn't be checked in time."
|
|
152
|
+
*
|
|
153
|
+
* Usage:
|
|
154
|
+
* ```ts
|
|
155
|
+
* await app.register(pulseVault, {
|
|
156
|
+
* storage: createLocalStorage({ workspaceDir: "./data" }),
|
|
157
|
+
* validatePayload: createVideoValidator({ maxDurationSeconds: 600 }),
|
|
158
|
+
* // ...
|
|
159
|
+
* });
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
export function createVideoValidator(options = {}) {
|
|
163
|
+
const ffprobePath = options.ffprobePath ?? 'ffprobe';
|
|
164
|
+
const logger = options.logger ?? consoleLogger;
|
|
165
|
+
const { maxDurationSeconds, probeTimeoutSeconds } = options;
|
|
166
|
+
for (const [name, value] of [['maxDurationSeconds', maxDurationSeconds], ['probeTimeoutSeconds', probeTimeoutSeconds]]) {
|
|
167
|
+
if (value !== undefined && !(value > 0 && Number.isFinite(value))) {
|
|
168
|
+
throw new TypeError(`\`${name}\` must be a positive number of seconds`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
const refuse = (message) => {
|
|
172
|
+
throw Object.assign(new Error(message), { statusCode: 422 });
|
|
173
|
+
};
|
|
174
|
+
return async (_request, { artifactId, kind, localPath }) => {
|
|
175
|
+
if (kind !== 'video')
|
|
176
|
+
return;
|
|
177
|
+
if (!localPath) {
|
|
178
|
+
throw Object.assign(new Error(`Cannot validate upload ${artifactId}: no local path available`), { statusCode: 500 });
|
|
179
|
+
}
|
|
180
|
+
if (!(await isBinaryAvailable(ffprobePath))) {
|
|
181
|
+
if (!warnedNoProbe.has(ffprobePath)) {
|
|
182
|
+
warnedNoProbe.add(ffprobePath);
|
|
183
|
+
logger.error({ ffprobePath }, 'pulsevault video check: ffprobe not found — only the container bytes are checked. ' +
|
|
184
|
+
'Install ffmpeg (apt install ffmpeg / brew install ffmpeg) to check videos fully.');
|
|
185
|
+
}
|
|
186
|
+
if (!(await sniffVideo(localPath)))
|
|
187
|
+
refuse("That file isn't a video.");
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
let probe;
|
|
191
|
+
try {
|
|
192
|
+
probe = await probeVideo(localPath, { ffprobePath, timeoutSeconds: probeTimeoutSeconds });
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
if (!(err instanceof ProbeTimeoutError))
|
|
196
|
+
throw err;
|
|
197
|
+
logger.error({ err, artifactId }, 'pulsevault video check: ffprobe timed out');
|
|
198
|
+
return refuse("That video couldn't be checked in time.");
|
|
199
|
+
}
|
|
200
|
+
if (!probe || probe.durationSeconds === null)
|
|
201
|
+
refuse("That file isn't a video.");
|
|
202
|
+
if (maxDurationSeconds !== undefined && (probe?.durationSeconds ?? 0) > maxDurationSeconds) {
|
|
203
|
+
refuse(`That video is longer than the limit of ${formatDuration(maxDurationSeconds)}.`);
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
}
|
|
103
207
|
//# sourceMappingURL=magic.js.map
|
package/dist/lib/magic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magic.js","sourceRoot":"","sources":["../../src/lib/magic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"magic.js","sourceRoot":"","sources":["../../src/lib/magic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,aAAa,EAAiD,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAmB,MAAM,gBAAgB,CAAC;AAgCnG;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,IAAI,EAAiB,CAAC;IACtB,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QACjC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAqB;IACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,0BAA0B,UAAU,2BAA2B,CAAC,EAC1E,EAAE,UAAU,EAAE,GAAG,EAAE,CACpB,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,EAAE;gBACzF,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAkB;IACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,0BAA0B,UAAU,6BAA6B,CAAC,EAC5E,EAAE,UAAU,EAAE,GAAG,EAAE,CACpB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,0DAA0D,CAAC,EAAE;gBACzF,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,EAAiB,CAAC;IACtB,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QACtF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC;QAChG,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;IACxC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAgBD,6GAA6G;AAC7G,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,yFAAyF;IACzF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;AAExC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAC/C,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,EAAE,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAU,EAAE,CAAC;QAChI,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,SAAS,CAAC,KAAK,IAAI,yCAAyC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,OAAe,EAAS,EAAE;QACxC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC;IACF,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QACzD,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO;QAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,0BAA0B,UAAU,2BAA2B,CAAC,EAC1E,EAAE,UAAU,EAAE,GAAG,EAAE,CACpB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC/B,MAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,EACf,oFAAoF;oBAClF,kFAAkF,CACrF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;gBAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,IAAI,KAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,CAAC,GAAG,YAAY,iBAAiB,CAAC;gBAAE,MAAM,GAAG,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,2CAA2C,CAAC,CAAC;YAC/E,OAAO,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,eAAe,KAAK,IAAI;YAAE,MAAM,CAAC,0BAA0B,CAAC,CAAC;QACjF,IAAI,kBAAkB,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,eAAe,IAAI,CAAC,CAAC,GAAG,kBAAkB,EAAE,CAAC;YAC3F,MAAM,CAAC,0CAA0C,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/lib/options.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export type PulseVaultAllowedExtensions = {
|
|
|
14
14
|
captions: readonly string[];
|
|
15
15
|
thumbnail: readonly string[];
|
|
16
16
|
};
|
|
17
|
+
/** An allowed extension: one dot, then no dot, whitespace or path separator. */
|
|
18
|
+
export declare const EXTENSION_REGEX: RegExp;
|
|
17
19
|
/**
|
|
18
20
|
* Normalize the consumer's `allowedExtensions` option (legacy array or per-kind
|
|
19
21
|
* object) into the canonical `{ video, project, captions, thumbnail }` shape
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/lib/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAErE,iHAAiH;AACjH,KAAK,uBAAuB,GAAG;IAC7B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG,SAAS,MAAM,EAAE,GAAG,uBAAuB,CAAC;AAE3F,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;AAaF,gFAAgF;AAChF,eAAO,MAAM,eAAe,QAAmB,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,gCAAgC,GAAG,SAAS,GAChD,2BAA2B,CAyB7B;AAED,6GAA6G;AAC7G,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAM3E;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAIjE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED,wBAAgB,yBAAyB,CACvC,iBAAiB,EAAE,gCAAgC,GAAG,SAAS,GAC9D,IAAI,CAiBN;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,GAAG,IAAI,CAaP;AAED,8GAA8G;AAC9G,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,yBAAyB,GAAG,SAAS,EAC9C,aAAa,EAAE,yBAAyB,GAAG,SAAS,GACnD,yBAAyB,GAAG,SAAS,CASvC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,0BAA0B,GAAG,SAAS,EAC/C,aAAa,EAAE,0BAA0B,GAAG,SAAS,GACpD,0BAA0B,GAAG,SAAS,CASxC"}
|
package/dist/lib/options.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
|
|
1
|
+
import { CONFORM_VIDEO_EXTENSIONS } from './web-ready.js';
|
|
2
|
+
// Video: the containers `webReady` conforms to the format the Pulse app records (an `.mp4`), so
|
|
3
|
+
// a host's own file picker can take a screen recording, a camera-roll `.mov` or a browser's
|
|
4
|
+
// `.webm`. The other kinds are exactly what the Pulse app uploads; a host that accepts other
|
|
5
|
+
// clients adds their extensions (`.srt` is served with the right content type).
|
|
6
|
+
const DEFAULT_VIDEO_EXTENSIONS = CONFORM_VIDEO_EXTENSIONS;
|
|
4
7
|
const DEFAULT_PROJECT_EXTENSIONS = ['.pulse', '.zip'];
|
|
5
8
|
// WebVTT only — it's what the Pulse app uploads, and it carries word-level
|
|
6
9
|
// inline cue timestamps (`<00:00:01.500>word`) for karaoke rendering.
|
|
7
10
|
const DEFAULT_CAPTIONS_EXTENSIONS = ['.vtt'];
|
|
8
11
|
// The pulse's poster frame (the draft's first-clip thumbnail).
|
|
9
12
|
const DEFAULT_THUMBNAIL_EXTENSIONS = ['.jpg', '.jpeg', '.png'];
|
|
10
|
-
|
|
13
|
+
/** An allowed extension: one dot, then no dot, whitespace or path separator. */
|
|
14
|
+
export const EXTENSION_REGEX = /^\.[^.\s/\\]+$/;
|
|
11
15
|
/**
|
|
12
16
|
* Normalize the consumer's `allowedExtensions` option (legacy array or per-kind
|
|
13
17
|
* object) into the canonical `{ video, project, captions, thumbnail }` shape
|
package/dist/lib/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/lib/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/lib/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pulsevaultTus.d.ts","sourceRoot":"","sources":["../../src/lib/pulsevaultTus.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"pulsevaultTus.d.ts","sourceRoot":"","sources":["../../src/lib/pulsevaultTus.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAiB,MAAM,cAAc,CAAC;AAC5F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEnF,YAAY,EACV,0BAA0B,EAC1B,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uHAAuH;IACvH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,oBAAoB,yCAAgD,CAAC;AAElF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,iBAAiB,EAAE;QACjB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF;;;;;OAKG;IACH,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,8IAA8I;IAC9I,UAAU,EAAE,gBAAgB,CAAC;IAC7B,uCAAuC;IACvC,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACzC,gGAAgG;IAChG,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,sFAAsF;IACtF,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAM5D;AAuDD,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMrE;AAWD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAM1F;AA2CD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,UA8RtE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Server } from '@tus/server';
|
|
1
|
+
import { ERRORS, Server } from '@tus/server';
|
|
2
2
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { isUuid } from './uuid.js';
|
|
@@ -147,6 +147,27 @@ export function createPulsevaultTusServer(options) {
|
|
|
147
147
|
await onArtifactEvent?.({ phase: 'remove', artifactId, kind, reason: 'deleted' });
|
|
148
148
|
}, isLocked),
|
|
149
149
|
maxSize,
|
|
150
|
+
// tus refuses an upload over `maxSize` with "Maximum size exceeded" at create (the constant)
|
|
151
|
+
// or mid-stream (`StreamLimiter`'s own error, same status and body), and one whose length was
|
|
152
|
+
// deferred with "upload's size exceeded" when a chunk would take it past `maxSize`. Say it in
|
|
153
|
+
// the words a host can show the person who picked the file. (That second error also means a
|
|
154
|
+
// chunk past the length the client declared — a client bug, left as tus words it.)
|
|
155
|
+
onResponseError: async (req, err) => {
|
|
156
|
+
const { status_code, body } = err;
|
|
157
|
+
const tooLarge = { status_code: 413, body: `That file is larger than ${formatBytes(maxSize)}.\n` };
|
|
158
|
+
if (status_code === ERRORS.ERR_MAX_SIZE_EXCEEDED.status_code && body === ERRORS.ERR_MAX_SIZE_EXCEEDED.body) {
|
|
159
|
+
return tooLarge;
|
|
160
|
+
}
|
|
161
|
+
if (status_code === ERRORS.ERR_SIZE_EXCEEDED.status_code && body === ERRORS.ERR_SIZE_EXCEEDED.body) {
|
|
162
|
+
const encoded = new URL(req.url).pathname.split('/').pop();
|
|
163
|
+
const upload = encoded
|
|
164
|
+
? await storage.datastore.getUpload(Buffer.from(encoded, 'base64url').toString('utf8')).catch(() => null)
|
|
165
|
+
: null;
|
|
166
|
+
if (upload?.sizeIsDeferred)
|
|
167
|
+
return tooLarge;
|
|
168
|
+
}
|
|
169
|
+
return undefined;
|
|
170
|
+
},
|
|
150
171
|
namingFunction: async (_req, metadata) => {
|
|
151
172
|
const { artifactId, filename, kind, relatedTo, checksum, name, appVersion } = parseUploadMetadata(metadata);
|
|
152
173
|
if (!isUuid(artifactId)) {
|
|
@@ -404,6 +425,19 @@ function hardenAgainstClientAbort(server, logger) {
|
|
|
404
425
|
};
|
|
405
426
|
}
|
|
406
427
|
}
|
|
428
|
+
/** `524288000` → "500 MB", `1610612736` → "1.5 GB" (binary units, as hosts usually set them). */
|
|
429
|
+
function formatBytes(bytes) {
|
|
430
|
+
if (bytes === 1)
|
|
431
|
+
return '1 byte';
|
|
432
|
+
const units = ['bytes', 'KB', 'MB', 'GB', 'TB'];
|
|
433
|
+
let value = bytes;
|
|
434
|
+
let unit = 0;
|
|
435
|
+
while (value >= 1024 && unit < units.length - 1) {
|
|
436
|
+
value /= 1024;
|
|
437
|
+
unit++;
|
|
438
|
+
}
|
|
439
|
+
return `${Math.round(value * 10) / 10} ${units[unit]}`;
|
|
440
|
+
}
|
|
407
441
|
/**
|
|
408
442
|
* Resolve the artifact kind from storage for a known artifactId. Used by
|
|
409
443
|
* `onUploadFinish` for chunked uploads where the kind is not in the current
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pulsevaultTus.js","sourceRoot":"","sources":["../../src/lib/pulsevaultTus.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pulsevaultTus.js","sourceRoot":"","sources":["../../src/lib/pulsevaultTus.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/web-ready.d.ts
CHANGED
|
@@ -1,8 +1,52 @@
|
|
|
1
1
|
import type { PulseVaultLogger } from './request.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Conform uploaded videos to one web-playable format: the one the Pulse app records.
|
|
4
|
+
*
|
|
5
|
+
* A video reaches PulseVault from the Pulse app (already in the target format) or from a host's
|
|
6
|
+
* own file picker: a screen recording, an iPhone HEVC `.mov` (often 10-bit HDR), a WebM from a
|
|
7
|
+
* browser recorder, a 4K clip. Browsers streaming over progressive HTTP need the `moov` atom at
|
|
8
|
+
* the front, a codec they all decode, and 8-bit SDR colour; a phone needs a sane size.
|
|
9
|
+
*
|
|
10
|
+
* `ensureWebReady` does the least work that gets a file there: nothing when it already
|
|
11
|
+
* conforms (a Pulse upload keeps its bytes), a lossless remux when only the container or the
|
|
12
|
+
* `moov` position is off, and otherwise one ffmpeg run that re-encodes only the streams that
|
|
13
|
+
* are off-target. Fail-open by design: without `ffmpeg`/`ffprobe`, or when a run fails or
|
|
14
|
+
* times out, the original bytes keep serving and the result says why.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* The format every video is served in. "Already conforms" checks exactly these properties —
|
|
18
|
+
* never the orientation: a landscape video stays landscape and a portrait one portrait, with no
|
|
19
|
+
* crop, pad or stretch.
|
|
20
|
+
*/
|
|
21
|
+
export declare const CONFORM_TARGET: {
|
|
22
|
+
/** MP4 with the `moov` atom at the front (faststart). */
|
|
23
|
+
readonly container: "mp4";
|
|
24
|
+
readonly extension: ".mp4";
|
|
25
|
+
/**
|
|
26
|
+
* H.264, 8-bit 4:2:0 in limited range, even width and height, SDR, no rotation tag. HDR (PQ,
|
|
27
|
+
* HLG) is tone-mapped to BT.709; an SDR source keeps its own colour tags (BT.709 or BT.601),
|
|
28
|
+
* which browsers honour — so a Pulse upload from any phone keeps its bytes.
|
|
29
|
+
*/
|
|
30
|
+
readonly videoCodec: "h264";
|
|
31
|
+
readonly pixelFormat: "yuv420p";
|
|
32
|
+
/** Default cap on the longest edge, in pixels (`webReady.maxEdge`). */
|
|
33
|
+
readonly maxEdge: 1920;
|
|
34
|
+
/** AAC; a video without audio stays silent. */
|
|
35
|
+
readonly audioCodec: "aac";
|
|
36
|
+
};
|
|
37
|
+
/** The containers the conform step turns into the target: the default video `allowedExtensions`. */
|
|
38
|
+
export declare const CONFORM_VIDEO_EXTENSIONS: readonly string[];
|
|
39
|
+
/**
|
|
40
|
+
* - `none`: already in the target format; the bytes are untouched.
|
|
41
|
+
* - `remuxed`: only the `moov` position was off; rewritten losslessly, same file.
|
|
42
|
+
* - `transcoded`: an MP4 whose video or audio was re-encoded, same file.
|
|
43
|
+
* - `conformed`: a different container (WebM, MKV, MOV, …) rewritten as a new `.mp4`.
|
|
44
|
+
* - `skipped`: nothing was done (no ffmpeg, a failed or timed-out run); the original serves.
|
|
45
|
+
*/
|
|
46
|
+
export type WebReadyAction = 'none' | 'remuxed' | 'transcoded' | 'conformed' | 'skipped';
|
|
3
47
|
export type WebReadyResult = {
|
|
4
48
|
action: WebReadyAction;
|
|
5
|
-
/** Human-readable explanation (what was detected, or why nothing was done). */
|
|
49
|
+
/** Human-readable explanation (what was detected and done, or why nothing was done). */
|
|
6
50
|
reason: string;
|
|
7
51
|
};
|
|
8
52
|
export type WebReadyOptions = {
|
|
@@ -11,15 +55,34 @@ export type WebReadyOptions = {
|
|
|
11
55
|
/** Path to the ffprobe binary. Default `"ffprobe"` (resolved via PATH). */
|
|
12
56
|
ffprobePath?: string;
|
|
13
57
|
/**
|
|
14
|
-
* Whether
|
|
15
|
-
*
|
|
16
|
-
* useful when transcode cost on the serving
|
|
58
|
+
* Whether an off-target stream is re-encoded. Default `true`. Set `false` to never re-encode:
|
|
59
|
+
* only lossless remuxes still run (a `moov` moved to the front, or another container whose
|
|
60
|
+
* streams already conform copied into an `.mp4`) — useful when transcode cost on the serving
|
|
61
|
+
* host is a concern.
|
|
17
62
|
*/
|
|
18
63
|
transcode?: boolean;
|
|
64
|
+
/** Longest edge of the served video, in pixels; larger videos are scaled down. Default `1920`. */
|
|
65
|
+
maxEdge?: number;
|
|
19
66
|
/** x264 CRF for the transcode path (lower = better/larger). Default `23`. */
|
|
20
67
|
crf?: number;
|
|
21
68
|
/** x264 preset for the transcode path. Default `"veryfast"`. */
|
|
22
69
|
preset?: string;
|
|
70
|
+
/**
|
|
71
|
+
* Wall-clock limit for one ffmpeg run, in seconds; the run is killed and the original kept.
|
|
72
|
+
* A guard against a run that hangs, not a speed limit. Default `60 + 10 ×` the video's
|
|
73
|
+
* duration counted in 1080p30 seconds (a second of 4K at 120 fps counts 16), at most an hour,
|
|
74
|
+
* and an hour when the duration is unknown. The default comes from the upload's own metadata,
|
|
75
|
+
* so it's capped: a file can't claim its way to a days-long run. Set this for longer runs.
|
|
76
|
+
*/
|
|
77
|
+
timeoutSeconds?: number;
|
|
78
|
+
/**
|
|
79
|
+
* `false`: leave every rewrite at a temporary `.mp4` path beside the input (the result's
|
|
80
|
+
* `outputPath`) instead of renaming it into place, so the caller can install it under its own
|
|
81
|
+
* lock and conditions. Default `true`.
|
|
82
|
+
*/
|
|
83
|
+
install?: boolean;
|
|
84
|
+
/** Wall-clock limit for each ffprobe run over the upload, in seconds. Default `60`. */
|
|
85
|
+
probeTimeoutSeconds?: number;
|
|
23
86
|
/** Optional logger; `error` fires when ffmpeg/ffprobe are missing or a rewrite fails. */
|
|
24
87
|
logger?: PulseVaultLogger;
|
|
25
88
|
};
|
|
@@ -32,23 +95,85 @@ export type MoovPosition = 'front' | 'end' | 'unknown';
|
|
|
32
95
|
* costs microseconds regardless of file size.
|
|
33
96
|
*
|
|
34
97
|
* Returns `"unknown"` for non-MP4 bytes, truncated headers, or files missing
|
|
35
|
-
* either box
|
|
98
|
+
* either box.
|
|
36
99
|
*/
|
|
37
100
|
export declare function scanMoovPosition(filePath: string): Promise<MoovPosition>;
|
|
101
|
+
/** What ffprobe says about a video: the streams the conform step maps, and its length. */
|
|
102
|
+
export type VideoProbe = {
|
|
103
|
+
video: {
|
|
104
|
+
index: number;
|
|
105
|
+
codec: string;
|
|
106
|
+
pixelFormat: string;
|
|
107
|
+
width: number;
|
|
108
|
+
height: number;
|
|
109
|
+
/** The colour transfer (`bt709`, `arib-std-b67`, …), when tagged. */
|
|
110
|
+
transfer?: string;
|
|
111
|
+
/** `pc` for full range, `tv` for limited, when tagged. */
|
|
112
|
+
range?: string;
|
|
113
|
+
/**
|
|
114
|
+
* Display rotation in degrees from the stream's matrix: `0`, `90`, `-90` or `180`, or another
|
|
115
|
+
* angle in (-180, 180] when the matrix isn't within a degree of a quarter turn (not converted).
|
|
116
|
+
*/
|
|
117
|
+
rotation: number;
|
|
118
|
+
/** Average frames per second, when ffprobe can tell. */
|
|
119
|
+
frameRate?: number;
|
|
120
|
+
};
|
|
121
|
+
/** The first audio stream, or `null` for a silent video. */
|
|
122
|
+
audio: {
|
|
123
|
+
index: number;
|
|
124
|
+
codec: string;
|
|
125
|
+
} | null;
|
|
126
|
+
/** Seconds, or `null` when neither the header nor the packets say. */
|
|
127
|
+
durationSeconds: number | null;
|
|
128
|
+
};
|
|
129
|
+
export type ProbeOptions = {
|
|
130
|
+
/** Path to the ffprobe binary. Default `"ffprobe"` (resolved via PATH). */
|
|
131
|
+
ffprobePath?: string;
|
|
132
|
+
/** Wall-clock limit for each ffprobe run, in seconds; past it the probe fails. Default `60`. */
|
|
133
|
+
timeoutSeconds?: number;
|
|
134
|
+
};
|
|
135
|
+
/** An ffprobe run past its `timeoutSeconds`: the file couldn't be read in time. */
|
|
136
|
+
export declare class ProbeTimeoutError extends Error {
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* ffprobe a file: its first real video stream (not cover art), its first audio stream and its
|
|
140
|
+
* duration. `null` when it isn't a video: ffprobe can't read it, it has no video stream, or it
|
|
141
|
+
* is a picture (an image file, or a stream of one frame). Each ffprobe run is bounded by
|
|
142
|
+
* `timeoutSeconds`; past it, rejects with `ProbeTimeoutError`.
|
|
143
|
+
*/
|
|
144
|
+
export declare function probeVideo(filePath: string, options?: ProbeOptions): Promise<VideoProbe | null>;
|
|
145
|
+
export declare function isBinaryAvailable(binPath: string): Promise<boolean>;
|
|
146
|
+
/** Whether this host can conform videos: both `ffmpeg` and `ffprobe` run. */
|
|
147
|
+
export declare function webReadyAvailable(options?: Pick<WebReadyOptions, 'ffmpegPath' | 'ffprobePath'>): Promise<boolean>;
|
|
148
|
+
/**
|
|
149
|
+
* One frame of a video as a JPEG, for a video that arrived without a thumbnail (a file from a
|
|
150
|
+
* host's own picker): its longest edge at most 640 px, turned the way the video plays. Resolves
|
|
151
|
+
* `null` when there's no frame to take (no video stream, ffmpeg missing or failing); the video
|
|
152
|
+
* then has no poster, and nothing else changes.
|
|
153
|
+
*/
|
|
154
|
+
export declare function extractPosterFrame(filePath: string, options?: Pick<WebReadyOptions, 'ffmpegPath' | 'logger'>): Promise<Buffer | null>;
|
|
155
|
+
/** Fail at once on an option that can't work, for `ensureWebReady` and the core's `webReady`. */
|
|
156
|
+
export declare function validateWebReadyOptions(options: WebReadyOptions): void;
|
|
38
157
|
/**
|
|
39
|
-
*
|
|
158
|
+
* Bring the video at `filePath` to `CONFORM_TARGET`:
|
|
40
159
|
*
|
|
41
|
-
* -
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
160
|
+
* - already conforming → `none`, bytes untouched;
|
|
161
|
+
* - an MP4 with conforming streams but the `moov` at the end → lossless faststart remux in
|
|
162
|
+
* place (`remuxed`);
|
|
163
|
+
* - any other container with conforming streams → lossless remux into a new `.mp4` beside it
|
|
164
|
+
* (`conformed`);
|
|
165
|
+
* - otherwise one ffmpeg run: the video re-encoded to H.264 when its codec, pixel format, bit
|
|
166
|
+
* depth, size, rotation or dynamic range is off (scaled by the longest edge, rotation
|
|
167
|
+
* applied, HDR tone-mapped), the audio re-encoded to AAC unless it already is — in place for
|
|
168
|
+
* an MP4 (`transcoded`), into a new `.mp4` otherwise (`conformed`);
|
|
169
|
+
* - no ffmpeg/ffprobe, a file ffprobe can't read, a failed or timed-out run → `skipped` with
|
|
170
|
+
* the reason; the original is untouched.
|
|
47
171
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
172
|
+
* When the result carries `outputPath`, the conformed file was written there (`<name>.mp4`)
|
|
173
|
+
* and the original is left in place: the caller switches the artifact over, then removes it.
|
|
174
|
+
* With `install: false` nothing is renamed: every rewrite is left at a temporary path beside
|
|
175
|
+
* the input, returned as `outputPath`, for the caller to install (or remove).
|
|
176
|
+
* Never throws for pipeline reasons.
|
|
52
177
|
*
|
|
53
178
|
* NOTE: a rewrite changes the artifact's bytes, so any upload-time checksum
|
|
54
179
|
* recorded for it (e.g. the local adapter's sidecar `checksum` from
|
|
@@ -56,5 +181,7 @@ export declare function scanMoovPosition(filePath: string): Promise<MoovPosition
|
|
|
56
181
|
* Consumers verifying bytes against `getChecksum` must treat it as
|
|
57
182
|
* upload-time provenance, not current-file integrity.
|
|
58
183
|
*/
|
|
59
|
-
export declare function ensureWebReady(filePath: string, options?: WebReadyOptions): Promise<WebReadyResult
|
|
184
|
+
export declare function ensureWebReady(filePath: string, options?: WebReadyOptions): Promise<WebReadyResult & {
|
|
185
|
+
outputPath?: string;
|
|
186
|
+
}>;
|
|
60
187
|
//# sourceMappingURL=web-ready.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-ready.d.ts","sourceRoot":"","sources":["../../src/lib/web-ready.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-ready.d.ts","sourceRoot":"","sources":["../../src/lib/web-ready.ts"],"names":[],"mappings":"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"}
|