UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

41 lines (31 loc) 1.25 kB
import * as R from "ramda"; import { DEFAULT_NAMESPACE } from "../consts"; import { KeyName, KeyNameObj } from "../index"; const lastDotRegex = /\.([^.]+)$/; const splitByLastDot = R.compose(R.init, R.split(lastDotRegex)); export function getNamespaceAndKey(namespacedKey: KeyName): KeyNameObj { if (typeof namespacedKey !== "string") return namespacedKey; const namespacedKeyProps = namespacedKey.includes(".") ? splitByLastDot(namespacedKey) : [DEFAULT_NAMESPACE, namespacedKey]; return R.zipObj(["namespace", "key"], namespacedKeyProps); } const propIsNotNullOrUndefined = (prop) => R.compose(R.not, R.isNil, R.prop(prop)); const propIsNotEmpty = (prop) => R.compose(R.not, R.isEmpty, R.prop(prop)); export const keyIsValid = R.allPass([ R.compose(R.not, R.isNil), R.compose(R.not, R.is(String)), R.compose(R.not, R.is(Array)), R.has("key"), R.has("namespace"), propIsNotNullOrUndefined("key"), propIsNotNullOrUndefined("namespace"), propIsNotEmpty("key"), propIsNotEmpty("namespace"), ]); export const buildNamespaceKey = (key: string, namespace: string) => `${namespace}.${key}`; export const savingResultIsSuccess = (result: unknown): boolean => { return R.is(Boolean, result) && !!result; };