Skip to content

Commit effd66f

Browse files
committed
test(metadata): keep the new pin out of the package's frozen type-check debt (#6548)
Measured: as first written the five cases added 3 raw tsc errors to @objectstack/metadata's DEBT ledger entry (1 TS2835 from an extensionless `./loaders/loader-interface` import, 2 TS7006 from the un-annotated watcher callbacks the unresolved `./metadata-manager` import cascades into). Spelling the new import with `.js` and annotating the two callbacks with MetadataWatchEvent puts the file back on its origin/main composition exactly — 2 TS2835 + 14 TS7006, unchanged — so the pin adds zero debt. The `.js` also makes `implements MetadataLoader` on the fixture a real check rather than a comment over an `any`. The two pre-existing extensionless imports are #4311's ledger and are left alone. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KDU3qAuJyajAQm3GkUXdfA
1 parent 26d4348 commit effd66f

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

packages/metadata/src/register-notifies-watchers.test.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,14 @@ import type {
5252
} from '@objectstack/spec/system';
5353
import { MetadataManager } from './metadata-manager';
5454
import { MemoryLoader } from './loaders/memory-loader';
55-
import type { MetadataLoader } from './loaders/loader-interface';
55+
// `.js` deliberately, unlike the three extensionless imports above it: under
56+
// `moduleResolution: nodenext` an extensionless relative import does not
57+
// resolve, and every symbol it names silently becomes `any` (AGENTS.md, the
58+
// TS7006 cascade). Spelling this one correctly is what makes `implements
59+
// MetadataLoader` on the fixture below an actual check rather than decoration.
60+
// The three above are this package's pre-existing type-check debt (#4311) and
61+
// are left for whoever pays that ledger down.
62+
import type { MetadataLoader } from './loaders/loader-interface.js';
5663
import { DEFAULT_METADATA_TYPE_REGISTRY } from '@objectstack/spec/kernel';
5764

5865
vi.mock('@objectstack/core', () => ({
@@ -557,7 +564,7 @@ describe('#6548 — register() announces only once every WRITABLE LOADER holds t
557564
const manager = managerOver(fast, slow);
558565

559566
const seen: MetadataWatchEvent[] = [];
560-
manager.subscribe('object', (event) => {
567+
manager.subscribe('object', (event: MetadataWatchEvent) => {
561568
seen.push(event);
562569
});
563570

@@ -586,7 +593,7 @@ describe('#6548 — register() announces only once every WRITABLE LOADER holds t
586593
const manager = managerOver(loader);
587594

588595
const seen: MetadataWatchEvent[] = [];
589-
manager.subscribe('object', (event) => {
596+
manager.subscribe('object', (event: MetadataWatchEvent) => {
590597
seen.push(event);
591598
});
592599

0 commit comments

Comments
 (0)