{"_id":"@bernierllc/validators-cron-syntax","_rev":"7-577217dc8d4233e069f4b476b02117e1","name":"@bernierllc/validators-cron-syntax","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@bernierllc/validators-cron-syntax","version":"1.0.0","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-cron-syntax@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"1f5283f3c425163da39a4efb66d325eb09924272","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.0.0.tgz","fileCount":15,"integrity":"sha512-pCiKvlZzG5XU1apzCFKBbFrpy91MBnEYFLaJWEmv32iXsXnheIEVq5xYp4PvteOsmZ5T6n7GOeBYqIbOITEn+Q==","signatures":[{"sig":"MEUCIQD/hORFfcj6y8UjdtqiSwBrHDJgicNp8NaPUDRdw+z4hAIgcpByiFzvJXeyru+x2zzJz1jKWwfAs+iP/Q9Mm3l2SkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45534},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a37b5a38aac51e293f292bdf801de28d80f494d4","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.4.2","description":"Cron syntax validation - pattern validity, timezone, DST","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-cron-syntax_1.0.0_1760051335380_0.5790626153362917","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/validators-cron-syntax","version":"1.2.0","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-cron-syntax@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"75815082d17fbbbef970cbe94cf7ebb2eee2a540","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.2.0.tgz","fileCount":15,"integrity":"sha512-+UcmG2fBQWgTgkUsY4yi3haMZsVO22MPr5t2kbgAl3ZJgGbr4U9eYRxXBlAenHpRETohk2Tn/+DTvnr7Smt8TQ==","signatures":[{"sig":"MEUCIQCxDQczQ+bgorqdwt1jdTZD8XtoF+62lBjxFC6hsmYllQIgPyao1HvDfWgepOUxRCb5y6T/UV/+vma/Q9v3b4MPW2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45637},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:85d9a69f-c9e3-4622-8cb1-4bb3e6e00024"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Cron syntax validation - pattern validity, timezone, DST","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-cron-syntax_1.2.0_1767642360972_0.7369370533861477","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/validators-cron-syntax","version":"1.2.1","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-cron-syntax@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"14bd6126969d67e391f9a3991179de0e554241f1","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.2.1.tgz","fileCount":15,"integrity":"sha512-7daQ6p90aj7UGcwHPpVHUg4URUSJ3sqCm6952Bm2KNmKlZWGVX8/L/tXRny9JvMv0wsM1GjE1hGY89165O42xg==","signatures":[{"sig":"MEUCIQC2GQU7LF1TUg3l/rb/N0EMJiVh9xVxA02ZlfBER8Pd/wIgR2VMlaQpFPdQcRDcAWrlYiaBm+4DTMkjiJcGqv2P4YY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45579},"main":"dist/index.js","_from":"file:bernierllc-validators-cron-syntax-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:85d9a69f-c9e3-4622-8cb1-4bb3e6e00024"}},"_resolved":"/tmp/4cae6254044ed4d0ea99e919de8b23d4/bernierllc-validators-cron-syntax-1.2.1.tgz","_integrity":"sha512-7daQ6p90aj7UGcwHPpVHUg4URUSJ3sqCm6952Bm2KNmKlZWGVX8/L/tXRny9JvMv0wsM1GjE1hGY89165O42xg==","_npmVersion":"11.11.0","description":"Cron syntax validation - pattern validity, timezone, DST","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-cron-syntax_1.2.1_1773078270287_0.3120911128474191","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/validators-cron-syntax","version":"1.2.2","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-cron-syntax@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"166fcd7565efc4f43bd55cf2cf5296467c9326b9","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.2.2.tgz","fileCount":15,"integrity":"sha512-/Q7syuZ05GNqLx8vrmgYmIy1BerH/vnre9gtwclXr/n1D2YY+vzP83e2Io/JHSEQDxRjievywJVa0KMNuwteXw==","signatures":[{"sig":"MEUCIQCnSmk/OuOaU2KwcywmzH1NcFg9Y93NWpTQvK/jLroJewIgDXesP3/gYf+X5VtuGL+tlBiMTDg9yCHa/qYYNBoYkCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45579},"main":"dist/index.js","_from":"file:bernierllc-validators-cron-syntax-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:85d9a69f-c9e3-4622-8cb1-4bb3e6e00024"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-cron-syntax/bernierllc-validators-cron-syntax-1.2.2.tgz","_integrity":"sha512-/Q7syuZ05GNqLx8vrmgYmIy1BerH/vnre9gtwclXr/n1D2YY+vzP83e2Io/JHSEQDxRjievywJVa0KMNuwteXw==","_npmVersion":"11.11.0","description":"Cron syntax validation - pattern validity, timezone, DST","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-cron-syntax_1.2.2_1773163903415_0.2171634817857122","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/validators-cron-syntax","version":"1.3.0","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-cron-syntax@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"e93124609fe3add37dff7cb96c07c5b4e5d2e472","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.3.0.tgz","fileCount":15,"integrity":"sha512-xbC/IHvMHCpRdXJ+ouInSmXyFruB09cf+87cDHJrhmGevOa0Blc8ZcBM8mJGoFuI+23MrrEYfUSdSxbvMkYqCA==","signatures":[{"sig":"MEUCIQCs9f4ZZbODt4HhrMpXkx2f8i3JO5/LYLkU2SC84yo3FwIgPJnoQnoCPQWEwoOxIKY6bc03x7eD0E/999x1PQlS5LI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45579},"main":"dist/index.js","_from":"file:bernierllc-validators-cron-syntax-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:85d9a69f-c9e3-4622-8cb1-4bb3e6e00024"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-cron-syntax/bernierllc-validators-cron-syntax-1.3.0.tgz","_integrity":"sha512-xbC/IHvMHCpRdXJ+ouInSmXyFruB09cf+87cDHJrhmGevOa0Blc8ZcBM8mJGoFuI+23MrrEYfUSdSxbvMkYqCA==","_npmVersion":"11.14.1","description":"Cron syntax validation - pattern validity, timezone, DST","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-cron-syntax_1.3.0_1779242134796_0.37587643176528895","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/validators-cron-syntax","version":"1.4.0","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-cron-syntax@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"26e1438d38758808db2b7768b5177faa86760719","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.4.0.tgz","fileCount":15,"integrity":"sha512-1mFr9A3XBPjYRlu68ea3sEX7wMCBcM2XBWfWyu3fXkGjM/UCqsI5CWbN+aY6JDbKn5ZyKVRMgqcjq4TdKfMArQ==","signatures":[{"sig":"MEYCIQCQWK+JkMK5e/RxLYzzHutz2R4UmCUG+F+QGnvP2bjI9QIhAOCwshyT3U3HF7qzq6BSjOoP4nE6+y0RnujgAfemUeyB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45579},"main":"dist/index.js","_from":"file:bernierllc-validators-cron-syntax-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:85d9a69f-c9e3-4622-8cb1-4bb3e6e00024"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-cron-syntax/bernierllc-validators-cron-syntax-1.4.0.tgz","_integrity":"sha512-1mFr9A3XBPjYRlu68ea3sEX7wMCBcM2XBWfWyu3fXkGjM/UCqsI5CWbN+aY6JDbKn5ZyKVRMgqcjq4TdKfMArQ==","_npmVersion":"11.14.1","description":"Cron syntax validation - pattern validity, timezone, DST","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-cron-syntax_1.4.0_1779250891494_0.14103168798586818","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/validators-cron-syntax","version":"1.6.0","description":"Cron syntax validation - pattern validity, timezone, DST","main":"dist/index.js","types":"dist/index.d.ts","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","dependencies":{"@bernierllc/validators-core":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/eslint-plugin":"^7.0.1","@typescript-eslint/parser":"^7.0.1","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint 'src/**/*.{ts,tsx}' '__tests__/**/*.{ts,tsx}'","clean":"rm -rf dist"},"_id":"@bernierllc/validators-cron-syntax@1.6.0","_integrity":"sha512-4Sz60JKL3iqY93NSRlP5WovOLW/6GSVUcKtRcGAZB6dy0t3TLCf09A4WJE8DB+VK5PJSAxlf8tMARkZpRrmeaQ==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-cron-syntax/bernierllc-validators-cron-syntax-1.6.0.tgz","_from":"file:bernierllc-validators-cron-syntax-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-4Sz60JKL3iqY93NSRlP5WovOLW/6GSVUcKtRcGAZB6dy0t3TLCf09A4WJE8DB+VK5PJSAxlf8tMARkZpRrmeaQ==","shasum":"4917d88012123bcfe098d7f3be40f9fe8cfca033","tarball":"https://registry.npmjs.org/@bernierllc/validators-cron-syntax/-/validators-cron-syntax-1.6.0.tgz","fileCount":17,"unpackedSize":47425,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDnmo3KRw85eHdtijtfIH1bfkwgZnPSyLxjD3b+KvgBYAIhAOz0CZeZwjzWJeQX59KAuTxmyjHvdQISpW10eWn/0qNd"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:85d9a69f-c9e3-4622-8cb1-4bb3e6e00024"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-cron-syntax_1.6.0_1779252180787_0.16160256733244904"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-09T23:08:55.278Z","modified":"2026-05-20T04:43:01.056Z","1.0.0":"2025-10-09T23:08:55.573Z","1.2.0":"2026-01-05T19:46:01.114Z","1.2.1":"2026-03-09T17:44:30.470Z","1.2.2":"2026-03-10T17:31:43.585Z","1.3.0":"2026-05-20T01:55:34.940Z","1.4.0":"2026-05-20T04:21:31.632Z","1.6.0":"2026-05-20T04:43:00.921Z"},"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","keywords":["cron","validation","syntax","timezone","DST","scheduler","bernierllc","validators"],"description":"Cron syntax validation - pattern validity, timezone, DST","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-cron-syntax\n\nCron syntax validation - pattern validity, timezone, DST\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-cron-syntax\n```\n\n## Usage\n\n### Basic Validation\n\n```typescript\nimport { validateCronSyntax, isValidCron } from '@bernierllc/validators-cron-syntax';\n\n// Validate a cron expression\nconst problems = await validateCronSyntax('0 12 * * *');\nif (problems.length === 0) {\n  console.log('Valid cron expression');\n}\n\n// Quick validation check\nconst valid = await isValidCron('0 12 * * *');\nconsole.log(valid); // true\n```\n\n### Advanced Validation\n\n```typescript\n// Validate with timezone\nconst problems = await validateCronSyntax('0 12 * * * America/New_York', {\n  validateTimezone: true,\n  checkDSTTransitions: true\n});\n\n// Validate 6-field format (with seconds)\nconst problems2 = await validateCronSyntax('0 0 12 * * *', {\n  allowSeconds: true\n});\n\n// Validate with frequency constraints\nconst problems3 = await validateCronSyntax('*/5 * * * *', {\n  minIntervalMinutes: 10, // Error: too frequent\n  maxIntervalHours: 24\n});\n```\n\n### Parsing Cron Expressions\n\n```typescript\nimport { parseCronExpression } from '@bernierllc/validators-cron-syntax';\n\nconst result = parseCronExpression('0 12 * * *');\nif (result.success) {\n  console.log(result.fields);\n  // {\n  //   minute: '0',\n  //   hour: '12',\n  //   dayOfMonth: '*',\n  //   month: '*',\n  //   dayOfWeek: '*'\n  // }\n}\n\n// Parse with timezone\nconst result2 = parseCronExpression('0 12 * * * America/New_York');\nconsole.log(result2.timezone); // 'America/New_York'\n```\n\n### Human-Readable Descriptions\n\n```typescript\nimport { describeCronExpression } from '@bernierllc/validators-cron-syntax';\n\nconsole.log(describeCronExpression('0 12 * * *'));\n// \"at minute 0 hour 12\"\n\nconsole.log(describeCronExpression('*/15 * * * *'));\n// \"every 15 minutes\"\n\nconsole.log(describeCronExpression('0 12 * * * America/New_York'));\n// \"at minute 0 hour 12 (America/New_York)\"\n```\n\n## API Reference\n\n### `validateCronSyntax(cronExpression, options?, utils?)`\n\nValidates a cron expression and returns validation problems.\n\n**Parameters:**\n- `cronExpression` (string): The cron expression to validate\n- `options` (CronSyntaxOptions): Validation options\n- `utils` (SharedUtils): Optional shared utilities from validators-core\n\n**Returns:** `Promise<Problem[]>` - Array of validation problems\n\n**Options:**\n```typescript\ninterface CronSyntaxOptions {\n  allowSeconds?: boolean;           // Allow 6-field format (default: false)\n  allowYear?: boolean;              // Allow 7-field format (default: false)\n  validateTimezone?: boolean;       // Validate timezone identifiers (default: true)\n  checkDSTTransitions?: boolean;    // Check for DST issues (default: true)\n  minIntervalMinutes?: number;      // Minimum interval between executions\n  maxIntervalHours?: number;        // Maximum interval between executions\n  checkOverlaps?: boolean;          // Check for overlapping schedules (default: false)\n}\n```\n\n### `isValidCron(cronExpression, options?)`\n\nQuick check if a cron expression is valid (no errors).\n\n**Returns:** `Promise<boolean>`\n\n### `parseCronExpression(cronExpression, options?)`\n\nParses a cron expression into its component fields.\n\n**Returns:** `CronParseResult`\n\n```typescript\ninterface CronParseResult {\n  success: boolean;\n  fields?: {\n    second?: string;\n    minute: string;\n    hour: string;\n    dayOfMonth: string;\n    month: string;\n    dayOfWeek: string;\n    year?: string;\n  };\n  timezone?: string;\n  error?: string;\n}\n```\n\n### `describeCronExpression(cronExpression, options?)`\n\nReturns a human-readable description of the cron expression.\n\n**Returns:** `string`\n\n## Validation Rules\n\n### Cron Syntax (`cron-syntax`)\n- Validates field count (5, 6, or 7 fields)\n- Validates field value ranges\n- Validates special characters (*, ?, -, /, ,)\n- Validates ranges, steps, and lists\n\n### Timezone Validation (`cron-timezone`)\n- Validates IANA timezone identifiers\n- Warns about UTC and Etc/ timezones (DST issues)\n- Suggests location-based timezones\n\n### DST Transition Safety (`cron-dst-transition`)\n- Warns about 2 AM schedules (spring-forward skip)\n- Warns about 1 AM schedules (fall-back duplicate)\n- Errors on daily 2 AM during March/November\n- Provides DST-safe alternatives\n\n### Frequency Validation (`cron-frequency`)\n- Enforces minimum interval between executions\n- Enforces maximum interval between executions\n- Warns about very high frequencies (>1000/day)\n- Provides frequency insights\n\n## Cron Format Support\n\n### Standard 5-field format\n```\n* * * * *\n│ │ │ │ │\n│ │ │ │ └── Day of week (0-7)\n│ │ │ └──── Month (1-12)\n│ │ └────── Day of month (1-31)\n│ └──────── Hour (0-23)\n└────────── Minute (0-59)\n```\n\n### 6-field format (with seconds)\n```\n* * * * * *\n│ │ │ │ │ │\n│ │ │ │ │ └── Day of week (0-7)\n│ │ │ │ └──── Month (1-12)\n│ │ │ └────── Day of month (1-31)\n│ │ └──────── Hour (0-23)\n│ └────────── Minute (0-59)\n└──────────── Second (0-59)\n```\n\n### 7-field format (with seconds and year)\n```\n* * * * * * *\n│ │ │ │ │ │ │\n│ │ │ │ │ │ └── Year (1970-2099)\n│ │ │ │ │ └──── Day of week (0-7)\n│ │ │ │ └────── Month (1-12)\n│ │ │ └──────── Day of month (1-31)\n│ │ └────────── Hour (0-23)\n│ └──────────── Minute (0-59)\n└────────────── Second (0-59)\n```\n\n## Examples\n\n### Basic Schedules\n\n```typescript\n// Every minute\nawait validateCronSyntax('* * * * *');\n\n// Every hour at minute 0\nawait validateCronSyntax('0 * * * *');\n\n// Daily at noon\nawait validateCronSyntax('0 12 * * *');\n\n// Every weekday at 9 AM\nawait validateCronSyntax('0 9 * * 1-5');\n```\n\n### Advanced Schedules\n\n```typescript\n// Every 15 minutes during business hours\nawait validateCronSyntax('*/15 9-17 * * 1-5');\n\n// Multiple specific times\nawait validateCronSyntax('0 8,12,16,20 * * *');\n\n// First day of month at midnight\nawait validateCronSyntax('0 0 1 * *');\n\n// With timezone\nawait validateCronSyntax('0 12 * * * America/New_York');\n```\n\n### DST-Safe Scheduling\n\n```typescript\n// ❌ Risky: May skip during spring DST\nawait validateCronSyntax('0 2 * * *');\n// Warning: Cron expression scheduled during DST transition hour (2 AM)\n\n// ✅ Safe: Use 3 AM or UTC\nawait validateCronSyntax('0 3 * * *');\nawait validateCronSyntax('0 2 * * * UTC');\n```\n\n### Frequency Controls\n\n```typescript\n// Enforce minimum 5-minute interval\nawait validateCronSyntax('*/5 * * * *', {\n  minIntervalMinutes: 5 // OK\n});\n\nawait validateCronSyntax('* * * * *', {\n  minIntervalMinutes: 5 // Error: too frequent\n});\n\n// Enforce maximum 12-hour interval\nawait validateCronSyntax('0 */6 * * *', {\n  maxIntervalHours: 12 // OK\n});\n```\n\n## Error Handling\n\n```typescript\nconst problems = await validateCronSyntax('invalid cron');\n\nproblems.forEach(problem => {\n  console.log(`[${problem.severity}] ${problem.message}`);\n  if (problem.suggestion) {\n    console.log(`  Suggestion: ${problem.suggestion}`);\n  }\n});\n```\n\n**Problem Severity Levels:**\n- `error`: Invalid syntax or critical issues\n- `warn`: Potential issues or best practice violations\n- `info`: Informational messages\n\n## Integration Status\n\n- **Logger**: not-applicable - Pure validation utility\n- **Docs-Suite**: ready - Full API documentation available\n- **NeverHub**: not-applicable - Stateless validator\n\n## Dependencies\n\n- `@bernierllc/validators-core` - Core validation framework\n\n## See Also\n\n- [@bernierllc/validators-core](../validators-core) - Core validation framework\n- [@bernierllc/validators-workflow-sla](../validators-workflow-sla) - Workflow SLA validation\n- [@bernierllc/validators-temporal-consistency](../validators-temporal-consistency) - Temporal consistency checks\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n","readmeFilename":"README.md"}