/** * iife/cjs usage extends esm default export – so import it all */ import plugin, * as components from '@/vue-socials-esm'; /** * Attach named exports directly to plugin. IIFE/CJS will * only expose one global var, with component exports exposed as properties of * that global var (eg. plugin.component) */ type NamedExports = Exclude; type ExtendedPlugin = typeof plugin & NamedExports; Object.entries(components).forEach((item) => { const componentName = item[0]; const component = item[1]; if (componentName !== 'default') { const key = componentName as Exclude; const val = component as Exclude; (plugin as ExtendedPlugin)[key] = val; } }); export default plugin;