UNPKG

@metamask/snaps-utils

Version:
65 lines 2 kB
import { array, create, object, optional, refine, string } from "@metamask/superstruct"; import { JsonRpcIdStruct, JsonRpcParamsStruct, JsonRpcVersionStruct } from "@metamask/utils"; import $cronparser from "cron-parser"; const { parseExpression } = $cronparser; export const CronjobRpcRequestStruct = object({ jsonrpc: optional(JsonRpcVersionStruct), id: optional(JsonRpcIdStruct), method: string(), params: optional(JsonRpcParamsStruct), }); export const CronExpressionStruct = refine(string(), 'CronExpression', (value) => { try { parseExpression(value); return true; } catch { return false; } }); /** * Parses a cron expression. * * @param expression - Expression to parse. * @returns A CronExpression class instance. */ export function parseCronExpression(expression) { const ensureStringExpression = create(expression, CronExpressionStruct); return parseExpression(ensureStringExpression); } export const CronjobSpecificationStruct = object({ expression: CronExpressionStruct, request: CronjobRpcRequestStruct, }); /** * Check if the given value is a {@link CronjobSpecification} object. * * @param value - The value to check. * @returns Whether the value is a valid {@link CronjobSpecification} object. */ export function isCronjobSpecification(value) { try { create(value, CronjobSpecificationStruct); return true; } catch { return false; } } export const CronjobSpecificationArrayStruct = array(CronjobSpecificationStruct); /** * Check if the given value is an array of {@link CronjobSpecification} objects. * * @param value - The value to check. * @returns Whether the value is a valid array of {@link CronjobSpecification} objects. */ export function isCronjobSpecificationArray(value) { try { create(value, CronjobSpecificationArrayStruct); return true; } catch { return false; } } //# sourceMappingURL=cronjob.mjs.map