Skip to content

Commit

Permalink
fix: expose typeChecker instead of program
Browse files Browse the repository at this point in the history
  • Loading branch information
armano2 committed Mar 22, 2023
1 parent 459942b commit 20ff467
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 14 deletions.
2 changes: 1 addition & 1 deletion packages/website-eslint/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"type": "commonjs",
"exports": {
".": {
"types": "./dist/index.d.ts",
"types": "./types/index.d.ts",
"default": "./dist/index.js"
}
},
Expand Down
2 changes: 1 addition & 1 deletion packages/website/src/components/linter/createParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export function createParser(
storedAST: converted.estree,
storedTsAST: tsAst,
storedScope: scopeManager,
program: program,
typeChecker: checker,
});

return {
Expand Down
2 changes: 1 addition & 1 deletion packages/website/src/components/linter/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export interface UpdateModel {
storedAST?: TSESTree.Program;
storedTsAST?: ts.Node;
storedScope?: ScopeManager;
program?: ts.Program;
typeChecker?: ts.TypeChecker;
}

export interface Disposable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ function PlaygroundRoot(): JSX.Element {
<ErrorsViewer value={errors} />
) : config.showAST === 'types' && astModel.storedTsAST ? (
<TypesDetails
program={astModel.program}
typeChecker={astModel.typeChecker}
value={astModel.storedTsAST}
onHoverNode={setSelectedRange}
cursorPosition={cursorPosition}
Expand Down
13 changes: 6 additions & 7 deletions packages/website/src/components/typeDetails/TypeInfo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { isRecord, isTSNode } from '../ast/utils';

export interface TypeInfoProps {
readonly value: ts.Node;
readonly program?: ts.Program;
readonly typeChecker?: ts.TypeChecker;
readonly onHoverNode?: OnHoverNodeFn;
readonly onSelect: (value: ts.Node) => void;
}
Expand Down Expand Up @@ -63,16 +63,15 @@ function TypeGroup(props: TypeGroupProps): JSX.Element {

export function TypeInfo({
value,
program,
typeChecker,
onHoverNode,
onSelect,
}: TypeInfoProps): JSX.Element {
const computed = useMemo(() => {
if (!program || !value) {
if (!typeChecker || !value) {
return undefined;
}
const info: InfoModel = {};
const typeChecker = program.getTypeChecker();
try {
const type = typeChecker.getTypeAtLocation(value);
info.type = type;
Expand All @@ -99,7 +98,7 @@ export function TypeInfo({
info.contextualType = undefined;
}
return info;
}, [value, program]);
}, [value, typeChecker]);

const onSelectNode = useCallback(
(selection: unknown) => {
Expand All @@ -111,8 +110,8 @@ export function TypeInfo({
[onSelect, onHoverNode, value],
);

if (!program || !computed) {
return <div>Program not available</div>;
if (!typeChecker || !computed) {
return <div>TypeChecker not available</div>;
}

return (
Expand Down
6 changes: 3 additions & 3 deletions packages/website/src/components/typeDetails/TypesDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ import { TypeInfo } from './TypeInfo';

export interface TypesDetailsProps {
readonly value: ts.Node;
readonly program?: ts.Program;
readonly typeChecker?: ts.TypeChecker;
readonly cursorPosition?: number;
readonly onHoverNode?: OnHoverNodeFn;
}

export function TypesDetails({
cursorPosition,
value,
program,
typeChecker,
onHoverNode,
}: TypesDetailsProps): JSX.Element {
const [selectedNode, setSelectedNode] = useState<ts.Node>(value);
Expand Down Expand Up @@ -56,7 +56,7 @@ export function TypesDetails({
<TypeInfo
onHoverNode={onHoverNode}
onSelect={setSelectedNode}
program={program}
typeChecker={typeChecker}
value={selectedNode}
/>
</div>
Expand Down

0 comments on commit 20ff467

Please sign in to comment.