Skip to content

Commit 70df4de

Browse files
Merge pull request #56 from discretize/typescript-5
2 parents ea153f7 + c087d46 commit 70df4de

File tree

9 files changed

+523
-293
lines changed

9 files changed

+523
-293
lines changed

gw2-ui/api_typecheck.mjs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import * as fs from 'node:fs';
22
import * as path from 'node:path';
33
import * as process from 'node:process';
4+
import * as module from 'node:module';
45
import { writeSource } from '../node_api_helpers.mjs';
56

7+
const require = module.createRequire(import.meta.url);
8+
69
// rollup and plugins
710
import { rollup } from 'rollup';
811
import resolve from '@rollup/plugin-node-resolve';
912
import commonjs from '@rollup/plugin-commonjs';
10-
import ttypescript from 'ttypescript';
13+
const tsPatchCompiler = require('ts-patch/compiler');
1114
import typescript from '@rollup/plugin-typescript';
1215

1316
const MAX_FAILURES = 20;
@@ -27,7 +30,7 @@ async function run() {
2730
resolve(),
2831
commonjs(),
2932
typescript({
30-
typescript: ttypescript,
33+
typescript: tsPatchCompiler,
3134
tsconfig: './src/gw2api/typeguards/tsconfig.json',
3235
}),
3336
],

gw2-ui/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
"clsx": "^2.1.1",
4848
"react": "^18.3.1",
4949
"react-dom": "^18.3.1",
50-
"ttypescript": "^1.5.15",
51-
"typescript-is": "^0.19.0"
50+
"ts-patch": "^3.2.1",
51+
"typia": "^6.11.3"
5252
},
5353
"peerDependencies": {
5454
"react": "^18.0.0",
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
import { createAssertType } from 'typescript-is';
1+
import { createAssertEquals } from 'typia';
22

33
import type GW2ApiItem from '../types/items/item';
44
import type GW2ApiSkill from '../types/skills/skill';
55
import type GW2ApiSpecialization from '../types/specialization/specialization';
66
import type GW2ApiTrait from '../types/traits/trait';
77

8-
export const isGW2ApiItem = createAssertType<GW2ApiItem>();
9-
export const isGW2ApiSkill = createAssertType<GW2ApiSkill>();
10-
export const isGW2ApiSpecialization = createAssertType<GW2ApiSpecialization>();
11-
export const isGW2ApiTrait = createAssertType<GW2ApiTrait>();
8+
export const isGW2ApiItem = createAssertEquals<GW2ApiItem>();
9+
export const isGW2ApiSkill = createAssertEquals<GW2ApiSkill>();
10+
export const isGW2ApiSpecialization =
11+
createAssertEquals<GW2ApiSpecialization>();
12+
export const isGW2ApiTrait = createAssertEquals<GW2ApiTrait>();
1213

1314
export * from '../overrides/index';

gw2-ui/src/gw2api/typeguards/tsconfig.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,7 @@
1515
"module": "esnext",
1616
"plugins": [
1717
{
18-
"transform": "typescript-is/lib/transform-inline/transformer",
19-
"shortCircuit": false,
20-
"disallowSuperfluousObjectProperties": true,
21-
"transformNonNullExpressions": true,
22-
"emitDetailedErrors": "true"
18+
"transform": "typia/lib/transform"
2319
}
2420
]
2521
}

gw2-ui/src/gw2api/types/common/fact.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export interface GW2ApiFactUnblockable extends GW2ApiFactBase {
118118
value: boolean;
119119
}
120120

121-
type GW2ApiFact =
121+
export type GW2ApiFact =
122122
| GW2ApiFactAttributeAdjust
123123
| GW2ApiFactBuff
124124
| GW2ApiFactBuffConversion
Lines changed: 2 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,10 @@
1-
import {
2-
type GW2ApiFactAttributeAdjust,
3-
type GW2ApiFactBuff,
4-
type GW2ApiFactBuffConversion,
5-
type GW2ApiFactComboField,
6-
type GW2ApiFactComboFinisher,
7-
type GW2ApiFactDamage,
8-
type GW2ApiFactDistance,
9-
type GW2ApiFactDuration,
10-
type GW2ApiFactHeal,
11-
type GW2ApiFactHealingAdjust,
12-
type GW2ApiFactNoData,
13-
type GW2ApiFactNumber,
14-
type GW2ApiFactPercent,
15-
type GW2ApiFactPrefixedBuff,
16-
type GW2ApiFactRadius,
17-
type GW2ApiFactRange,
18-
type GW2ApiFactRecharge,
19-
type GW2ApiFactStunBreak,
20-
type GW2ApiFactTime,
21-
type GW2ApiFactUnblockable,
22-
} from './fact';
1+
import { type GW2ApiFact } from './fact';
232

243
type GW2ApiTraitedFactAdditional = {
254
requires_trait: number;
265
overrides?: number;
276
};
287

