Skip to content

Commit f675153

Browse files
nataly87sphilipp-spiess
authored andcommitted
Bundle and test typescript declarations (#20)
related to #12 * updated build script to copy type declarations to dist dir * added type tests
1 parent 7adcfa1 commit f675153

File tree

10 files changed

+1173
-15
lines changed

10 files changed

+1173
-15
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
.idea/
12
node_modules/
23
coverage/
34
dist/*.js
5+
dist/*.ts

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ install:
55
- "yarn global add codecov"
66
- "yarn install --freeze-lockfile"
77
script:
8-
- "yarn test --coverage"
8+
- "yarn test:js --coverage"
99
- "yarn prettier --list-different"
1010
- "yarn test:types:flow"
11+
- "yarn test:types:ts"
1112
- "codecov"
1213
cache: yarn

package.json

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"name": "react-recomponent",
33
"version": "1.0.0-rc.2",
44
"main": "dist/react-recomponent.js",
5+
"typings": "dist/react-recomponent.d.ts",
56
"umd:main": "dist/react-recomponent.umd.js",
67
"module": "dist/react-recomponent.m.js",
78
"source": "src/index.js",
@@ -17,9 +18,11 @@
1718
"babel-jest": "^23.6.0",
1819
"babel-preset-env": "^1.7.0",
1920
"babel-preset-react": "^6.24.1",
21+
"dtslint": "^0.3.0",
2022
"flow-bin": "^0.82.0",
2123
"jest": "^23.6.0",
2224
"microbundle": "^0.6.0",
25+
"npm-run-all": "^4.1.3",
2326
"prettier": "^1.14.3",
2427
"react": "^16.5.2",
2528
"react-dom": "^16.5.2"
@@ -28,11 +31,15 @@
2831
"react": "^16.4.0"
2932
},
3033
"scripts": {
31-
"test": "jest",
34+
"test": "run-p test:js test:types:*",
3235
"prettier": "prettier {{__tests__,src,type-definitions}/**.{js,flow},README.md}",
33-
"format": "yarn prettier --write",
36+
"format": "prettier --write",
37+
"test:js": "jest",
38+
"test:types:ts": "yarn build && tsc ./type-definitions/ReComponent.d.ts --lib es2015 && dtslint type-definitions/ts-tests",
3439
"test:types:flow": "flow check .",
35-
"build": "yarn microbundle -o dist/ --name ReComponent --compress false --sourcemap false",
40+
"build": "run-p bundle:*",
41+
"bundle:dist": "microbundle -o dist/ --name ReComponent --compress false --sourcemap false",
42+
"bundle:types": "cp type-definitions/ReComponent.d.ts dist/react-recomponent.d.ts",
3643
"prepublishOnly": "yarn build"
3744
},
3845
"jest": {

type-definitions/ReComponent.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export function NoUpdate(): NoUpdateAction;
3939

4040
export function Update<T>(state: T): UpdateAction<T>;
4141

42-
export function SideEffects<T>(sideEffect: T): SideEffectsAction<T>;
42+
export function SideEffects<T>(sideEffect: SideEffect<T>): SideEffectsAction<T>;
4343

4444
export function UpdateWithSideEffects<S, SE>(state: S, sideEffects: SideEffect<SE>): UpdateWithSideEffectsAction<S, SE>;
4545

type-definitions/ts-tests/exports.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import * as recomponent from 'react-recomponent';
2+
import { NoUpdate, Update, SideEffects, UpdateWithSideEffects, ReComponent, RePureComponent } from 'react-recomponent';
3+
4+
NoUpdate; // $ExpectType () => NoUpdateAction
5+
Update; // $ExpectType <T>(state: T) => UpdateAction<T>
6+
SideEffects; // $ExpectType <T>(sideEffect: SideEffect<T>) => SideEffectsAction<T>
7+
UpdateWithSideEffects; // $ExpectType <S, SE>(state: S, sideEffects: SideEffect<SE>) => UpdateWithSideEffectsAction<S, SE>
8+
ReComponent; // $ExpectType typeof ReComponent
9+
RePureComponent; // $ExpectType typeof RePureComponent
10+
11+
recomponent.NoUpdate; // $ExpectType () => NoUpdateAction
12+
recomponent.Update; // $ExpectType <T>(state: T) => UpdateAction<T>
13+
recomponent.SideEffects; // $ExpectType <T>(sideEffect: SideEffect<T>) => SideEffectsAction<T>
14+
recomponent.UpdateWithSideEffects; // $ExpectType <S, SE>(state: S, sideEffects: SideEffect<SE>) => UpdateWithSideEffectsAction<S, SE>
15+
recomponent.ReComponent; // $ExpectType typeof ReComponent
16+
recomponent.RePureComponent; // $ExpectType typeof RePureComponent

type-definitions/ts-tests/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// TypeScript Version: 2.3
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"compilerOptions": {
3+
"module": "commonjs",
4+
"target": "es5",
5+
"sourceMap": true,
6+
"noImplicitAny": true,
7+
"noImplicitThis": true,
8+
"strictFunctionTypes": true,
9+
"strictNullChecks": true,
10+
"lib": ["esnext"],
11+
"baseUrl": "../../",
12+
"paths": { "react-recomponent": ["."] }
13+
},
14+
"exclude": [
15+
"node_modules"
16+
]
17+
}

type-definitions/ts-tests/tslint.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"extends": "dtslint/dtslint.json",
3+
"rules": {
4+
"no-useless-files": false,
5+
"no-duplicate-imports": false
6+
}
7+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { NoUpdate, Update, SideEffects, UpdateWithSideEffects } from 'react-recomponent';
2+
3+
// $ExpectType NoUpdateAction
4+
NoUpdate();
5+
6+
// $ExpectType UpdateAction<number>
7+
Update<number>(4);
8+
9+
// $ExpectType SideEffectsAction<any>
10+
SideEffects<any>(() => {});
11+
// $ExpectError
12+
SideEffects<any>({});
13+
14+
// $ExpectType UpdateWithSideEffectsAction<number, any>
15+
UpdateWithSideEffects<number, any>(4, () => {});
16+
// $ExpectError
17+
UpdateWithSideEffects<number, any>(4, {});

0 commit comments

Comments
 (0)