UNPKG

@yoroi/common

Version:
74 lines (72 loc) 2.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isArrayOfString = exports.isArray = exports.getKeys = exports.createTypeGuardFromSchema = void 0; exports.isArrayOfType = isArrayOfType; exports.urlSchema = exports.parseString = exports.parseSafe = exports.parseNumber = exports.parseBoolean = exports.isUrl = exports.isStringOrArrayOfString = exports.isStringLiteral = exports.isString = exports.isRecord = exports.isPositiveNumber = exports.isNumber = exports.isNonNullable = exports.isKeyOf = exports.isBoolean = void 0; var _zod = require("zod"); // ------- // PARSERS const parseBoolean = data => { const parsed = parseSafe(data); return isBoolean(parsed) ? parsed : undefined; }; exports.parseBoolean = parseBoolean; const parseString = data => { const parsed = parseSafe(data); return isString(parsed) ? parsed : undefined; }; exports.parseString = parseString; const parseSafe = text => { try { return JSON.parse(text); } catch (_) { return undefined; } }; exports.parseSafe = parseSafe; const parseNumber = data => { const parsed = parseSafe(data); return isNumber(parsed) ? parsed : undefined; }; // ----------- // TYPE GUARDS exports.parseNumber = parseNumber; const isBoolean = data => typeof data === 'boolean'; exports.isBoolean = isBoolean; const isString = data => typeof data === 'string'; exports.isString = isString; const isKeyOf = (key, obj) => isString(key) && key in obj; exports.isKeyOf = isKeyOf; const getKeys = obj => Object.keys(obj); exports.getKeys = getKeys; const isNonNullable = data => data !== null && data !== undefined; exports.isNonNullable = isNonNullable; const isNumber = data => typeof data === 'number' && !Number.isNaN(data) && Number.isFinite(data); exports.isNumber = isNumber; const isPositiveNumber = data => isNumber(data) && data > 0; exports.isPositiveNumber = isPositiveNumber; const isArrayOfString = data => isArrayOfType(data, isString); exports.isArrayOfString = isArrayOfString; const isStringOrArrayOfString = data => isString(data) || isArrayOfString(data); exports.isStringOrArrayOfString = isStringOrArrayOfString; const createTypeGuardFromSchema = schema => data => { return schema.safeParse(data).success; }; exports.createTypeGuardFromSchema = createTypeGuardFromSchema; const isRecord = exports.isRecord = createTypeGuardFromSchema(_zod.z.record(_zod.z.unknown())); const isArray = exports.isArray = createTypeGuardFromSchema(_zod.z.array(_zod.z.unknown())); const urlSchema = exports.urlSchema = _zod.z.string().url(); const isUrl = data => { return urlSchema.safeParse(data).success; }; exports.isUrl = isUrl; function isArrayOfType(data, predicate) { return isArray(data) && data.every(predicate); } const isStringLiteral = (literals, value) => { return literals.includes(value); }; exports.isStringLiteral = isStringLiteral; //# sourceMappingURL=parsers.js.map