creevey
Version:
Cross-browser screenshot testing tool for Storybook with fancy UI Runner
27 lines (22 loc) • 648 B
text/typescript
export interface SerializedRegExp {
__regexp: true;
source: string;
flags: string;
}
export const isRegExp = (exp: unknown): exp is RegExp => {
return exp instanceof RegExp;
};
export const isSerializedRegExp = (exp: unknown): exp is SerializedRegExp => {
return typeof exp === 'object' && exp !== null && Reflect.get(exp, '__regexp') === true;
};
export const serializeRegExp = (exp: RegExp): SerializedRegExp => {
const { source, flags } = exp;
return {
__regexp: true,
source,
flags,
};
};
export const deserializeRegExp = ({ source, flags }: SerializedRegExp): RegExp => {
return new RegExp(source, flags);
};