You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
registrySupportsTimeField is a single global boolean, but it describes a capability of an individual registry: whether its packument carries the time field. In a workspace that resolves from more than one registry — the public npm registry plus a self-hosted or mirrored one — one flag cannot be right for both.
Now that #13942 adds registryOptions, a per-registry map keyed by registry URL, this belongs there as supportsTimeField.
Why it matters today
Two code paths read the flag once and apply the answer to every registry:
pnpm11/cache/commands/src/cache.cmd.ts:69 — picks the cache type when resolutionMode is time-based.
pnpm11/exec/commands/src/dlx.ts:115 — the same decision for dlx.
A workspace whose default registry serves time but whose scoped registry does not (or the reverse) gets the wrong behavior for one of them, with no way to express the difference. minimumReleaseAgeIgnoreMissingTime is the same registry deficiency seen from the other side — what to do when time is absent — so the two should be looked at together; it may be that one per-registry fact subsumes both rather than moving each as-is.
The existing global registrySupportsTimeField stays as the default for registries with no entry, so nothing changes for anyone who does not opt in. The registry prefix in the name becomes redundant once it sits under a registry key, which is a small bonus.
Notes
This is a correctness fix for multi-registry workspaces rather than a refactor; framing it that way should decide whether it is worth the churn.
Applies to both the TypeScript CLI and pacquet, like the setting it joins.
The admission rule worth keeping for registryOptions: it holds facts about the server, not policies about your project. supportsTimeField is a fact. minimumReleaseAge and trustPolicy are policies and should stay global — per-registry granularity there would make it easy to quietly weaken supply-chain checks for one host.
This discussion was converted from issue #13943 on September 26, 2026 11:07.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Summary
registrySupportsTimeFieldis a single global boolean, but it describes a capability of an individual registry: whether its packument carries thetimefield. In a workspace that resolves from more than one registry — the public npm registry plus a self-hosted or mirrored one — one flag cannot be right for both.Now that #13942 adds
registryOptions, a per-registry map keyed by registry URL, this belongs there assupportsTimeField.Why it matters today
Two code paths read the flag once and apply the answer to every registry:
pnpm11/cache/commands/src/cache.cmd.ts:69— picks the cache type whenresolutionModeistime-based.pnpm11/exec/commands/src/dlx.ts:115— the same decision fordlx.A workspace whose default registry serves
timebut whose scoped registry does not (or the reverse) gets the wrong behavior for one of them, with no way to express the difference.minimumReleaseAgeIgnoreMissingTimeis the same registry deficiency seen from the other side — what to do whentimeis absent — so the two should be looked at together; it may be that one per-registry fact subsumes both rather than moving each as-is.Proposed shape
The existing global
registrySupportsTimeFieldstays as the default for registries with no entry, so nothing changes for anyone who does not opt in. Theregistryprefix in the name becomes redundant once it sits under a registry key, which is a small bonus.Notes
registryOptions: it holds facts about the server, not policies about your project.supportsTimeFieldis a fact.minimumReleaseAgeandtrustPolicyare policies and should stay global — per-registry granularity there would make it easy to quietly weaken supply-chain checks for one host.Written by an agent (Claude Code, claude-opus-5).
All reactions