From 3a06f76545cac43ed2dd5446c80fd7d771c75230 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 1 Sep 2020 15:44:49 +0300 Subject: [PATCH] extensions-api -- in-progress / loading extension manifest fix Signed-off-by: Roman --- src/extensions/extension-store.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/extensions/extension-store.ts b/src/extensions/extension-store.ts index 06e3de018f..3ed7249248 100644 --- a/src/extensions/extension-store.ts +++ b/src/extensions/extension-store.ts @@ -52,21 +52,22 @@ export class ExtensionStore extends BaseStore { async loadExtensions(basePath: string): Promise { const paths = await fs.readdir(basePath); - const extensionsStats = paths.map(fileName => { + const manifestsLoading = paths.map(fileName => { const absPath = path.resolve(basePath, fileName); - const manifestPath = path.resolve(absPath, "manifest.json"); - return fs.stat(manifestPath).then(async stat => { - if (stat.isFile()) { + const manifestPath = path.resolve(absPath, "package.json"); + return new Promise(async resolve => { + try { const manifestJson = await fs.readJson(manifestPath); - const manifest: ExtensionManifest = { + resolve({ ...manifestJson, manifestPath: manifestPath, - } - return manifest; + }); + } catch (err) { + resolve(null); } }) }); - let extensions = await Promise.all(extensionsStats.map(extStat => extStat.catch(() => null))); + let extensions = await Promise.all(manifestsLoading); extensions = extensions.filter(v => !!v); // filter out files and invalid folders (without manifest.json) logger.info(`[EXTENSION-STORE]: loaded ${extensions.length} extensions`, { basePath, extensions }); return extensions;