Files
twenty/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/unserialize-default-value.ts
Paul Rastoin a8423e8503 [QRQC_2] No explicit any in twenty-server (#12068)
# Introduction

Added a no-explicit-any rule to the twenty-server, not applicable to
tests and integration tests folder

Related to https://github.com/twentyhq/core-team-issues/issues/975
Discussed with Charles

## In case of conflicts
Until this is approved I won't rebased and handle conflict, just need to
drop two latest commits and re run the scripts etc

## Legacy
We decided not to handle the existing lint error occurrences and
programmatically ignored them through a disable next line rule comment

## Open question
We might wanna activate the
[no-explicit-any](https://typescript-eslint.io/rules/no-explicit-any/)
`ignoreRestArgs` for our use case ?
```
    ignoreRestArgs?: boolean;
```

---------

Co-authored-by: etiennejouan <jouan.etienne@gmail.com>
2025-05-15 16:26:38 +02:00

44 lines
1.1 KiB
TypeScript

import { FieldMetadataDefaultSerializableValue } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-default-value.interface';
export const unserializeDefaultValue = (
serializedDefaultValue: FieldMetadataDefaultSerializableValue,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
): any => {
if (serializedDefaultValue === null) {
return null;
}
if (typeof serializedDefaultValue === 'number') {
return serializedDefaultValue;
}
if (typeof serializedDefaultValue === 'boolean') {
return serializedDefaultValue;
}
if (typeof serializedDefaultValue === 'string') {
return serializedDefaultValue.replace(/'/g, '');
}
if (Array.isArray(serializedDefaultValue)) {
return serializedDefaultValue.map((value) =>
unserializeDefaultValue(value),
);
}
if (typeof serializedDefaultValue === 'object') {
return Object.entries(serializedDefaultValue).reduce(
(acc, [key, value]) => {
acc[key] = unserializeDefaultValue(value);
return acc;
},
{},
);
}
throw new Error(
`Invalid serialized default value "${serializedDefaultValue}"`,
);
};