Skip to content

Commit 2455d45

Browse files
committed
starting implementation of #6
1 parent 80a4751 commit 2455d45

17 files changed

+420
-16
lines changed

Makefile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ clean:
1919

2020
generate: lint generate--skip-checks generate--post-build
2121

22-
generate--skip-checks: build generate--skip-checks--common generate--skip-checks--update8 generate--skip-checks--version-1
22+
generate--skip-checks: build generate--skip-checks--common generate--skip-checks--update8 generate--skip-checks--version-1-0 generate--skip-checks--version-1-1
2323

2424
generate--skip-checks--common:
2525
@echo 'running ./generate-common-types.ts'
@@ -29,10 +29,14 @@ generate--skip-checks--update8:
2929
@echo 'running ./discover-types.ts'
3030
@./node_modules/.bin/ts-node ./discover-types.ts
3131

32-
generate--skip-checks--version-1:
32+
generate--skip-checks--version-1-0:
3333
@echo 'running ./discover-types--1.0.ts'
3434
@./node_modules/.bin/ts-node ./discover-types--1.0.ts
3535

36+
generate--skip-checks--version-1-1:
37+
@echo 'running ./discover-types--1.1.ts'
38+
@./node_modules/.bin/ts-node ./discover-types--1.1.ts
39+
3640
generate--post-build:
3741
@NODE_OPTIONS='' ./node_modules/.bin/tsc --project ./tsconfig.generated-types-check.json
3842

common-imports.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@
128128
"common_type__common_base__FGBuildableRailroadSignal__type": "classes/CoreUObject/FGBuildableRailroadSignal",
129129
"common_type__common_base__FGBuildableRailroadStation__type": "classes/CoreUObject/FGBuildableRailroadStation",
130130
"common_type__common_base__FGBuildableRailroadTrack__type": "classes/CoreUObject/FGBuildableRailroadTrack",
131+
"common_type__common_base__FGBuildableRailroadTrack__properties__type": "classes/CoreUObject/FGBuildableRailroadTrack",
131132
"common_type__common_base__FGBuildableRamp__type": "classes/CoreUObject/FGBuildableRamp",
132133
"common_type__common_base__FGBuildableResourceExtractor__miner__type": "classes/CoreUObject/FGBuildableResourceExtractor",
133134
"common_type__common_base__FGBuildableResourceExtractor__miner__base__type": "classes/CoreUObject/FGBuildableResourceExtractor",
@@ -151,6 +152,7 @@
151152
"common_type__common_base__FGBuildableWidgetSign__type": "classes/CoreUObject/FGBuildableWidgetSign",
152153
"common_type__common_base__FGBuildableWire__type": "classes/CoreUObject/FGBuildableWire",
153154
"common_type__common_base__FGBuildingDescriptor__type": "classes/CoreUObject/FGBuildingDescriptor",
155+
"common_type__common_base__FGBuildingDescriptor__base__type": "classes/CoreUObject/FGBuildingDescriptor",
154156
"common_type__common_base__FGBuildingDescriptor__ClassName__type": "classes/CoreUObject/FGBuildingDescriptor",
155157
"common_type__common_base__FGBuildingDescriptor__mForm__type": "classes/CoreUObject/FGBuildingDescriptor",
156158
"common_type__common_base__FGBuildingDescriptor__mSubCategories__type": "classes/CoreUObject/FGBuildingDescriptor",

data/1.1/.gitkeep

Whitespace-only changes.

