Skip to content

Commit 5ddedc4

Browse files
Merge pull request cerebral#180 from cerebral/webfixes
Webfixes
2 parents bb0943f + 74eb13c commit 5ddedc4

35 files changed

+670
-337
lines changed

packages/node_modules/overmind-devtools/src/overmind/operators.ts

Lines changed: 61 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { action, forEach, fork, Operator, when, map } from 'overmind'
1+
import { Operator, action, forEach, fork, when, map } from 'overmind'
22
import {
33
Message,
44
AppMessage,
@@ -29,31 +29,37 @@ import {
2929
runMutation,
3030
} from './utils'
3131

32-
export const ensureCurrentApp = action<Message>(({ value: message, state }) => {
33-
if (!state.currentAppName) {
34-
state.currentAppName = message.appName
32+
export const ensureCurrentApp: Operator<Message> = action(
33+
({ value: message, state }) => {
34+
if (!state.currentAppName) {
35+
state.currentAppName = message.appName
36+
}
3537
}
36-
})
38+
)
3739

38-
export const setPortExists = action<any>(({ state }) => {
40+
export const setPortExists: Operator<any> = action(({ state }) => {
3941
state.error = 'PORT_EXISTS'
4042
})
4143

42-
export const isPortExistsMessage = (paths: {
43-
true: Operator<Message, any>
44-
false: Operator<Message, any>
45-
}) =>
44+
export const isPortExistsMessage: (
45+
paths: {
46+
true: Operator<Message, any>
47+
false: Operator<Message, any>
48+
}
49+
) => Operator<Message> = (paths) =>
4650
when(
4751
({ value: message }) => message.messages[0].type === 'PORT_EXISTS',
4852
paths
4953
)
5054

51-
export const addState = action<InitMessage>(({ value: message, state }) => {
52-
state.isConnecting = false
53-
state.apps[message.appName].state = message.data.state
54-
})
55+
export const addState: Operator<InitMessage> = action(
56+
({ value: message, state }) => {
57+
state.isConnecting = false
58+
state.apps[message.appName].state = message.data.state
59+
}
60+
)
5561

56-
export const addFlushAndRunMutations = action<FlushMessage>(
62+
export const addFlushAndRunMutations: Operator<FlushMessage> = action(
5763
({ value: message, state }) => {
5864
ensureFlushExists(state.apps[message.appName].flushes, message.data.flushId)
5965
state.apps[message.appName].flushes[message.data.flushId].mutations =
@@ -77,18 +83,20 @@ export const addFlushAndRunMutations = action<FlushMessage>(
7783
}
7884
)
7985

80-
export const ensureApp = action<Message>(({ value: message, state }) => {
81-
if (
82-
!state.apps[message.appName] ||
83-
message.messages[0].type === ExecutionType.INIT
84-
) {
85-
state.apps[message.appName] = createApp({
86-
name: message.appName,
87-
})
86+
export const ensureApp: Operator<Message> = action(
87+
({ value: message, state }) => {
88+
if (
89+
!state.apps[message.appName] ||
90+
message.messages[0].type === ExecutionType.INIT
91+
) {
92+
state.apps[message.appName] = createApp({
93+
name: message.appName,
94+
})
95+
}
8896
}
89-
})
97+
)
9098

91-
export const addClientMessages = action<Message>(
99+
export const addClientMessages: Operator<Message> = action(
92100
({ value: message, state }) => {
93101
state.apps[message.appName].messages = JSON.parse(
94102
JSON.stringify(message.messages)
@@ -98,7 +106,7 @@ export const addClientMessages = action<Message>(
98106
}
99107
)
100108

101-
export const addComponent = action<AddComponentMessage>(
109+
export const addComponent: Operator<AddComponentMessage> = action(
102110
({ value: message, state }) => {
103111
const id = `${message.data.componentId}_${message.data.componentInstanceId}`
104112

@@ -112,7 +120,7 @@ export const addComponent = action<AddComponentMessage>(
112120
}
113121
)
114122

115-
export const updateComponent = action<UpdateComponentMessage>(
123+
export const updateComponent: Operator<UpdateComponentMessage> = action(
116124
({ value: message, state }) => {
117125
const id = `${message.data.componentId}_${message.data.componentInstanceId}`
118126

@@ -133,15 +141,15 @@ export const updateComponent = action<UpdateComponentMessage>(
133141
}
134142
)
135143

136-
export const removeComponent = action<RemoveComponentMessage>(
144+
export const removeComponent: Operator<RemoveComponentMessage> = action(
137145
({ value: message, state }) => {
138146
const id = `${message.data.componentId}_${message.data.componentInstanceId}`
139147

140148
state.apps[message.appName].components[id].isMounted = false
141149
}
142150
)
143151

144-
export const updateDerived = action<DerivedMessage>(
152+
export const updateDerived: Operator<DerivedMessage> = action(
145153
({ value: message, state }) => {
146154
const appState = state.apps[message.appName].state
147155
const path = message.data.path.split('.')
@@ -153,7 +161,7 @@ export const updateDerived = action<DerivedMessage>(
153161
}
154162
)
155163

156-
export const updateFlushWithDerived = action<DirtyDerivedMessage>(
164+
export const updateFlushWithDerived: Operator<DirtyDerivedMessage> = action(
157165
({ value: message, state }) => {
158166
ensureFlushExists(state.apps[message.appName].flushes, message.data.flushId)
159167
state.apps[message.appName].flushes[message.data.flushId].derived.push(
@@ -162,7 +170,7 @@ export const updateFlushWithDerived = action<DirtyDerivedMessage>(
162170
}
163171
)
164172

165-
export const addAction = action<StartActionMessage>(
173+
export const addAction: Operator<StartActionMessage> = action(
166174
({ value: message, state }) => {
167175
const app = state.apps[message.appName]
168176
const action = message.data
@@ -205,7 +213,7 @@ export const addAction = action<StartActionMessage>(
205213
}
206214
)
207215

208-
export const addOperator = action<StartOperatorMessage>(
216+
export const addOperator: Operator<StartOperatorMessage> = action(
209217
({ value: message, state }) => {
210218
const operatorData = message.data
211219
const actionId = getActionId(operatorData)
@@ -241,7 +249,7 @@ export const addOperator = action<StartOperatorMessage>(
241249
}
242250
)
243251

244-
export const updateOperator = action<EndOperatorMessage>(
252+
export const updateOperator: Operator<EndOperatorMessage> = action(
245253
({ value: message, state }) => {
246254
const operatorData = message.data
247255
const actionId = getActionId(operatorData)
@@ -256,7 +264,7 @@ export const updateOperator = action<EndOperatorMessage>(
256264
}
257265
)
258266

259-
export const updateAction = action<EndActionMessage>(
267+
export const updateAction: Operator<EndActionMessage> = action(
260268
({ value: message, state }) => {
261269
const app = state.apps[message.appName]
262270
const action = message.data
@@ -266,7 +274,7 @@ export const updateAction = action<EndActionMessage>(
266274
}
267275
)
268276

269-
export const addMutations = action<MutationsMessage>(
277+
export const addMutations: Operator<MutationsMessage> = action(
270278
({ value: message, state }) => {
271279
const mutations = message.data
272280
const id = `${mutations.actionId}_${mutations.executionId}`
@@ -277,21 +285,27 @@ export const addMutations = action<MutationsMessage>(
277285
}
278286
)
279287

280-
export const addEffect = action<EffectMessage>(({ value: message, state }) => {
281-
const effect = message.data
282-
const id = getActionId(effect)
283-
const operator =
284-
state.apps[message.appName].actions[id].operators[effect.operatorId]
288+
export const addEffect: Operator<EffectMessage> = action(
289+
({ value: message, state }) => {
290+
const effect = message.data
291+
const id = getActionId(effect)
292+
const operator =
293+
state.apps[message.appName].actions[id].operators[effect.operatorId]
285294

286-
operator.effects.push(effect)
287-
})
295+
operator.effects.push(effect)
296+
}
297+
)
288298

289-
export const getMessages = map<Message, AppMessage<any>[]>(({ value }) =>
290-
value.messages.map((message) => ({ ...message, appName: value.appName }))
299+
export const getMessages: Operator<Message, AppMessage<any>[]> = map(
300+
({ value }) =>
301+
value.messages.map((message) => ({ ...message, appName: value.appName }))
291302
)
292303

293-
export const forkEachMessage = (paths: {
294-
[key: string]: Operator<AppMessage<any>, AppMessage<any>>
295-
}) => forEach<AppMessage<any>[]>(fork(({ value }) => value.type, paths))
304+
export const forkEachMessage: (
305+
paths: {
306+
[key: string]: Operator<AppMessage<any>, any>
307+
}
308+
) => Operator<AppMessage<any>[]> = (paths) =>
309+
forEach(fork(({ value }) => value.type, paths) as Operator<AppMessage<any>>)
296310

297311
export const updateOperatorAsync = action<AsyncOperatorMessage>(() => {})

packages/node_modules/overmind/src/index.ts

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -454,46 +454,50 @@ export class Overmind<Config extends Configuration> implements Configuration {
454454
OPERATORS
455455
needs to be in this file for typing override to work
456456
*/
457-
export type Operator<Input, Output> = TOperator<TheConfig, Input, Output>
457+
export type Operator<Input = void, Output = Input> = TOperator<
458+
TheConfig,
459+
Input,
460+
Output
461+
>
458462

459-
export function pipe<Config extends Configuration, A, B, C>(
463+
export function pipe<Config extends Configuration, A, B>(
460464
aOperator: TOperator<Config, A, B>
461-
): TOperator<Config, A, C>
465+
): TOperator<Config, A, B>
462466

463-
export function pipe<Config extends Configuration, A, B, C, D>(
467+
export function pipe<Config extends Configuration, A, B, C>(
464468
aOperator: TOperator<Config, A, B>,
465469
bOperator: TOperator<Config, B, C>
466-
): TOperator<Config, A, D>
470+
): TOperator<Config, A, C>
467471

468-
export function pipe<Config extends Configuration, A, B, C, D, E>(
472+
export function pipe<Config extends Configuration, A, B, C, D>(
469473
aOperator: TOperator<Config, A, B>,
470474
bOperator: TOperator<Config, B, C>,
471475
cOperator: TOperator<Config, C, D>
472-
): TOperator<Config, A, E>
476+
): TOperator<Config, A, D>
473477

474-
export function pipe<Config extends Configuration, A, B, C, D, E, F>(
478+
export function pipe<Config extends Configuration, A, B, C, D, E>(
475479
aOperator: TOperator<Config, A, B>,
476480
bOperator: TOperator<Config, B, C>,
477481
cOperator: TOperator<Config, C, D>,
478482
dOperator: TOperator<Config, D, E>
479-
): TOperator<Config, A, F>
483+
): TOperator<Config, A, E>
480484

481-
export function pipe<Config extends Configuration, A, B, C, D, E, F, G>(
485+
export function pipe<Config extends Configuration, A, B, C, D, E, F>(
482486
aOperator: TOperator<Config, A, B>,
483487
bOperator: TOperator<Config, B, C>,
484488
cOperator: TOperator<Config, C, D>,
485489
dOperator: TOperator<Config, D, E>,
486490
eOperator: TOperator<Config, E, F>
487-
): TOperator<Config, A, G>
491+
): TOperator<Config, A, F>
488492

489-
export function pipe<Config extends Configuration, A, B, C, D, E, F, G, H>(
493+
export function pipe<Config extends Configuration, A, B, C, D, E, F, G>(
490494
aOperator: TOperator<Config, A, B>,
491495
bOperator: TOperator<Config, B, C>,
492496
cOperator: TOperator<Config, C, D>,
493497
dOperator: TOperator<Config, D, E>,
494498
eOperator: TOperator<Config, E, F>,
495499
fOperator: TOperator<Config, F, G>
496-
): TOperator<Config, A, H>
500+
): TOperator<Config, A, G>
497501

498502
export function pipe(...operators) {
499503
const instance = (err, context, next, final = next) => {
@@ -701,7 +705,7 @@ export function forEach<
701705
}
702706

703707
export function parallel<Input, Config extends Configuration = TheConfig>(
704-
operators: TOperator<Config, Input, any>[]
708+
...operators: TOperator<Config, Input>[]
705709
): TOperator<Config, Input, Input> {
706710
const instance = (err, context, next) => {
707711
if (err) next(err)

packages/node_modules/overmind/src/pipe.test.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ describe('PIPE', () => {
6060
describe('OPERATORS', () => {
6161
test('map', () => {
6262
expect.assertions(1)
63-
const test: Operator<string, string> = pipe(
63+
const test: Operator<string> = pipe(
6464
map(({ value }) => value.toUpperCase())
6565
)
6666

@@ -70,7 +70,7 @@ describe('PIPE', () => {
7070
})
7171
test('map (async)', () => {
7272
expect.assertions(1)
73-
const test: Operator<string, string> = pipe(
73+
const test: Operator<string> = pipe(
7474
map(({ value }) => Promise.resolve(value.toUpperCase()))
7575
)
7676

@@ -81,7 +81,7 @@ describe('PIPE', () => {
8181
test('forEach', () => {
8282
expect.assertions(1)
8383
let runCount = 0
84-
const test: Operator<string[], string[]> = pipe(
84+
const test: Operator<string[]> = pipe(
8585
forEach((_, val, next) => {
8686
runCount++
8787
next(null, val)
@@ -95,17 +95,17 @@ describe('PIPE', () => {
9595
test('parallel', () => {
9696
expect.assertions(1)
9797
let runCount = 0
98-
const test: Operator<string, string> = pipe(
99-
parallel([
98+
const test: Operator<string> = pipe(
99+
parallel(
100100
(_, value, next) => {
101101
runCount++
102102
next(null, value)
103103
},
104104
(_, value, next) => {
105105
runCount++
106106
next(null, value)
107-
},
108-
])
107+
}
108+
)
109109
)
110110

111111
return createMockAction(test)('foo').then(() => {
@@ -114,7 +114,7 @@ describe('PIPE', () => {
114114
})
115115
test('filter - truthy', () => {
116116
expect.assertions(1)
117-
const test: Operator<string, string> = pipe(
117+
const test: Operator<string> = pipe(
118118
filter(({ value }) => value === 'foo'),
119119
map(({ value }) => value.toUpperCase())
120120
)
@@ -124,7 +124,7 @@ describe('PIPE', () => {
124124
})
125125
})
126126
test('filter - falsy', () => {
127-
const test: Operator<string, string> = pipe(
127+
const test: Operator<string> = pipe(
128128
filter(({ value }) => value === 'bar'),
129129
map(({ value }) => value.toUpperCase())
130130
)
@@ -135,7 +135,7 @@ describe('PIPE', () => {
135135
})
136136
test('fork', () => {
137137
expect.assertions(1)
138-
const test: Operator<string, string> = pipe(
138+
const test: Operator<string> = pipe(
139139
fork(() => 'foo', {
140140
foo: map(({ value }) => value.toUpperCase()),
141141
})
@@ -161,14 +161,14 @@ describe('PIPE', () => {
161161
test('wait', () => {
162162
expect.assertions(1)
163163
const runTime = Date.now()
164-
const test: Operator<string, string> = pipe(wait(500))
164+
const test: Operator<string> = pipe(wait(500))
165165
return createMockAction(test)('foo').then(() => {
166166
expect(Date.now() - runTime).toBeGreaterThanOrEqual(500)
167167
})
168168
})
169169
test('debounce', () => {
170170
expect.assertions(1)
171-
const test: Operator<string, string> = pipe(
171+
const test: Operator<string> = pipe(
172172
debounce(100),
173173
map(({ value }) => value.toUpperCase())
174174
)
@@ -190,7 +190,7 @@ describe('PIPE', () => {
190190
test('action (async)', () => {
191191
expect.assertions(2)
192192
let hasRun = false
193-
const test: Operator<string, string> = pipe(
193+
const test: Operator = pipe(
194194
action(({ value }) => Promise.resolve(value + '!!!')),
195195
action(() => (hasRun = true))
196196
)

0 commit comments

Comments
 (0)