From 877f93f43209fdf4524f4ae10741b0c03c2f4cab Mon Sep 17 00:00:00 2001 From: Yann Braga Date: Mon, 8 Aug 2022 19:29:41 +0200 Subject: [PATCH] no-uninstalled-addons: improve local addons filter --- lib/rules/no-uninstalled-addons.ts | 13 ++++++++++++- tests/lib/rules/no-uninstalled-addons.test.ts | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/rules/no-uninstalled-addons.ts b/lib/rules/no-uninstalled-addons.ts index 8c9e20c..665f268 100644 --- a/lib/rules/no-uninstalled-addons.ts +++ b/lib/rules/no-uninstalled-addons.ts @@ -84,6 +84,17 @@ export = createStorybookRule({ return installedAddons.includes(addonName) } + const filterLocalAddons = (addon: string) => { + const isLocalAddon = (addon: string) => + addon.startsWith('.') || + addon.startsWith('/') || + // for local Windows files e.g. (C: F: D:) + /\w:.*/.test(addon) || + addon.startsWith('\\') + + return !isLocalAddon(addon) + } + type AreThereAddonsNotInstalled = ( addons: string[], installedSbAddons: string[] @@ -91,7 +102,7 @@ export = createStorybookRule({ const areThereAddonsNotInstalled: AreThereAddonsNotInstalled = (addons, installedSbAddons) => { const result = addons // remove local addons (e.g. ./my-addon/register.js) - .filter((addon) => !addon.startsWith('.')) + .filter(filterLocalAddons) .filter((addon) => !isAddonInstalled(addon, installedSbAddons)) .map((addon) => ({ name: addon })) return result.length ? result : false diff --git a/tests/lib/rules/no-uninstalled-addons.test.ts b/tests/lib/rules/no-uninstalled-addons.test.ts index 40df558..3be0686 100644 --- a/tests/lib/rules/no-uninstalled-addons.test.ts +++ b/tests/lib/rules/no-uninstalled-addons.test.ts @@ -93,6 +93,10 @@ ruleTester.run('no-uninstalled-addons', rule, { addons: [ "../my-local-addon", "../my-local-addon/index.cjs", + "/Users/foo/my-local-addon/index.js", + "/mount/foo/my-local-addon/index.js", + "C:\\Users\\foo\\my-local-addon/index.js", + "D:\\Users\\foo\\my-local-addon/index.js", ] } `,