discover-types--1.1.ts

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import {
2+
TypeDefinitionWriter,
3+
} from './lib/TypeDefinitionWriter';
4+
import {
5+
NoMatchError,
6+
} from './lib/Exceptions';
7+
import {
8+
writeFile,
9+
} from 'node:fs/promises';
10+
import {
11+
__dirname_from_meta,
12+
} from './lib/__dirname';
13+
import {
14+
docs,
15+
} from './lib/helpers';
16+
import {
17+
setup_PerformanceObserver,
18+
} from './setup_PerformanceObserver';
19+
import {
20+
versions,
21+
} from './version-configs';
22+
import {
23+
ValidationError,
24+
} from './lib/DocsTsGenerator';
25+
26+
const __dirname = __dirname_from_meta(import.meta);
27+
28+
const perf = setup_PerformanceObserver();
29+
30+
const version = 'version_1_1_0_1';
31+
const sub_path = versions.version_1_1_0_1;
32+
try {
33+
performance.mark('start');
34+
const bar = new TypeDefinitionWriter(
35+
docs,
36+
version,
37+
);
38+
performance.measure('bootstrap', 'start');
39+
performance.mark('bootstrap done');
40+
await bar.write(`${__dirname}/generated-types/${sub_path}/`);
41+
performance.measure('types generated', 'bootstrap done');
42+
const discovery = await bar.discovery;
43+
const result = await discovery.discover_type_$defs();
44+
45+
process.stdout.write(
46+
`${
47+
JSON.stringify(result.missing_classes, null, '\t')
48+
}\n`,
49+
);
50+
console.table({
51+
'Found Types': Object.keys(result.found_types).length,
52+
'Missing Types': result.missing_types.length,
53+
'Found Classes': result.found_classes.length,
54+
'Missing Classes': result.missing_classes.length,
55+
});
56+
await writeFile(
57+
`${__dirname}/discover-types.${sub_path}.perf.json`,
58+
`${JSON.stringify(perf(), null, '\t')}`,
59+
);
60+
} catch (err) {
61+
await writeFile(
62+
`${__dirname}/discover-types.${sub_path}.perf.json`,
63+
`${JSON.stringify(perf(), null, '\t')}`,
64+
);
65+
if (err instanceof NoMatchError) {
66+
console.error('ran into an issue');
67+
await writeFile(
68+
`./discovery-types.${sub_path}.failure.json`,
69+
JSON.stringify(
70+
{
71+
now: performance.now(),
72+
property: err.property as unknown,
73+
message: err.message,
74+
stack: err.stack?.split('\n'),
75+
},
76+
null,
77+
'\t',
78+
),
79+
);
80+
81+
console.error(err.message, err.stack);
82+
} else if (err instanceof ValidationError) {
83+
console.error('ran into a validation issue');
84+
await writeFile(
85+
`./discovery-types.${sub_path}.failure.json`,
86+
JSON.stringify(
87+
{
88+
now: performance.now(),
89+
message: err.message,
90+
stack: err.stack?.split('\n'),
91+
errors: err.errors,
92+
},
93+
null,
94+
'\t',
95+
),
96+
);
97+
98+
console.error(err.message, err.stack);
99+
} else {
100+
throw err;
101+
}
102+
}

