Skip to content
This repository was archived by the owner on Nov 27, 2023. It is now read-only.

Commit e3a9414

Browse files
author
Timur Amirov
committed
Make us importAll with react and namespace Component references
1 parent f659381 commit e3a9414

18 files changed

+35
-66
lines changed

Diff for: src/typings.ts

+2-36
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,7 @@ export function createTypings(moduleName: string|null, programAst: any, options:
4747
const tripleSlashDirectives: dom.TripleSlashDirective[] = [];
4848
const m = dom.create.module(moduleName || 'moduleName');
4949

50-
if (hasReactClass(ast, reactComponentName)) {
51-
m.members.push(dom.create.importNamed(reactComponentName || 'Component', reactImport));
52-
} else {
53-
tripleSlashDirectives.push(dom.create.tripleSlashReferenceTypesDirective('react'));
54-
}
50+
m.members.push(dom.create.importAll('React', reactImport));
5551

5652
if (importStatements.length > 0) {
5753
importStatements.forEach(importStatement => {
@@ -104,7 +100,7 @@ function createExportedTypes(m: dom.ModuleDeclaration, ast: AstQuery, componentN
104100
function createExportedClassComponent(m: dom.ModuleDeclaration, componentName: string,
105101
reactComponentName: string|undefined, exportType: dom.DeclarationFlags, interf: dom.InterfaceDeclaration): void {
106102
const classDecl = dom.create.class(componentName);
107-
classDecl.baseType = dom.create.interface(`${reactComponentName || 'Component'}<${interf.name}, any>`);
103+
classDecl.baseType = dom.create.interface(`React.${reactComponentName || 'Component'}<${interf.name}, any>`);
108104
classDecl.flags = exportType;
109105
classDecl.members.push(dom.create.method('render', [], dom.create.namedTypeReference('JSX.Element')));
110106
m.members.push(classDecl);
@@ -271,36 +267,6 @@ function getImportedPropTypes(ast: AstQuery): ImportedPropType[] {
271267
}));
272268
}
273269

274-
function hasReactClass(ast: AstQuery, reactComponentName: string|undefined): boolean {
275-
const res = ast.query(`
276-
// ClassDeclaration[
277-
'${reactComponentName}' == 'undefined'
278-
?
279-
/:superClass MemberExpression[
280-
/:object Identifier[@name == 'React'] &&
281-
/:property Identifier[@name == 'Component']
282-
]
283-
:
284-
/:superClass Identifier[@name == '${reactComponentName}']
285-
]
286-
,
287-
// VariableDeclaration
288-
/ VariableDeclarator[
289-
/:init CallExpression[
290-
'${reactComponentName}' == 'undefined'
291-
?
292-
/:arguments MemberExpression[
293-
/:object Identifier[@name == 'React'] &&
294-
/:property Identifier[@name == 'Component']
295-
]
296-
:
297-
/:arguments Identifier[@name == '${reactComponentName}']
298-
]
299-
]
300-
`);
301-
return res.length > 0;
302-
}
303-
304270
function getInstanceOfPropTypes(ast: AstQuery, importedPropTypes: ImportedPropTypes): string[] {
305271
const {propTypesName, propTypes} = importedPropTypes;
306272
const instanceOfPropType = propTypes.find(({importedName}) => importedName === 'instanceOf');

Diff for: tests/component-without-proptypes.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
export interface TestProps {
55
}
66

7-
export default class Test extends Component<TestProps, any> {
7+
export default class Test extends React.Component<TestProps, any> {
88
render(): JSX.Element;
99
}
1010

Diff for: tests/es6-class.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
import Message from './path/to/Message';
55

@@ -52,7 +52,7 @@ declare module 'component' {
5252
requiredSymbol: Symbol;
5353
}
5454

55-
export class Component extends Component<ComponentProps, any> {
55+
export class Component extends React.Component<ComponentProps, any> {
5656
render(): JSX.Element;
5757
}
5858
}

Diff for: tests/es7-class-babeled-to-es6.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
import Message from './path/to/Message';
55

@@ -52,7 +52,7 @@ declare module 'component' {
5252
requiredSymbol: Symbol;
5353
}
5454

55-
export class MyComponent extends Component<MyComponentProps, any> {
55+
export class MyComponent extends React.Component<MyComponentProps, any> {
5656
render(): JSX.Element;
5757
}
5858
}

Diff for: tests/es7-class-separate-export.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
export interface ComponentProps {
55
optionalAny?: any;
66
}
77

8-
export default class Component extends Component<ComponentProps, any> {
8+
export default class Component extends React.Component<ComponentProps, any> {
99
render(): JSX.Element;
1010
}
1111
}

Diff for: tests/es7-class-top-level-module.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component} from 'react';
1+
import * as React from 'react';
22
import Message from './path/to/Message';
33

44
export type ComponentOptionalUnion = string | number;
@@ -27,6 +27,6 @@ export interface ComponentProps {
2727
requiredArrayOf: string[];
2828
}
2929

30-
export default class Component extends Component<ComponentProps, any> {
30+
export default class Component extends React.Component<ComponentProps, any> {
3131
render(): JSX.Element;
3232
}

Diff for: tests/es7-class.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33
import Message from './path/to/Message';
44

55
export type ComponentOptionalUnion = string | number;
@@ -28,7 +28,7 @@ declare module 'component' {
2828
requiredArrayOf: string[];
2929
}
3030

31-
export default class Component extends Component<ComponentProps, any> {
31+
export default class Component extends React.Component<ComponentProps, any> {
3232
render(): JSX.Element;
3333
}
3434
}

Diff for: tests/import-react-component.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33
}

Diff for: tests/instance-of-proptype-names.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33
import Member from './member';
44

55
export interface TestProps {
66
test?: Member;
77
}
88

9-
export class Test extends Component<TestProps, any> {
9+
export class Test extends React.Component<TestProps, any> {
1010
render(): JSX.Element;
1111
}
1212
}

Diff for: tests/named-export-specifiers.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
/// <reference types="react" />
21
declare module 'component' {
2+
import * as React from 'react';
3+
34
export interface ComponentProps {
45
optionalAny?: any;
56
}

Diff for: tests/preact-definition.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
declare module 'path' {
2-
import {Component} from 'preact';
2+
import * as React from 'preact';
33

44
export interface SomeComponentProps {
55
onClick?: (...args: any[]) => any;
66
}
77

8-
export class SomeComponent extends Component<SomeComponentProps, any> {
8+
export class SomeComponent extends React.Component<SomeComponentProps, any> {
99
render(): JSX.Element;
1010
}
1111
}

Diff for: tests/prop-types.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
declare module 'path' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
export interface Props {
55
optionalString?: string;
66
}
77

8-
export default class extends Component<Props, any> {
8+
export default class extends React.Component<Props, any> {
99
render(): JSX.Element;
1010
}
1111
}

Diff for: tests/pure-component.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
declare module 'component' {
2-
import {PureComponent} from 'react';
2+
import * as React from 'react';
33

44
export interface Props {
55
optionalString?: string;
66
}
77

8-
export default class extends PureComponent<Props, any> {
8+
export default class extends React.PureComponent<Props, any> {
99
render(): JSX.Element;
1010
}
1111
}

Diff for: tests/reference-as-proptypes.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
export interface SomeComponentProps {
55
someString?: string;
66
}
77

8-
export default class SomeComponent extends Component<SomeComponentProps, any> {
8+
export default class SomeComponent extends React.Component<SomeComponentProps, any> {
99
render(): JSX.Element;
1010
}
1111
}

Diff for: tests/references-in-proptypes.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
declare module 'component' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
export type SomeComponentSomeOneOf = "foo" | "bar";
55
export type SomeComponentAnotherOneOf = "foo" | "bar";
@@ -14,7 +14,7 @@ declare module 'component' {
1414
someShape?: SomeComponentSomeShape;
1515
}
1616

17-
export default class SomeComponent extends Component<SomeComponentProps, any> {
17+
export default class SomeComponent extends React.Component<SomeComponentProps, any> {
1818
render(): JSX.Element;
1919
}
2020
}

Diff for: tests/stateless-export-as-default.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
/// <reference types="react" />
21
declare module 'component' {
2+
import * as React from 'react';
3+
34
export interface ComponentProps {
45
text: string;
56
className?: string;

Diff for: tests/stateless.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
/// <reference types="react" />
21
declare module 'component' {
2+
import * as React from 'react';
3+
34
export interface ComponentProps {
45
optionalAny?: any;
56
}

Diff for: tests/unnamed-default-export.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
declare module 'path' {
2-
import {Component} from 'react';
2+
import * as React from 'react';
33

44
export interface Props {
55
onClick?: (...args: any[]) => any;
66
}
77

8-
export default class extends Component<Props, any> {
8+
export default class extends React.Component<Props, any> {
99
render(): JSX.Element;
1010
}
1111
}

0 commit comments

Comments
 (0)