Skip to content

Commit ea4aca7

Browse files
authored
Merge pull request #1019 from InfiniteXyy/master
chore: using `vite` for easier dev setup & fix test runner issues
2 parents b1b8cf7 + 0dddab5 commit ea4aca7

File tree

10 files changed

+465
-2449
lines changed

10 files changed

+465
-2449
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
defaults: &defaults
22
working_directory: ~/rxjs-hooks
33
docker:
4-
- image: circleci/node:12-browsers
4+
- image: circleci/node:16-browsers
55

66
version: 2
77
jobs:

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@
88
</head>
99
<body>
1010
<div id="app"></div>
11+
<script type="module" src="./playground/index.tsx"></script>
1112
</body>
1213
</html>

package.json

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"build": "yarn build:esm && yarn build:cjs",
1313
"build:esm": "rm -rf dist/esm && tsc -p src/tsconfig.json --module es2015 --target es5 --outDir dist/esm",
1414
"build:cjs": "rm -rf dist/cjs && tsc -p src/tsconfig.json --module commonjs --target es5 --outDir dist/cjs",
15-
"start": "webpack-dev-server --config ./tools/webpack.config.js --progress --color",
15+
"start": "vite",
1616
"test": "NODE_ENV=test jest --no-cache --ci",
1717
"lint": "yarn lint:eslint && yarn lint:tsc",
1818
"lint:eslint": "eslint . --ext .ts,.tsx --fix --max-warnings 0",
@@ -30,17 +30,15 @@
3030
"@types/react-test-renderer": "^18.0.0",
3131
"@types/sinon": "^10.0.0",
3232
"@types/sinon-chai": "^3.2.3",
33-
"@types/webpack": "^5.28.0",
3433
"@typescript-eslint/eslint-plugin": "^4.19.0",
3534
"@typescript-eslint/parser": "^4.19.0",
35+
"@vitejs/plugin-react": "^1.3.2",
3636
"browser-resolve": "^2.0.0",
3737
"codecov": "^3.6.1",
3838
"eslint": "^7.22.0",
3939
"eslint-config-prettier": "^8.1.0",
4040
"eslint-plugin-react": "^7.23.1",
41-
"fork-ts-checker-webpack-plugin": "^7.0.0",
4241
"happypack": "^5.0.1",
43-
"html-webpack-plugin": "^5.0.0",
4442
"husky": "^8.0.1",
4543
"jest": "^27.0.4",
4644
"lint-staged": "^13.0.0",
@@ -50,14 +48,10 @@
5048
"react-test-renderer": "17.0.2",
5149
"rxjs": "^7.0.0",
5250
"sinon": "^14.0.0",
53-
"source-map-loader": "^4.0.0",
5451
"standard": "^17.0.0",
5552
"ts-jest": "^27.0.2",
56-
"ts-loader": "^9.1.0",
5753
"typescript": "^4.2.0",
58-
"webpack": "^5.0.0",
59-
"webpack-cli": "^4.0.0",
60-
"webpack-dev-server": "^4.0.0"
54+
"vite": "^2.9.12"
6155
},
6256
"dependencies": {
6357
"tslib": "^2.1.0",

playground/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import React, { useState } from 'react'
22
import ReactDOM from 'react-dom'
33
import { interval, Observable, timer } from 'rxjs'
4-
import { exhaustMap, mapTo, scan, switchMap } from 'rxjs/operators'
4+
import { exhaustMap, map, scan, switchMap } from 'rxjs/operators'
55

66
import { useObservable } from '../src/use-observable'
77
import { useEventCallback } from '../src/use-event-callback'
88

99
const mockBackendRequest = (event$: Observable<React.MouseEvent<HTMLHeadElement>>) =>
1010
event$.pipe(
11-
exhaustMap(() => timer(1000).pipe(mapTo(100))),
11+
exhaustMap(() => timer(1000).pipe(map(() => 100))),
1212
scan((acc, cur) => acc + cur, 0),
1313
)
1414

src/__test__/use-event-callback.spec.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
22
import { Observable, of, Observer } from 'rxjs'
3-
import { mapTo, delay, withLatestFrom, combineLatest, map } from 'rxjs/operators'
3+
import { map, delay, withLatestFrom, combineLatestWith } from 'rxjs/operators'
44
import { create, act } from 'react-test-renderer'
55
import * as Sinon from 'sinon'
66

@@ -46,7 +46,12 @@ describe('useEventCallback specs', () => {
4646
const timer = Sinon.useFakeTimers()
4747
const timeToDelay = 200
4848
const value = 1
49-
const Fixture = createFixture((event$: Observable<any>) => event$.pipe(mapTo(value), delay(timeToDelay)))
49+
const Fixture = createFixture((event$: Observable<any>) =>
50+
event$.pipe(
51+
map(() => value),
52+
delay(timeToDelay),
53+
),
54+
)
5055
const fixtureNode = <Fixture />
5156
const testRenderer = create(fixtureNode)
5257
act(() => testRenderer.update(fixtureNode))
@@ -64,7 +69,11 @@ describe('useEventCallback specs', () => {
6469
const value = 1
6570
const timeToDelay = 200
6671
const Fixture = createFixture(
67-
(event$: Observable<any>) => event$.pipe(mapTo(value), delay(timeToDelay)),
72+
(event$: Observable<any>) =>
73+
event$.pipe(
74+
map(() => value),
75+
delay(timeToDelay),
76+
),
6877
initialValue,
6978
)
7079
const fixtureNode = <Fixture />
@@ -129,7 +138,7 @@ describe('useEventCallback specs', () => {
129138
inputs$: Observable<number[]>,
130139
): Observable<number> =>
131140
event$.pipe(
132-
combineLatest(inputs$),
141+
combineLatestWith(inputs$),
133142
map(([, [count]]) => {
134143
return value + count
135144
}),

src/__test__/use-observable.spec.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ describe('useObservable specs', () => {
119119
})
120120

121121
it('should emit changed props in observableFactory', () => {
122-
const timer = Sinon.useFakeTimers()
123122
const spy = Sinon.spy()
124123
const timeToDelay = 200
125124
function Fixture(props: { foo: number; bar: string; baz: any }) {
@@ -152,15 +151,15 @@ describe('useObservable specs', () => {
152151
act(() => testRenderer.update(<Fixture {...newProps} />))
153152
// wait useEffect fired
154153
// https://reactjs.org/docs/hooks-reference.html#timing-of-effects
155-
timer.tick(timeToDelay)
154+
fakeTimer.tick(timeToDelay)
156155
expect(spy.callCount).toBe(1)
157156
expect(spy.args[0]).toEqual([[newProps.foo, newProps.baz]])
158157
expect(find(testRenderer.root, 'h1').children).toEqual([`${newProps.foo}`])
159158
expect(find(testRenderer.root, 'div').children).toEqual([`${newProps.baz.foo}`])
160159

161160
const renewProps = { ...props, foo: 1000 }
162161
act(() => testRenderer.update(<Fixture {...renewProps} />))
163-
timer.tick(timeToDelay)
162+
fakeTimer.tick(timeToDelay)
164163

165164
expect(spy.callCount).toBe(2)
166165
expect(spy.args[1]).toEqual([[renewProps.foo, renewProps.baz]])

src/use-observable.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ export function useObservable<State, Inputs extends ReadonlyArray<any>>(
3434
useEffect(() => {
3535
let output$: BehaviorSubject<State>
3636
if (inputs) {
37-
output$ = (inputFactory as (
38-
state$: Observable<State | undefined>,
39-
inputs$: Observable<RestrictArray<Inputs> | undefined>,
40-
) => Observable<State>)(state$, inputs$) as BehaviorSubject<State>
37+
output$ = (
38+
inputFactory as (
39+
state$: Observable<State | undefined>,
40+
inputs$: Observable<RestrictArray<Inputs> | undefined>,
41+
) => Observable<State>
42+
)(state$, inputs$) as BehaviorSubject<State>
4143
} else {
42-
output$ = ((inputFactory as unknown) as (state$: Observable<State | undefined>) => Observable<State>)(
44+
output$ = (inputFactory as unknown as (state$: Observable<State | undefined>) => Observable<State>)(
4345
state$,
4446
) as BehaviorSubject<State>
4547
}

tools/webpack.config.js

Lines changed: 0 additions & 76 deletions
This file was deleted.

vite.config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { defineConfig } from 'vite'
2+
import react from '@vitejs/plugin-react'
3+
4+
export default defineConfig({
5+
plugins: [react()],
6+
})

0 commit comments

Comments
 (0)