import {defineConfig} from 'vite';
import {readFileSync} from 'fs';
import {resolve, join, dirname} from 'path';
import {fileURLToPath} from 'url';

const currentDir = dirname(fileURLToPath(import.meta.url));

const {devDependencies, peerDependencies, camelCaseName} = JSON.parse(readFileSync(join(currentDir, 'package.json')));

export default defineConfig({
	build: {
		lib: {
			formats: ['cjs', 'umd', 'es'],
			entry: resolve(currentDir, 'src', 'lib', 'index.ts'),
			name: camelCaseName,
			fileName: (format) => (format === 'cjs' ? 'index.cjs' : `index.${format}.js`),
		},
		rollupOptions: {
			// make sure to externalize deps that shouldn't be bundled
			// into your library
			external: [...Object.keys(devDependencies || {}), ...Object.keys(peerDependencies || {})],
			output: {
				// Provide global variables to use in the UMD build
				// for externalized deps
				globals: {
					// for example react: 'React'
				},
			},
		},
	},
});