[READ-ONLY] Mirror of https://github.com/bombshell-dev/tools. Internal CLI to standardize tooling across all Bombshell projects
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102import { describe, it, expect } from 'vitest';import { createFixture } from './test-utils/index.ts';import { getPublicSurface } from './surface.ts';
describe('getPublicSurface', () => { it('maps exports dist paths back to src', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-pkg', exports: { '.': { types: './dist/index.d.mts', import: './dist/index.mjs' }, './utils': './dist/utils.mjs', }, }, }); const surface = await getPublicSurface(fixture.root); expect(surface.sort()).toEqual(['src/index.ts', 'src/utils.ts']); });
it('maps bin entries to src', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-cli', bin: { 'test-cli': './dist/cli.mjs' } }, }); const surface = await getPublicSurface(fixture.root); expect(surface).toEqual(['src/cli.ts']); });
it('skips wildcard passthrough exports', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-pkg', exports: { '.': './dist/index.mjs', './*': './dist/*' }, }, }); const surface = await getPublicSurface(fixture.root); expect(surface).toEqual(['src/index.ts']); });
it('keeps source-exporting packages as-is', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-pkg', exports: './src/index.ts' }, }); const surface = await getPublicSurface(fixture.root); expect(surface).toEqual(['src/index.ts']); });
it('falls back to main/module when exports is absent', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-pkg', main: './dist/index.cjs', module: './dist/index.mjs' }, }); const surface = await getPublicSurface(fixture.root); expect(surface).toEqual(['src/index.ts']); });
it('ignores non-code targets', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-pkg', exports: { '.': './dist/index.mjs', './package.json': './package.json', './skills/*': './skills/*', './styles.css': './dist/styles.css', }, }, }); const surface = await getPublicSurface(fixture.root); expect(surface).toEqual(['src/index.ts']); });
it('returns empty for packages without a publish surface', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-app', private: true }, }); const surface = await getPublicSurface(fixture.root); expect(surface).toEqual([]); });
it('collects surface from conventional workspace packages', async () => { const fixture = await createFixture({ 'package.json': { name: 'test-mono', private: true }, packages: { alpha: { 'package.json': { name: 'alpha', exports: './dist/index.mjs' }, }, beta: { 'package.json': { name: 'beta', exports: { '.': './dist/mod.mjs', './extra': './dist/extra.mjs' }, }, }, }, }); const surface = await getPublicSurface(fixture.root); expect(surface.sort()).toEqual([ 'packages/alpha/src/index.ts', 'packages/beta/src/extra.ts', 'packages/beta/src/mod.ts', ]); });});