Source

adminjs-prisma/src/utils/helpers.ts

  1. /* eslint-disable no-restricted-globals */
  2. /* eslint-disable max-len */
  3. /**
  4. * This function is used to map actual model name to it's prisma manager.
  5. * Ref: https://github.com/prisma/prisma/blob/ba74c81fdbc9e6405946fdc6f9d42d103d008dc2/packages/client/src/runtime/utils/common.ts#L452
  6. * @param name string value
  7. * @returns `name` with it's first character converted to lowercase
  8. */
  9. export const lowerCase = (name: string): string => name.substring(0, 1).toLowerCase() + name.substring(1);
  10. /* eslint-enable max-len */
  11. export const isNumeric = (
  12. value: null | string | number | boolean | Record<string, any> | undefined,
  13. ): boolean => {
  14. const stringValue = (String(value)).replace(/,/g, '.')
  15. if (isNaN(parseFloat(stringValue))) return false
  16. return isFinite(Number(stringValue))
  17. }
  18. export const safeParseNumber = (
  19. value?: null | string | number | boolean | Record<string, any>,
  20. ): string | number | null | boolean | Record<string, any> | undefined => {
  21. if (isNumeric(value)) return Number(value)
  22. return value
  23. };
  24. export const safeParseJSON = (json: string): Record<string, any> | null => {
  25. try {
  26. return JSON.parse(json);
  27. } catch (e) {
  28. return null;
  29. }
  30. };