@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
41 lines (31 loc) • 1.25 kB
text/typescript
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;
};