@metamask/snaps-utils
Version:
A collection of utilities for MetaMask Snaps
65 lines • 2 kB
JavaScript
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