fix(panel): revert import-flow fs shim — broke proxy/hi-res import on UXP
v2.2.3 wrapped UXP's fs calls in a node-style `fs.promises || callback`
shim. UXP's require('fs') returns promise-based methods (not node
callback-style), so the fallback `fs.writeFile(path, data, cb)` path
never settles and proxy/hi-res import hung — import stopped working
entirely. Restore the v2.1.6 (2.2.2-shipped) direct `await fs.writeFile /
fs.stat / fs.readFile` form, which is verified working in Premiere.
Capture/recorder/deltacast untouched.
This commit is contained in:
parent
34809e9337
commit
e084e0a981
1 changed files with 10 additions and 19 deletions
|
|
@ -1,29 +1,20 @@
|
|||
// import-flow.js — v2.2.3
|
||||
// import-flow.js — v2.2.4
|
||||
// premierepro API: docs say sync, runtime returns Promises. Await everything.
|
||||
//
|
||||
// NOTE: UXP's require('fs') exposes promise-returning writeFile/stat/readFile
|
||||
// directly — await them as-is. Do NOT wrap them in a node-style
|
||||
// `fs.promises || callback` shim: UXP's methods are not node-callback-style,
|
||||
// so the callback fallback never settles and import hangs (regressed in
|
||||
// v2.2.3, reverted here).
|
||||
|
||||
(function () {
|
||||
const Import = {};
|
||||
|
||||
const fs = require('fs');
|
||||
const fsPromises = fs.promises || {};
|
||||
// window.path is a UXP global (v6.4+) — no require('path')
|
||||
let os; try { os = require('os'); } catch (_) { os = {}; }
|
||||
let uxpFs; try { uxpFs = require('uxp').storage.localFileSystem; } catch (_) { uxpFs = null; }
|
||||
|
||||
// UXP fs is callback-based — wrap in Promise where promisify unavailable.
|
||||
function _writeFile(path, data) {
|
||||
if (fsPromises.writeFile) return fsPromises.writeFile(path, data);
|
||||
return new Promise((resolve, reject) => { fs.writeFile(path, data, (err) => { if (err) reject(err); else resolve(); }); });
|
||||
}
|
||||
function _readFile(path) {
|
||||
if (fsPromises.readFile) return fsPromises.readFile(path);
|
||||
return new Promise((resolve, reject) => { fs.readFile(path, (err, data) => { if (err) reject(err); else resolve(data); }); });
|
||||
}
|
||||
function _stat(path) {
|
||||
if (fsPromises.stat) return fsPromises.stat(path);
|
||||
return new Promise((resolve, reject) => { fs.stat(path, (err, stats) => { if (err) reject(err); else resolve(stats); }); });
|
||||
}
|
||||
|
||||
// ── Temp folder ──────────────────────────────────────────────────
|
||||
async function _getTempBase() {
|
||||
if (uxpFs && uxpFs.getTemporaryFolder) {
|
||||
|
|
@ -54,7 +45,7 @@
|
|||
|
||||
// Returns true if the path already exists on disk.
|
||||
Import._fileExists = async function (filePath) {
|
||||
try { await _stat(filePath); return true; } catch (_) { return false; }
|
||||
try { await fs.stat(filePath); return true; } catch (_) { return false; }
|
||||
};
|
||||
|
||||
// Write ArrayBuffer to disk via fs.writeFile.
|
||||
|
|
@ -62,7 +53,7 @@
|
|||
// previous import) we treat that as success: the bytes are already there.
|
||||
Import._writeBuffer = async function (destPath, arrayBuffer) {
|
||||
try {
|
||||
await _writeFile(destPath, arrayBuffer);
|
||||
await fs.writeFile(destPath, arrayBuffer);
|
||||
} catch (e) {
|
||||
const busy = e.code === 'EBUSY' || /resource busy/i.test(String(e.message));
|
||||
if (!busy) throw e;
|
||||
|
|
@ -194,7 +185,7 @@
|
|||
const filename = meta.filename || path.basename(nativePath);
|
||||
const contentType = _contentType(filename);
|
||||
|
||||
const buf = await _readFile(nativePath);
|
||||
const buf = await fs.readFile(nativePath);
|
||||
const size = buf.byteLength != null ? buf.byteLength : buf.length;
|
||||
|
||||
if (size <= SIMPLE_MAX) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue