Skip to content

Commit 7f5f7ad

Browse files
authored
Merge pull request #1103 from davidkpiano/davidkpiano/ts-3.8
Upgrade TS to 3.8.3 and simplify transition config types
2 parents 3dcf918 + 20de55e commit 7f5f7ad

File tree

20 files changed

+5339
-4298
lines changed

20 files changed

+5339
-4298
lines changed

.changeset/curvy-planets-serve.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'xstate': minor
3+
---
4+
5+
Simplify the `TransitionConfigArray` and `TransitionConfigMap` types In order to fix excessively deep type instantiation TypeScript reports. This addresses [#1015](https://github.com/davidkpiano/xstate/issues/1015).

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
"ts-jest": "^24.1.9",
6666
"tslint": "^5.11.0",
6767
"typedoc": "^0.15.2",
68-
"typescript": "^3.7.5",
68+
"typescript": "^3.8.3",
6969
"vuepress": "^1.2.0",
7070
"vuepress-plugin-export": "^0.2.0",
7171
"webpack-dev-middleware": "^3.6.0"

packages/core/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"rxjs": "^6.5.1",
6767
"ts-jest": "^24.1.9",
6868
"tslib": "^1.10.0",
69-
"typescript": "^3.7.5",
69+
"typescript": "^3.8.3",
7070
"xml-js": "^1.6.11"
7171
}
7272
}

packages/core/src/interpreter.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,7 @@ export class Interpreter<
778778
this.parent.send({
779779
type: 'xstate.error',
780780
data: err
781-
});
781+
} as EventObject);
782782
}
783783

784784
throw err;

packages/core/src/types.ts

+27-19
Original file line numberDiff line numberDiff line change
@@ -321,32 +321,40 @@ export type StatesDefinition<
321321
>;
322322
};
323323

324-
export type TransitionConfigTargetShortcut<
324+
export type TransitionConfigTarget<TContext, TEvent extends EventObject> =
325+
| string
326+
| undefined
327+
| StateNode<TContext, any, TEvent>;
328+
329+
export type TransitionConfigOrTarget<
325330
TContext,
326331
TEvent extends EventObject
327-
> = string | undefined | StateNode<TContext, any, TEvent>;
332+
> = SingleOrArray<
333+
TransitionConfigTarget<TContext, TEvent> | TransitionConfig<TContext, TEvent>
334+
>;
328335

329336
type TransitionsConfigMap<TContext, TEvent extends EventObject> = {
330-
[K in TEvent['type'] | NullEvent['type'] | '*']?: SingleOrArray<
331-
| TransitionConfigTargetShortcut<TContext, TEvent>
332-
| (TransitionConfig<
333-
TContext,
334-
K extends TEvent['type'] ? Extract<TEvent, { type: K }> : EventObject
335-
> & {
336-
event?: undefined;
337-
})
337+
[K in TEvent['type']]?: TransitionConfigOrTarget<
338+
TContext,
339+
TEvent extends { type: K } ? TEvent : never
338340
>;
341+
} & {
342+
''?: TransitionConfigOrTarget<TContext, TEvent>;
343+
} & {
344+
'*'?: TransitionConfigOrTarget<TContext, TEvent>;
339345
};
340346

341347
type TransitionsConfigArray<TContext, TEvent extends EventObject> = Array<
342-
{
343-
[K in TEvent['type'] | NullEvent['type'] | '*']: TransitionConfig<
344-
TContext,
345-
K extends TEvent['type'] ? Extract<TEvent, { type: K }> : EventObject
346-
> & {
347-
event: K;
348-
};
349-
}[TEvent['type'] | NullEvent['type'] | '*']
348+
| {
349+
[K in TEvent['type']]: TransitionConfig<
350+
TContext,
351+
TEvent extends { type: K } ? TEvent : never
352+
> & {
353+
event: K;
354+
};
355+
}[TEvent['type']]
356+
| (TransitionConfig<TContext, TEvent> & { event: '' })
357+
| (TransitionConfig<TContext, TEvent> & { event: '*' })
350358
>;
351359

352360
export type TransitionsConfig<TContext, TEvent extends EventObject> =
@@ -905,7 +913,7 @@ export interface PureAction<TContext, TEvent extends EventObject>
905913
export interface ChooseAction<TContext, TEvent extends EventObject>
906914
extends ActionObject<TContext, TEvent> {
907915
type: ActionTypes.Choose;
908-
conds: ChooseConditon<TContext, TEvent>[];
916+
conds: Array<ChooseConditon<TContext, TEvent>>;
909917
}
910918

911919
export interface TransitionDefinition<TContext, TEvent extends EventObject>

packages/core/src/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
StateLike,
1818
EventData,
1919
TransitionConfig,
20-
TransitionConfigTargetShortcut,
20+
TransitionConfigTarget,
2121
NullEvent,
2222
SingleOrArray,
2323
Guard,
@@ -584,7 +584,7 @@ export function toTransitionConfigArray<TContext, TEvent extends EventObject>(
584584
event: TEvent['type'] | NullEvent['type'] | '*',
585585
configLike: SingleOrArray<
586586
| TransitionConfig<TContext, TEvent>
587-
| TransitionConfigTargetShortcut<TContext, TEvent>
587+
| TransitionConfigTarget<TContext, TEvent>
588588
>
589589
): Array<
590590
TransitionConfig<TContext, TEvent> & {

packages/core/test/actionCreators.test.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@ describe('action creators', () => {
111111
const resolvedAction = actions.resolveSend(
112112
action,
113113
{ delay: 100 },
114-
toSCXMLEvent({ type: 'EVENT', value: 50 })
114+
toSCXMLEvent({ type: 'EVENT', value: 50 } as {
115+
type: 'EVENT';
116+
value: number;
117+
})
115118
);
116119

117120
expect(resolvedAction.delay).toEqual(150);

packages/xstate-analytics/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
"jest": "^24.8.0",
4242
"lerna-alias": "3.0.3-0",
4343
"ts-jest": "^24.1.9",
44-
"typescript": "^3.7.5",
44+
"typescript": "^3.8.3",
4545
"xstate": "*"
4646
},
4747
"dependencies": {}

packages/xstate-fsm/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@
5151
"rollup-plugin-terser": "^5.1.2",
5252
"rollup-plugin-typescript2": "^0.25.2",
5353
"ts-jest": "^24.1.9",
54-
"typescript": "^3.7.5"
54+
"typescript": "^3.8.3"
5555
}
5656
}

packages/xstate-graph/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
"jest": "^24.8.0",
4444
"lerna-alias": "3.0.3-0",
4545
"ts-jest": "^24.1.9",
46-
"typescript": "^3.7.5",
46+
"typescript": "^3.8.3",
4747
"xstate": "*"
4848
},
4949
"dependencies": {}

packages/xstate-graph/test/graph.test.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ describe('@xstate/graph', () => {
5656
}
5757
});
5858

59-
type CondMachineCtx = { id: string };
59+
interface CondMachineCtx {
60+
id: string;
61+
}
6062
type CondMachineEvents = { type: 'EVENT'; id: string } | { type: 'STATE' };
6163

6264
const condMachine = Machine<CondMachineCtx, CondMachineEvents>({

packages/xstate-immer/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"devDependencies": {
4545
"immer": "^5.0.0",
4646
"lerna-alias": "3.0.3-0",
47-
"typescript": "^3.7.5",
47+
"typescript": "^3.8.3",
4848
"xstate": "*"
4949
}
5050
}

packages/xstate-react/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
"react": "^16.12.0",
6969
"react-dom": "^16.12.0",
7070
"ts-jest": "^24.1.9",
71-
"typescript": "^3.7.5",
71+
"typescript": "^3.8.3",
7272
"xstate": "*"
7373
}
7474
}

packages/xstate-scxml/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@
4242
"jest": "^24.8.0",
4343
"lerna-alias": "3.0.3-0",
4444
"ts-jest": "^24.1.9",
45-
"typescript": "^3.7.5"
45+
"typescript": "^3.8.3"
4646
}
4747
}

packages/xstate-test/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"puppeteer": "^1.19.0",
5656
"strip-ansi": "^5.2.0",
5757
"ts-jest": "^24.1.9",
58-
"typescript": "^3.7.5",
58+
"typescript": "^3.8.3",
5959
"xstate": "*"
6060
},
6161
"dependencies": {

packages/xstate-viz/example/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616
"@types/react": "^16.9.11",
1717
"@types/react-dom": "^16.9.4",
1818
"parcel": "^1.12.3",
19-
"typescript": "^3.7.5"
19+
"typescript": "^3.8.3"
2020
}
2121
}

packages/xstate-viz/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"react-dom": "^16.12.0",
3636
"tsdx": "^0.11.0",
3737
"tslib": "^1.10.0",
38-
"typescript": "^3.7.5"
38+
"typescript": "^3.8.3"
3939
},
4040
"dependencies": {
4141
"immer": "^5.0.0",

packages/xstate-vue/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"rollup-plugin-terser": "^5.1.2",
6868
"rollup-plugin-typescript2": "^0.25.2",
6969
"ts-jest": "^24.1.9",
70-
"typescript": "^3.7.5",
70+
"typescript": "^3.8.3",
7171
"vue": "^2.6.10",
7272
"vue-jest": "^3.0.5",
7373
"xstate": "*"

patches/@changesets+assemble-release-plan+0.3.0.patch

-13
This file was deleted.

0 commit comments

Comments
 (0)