{"version":3,"file":"cronjob.mjs","sourceRoot":"","sources":["../src/cronjob.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,EACP,8BAA8B;AAC/B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACrB,wBAAwB;;;AAGzB,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;IAC5C,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IACvC,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE;IAChB,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC;CACtC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CACxC,MAAM,EAAE,EACR,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,CAAC;QACH,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CACF,CAAC;AAIF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA2B;IAC7D,MAAM,sBAAsB,GAAG,MAAM,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IACxE,OAAO,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;IAC/C,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,uBAAuB;CACjC,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAClD,0BAA0B,CAC3B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import type { Infer } from '@metamask/superstruct';\nimport {\n  array,\n  create,\n  object,\n  optional,\n  refine,\n  string,\n} from '@metamask/superstruct';\nimport {\n  JsonRpcIdStruct,\n  JsonRpcParamsStruct,\n  JsonRpcVersionStruct,\n} from '@metamask/utils';\nimport { parseExpression } from 'cron-parser';\n\nexport const CronjobRpcRequestStruct = object({\n  jsonrpc: optional(JsonRpcVersionStruct),\n  id: optional(JsonRpcIdStruct),\n  method: string(),\n  params: optional(JsonRpcParamsStruct),\n});\n\nexport type CronjobRpcRequest = Infer<typeof CronjobRpcRequestStruct>;\n\nexport const CronExpressionStruct = refine(\n  string(),\n  'CronExpression',\n  (value) => {\n    try {\n      parseExpression(value);\n      return true;\n    } catch {\n      return false;\n    }\n  },\n);\n\nexport type CronExpression = Infer<typeof CronExpressionStruct>;\n\n/**\n * Parses a cron expression.\n *\n * @param expression - Expression to parse.\n * @returns A CronExpression class instance.\n */\nexport function parseCronExpression(expression: string | object) {\n  const ensureStringExpression = create(expression, CronExpressionStruct);\n  return parseExpression(ensureStringExpression);\n}\n\nexport const CronjobSpecificationStruct = object({\n  expression: CronExpressionStruct,\n  request: CronjobRpcRequestStruct,\n});\nexport type CronjobSpecification = Infer<typeof CronjobSpecificationStruct>;\n\n/**\n * Check if the given value is a {@link CronjobSpecification} object.\n *\n * @param value - The value to check.\n * @returns Whether the value is a valid {@link CronjobSpecification} object.\n */\nexport function isCronjobSpecification(value: unknown): boolean {\n  try {\n    create(value, CronjobSpecificationStruct);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport const CronjobSpecificationArrayStruct = array(\n  CronjobSpecificationStruct,\n);\n\n/**\n * Check if the given value is an array of {@link CronjobSpecification} objects.\n *\n * @param value - The value to check.\n * @returns Whether the value is a valid array of {@link CronjobSpecification} objects.\n */\nexport function isCronjobSpecificationArray(value: unknown): boolean {\n  try {\n    create(value, CronjobSpecificationArrayStruct);\n    return true;\n  } catch {\n    return false;\n  }\n}\n"]}