29-
// This is a bit more complicated than
30-
// GW2ApiTraitedFact & GW2ApiTraitedFactAdditional
31-
// because otherwise typescript-is gets confused.
32-
33-
interface GW2ApiTraitedFactAttributeAdjust
34-
extends GW2ApiFactAttributeAdjust,
35-
GW2ApiTraitedFactAdditional {}
36-
interface GW2ApiTraitedFactBuff
37-
extends GW2ApiFactBuff,
38-
GW2ApiTraitedFactAdditional {}
39-
interface GW2ApiTraitedFactBuffConversion
40-
extends GW2ApiFactBuffConversion,
41-
GW2ApiTraitedFactAdditional {}
42-
interface GW2ApiTraitedFactComboField
43-
extends GW2ApiFactComboField,
44-
GW2ApiTraitedFactAdditional {}
45-
interface GW2ApiTraitedFactComboFinisher
46-
extends GW2ApiFactComboFinisher,
47-
GW2ApiTraitedFactAdditional {}
48-
interface GW2ApiTraitedFactDamage
49-
extends GW2ApiFactDamage,
50-
GW2ApiTraitedFactAdditional {}
51-
interface GW2ApiTraitedFactDistance
52-
extends GW2ApiFactDistance,
53-
GW2ApiTraitedFactAdditional {}
54-
interface GW2ApiTraitedFactDuration
55-
extends GW2ApiFactDuration,
56-
GW2ApiTraitedFactAdditional {}
57-
interface GW2ApiTraitedFactHeal
58-
extends GW2ApiFactHeal,
59-
GW2ApiTraitedFactAdditional {}
60-
interface GW2ApiTraitedFactHealingAdjust
61-
extends GW2ApiFactHealingAdjust,
62-
GW2ApiTraitedFactAdditional {}
63-
interface GW2ApiTraitedFactNoData
64-
extends GW2ApiFactNoData,
65-
GW2ApiTraitedFactAdditional {}
66-
interface GW2ApiTraitedFactNumber
67-
extends GW2ApiFactNumber,
68-
GW2ApiTraitedFactAdditional {}
69-
interface GW2ApiTraitedFactPercent
70-
extends GW2ApiFactPercent,
71-
GW2ApiTraitedFactAdditional {}
72-
interface GW2ApiTraitedFactPrefixedBuff
73-
extends GW2ApiFactPrefixedBuff,
74-
GW2ApiTraitedFactAdditional {}
75-
interface GW2ApiTraitedFactRadius
76-
extends GW2ApiFactRadius,
77-
GW2ApiTraitedFactAdditional {}
78-
interface GW2ApiTraitedFactRange
79-
extends GW2ApiFactRange,
80-
GW2ApiTraitedFactAdditional {}
81-
interface GW2ApiTraitedFactRecharge
82-
extends GW2ApiFactRecharge,
83-
GW2ApiTraitedFactAdditional {}
84-
interface GW2ApiTraitedFactStunBreak
85-
extends GW2ApiFactStunBreak,
86-
GW2ApiTraitedFactAdditional {}
87-
interface GW2ApiTraitedFactTime
88-
extends GW2ApiFactTime,
89-
GW2ApiTraitedFactAdditional {}
90-
interface GW2ApiTraitedFactUnblockable
91-
extends GW2ApiFactUnblockable,
92-
GW2ApiTraitedFactAdditional {}
93-
94-
type GW2ApiTraitedFact =
95-
| GW2ApiTraitedFactAttributeAdjust
96-
| GW2ApiTraitedFactBuff
97-
| GW2ApiTraitedFactBuffConversion
98-
| GW2ApiTraitedFactComboField
99-
| GW2ApiTraitedFactComboFinisher
100-
| GW2ApiTraitedFactDamage
101-
| GW2ApiTraitedFactDistance
102-
| GW2ApiTraitedFactDuration
103-
| GW2ApiTraitedFactHeal
104-
| GW2ApiTraitedFactHealingAdjust
105-
| GW2ApiTraitedFactNoData
106-
| GW2ApiTraitedFactNumber
107-
| GW2ApiTraitedFactPercent
108-
| GW2ApiTraitedFactPrefixedBuff
109-
| GW2ApiTraitedFactRadius
110-
| GW2ApiTraitedFactRange
111-
| GW2ApiTraitedFactRecharge
112-
| GW2ApiTraitedFactStunBreak
113-
| GW2ApiTraitedFactTime
114-
| GW2ApiTraitedFactUnblockable;
8+
type GW2ApiTraitedFact = GW2ApiFact & GW2ApiTraitedFactAdditional;
1159

11610
export default GW2ApiTraitedFact;

gw2-ui/src/gw2api/types/items/item.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,8 @@ type Keys =
3737
// Tell typescript that all the other properties are either missing or undefined.
3838
// That'll make destructuring safe.
3939
// Note: We need this hack for <Item> and <ItemDetails>
40-
// But typescript-is doesn't handle intersection types, and we need to disable it for typechecking
4140
type WrapInUndefined<T> = T &
4241
Partial<Record<Exclude<Keys, keyof T>, undefined>>;
43-
//type WrapInUndefined<T> = T;
4442

4543
type GW2ApiUpgradeMethod = 'Attunement' | 'Infusion';
4644

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,9 @@
4949
"rollup-plugin-postcss": "^4.0.2",
5050
"storybook": "^8.3.6",
5151
"storybook-css-modules-preset": "^1.1.1",
52-
"typescript": "~4.7.4",
52+
"typescript": "^5.6.3",
5353
"typescript-plugin-css-modules": "^5.1.0"
5454
},
55-
"resolutions": {
56-
"typescript": "~4.7.4"
57-
},
5855
"engines": {
5956
"npm": "please-use-pnpm",
6057
"yarn": "please-use-pnpm"

0 commit comments

Comments
 (0)