/
githubmirror
/
strapi
Обзор
Документация
Войти
/
githubmirror
/
strapi
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/core/database/src/fields/biginteger.ts
54 строки
1 KB
Ben Irvin
fix(core): validate numeric inputs before DB unique checks (#26101)
03 июн 2026, 16:03
Не верифицирован
03 июн 2026, 16:03
67bde3a
Код
Авторство
О чём код?
import { toString } from 'lodash/fp'; import Field from './field'; const BIG_INTEGER_REGEX = /^[+-]?\d+$/; const toBigIntegerString = (value: unknown): string => { if (typeof value === 'bigint') { return value.toString(); } if (typeof value === 'number') { if (!Number.isFinite(value) || !Number.isInteger(value)) { throw new Error(`Expected a valid BigInteger, got ${value}`); } return value.toString(); } if (typeof value === 'string') { const trimmedValue = value.trim(); if (!BIG_INTEGER_REGEX.test(trimmedValue)) { throw new Error(`Expected a valid BigInteger, got ${value}`); } return BigInt(trimmedValue).toString(); } throw new Error(`Expected a valid BigInteger, got ${value}`); }; export default class BigIntegerField extends Field { toDB(value: unknown) { if (value === null || value === undefined) { return value; } return toBigIntegerString(value); } fromDB(value: unknown) { if (value === null || value === undefined) { return value; } try { return toBigIntegerString(value); } catch { // Preserve backward compatibility for legacy rows that may contain // malformed bigint values written by older versions/manual imports. return toString(value); } } }