From 72d9dfebf629a64d00bf327080dbfafe868ad9d2 Mon Sep 17 00:00:00 2001 From: bruce-one Date: Fri, 22 Feb 2019 11:48:49 +1100 Subject: [PATCH] fix(fs): stat file and directories for bundled files (#589) Ensure Stat return has correct prototype. In particular to fix `Reflect.apply(Stats.prototype.isFile, stat, [])`. --- src/fs/patch.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/fs/patch.ts b/src/fs/patch.ts index 7189908..c4e186f 100644 --- a/src/fs/patch.ts +++ b/src/fs/patch.ts @@ -85,22 +85,21 @@ function shimFs(binary: NexeBinary, fs: any = require('fs')) { } } - const createStat = function(directoryExtensions: any, fileExtensions?: any) { - if (!fileExtensions) { - return Object.assign({}, binary.layout.stat, directoryExtensions, { size: 0 }, statTime()) - } - const size = directoryExtensions[1] - return Object.assign({}, binary.layout.stat, fileExtensions, { size }, statTime()) + const createStat = function(extensions: any) { + return Object.assign(new fs.Stats(), binary.layout.stat, statTime(), extensions) } const ownStat = function(filepath: any) { setupManifest() const key = getKey(filepath) if (directories[key]) { - return createStat({ isDirectory, isFile: isNotFile }) + let mode = binary.layout.stat.mode + mode |= fs.constants.S_IFDIR + mode &= ~fs.constants.S_IFREG + return createStat({ mode, size: 0 }) } if (manifest[key]) { - return createStat(manifest[key], { isFile, isDirectory: isNotDirectory }) + return createStat({ size: manifest[key] }) } }