Measured while implementing #5692, which converged this predicate onto @object-ui/core's EXPANDABLE_FIELD_TYPES. Recording it because the convergence made the absence visible: the behaviour half of that change lands entirely in computeLookupExpand, and this face turned out to have no caller to change.
Measured
isLookupType is exported from packages/plugin-dashboard/src/recordFields.tsx and has no production consumer:
Its docblock describes it as driving $expand ("used to drive $expand"), but the widget's actual $expand whitelist is computeLookupExpand in ObjectDataTable.tsx, which is a separate implementation of the same question — the two copies #5692 converged.
Why record it rather than delete it in passing
Deletion is a behaviour-neutral change only if the "no consumer" reading is right, and this is exactly the kind of exported-but-unused helper that turns out to be a package's de-facto extension point. It is also, plausibly, the residue of a consolidation that moved the live decision into computeLookupExpand and left the predicate behind — in which case the right move might be the opposite one (have computeLookupExpand call it, so the package has one relation predicate rather than two functions that agree only because #5692 pointed both at the same set).
Either way it is a call about this package's shape, not part of #5692's ruled scope.
Options
B looks better on the "hard to get wrong" axis, but it is a behaviour-affecting refactor of a live path and wants its own evidence.
Related: #5692, #4914.
Generated by Claude Code
Measured while implementing #5692, which converged this predicate onto
@object-ui/core'sEXPANDABLE_FIELD_TYPES. Recording it because the convergence made the absence visible: the behaviour half of that change lands entirely incomputeLookupExpand, and this face turned out to have no caller to change.Measured
isLookupTypeisexported frompackages/plugin-dashboard/src/recordFields.tsxand has no production consumer:grep -rn "isLookupType" packages/ apps/(excludingnode_modules) returns hits only inrecordFields.tsxitself and inpackages/plugin-dashboard/src/__tests__/lookupTypes.retiredFieldType.test.ts— plus, since finding(plugin-dashboard): two more private copies of the reference-bearing field family — #5312's "LAST private copy" claim is false #5692, its new identity pin.packages/plugin-dashboard/src/index.tsxexportsrecordFields' siblings only throughObjectDataTable/RecordDetailDrawer, and neverrecordFieldsitself, so it is not part of@object-ui/plugin-dashboard's published surface either.Its docblock describes it as driving
$expand("used to drive$expand"), but the widget's actual$expandwhitelist iscomputeLookupExpandinObjectDataTable.tsx, which is a separate implementation of the same question — the two copies #5692 converged.Why record it rather than delete it in passing
Deletion is a behaviour-neutral change only if the "no consumer" reading is right, and this is exactly the kind of exported-but-unused helper that turns out to be a package's de-facto extension point. It is also, plausibly, the residue of a consolidation that moved the live decision into
computeLookupExpandand left the predicate behind — in which case the right move might be the opposite one (havecomputeLookupExpandcall it, so the package has one relation predicate rather than two functions that agree only because #5692 pointed both at the same set).Either way it is a call about this package's shape, not part of #5692's ruled scope.
Options
lookupTypes.retiredFieldType.test.tsthat only exercise it). Smallest surface; losesownersurvives as a live field-type in ~13 more code faces after #4814's retirement — including a published Zod enum that still accepts it #4914's item-9 coverage of this face, which is a real loss only if the face comes back.computeLookupExpand's inner test callisLookupType, so the retirement gate and the family read live in one function instead of two identical ones. Keepsownersurvives as a live field-type in ~13 more code faces after #4814's retirement — including a published Zod enum that still accepts it #4914's coverage and removes the remaining structural duplication between the two files.B looks better on the "hard to get wrong" axis, but it is a behaviour-affecting refactor of a live path and wants its own evidence.
Related: #5692, #4914.
Generated by Claude Code