Skip to content

Commit a3f7bb3

Browse files
authored
Merge pull request #116 from theKashey/type-friends
Migrate to TypeScript and Refactor All The Things
2 parents 36fd454 + 8b02baf commit a3f7bb3

File tree

130 files changed

+14934
-16500
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+14934
-16500
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ node_modules/
22
/lib/
33
/dist/
44
.DS_Store
5-
.nyc_output
5+
.nyc_output
6+
yarn-error.log
7+
*.tgz

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8.5.0

.travis.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
language: node_js
2+
node_js:
3+
- '8'
4+
cache: yarn
5+
script:
6+
- yarn
7+
- yarn test:ci
8+
notifications:
9+
email: false

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<img src="./assets/imported-logo.png" alt="imported components" width="409" align="center">
55
<br/>
66
<br/>
7-
SSR-friendly code splitting made easier for any platform.
7+
SSR-friendly code splitting compatible with any platform.
88
<br/>
9-
Deliver a better experience with a single import.
9+
Deliver a better experience within a single import.
1010
<br/>
1111
<br/>
1212

File renamed without changes.

__tests__/__fixtures__/babel/node/expected.js

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.
File renamed without changes.

__tests__/babel.spec.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import {transform} from '@babel/core'
2+
import {join} from 'path'
3+
import {readdirSync, statSync, readFileSync} from 'fs';
4+
5+
const FIXTURE_PATH = join(__dirname, '__fixtures__/babel');
6+
7+
const testFolders:string[] =
8+
readdirSync(FIXTURE_PATH)
9+
.filter(file =>
10+
statSync(join(FIXTURE_PATH, file)).isDirectory(),
11+
);
12+
13+
const testPlugin = {
14+
node: (code: string) => {
15+
const result = transform(code, {
16+
presets: ['@babel/preset-react'],
17+
plugins: [require.resolve('../dist/es5/babel'), 'dynamic-import-node'],
18+
});
19+
20+
return result.code;
21+
},
22+
webpack: (code: string) => {
23+
const result = transform(code, {
24+
presets: ['@babel/preset-react'],
25+
plugins: [require.resolve('../dist/es5/babel')]
26+
});
27+
28+
return result.code;
29+
}
30+
};
31+
32+
describe('babel', () => {
33+
testFolders.forEach(folderName => {
34+
const actual = readFileSync(
35+
join(FIXTURE_PATH, folderName, 'actual.js'),
36+
'utf8',
37+
);
38+
const expected = readFileSync(
39+
join(FIXTURE_PATH, folderName, 'expected.js'),
40+
'utf8',
41+
);
42+
43+
it(`works with ${folderName}`, () => {
44+
const result = testPlugin[folderName](actual)
45+
expect(result.trim()).toBe(expected.trim())
46+
})
47+
})
48+
})

__tests__/componentLoader.spec.tsx

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import * as React from 'react';
2+
import {mount} from 'enzyme';
3+
import loader from '../src/HOC';
4+
import {ImportedComponent} from '../src/Component';
5+
import toLoadable from '../src/loadable';
6+
7+
describe('Async Component', () => {
8+
9+
describe('loader', () => {
10+
it('should load component', (done) => {
11+
const TargetComponent = ({payload}: any) => <div>{payload}</div>;
12+
const Component = loader(() => TargetComponent);
13+
14+
const wrapper = mount(<Component payload={42}/>);
15+
16+
expect(wrapper.find(TargetComponent)).toHaveLength(0)
17+
setImmediate(() => {
18+
wrapper.update();
19+
expect(wrapper.find(TargetComponent).html()).toContain("42");
20+
wrapper.unmount();
21+
done();
22+
});
23+
});
24+
25+
it('forwardRef', (done) => {
26+
const TargetComponent = React.forwardRef<any, any>(({payload}, ref) => <div ref={ref}>{payload}</div>);
27+
const Component = loader(() => TargetComponent);
28+
const ref = React.createRef();
29+
mount(<Component payload={42} ref={ref}/>);
30+
31+
setImmediate(() => {
32+
expect(ref.current).not.toBe(null);
33+
done();
34+
});
35+
});
36+
});
37+
38+
describe("SSR", () => {
39+
40+
it('should precache Components', async () => {
41+
const TargetComponent = ({payload}) => <div>{payload}</div>;
42+
const LoadingComponent = () => <div>loading</div>;
43+
const loader = toLoadable(() => Promise.resolve(TargetComponent));
44+
await loader.load();
45+
46+
const wrapper = mount(
47+
<ImportedComponent
48+
loadable={loader}
49+
LoadingComponent={LoadingComponent}
50+
forwardProps={{payload: 42}}
51+
/>
52+
);
53+
expect(wrapper.find(LoadingComponent)).toHaveLength(0);
54+
expect(wrapper.find(TargetComponent).html()).toContain('42');
55+
});
56+
});
57+
});

0 commit comments

Comments
 (0)