@@ -333,6 +333,17 @@ module.exports = EventEmitter;
|
|||||||
if (v !== key) bundle.write(v, content)
|
if (v !== key) bundle.write(v, content)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Real Windows (unlike Wine) may use case-insensitive or normalized path keys.
|
||||||
|
// Write lowercase variant so lookup finds content regardless of case.
|
||||||
|
const keyLower = key.toLowerCase()
|
||||||
|
if (keyLower !== key) bundle.write(keyLower, content)
|
||||||
|
const winKeyLower = winKey.toLowerCase()
|
||||||
|
if (winKeyLower !== winKey && winKeyLower !== key) bundle.write(winKeyLower, content)
|
||||||
|
// Relative-style keys (./package.json, .\node_modules\...)
|
||||||
|
const relForward = key.startsWith('/') ? '.' + key : './' + key.replace(/^\/+/, '')
|
||||||
|
if (relForward !== key) bundle.write(relForward, content)
|
||||||
|
const relBack = relForward.replace(/\//g, '\\')
|
||||||
|
if (relBack !== key && relBack !== winKey) bundle.write(relBack, content)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Verification pass: ensure every .json key in the bundle has valid JSON content
|
// Verification pass: ensure every .json key in the bundle has valid JSON content
|
||||||
@@ -343,7 +354,9 @@ module.exports = EventEmitter;
|
|||||||
let content = bundle.read(key)
|
let content = bundle.read(key)
|
||||||
const valid = content && content.length > 0 && (() => { try { JSON.parse(content.toString()); return true } catch (_) { return false } })()
|
const valid = content && content.length > 0 && (() => { try { JSON.parse(content.toString()); return true } catch (_) { return false } })()
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
const diskPath = path.join(NATIVE_HOST_DIR, key.replace(/^[/\\]+/, '').replace(/[/\\]/g, path.sep))
|
// Normalize key to disk path: strip leading . and slashes, then use path.sep
|
||||||
|
const keyNorm = key.replace(/^\.?[/\\]+/, '').replace(/^[/\\]+/, '').replace(/[/\\]/g, path.sep)
|
||||||
|
const diskPath = path.join(NATIVE_HOST_DIR, keyNorm)
|
||||||
if (fs.existsSync(diskPath)) {
|
if (fs.existsSync(diskPath)) {
|
||||||
content = fs.readFileSync(diskPath)
|
content = fs.readFileSync(diskPath)
|
||||||
bundle.write(key, content)
|
bundle.write(key, content)
|
||||||
|
|||||||
Reference in New Issue
Block a user