feat: add killturn to general meta and update related tests
- Introduced a new meta property `killturn` to the GeneralMeta interface. - Implemented a function `readMetaNumber` to handle the retrieval of numeric values from meta. - Updated the `mapGeneralRow` function to ensure `killturn` is required and properly handled. - Modified various tests to include the `killturn` property in the general's meta data. - Adjusted related action files to utilize the new GeneralMeta type for better type safety. - Ensured backward compatibility by updating existing test cases across multiple scenarios.
This commit is contained in:
@@ -77,6 +77,28 @@ const DEFAULT_CREW_TYPE_ID = 1100;
|
||||
const asTriggerRecord = (value: unknown): Record<string, TriggerValue> =>
|
||||
isRecord(value) ? (value as Record<string, TriggerValue>) : {};
|
||||
|
||||
const readMetaNumber = (meta: Record<string, TriggerValue>, key: string): number | null => {
|
||||
const value = meta[key];
|
||||
if (typeof value === 'number' && Number.isFinite(value)) {
|
||||
return value;
|
||||
}
|
||||
if (typeof value === 'string') {
|
||||
const parsed = Number(value);
|
||||
if (Number.isFinite(parsed)) {
|
||||
return parsed;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const ensureGeneralMeta = (meta: Record<string, TriggerValue>, generalId: number): General['meta'] => {
|
||||
const killturn = readMetaNumber(meta, 'killturn');
|
||||
if (killturn === null) {
|
||||
throw new Error(`general.meta.killturn is required (generalId=${generalId}).`);
|
||||
}
|
||||
return { ...meta, killturn } as General['meta'];
|
||||
};
|
||||
|
||||
const normalizeCode = (value: string | null | undefined): string | null => {
|
||||
if (!value || value === 'None') {
|
||||
return null;
|
||||
@@ -238,7 +260,7 @@ const mapGeneralRow = (row: GeneralRow): General => ({
|
||||
modifiers: {},
|
||||
meta: {},
|
||||
},
|
||||
meta: asTriggerRecord(row.meta),
|
||||
meta: ensureGeneralMeta(asTriggerRecord(row.meta), row.id),
|
||||
});
|
||||
|
||||
const mapCityRow = (row: CityRow): City => {
|
||||
|
||||
Reference in New Issue
Block a user