UNPKG

core-native

Version:

A lightweight framework based on React Native + Redux + Redux Saga, in strict TypeScript.

38 lines 1.41 kB
/** * Data whose key matches any of the @maskedKeywords RegExp, will be serialized as mask. * Useful to serialize sensitive data, e.g. password. * Function & Symbol are also discarded in the serialization. */ export function stringifyWithMask(maskedKeywords, maskedOutput, ...args) { const replacer = (key, value) => { if (typeof value === "function" || typeof value === "symbol") { return undefined; } if (maskedKeywords.some(_ => _.test(key))) { return maskedOutput; } return value; }; const serializableArgs = args.filter(_ => typeof _ !== "function" && typeof _ !== "symbol"); switch (serializableArgs.length) { case 0: return undefined; case 1: return JSON.stringify(serializableArgs[0], replacer); default: return JSON.stringify(serializableArgs, replacer); } } /** * If an ISO format date (2018-05-24T12:00:00.123Z) appears in the JSON, it will be transformed to JS Date type. */ export function parseWithDate(data) { const ISO_DATE_FORMAT = /^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d(\.\d+)?(Z|[+-][01]\d:[0-5]\d)$/; return JSON.parse(data, (key, value) => { if (typeof value === "string" && ISO_DATE_FORMAT.test(value)) { return new Date(value); } return value; }); } //# sourceMappingURL=json.js.map