generate-common-types.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import {
1010
import {
1111
docs,
1212
} from './lib/helpers';
13+
import {
14+
ValidationError,
15+
} from './lib/DocsTsGenerator';
1316

1417
try {
1518
performance.mark('start');
@@ -63,6 +66,23 @@ try {
6366
),
6467
);
6568

69+
console.error(err.message, err.stack);
70+
} else if (err instanceof ValidationError) {
71+
console.error('ran into a validation issue');
72+
await writeFile(
73+
`./discovery-types.common.failure.json`,
74+
JSON.stringify(
75+
{
76+
now: performance.now(),
77+
message: err.message,
78+
stack: err.stack?.split('\n'),
79+
errors: err.errors,
80+
},
81+
null,
82+
'\t',
83+
),
84+
);
85+
6686
console.error(err.message, err.stack);
6787
} else {
6888
throw err;

generated-types/common/classes/CoreUObject/FGBuildableRailroadTrack.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ import {
77
integer_string__type,
88
} from '../../common/scalar';
99

10-
import {empty_object__type} from '../../common/unassigned';
10+
import {empty_object__type, class__type} from '../../common/unassigned';
1111

1212
import {common_base__FGBuildable__base__type} from './FGBuildable';
1313

1414
export type common_base__FGBuildableRailroadTrack__type =
15-
common_base__FGBuildable__base__type & {
16-
ClassName?: 'Build_RailroadTrack_C';
15+
common_base__FGBuildable__base__type &
16+
common_base__FGBuildableRailroadTrack__properties__type;
17+
18+
export type common_base__FGBuildableRailroadTrack__properties__type =
19+
class__type & {
20+
ClassName: 'Build_RailroadTrack_C';
1721
mMeshLength: decimal_string__type;
1822
mConnections: [
1923
UnrealEngineString<

generated-types/common/classes/CoreUObject/FGBuildingDescriptor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@ import {UnrealEngineString, StringStartsWith} from '../../utils/validators';
33
import {common_base__FGItemDescriptor__FGBuildingDescriptor__FGResourceDescriptor__type} from './FGItemDescriptor';
44

55
export type common_base__FGBuildingDescriptor__type =
6-
common_base__FGItemDescriptor__FGBuildingDescriptor__FGResourceDescriptor__type & {
6+
common_base__FGBuildingDescriptor__base__type & {
77
ClassName: common_base__FGBuildingDescriptor__ClassName__type;
8+
};
9+
10+
export type common_base__FGBuildingDescriptor__base__type =
11+
common_base__FGItemDescriptor__FGBuildingDescriptor__FGResourceDescriptor__type & {
812
mForm: common_base__FGBuildingDescriptor__mForm__type;
913
mSubCategories: common_base__FGBuildingDescriptor__mSubCategories__type;
1014
};

lib/DocsSchema.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import version_1_1_0_1_schema from '../schema/1.1.schema.json' with {
2+
type: 'json'
3+
};
4+
15
import version_1_0_1_4_schema from '../schema/1.0.schema.json' with {
26
type: 'json'
37
};
@@ -45,12 +49,18 @@ export class DocsSchemaByVersion
4549
readonly version_1_0_1_4: DocsSchemaByLanguageCode<
4650
typeof version_1_0_1_4_schema
4751
>;
52+
readonly version_1_1_0_1: DocsSchemaByLanguageCode<
53+
typeof version_1_1_0_1_schema
54+
>;
4855

4956
constructor()
5057
{
5158
this.common = new DocsSchemaByLanguageCode({
5259
en_US: common_schema,
5360
});
61+
this.version_1_1_0_1 = new DocsSchemaByLanguageCode({
62+
en_US: version_1_1_0_1_schema,
63+
});
5464
this.version_1_0_1_4 = new DocsSchemaByLanguageCode({
5565
en_US: version_1_0_1_4_schema,
5666
});

lib/DocsTsGenerator.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ export class DocsTsGeneratorVersion
121121
}
122122

123123
export type docs_versions = {
124+
version_1_1_0_1?: DocsTsGeneratorVersion,
124125
version_1_0_1_4?: DocsTsGeneratorVersion,
125126
update8?: DocsTsGeneratorVersion,
126127
common: DocsTsGeneratorVersion,
@@ -201,6 +202,8 @@ export class DocsTsGenerator {
201202
) {
202203
if ('update8' === version) {
203204
return this.schema_update8();
205+
} else if ('version_1_1_0_1' === version) {
206+
return this.schema_version_1_1_0_1();
204207
} else if ('version_1_0_1_4' === version) {
205208
return this.schema_version_1_0_1_4();
206209
} else if ('common' === version) {
@@ -252,6 +255,23 @@ export class DocsTsGenerator {
252255
return schema;
253256
}
254257

258+
// eslint-disable-next-line max-len
259+
async schema_version_1_1_0_1(): Promise<DocsSchemaByVersion['version_1_1_0_1']['en_US']['schema']>
260+
{
261+
const schema = this.schema_data.version_1_1_0_1.en_US.schema;
262+
const schema_1_0 = await this.schema_version_1_0_1_4();
263+
this.ajv.removeSchema('1.0.schema.json');
264+
this.ajv.addSchema(schema_1_0);
265+
266+
// eslint-disable-next-line max-len
267+
await this.validate_schema<DocsSchemaByVersion['version_1_1_0_1']['en_US']['schema']>(
268+
'version_1_1_0_1',
269+
schema,
270+
);
271+
272+
return schema;
273+
}
274+
255275
private async load(
256276
version: keyof docs_versions,
257277
): Promise<DocsData> {

lib/helpers.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ export const docs = new DocsTsGenerator({
3535
cache_path: `${__dirname}/../data/common/`,
3636
UnrealEngineString_quote_mode: 'original',
3737
}),
38+
version_1_1_0_1: new DocsTsGeneratorVersion({
39+
docs_path: `${__dirname}/../data/1.1/en-US.json`,
40+
cache_path: `${__dirname}/../data/1.1/`,
41+
UnrealEngineString_quote_mode: 'double',
42+
}),
3843
version_1_0_1_4: new DocsTsGeneratorVersion({
3944
docs_path: `${__dirname}/../data/1.0/en-US.json`,
4045
cache_path: `${__dirname}/../data/1.0/`,

0 commit comments

Comments
 (0)