passsy / explicit-exportsr3
Use Explicit Exports with show
PublicExport a package's public symbols with explicit show clauses, so the public API is a deliberate list and internals do not leak.
tests, run by the registry5 passed · slowest 2.0 ms
✓fires2.0 ms
fires on a bare export in the API file
write lib/demo.dartfired: line 1
export 'src/logger.dart';
export 'src/writer.dart' show Writer;
✓fires1.8 ms
fires on an export with hide
write lib/demo.dartfired: line 1
export 'src/logger.dart' hide LoggerInternals;
✓quiet1.7 ms
stays quiet on src files re-exporting internally
write lib/src/logger.dartstayed quiet
export 'spans.dart';
✓skips0.0 ms
stays quiet outside lib
write bin/tool.dartno handler of the detector wants this event
export 'package:demo/demo.dart';
✓quiet1.7 ms
stays quiet on a legacy bare export when the agent edits elsewhere or reads
write lib/demo.dart · wrote line 2stayed quiet
export 'src/logger.dart';
export 'src/writer.dart' show Writer;
read lib/demo.dartno handler of the detector wants this event
export 'src/logger.dart';
export 'src/writer.dart' show Writer;
detector.test.tseach detect() call runs the real detectorEdit
import { expect, test } from "vitest";
import { detect, edit, read, write } from "@wellactually/sdk/v3/test";
const api = "export 'src/logger.dart';\nexport 'src/writer.dart' show Writer;\n";
test("fires on a bare export in the API file", () => {
expect(detect(write("lib/demo.dart", api))).toEqual([{ line: 1 }]);
});
test("fires on an export with hide", () => {
expect(detect(write("lib/demo.dart", "export 'src/logger.dart' hide LoggerInternals;\n"))).toEqual([{ line: 1 }]);
});
test("stays quiet on src files re-exporting internally", () => {
expect(detect(write("lib/src/logger.dart", "export 'spans.dart';\n"))).toEqual([]);
});
test("stays quiet outside lib", () => {
expect(detect(write("bin/tool.dart", "export 'package:demo/demo.dart';\n"))).toEqual([]);
});
test("stays quiet on a legacy bare export when the agent edits elsewhere or reads", () => {
expect(detect(edit("lib/demo.dart", api, { written: "export 'src/writer.dart' show Writer;" }))).toEqual([]);
expect(detect(read("lib/demo.dart", api))).toEqual([]);
});