UNPKG

@naturalcycles/js-lib

Version:

Standard library for universal (browser + Node.js) javascript

96 lines (95 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.zBaseDBEntity = exports.zSlug = exports.zIdBase64Url = exports.zIdBase64 = exports.zIdBase62 = exports.zId = exports.zJwt = exports.JWT_REGEX = exports.zBase64Url = exports.zBase64 = exports.zBase62 = exports.BASE64URL_REGEX = exports.BASE64_REGEX = exports.BASE62_REGEX = exports.zEmail = exports.zIsoDateString = exports.zSemVer = exports.zUnixTimestampMillis2000 = exports.zUnixTimestampMillis = exports.zUnixTimestamp2000 = exports.zUnixTimestamp = exports.TS_2000 = exports.TS_2500 = void 0; const zod_1 = require("zod"); exports.TS_2500 = 16725225600; // 2500-01-01 exports.TS_2000 = 946684800; // 2000-01-01 exports.zUnixTimestamp = zod_1.z .number() .int() .min(0) .max(exports.TS_2500, 'Must be a UnixTimestamp number') .describe('UnixTimestamp'); exports.zUnixTimestamp2000 = zod_1.z .number() .int() .min(exports.TS_2000) .max(exports.TS_2500, 'Must be a UnixTimestamp number after 2000-01-01') .describe('UnixTimestamp2000'); exports.zUnixTimestampMillis = zod_1.z .number() .int() .min(0) .max(exports.TS_2500 * 1000, 'Must be a UnixTimestampMillis number') .describe('UnixTimestampMillis'); exports.zUnixTimestampMillis2000 = zod_1.z .number() .int() .min(exports.TS_2000 * 1000) .max(exports.TS_2500 * 1000, 'Must be a UnixTimestampMillis number after 2000-01-01') .describe('UnixTimestampMillis2000'); exports.zSemVer = zod_1.z .string() .regex(/^[0-9]+\.[0-9]+\.[0-9]+$/, 'Must be a SemVer string') .describe('SemVer'); exports.zIsoDateString = zod_1.z .string() .refine(v => { return /^\d{4}-\d{2}-\d{2}$/.test(v); }, 'Must be an IsoDateString') .describe('IsoDateString'); exports.zEmail = zod_1.z .string() .trim() .email() .transform(s => s.toLowerCase()) .describe('Email'); exports.BASE62_REGEX = /^[a-zA-Z0-9]+$/; exports.BASE64_REGEX = /^[A-Za-z0-9+/]+={0,2}$/; exports.BASE64URL_REGEX = /^[\w-/]+$/; exports.zBase62 = zod_1.z .string() .regex(exports.BASE62_REGEX, 'Must be a base62 string') .describe('Base62String'); exports.zBase64 = zod_1.z .string() .regex(exports.BASE64_REGEX, 'Must be a base64 string') .describe('Base64String'); exports.zBase64Url = zod_1.z .string() .regex(exports.BASE64URL_REGEX, 'Must be a base64url string') .describe('Base64UrlString'); exports.JWT_REGEX = /^[\w-]+\.[\w-]+\.[\w-]+$/; exports.zJwt = zod_1.z.string().regex(exports.JWT_REGEX, 'Must be a JWT string').describe('JWTString'); exports.zId = zod_1.z .string() .regex(/^[a-zA-Z0-9_]{6,64}$/, 'Must be an id string') .describe('IdString'); exports.zIdBase62 = zod_1.z .string() .regex(/^[a-zA-Z0-9]{8,64}$/, 'Must be a base62 id string') .describe('Base62Id'); exports.zIdBase64 = zod_1.z .string() .regex(/^[A-Za-z0-9+/]{6,62}={0,2}$/, 'Must be a base64 id string') .describe('Base64Id'); exports.zIdBase64Url = zod_1.z .string() .regex(/^[\w-/]{8,64}$/, 'Must be a base64url id string') .describe('Base64UrlId'); /** * "Slug" - a valid URL, filename, etc. */ exports.zSlug = zod_1.z .string() .regex(/^[a-z0-9-]{1,255}$/, 'Must be a slug string') .describe('Slug'); exports.zBaseDBEntity = zod_1.z .object({ id: zod_1.z.string(), // created/updated are intentionally optional here created: exports.zUnixTimestamp2000.optional(), updated: exports.zUnixTimestamp2000.optional(), }) .describe('BaseDBEntity'); // export const zSavedDBEntity = zBaseDBEntity.required().describe('SavedDBEntity')