{"_id":"moyan-mfw-extension-scheduler","_rev":"28-9dd629a940636fcc8ab393418dc4b1fd","name":"moyan-mfw-extension-scheduler","dist-tags":{"beta":"1.2.0-beta.60","latest":"1.2.0-beta.61"},"versions":{"1.2.0-beta.32":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.32","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.32","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"66a81536c15b8c00b928ae6d8396fb0c7bc72005","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.32.tgz","fileCount":198,"integrity":"sha512-WuY8+lniJPoca6m63H9WCx1eI5WVTpS3pyIogjgvRxUy+LyDAx1FhJQBja+hQ9mvxpiujTlJwkvhwjexgDcwCw==","signatures":[{"sig":"MEUCIQDA3whlCEgNHM5GxHcmo9BadI4NAPbUbmwzJsHZWw06qwIgFqNLdNl5mUSUEH+epr96lTwcl5mglvGSkoBZ6m+tBgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347940},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"83dc848888db4e80961847843205ba7613f033c5","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.32_1785426396241_0.5278019182715885","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.33":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.33","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.33","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"7018cdf7fc81d687908d9eaa0339a71927ad5599","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.33.tgz","fileCount":198,"integrity":"sha512-Y6OojqJRxkDplETD7pQJQ+ANGD4zB0OHod7DGiASOh5kHP5E1SlyTptzbOsOY6c1Za+i94ewQEoLaTYQmx+xiA==","signatures":[{"sig":"MEQCIEo3tVW2Zl9H7cXOchLUZ5B+/KAThfLKfs54E9f6iSXtAiAXTTMKgMrO8tL0YLf2GTzwWgsEMT0GzhUHty+F988SzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347940},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"39201726b38389edca54a12bed7781d81cda6d65","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.33_1785428201993_0.632249030677476","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.35":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.35","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.35","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"837d1e1b9983d0a22c0fcf1d282ef0e76f00f05a","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.35.tgz","fileCount":198,"integrity":"sha512-ZDciSDi/XpoJs3alaF84xHvBtE3naG/8J4HU4kq8SbthU3vzUT0w76RJHJNJiA4RY7qRQH8In3YVneAP2uF+SA==","signatures":[{"sig":"MEQCIDxNC1GkijzubHEFxv0kliZQ8TMSye47Is+gaiAjTatjAiA5ZbuuuiSyBagiURvgvVyi8HC+u6Tpz5x0gQkc1mNJFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352176},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"1ad5236f66030079354f1edace98a8935816798e","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.35_1785498640596_0.5336258336877324","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.36":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.36","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.36","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"f91e838730d522c1a254340b1e064b028751d752","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.36.tgz","fileCount":198,"integrity":"sha512-hNDUfpo9vIifhg1jltB+s3McktQEGum4xsQw4eGBbRsdLT6HGlGwxO+MluY0yEppagKjlgWU/JMQjyCjpJvufw==","signatures":[{"sig":"MEUCIQClrgpTKSzvE5Y5FUW/FqUEQlJd06xvbGgCYatIHiS0QAIgDSCCgRRJHnTl8SsVbVkkb3w0qbgPiiuDDcrfPypjOgY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352473},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"b1445caa434a67972dadafcd6988902082be8b53","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.36_1785575516586_0.8745961388110195","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.37":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.37","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.37","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"d86cec9d80dbac5f51f6e48acf7d9d1eb1874461","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.37.tgz","fileCount":198,"integrity":"sha512-3T7IGyYx7KO64GrpF/fRwgR2BOoPJUliapUKt9tN5o4zC/v8S3l+IFkOYsQ3uwgLJd6MFgD4M4uBqGcrw6uSyA==","signatures":[{"sig":"MEUCIQDOVZgABPubVWIlRscXV1ggd9yFtMzn0hylOpSphneTFwIgPsjTAs3B3Xjf8crwZwDhnGxh29iKf597NinLLSXx5kk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":352473},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"de37637b83651bc0e0fdce968221697e1914761e","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.37_1785600928517_0.712872670657843","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.39":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.39","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.39","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"8db7ec83760fb49ed19ded0c91f08f5b1712d4ba","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.39.tgz","fileCount":210,"integrity":"sha512-WiJFBtPR1f+Q2UE6bWGUby8t5lqmnfFtjMPSlHnLC1RKvkZbWi4SN13G4W5Bbr07L0w4UoJOv54UfhdBS5zAlw==","signatures":[{"sig":"MEUCIG++Rx1c1bdpYxBsS2KOiN1p7EWpDPGAIRYTX99sM/yyAiEArl68n3pLdZv0SOWIa56kw2QP3wz/W2h+KFbcVeqPW2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":400893},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"e2d4774116ff19ea387e65fa617e9ab059e327a9","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.39_1785689245312_0.8814874340821797","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.40":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.40","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.40","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"beb63b002489efcf392ad11129612d261b610249","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.40.tgz","fileCount":208,"integrity":"sha512-UOV7qpjBz8FgtpBvu4Z25XBwv7zq7yJjQnDC36+UnydAqcX3DLOi+8D1UbqGfcIG3L9Zr+BmtqKCCNRtxqLH8w==","signatures":[{"sig":"MEQCIATP0T257ddfmBbe+p2Xr6Qc0SPQs6Z2Bd3wTg9Ue3U0AiBpMyAUOQHG1UBVI8MtO1+emDtF3sW7PceHAtQ9ET4zhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":411378},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"7e3c0340e819bf7c18da01b04353a0d76dfd5401","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.40_1785750300407_0.8195381724336155","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.41":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.41","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.41","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"87f0b314e85c4c2bd840802f014506aad5ed50b9","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.41.tgz","fileCount":209,"integrity":"sha512-a36MSl4u4OAxiiD0DltmOPXP5QrAIZPsZ611Y6urN61nYTDbWR3Iu/XPuBnNURfuTfPRZR7ivy3mI9B/sFVB2A==","signatures":[{"sig":"MEUCIAd+JOzUKh418SeK8PAE1zw9dA/f7GzLHRZd3mut/Io7AiEAl3iXXZwk/uK1Golyl0l4GKJu0v2iTpP+bRGgdbldXS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":406565},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"2281826817d4c7b322ef7a1954bea32e2bebc907","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.41_1785802620517_0.046963936701338804","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.43":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.43","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.43","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"f6740166ecd54ae9c3c31ecb645509d321f86e8c","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.43.tgz","fileCount":260,"integrity":"sha512-/V/koFX+aTWCNGu8F24dNMCflnWD/eQx+dnclJSQLsWvXM9cTvG8MK/Sifn10GKrl8Ao/U9UA0vbEFRzsgeu/g==","signatures":[{"sig":"MEYCIQDrdTW/sePfcQv+ZmOL/FQA+Ikr7YVbsd71NmcJoTx04wIhAOi8II7uxPtjAltWioyRmfsZWqtnJQYLNQUxGDiUxMuv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"2830d0e1fb905bb7ae8e8d7db0dc8f286e08138c","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.43_1785914419111_0.8446372370846909","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.44":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.44","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.44","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"b977903412c1d13ea57f7588d82d93c50f02e231","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.44.tgz","fileCount":260,"integrity":"sha512-YOCb73uk2E4MLlVU5K4Mwkzqutf9cSab1QeX/Q5W2DRqKywej6ii1aHlfp1ZBbvW2C2pcCMdb/CUfyxw/c2ZLw==","signatures":[{"sig":"MEUCIQCDrj+e6Oamwx4ossHB0X8eZds2WtODwcTREY6s5ThPvQIgJ+Iz88COkXK8zLchRhACZ7yxJAhET6lNf6/9/ldlzuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"e3721699f14d558a8a70872b19c4c3266d1bbbdb","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.44_1785922885376_0.6248017302829567","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.45":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.45","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.45","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"f8bd7e3b54388a4e24ceb31e892887889562e53a","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.45.tgz","fileCount":260,"integrity":"sha512-NWoHF0Eu65lWp2nLOH7F0zJygohjwRwZPiacADyAfV2/dS2g8vacJ+3tOYxgBws5WDE/EGZrulE76GoHQSs8+g==","signatures":[{"sig":"MEUCIEOGDPPSut6Vrx8A1Rspj/4PwMyfxOMca6NgS8wDB6dqAiEAhviuukH1g9WcbWCNg7Hw8VEText8MWfHYRjjeN9qM74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"377fa7e0343ae863b1dd6f39dd6a90b5f20def91","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.45_1786034472941_0.17651670147103782","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.46":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.46","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.46","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"ae8ee5946d601c417d68b5f7ba5fb8f8b1b2e97d","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.46.tgz","fileCount":260,"integrity":"sha512-koSK9jt8SYUhkPJMwFRUsGC1VelsQKmbUYkHIail8qWXbkPm4nZRE0fBvj3bSLMkVJJgrAWbPGODzQCIcC8EDg==","signatures":[{"sig":"MEUCIA1YGiwH9k5w0TNjxbgd9Fn/2PQOPmN07eWya3NX4X2CAiEA4jrw2cNubtsimWcG6mE7r1Jk1CTKCx/npirgr/TChZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"7d47259025ae8b2cd456eed5321db954c059b478","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.46_1786074501484_0.6007468939512433","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.48":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.48","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.48","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"3139ffae29488f8ac0a9df06e9ab372d2fb2882a","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.48.tgz","fileCount":260,"integrity":"sha512-CaZxQRNeAuF2rJV+iF+mFx5o1Luu+WtzTa4/MkVkIoHZzDyQ8CW+/ibVtHwRKOaYQ+Y5aHbesbF20YUfrXqPNg==","signatures":[{"sig":"MEUCIBzWfAGUcI06sT+rhMfI1CxtYiLfbkJMe6upfmKbb2dyAiEAq2Bko8Kfud6RnucYJ5Rzb46qf+LxRb/ggNs3Y9HtQO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"9074f47558b34be20859e9eb3e2c42072e09d1f5","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.48_1786087223606_0.24918622892413134","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.49":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.49","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.49","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"8b7b253dce1130f8afac174e3e8feda80c7b51ff","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.49.tgz","fileCount":260,"integrity":"sha512-o4OGqdevrrF0Fro7SVB5OuLvxhfLnl7WQIbu2gLIjYAekrFGX1sj0qJKEXsgHwwKhCUyojeEtm6BysHO4D+kIg==","signatures":[{"sig":"MEQCIFePZ1S/+squuSn4Ep+8E8QQPRHQ4AWqYCvJzulGdA2nAiAsLXD60pG2s4Ci7qUS/cA3cupfXi/VV3f8B1QsHLkgPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"4e8f5e913d4e0efacdd5390b79ef39efb60f5366","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.49_1786092805656_0.3489728738853983","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.50":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.50","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.50","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"b1cc6259a8c796df8356f017b2b53d3bd8546ed9","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.50.tgz","fileCount":260,"integrity":"sha512-YQ1HkNCr3JNHunZRkFbCnBwRq633wSIZG2juCUh/M3LLmTb1zPnKWaV1CFzoXWPgjVGzgZ3boZaqQ+5hGaxSEw==","signatures":[{"sig":"MEQCIBrH4vYYsOs1LvKePPFqIluDJf4iY92fPpgvxZBE9oDmAiBUAOOAMJSeVRcAMwSygIfUHPxRoI+yTzwb+x2e6ZGZPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"9a1cc2b376375a55acb70e61f107054ee88d36b6","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.50_1786262941696_0.3212549885856404","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.51":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.51","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.51","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"63b14f953bd8930f76d0539613e4c6b1fa2182c1","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.51.tgz","fileCount":260,"integrity":"sha512-PYRMkNPERO4YCOHbPl563RQDiXoYeBoD1t+t1WwOC3mh1YB10CA4s00ureCOxakZn255/MzUvQzKqOFqvRxo6w==","signatures":[{"sig":"MEQCIH3/X+q7OlQf29XnFED+UTqoVu0FamO0vBKvTrTQ6jmhAiA4XrGJztgXo989wv3JZfXWP5QLjIeUNTwObQMswQRRow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"fab6a21e3b5f7d885abd9b0384cc42b65dfcb657","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.51_1786433698260_0.08145170218483955","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.52":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.52","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.52","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"3423f0ead3b5326bc5a091fd8e296cba57bc52dd","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.52.tgz","fileCount":260,"integrity":"sha512-VT9280toOXla+NU6TPxI2sltlqmfi9QDEEn9tZI5HJTfCUN9A9HbQAmJGlrD0SSxTC9STC2zr/lUmj3KxuYHOA==","signatures":[{"sig":"MEUCIEjHqVJDOwvFYPwmK2AE1YKOmPE3xi6sbnkOoHJPrt46AiEAvUbHlWo1WDv0dKEISH9K7FEtt6dp1ZVjQ9dR5/+Khss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"ff0c164c44664b068d8d25d8bc54abd52d2a2c63","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.52_1786505366280_0.8676724387852837","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.53":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.53","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.53","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"e98285e6a4b82f028f92bb41f83ed8bc88909b20","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.53.tgz","fileCount":260,"integrity":"sha512-xZy3/4zr6hyfABhPSlPg3IZqOHlTlvt2CW19HskuhcezXBNm8Q4akglL0ZloniZrlbYSeAlmNmUPRl7qw/yFqw==","signatures":[{"sig":"MEUCIBc9ebZGiYz7lvmqpBDVEHjwBpU4rm0QShJgJOpW5OGbAiEAkBLFRfdK6T+8gFsGIsH3j3ko6lZjJPk+mRBaktuUIMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"8d1f34da1dcdb10ea595612133c025c9fbf839b8","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.53_1786546450451_0.8769299391028986","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.54":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.54","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.54","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"879d7652902f01b33dd8ac18fcd4759fdf4ca511","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.54.tgz","fileCount":260,"integrity":"sha512-JBjYSp0kUWc1L5Ev/hWCDgpAnlUhavRWPgoOV1ac1rmJmKmWIvLZLxQlwXIPh9Ll4ZHJ2I1YFRSE31brw45yyg==","signatures":[{"sig":"MEYCIQCAkcd3exfI4CJ1hD62/2mC/wvykFOwK/zOZwG3Vmse0QIhAM+SZjQTDC0Ag8f5Cy+k9ZJnCje8DwsgCzGC+rMY/Wrs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"08cea443b4c3d305c266cb4589c1a1b5e105f541","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.54_1786584294058_0.5699029085423055","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.55":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.55","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.55","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"0e7a5d5190c9f53c09213b7ad75dcb65c21dabfd","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.55.tgz","fileCount":260,"integrity":"sha512-8pN34nCa+7y0EM7FG3AUut0lWklYwDxVtgfhMFSlPcDpasBApALA3NfHqNMdVqHexe7F1+OYsyxf5tMr4pyUqQ==","signatures":[{"sig":"MEUCIQCi6qzQqbd6ArUnZcS0F3+CNq/STGPfANBLR7Qg5Ak2AAIgJWHS4tVe/SGrX4jTKITw3n2T9djZS2uIZ/bAJN5/nrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"5365f48528496e10c226a800387b1225e8d7bddf","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.55_1786584604265_0.7287120387829955","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.56":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.56","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.56","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"513c594ba4bb5648e0a09f4e6653044f316bfe53","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.56.tgz","fileCount":260,"integrity":"sha512-69HOToFPtaBXB/xLGSt2Rt0oYwUo2gI/fv+sN/22aBnVK+6ZnfN1CxGNfzArWY1ZAhFVjw/S2YLrKZMel+0Xww==","signatures":[{"sig":"MEUCIBEkwnoD+QHx4VFby3BYPEPWc6GZZaFZYvuxsdPcN/nCAiEA8iIzg1uaKL94utF02utyOoNVylVYJ6PtjIxx3/eoOzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602263},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"938c9c74618cbb7e59b8f4bdd0ab7dab820d76a8","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.56_1786593260911_0.9504303498053157","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.57":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.57","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.57","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"bd1a8af799ec2c757208861f7c3872f300bd6f20","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.57.tgz","fileCount":260,"integrity":"sha512-+YFDvN7CAwbjbtdU+ImUoG3Oo9vlLSJ6gs+eXujKkMT1YAEkux/YsbMSRW2I10RNHggwcP302P3aYfy+7IJItg==","signatures":[{"sig":"MEYCIQCq+r6Yh6lyzYZRVva0b84pMttj0C5kYSyq+vVxvGr4mgIhAKSw+SPAR8Pk+h4MgUGSS63hBrSvAIZ1+iZ4U2dt3RiP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":596854},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"2d02b923abaffd71451afd0211bdc77c6d13cfb1","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.57_1786717415851_0.45508385502363513","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.58":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.58","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.58","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"a2c03a46228776f1b38eb5775a3b10ad16333f10","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.58.tgz","fileCount":260,"integrity":"sha512-zK1I/+pn3Rx+5jC1p9QmXUhZtoMni+OjedvCEGX3EOS7B2u7hAcYAC6ghbvzN5wjlSBZKHjTy7pCFkKFSfE0sQ==","signatures":[{"sig":"MEUCIQCUtKv9KZsAAl+eOJqUGUjIECiPw2Nx5DsCU4ykdO2fpAIgcakyQgK4dXApJPcUy4yKjt9B+dxd8HLxxlxezZhUhYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":596854},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"8ced0a04195b477255a45ddc455534638f667e1d","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.58_1786842197040_0.5545188256592934","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.59":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.59","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.59","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"b7065944c22aa488deb213991b8fa8c666f95513","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.59.tgz","fileCount":260,"integrity":"sha512-zy6/1vbk8G8wpWV8yLHfdqicdwq9Yha8FCHyl+rTovRR0ntH3upzICiIPZCkQh7qPjkQ5prOpxdnupMtSdynqg==","signatures":[{"sig":"MEYCIQDMyMJTyxKYM4Z9euGY6YWlMpAEs9eq3vPJbh3bcGpq+wIhALs8UIr1hmalAirC0KVYtq+bzJTqO6T3jpHlwJi1ZfyR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":596854},"engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"gitHead":"4bcbea0c13f8f4f2ecd9bf1b19da4d073b7c9e3a","scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.59_1786882112475_0.5572613192536902","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.60":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.60","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@1.2.0-beta.60","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"79c91d39272e3b23acc275c658dd696f88d25504","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.60.tgz","fileCount":261,"integrity":"sha512-pfRCWkMHPpswXddp7Pi+I0qAfsN/11vNZxN08nqvSRrKWhqDMZNI5uSl0SmyJdgcFjxW5aIgmkcWhQgPzJaAMg==","signatures":[{"sig":"MEYCIQCEy4GFcJby0lTUcR2PJoI4Otk7qGlr3yPCW+OR/3ai4AIhAOFtVtKKAiLWe46H7aG1gMLzOeeBzR7/DRgtqYm0RH6E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599339},"_from":"file:moyan-mfw-extension-scheduler-1.2.0-beta.60.tgz","engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_resolved":"C:\\Users\\16898\\AppData\\Local\\Temp\\3067ecccedc72cd2a3c3d31ddd04d8dc\\moyan-mfw-extension-scheduler-1.2.0-beta.60.tgz","_integrity":"sha512-pfRCWkMHPpswXddp7Pi+I0qAfsN/11vNZxN08nqvSRrKWhqDMZNI5uSl0SmyJdgcFjxW5aIgmkcWhQgPzJaAMg==","_npmVersion":"11.11.0","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"25.8.1","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"moyan-mfw-base":"^1.2.0-beta.60"},"_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.60_1786934453053_0.6720041204192617","host":"s3://npm-registry-packages-npm-production"}},"2.0.0-beta.61":{"name":"moyan-mfw-extension-scheduler","version":"2.0.0-beta.61","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"license":"MIT","_id":"moyan-mfw-extension-scheduler@2.0.0-beta.61","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"dist":{"shasum":"2c85a00ad2ea4b668f4d382a199ae1a4788ca8e9","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-2.0.0-beta.61.tgz","fileCount":260,"integrity":"sha512-Sm103nVVR7yNdf8e0Xoc0+f4XtuNB3pydAV1qXHayLsQ//eenDrmFOsPZXRFStWa0ILx3JJtotE7WDKVcWh1CA==","signatures":[{"sig":"MEYCIQDVpYF9fsIiQeTbFN77ipZZLzUwGZLJkr1IpBQZY3fsuwIhAMllU46A8LAR1qUZtTiMvTGWd2UCHBW57cSTOLAiRdfM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":596921},"_from":"file:moyan-mfw-extension-scheduler-2.0.0-beta.61.tgz","engines":{"node":">=20.0.0"},"exports":{"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./frontend":{"style":"./src/frontend/dist/style.css","types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"}},"scripts":{"build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","verify":"pnpm run verify:dist","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","verify:dist":"node scripts/verify-dist.mjs","build:shared":"pnpm --filter @internal/scheduler-shared build","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck"},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"_resolved":"/tmp/7cafd1ac07023f959f6894fd28e06155/moyan-mfw-extension-scheduler-2.0.0-beta.61.tgz","_integrity":"sha512-Sm103nVVR7yNdf8e0Xoc0+f4XtuNB3pydAV1qXHayLsQ//eenDrmFOsPZXRFStWa0ILx3JJtotE7WDKVcWh1CA==","_npmVersion":"10.8.1","description":"MFW 分布式定时任务管理扩展包","directories":{},"_nodeVersion":"22.3.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"_hasShrinkwrap":false,"peerDependencies":{"moyan-mfw-base":"^1.2.0-beta.62"},"_npmOperationalInternal":{"tmp":"tmp/moyan-mfw-extension-scheduler_2.0.0-beta.61_1787624049212_0.6634611713460192","host":"s3://npm-registry-packages-npm-production"}},"1.2.0-beta.61":{"name":"moyan-mfw-extension-scheduler","version":"1.2.0-beta.61","description":"MFW 分布式定时任务管理扩展包","exports":{"./backend":{"types":"./src/backend/dist/index.d.ts","import":"./src/backend/dist/index.js","require":"./src/backend/dist/index.js"},"./backend/*":{"types":"./src/backend/dist/*.d.ts","import":"./src/backend/dist/*.js","require":"./src/backend/dist/*"},"./frontend":{"types":"./src/frontend/dist/index.d.ts","import":"./src/frontend/dist/index.mjs","require":"./src/frontend/dist/index.mjs","style":"./src/frontend/dist/style.css"},"./frontend/*":{"types":"./src/frontend/dist/*.d.ts","import":"./src/frontend/dist/*","require":"./src/frontend/dist/*"},"./shared":{"types":"./src/shared/dist/index.d.ts","import":"./src/shared/dist/index.js","require":"./src/shared/dist/index.js"},"./shared/*":{"types":"./src/shared/dist/*.d.ts","import":"./src/shared/dist/*","require":"./src/shared/dist/*"}},"typesVersions":{"*":{"*":["./src/*/dist/*.d.ts","./src/*/dist/index.d.ts"]}},"license":"MIT","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"peerDependencies":{"moyan-mfw-base":"^1.2.0-beta.60"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"engines":{"node":">=20.0.0"},"scripts":{"build:shared":"pnpm --filter @internal/scheduler-shared build","build:backend":"pnpm --filter moyan-mfw-base run build:shared && pnpm --filter moyan-mfw-base run build:backend && pnpm --filter @internal/scheduler-backend build","build:frontend":"pnpm --filter @internal/scheduler-frontend build","build":"pnpm run build:shared && pnpm run build:backend && pnpm run build:frontend","dev:backend":"pnpm --filter @internal/scheduler-backend dev","dev:frontend":"pnpm --filter @internal/scheduler-frontend dev","typecheck:shared":"pnpm --filter @internal/scheduler-shared typecheck","typecheck:backend":"pnpm --filter @internal/scheduler-backend typecheck","typecheck:frontend":"pnpm --filter @internal/scheduler-frontend typecheck","typecheck":"pnpm run typecheck:shared && pnpm run typecheck:backend && pnpm run typecheck:frontend","verify:dist":"node scripts/verify-dist.mjs","verify":"pnpm run verify:dist"},"_id":"moyan-mfw-extension-scheduler@1.2.0-beta.61","_integrity":"sha512-5PXaUHQCFLLV2EjJeaKZS6fDuWYd/af4fx2VEuNLnwc36dSC+OmaaNjDEptLxK1LCZ9A9HnP5kDXLNP3CX826Q==","_resolved":"/tmp/6943e6bb8e8dd06e88e52f5d11fda9f8/moyan-mfw-extension-scheduler-1.2.0-beta.61.tgz","_from":"file:moyan-mfw-extension-scheduler-1.2.0-beta.61.tgz","_nodeVersion":"22.3.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-5PXaUHQCFLLV2EjJeaKZS6fDuWYd/af4fx2VEuNLnwc36dSC+OmaaNjDEptLxK1LCZ9A9HnP5kDXLNP3CX826Q==","shasum":"5644c3263d66e0de476940311cfcd94a5d6b68a8","tarball":"https://registry.npmjs.org/moyan-mfw-extension-scheduler/-/moyan-mfw-extension-scheduler-1.2.0-beta.61.tgz","fileCount":260,"unpackedSize":596921,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCkjNZv7xngJnN8KQ6+tBNlsY8EZ8BOPm89pXSNVn8xJQIgXyhgWkO5BriaoaGn0ee0iif2hT04famn45UBLeLT2t8="}]},"_npmUser":{"name":"moyan","email":"1689863234@qq.com"},"directories":{},"maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/moyan-mfw-extension-scheduler_1.2.0-beta.61_1787624818491_0.7730163494890931"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-30T15:46:36.056Z","modified":"2026-08-25T02:26:58.776Z","1.2.0-beta.32":"2026-07-30T15:46:36.440Z","1.2.0-beta.33":"2026-07-30T16:16:42.145Z","1.2.0-beta.35":"2026-07-31T11:50:40.761Z","1.2.0-beta.36":"2026-08-01T09:11:56.743Z","1.2.0-beta.37":"2026-08-01T16:15:28.667Z","1.2.0-beta.39":"2026-08-02T16:47:25.497Z","1.2.0-beta.40":"2026-08-03T09:45:00.569Z","1.2.0-beta.41":"2026-08-04T00:17:00.676Z","1.2.0-beta.43":"2026-08-05T07:20:19.247Z","1.2.0-beta.44":"2026-08-05T09:41:25.577Z","1.2.0-beta.45":"2026-08-06T16:41:13.100Z","1.2.0-beta.46":"2026-08-07T03:48:21.624Z","1.2.0-beta.48":"2026-08-07T07:20:23.747Z","1.2.0-beta.49":"2026-08-07T08:53:25.813Z","1.2.0-beta.50":"2026-08-09T08:09:01.866Z","1.2.0-beta.51":"2026-08-11T07:34:58.405Z","1.2.0-beta.52":"2026-08-12T03:29:26.455Z","1.2.0-beta.53":"2026-08-12T14:54:10.630Z","1.2.0-beta.54":"2026-08-13T01:24:54.218Z","1.2.0-beta.55":"2026-08-13T01:30:04.398Z","1.2.0-beta.56":"2026-08-13T03:54:21.051Z","1.2.0-beta.57":"2026-08-14T14:23:36.008Z","1.2.0-beta.58":"2026-08-16T01:03:17.190Z","1.2.0-beta.59":"2026-08-16T12:08:32.627Z","1.2.0-beta.60":"2026-08-17T02:40:53.190Z","2.0.0-beta.61":"2026-08-25T02:14:09.399Z","1.2.0-beta.61":"2026-08-25T02:26:58.633Z"},"license":"MIT","keywords":["moyan","mfw","extension","scheduler","定时任务","cron","task"],"description":"MFW 分布式定时任务管理扩展包","maintainers":[{"name":"moyan","email":"1689863234@qq.com"}],"readme":"# moyan-mfw-extension-scheduler\n\nMFW 分布式定时任务管理扩展包 — 作为 `moyan-mfw-base` 的官方扩展，提供通用型、可插拔、分布式安全的定时任务管理能力。\n\n支持 **Cron 周期任务** + **延迟任务** 两种模式，内置分层时间轮调度引擎、失败重试（自定义退避策略）、崩溃恢复、优雅停机，以及四类可插拔 SPI（存储/锁/派发/通知）。\n\n---\n\n## 目录\n\n- [安装](#安装)\n- [快速开始](#快速开始)\n- [任务模式](#任务模式)\n- [注册业务任务处理器](#注册业务任务处理器)\n- [创建延迟任务](#创建延迟任务)\n- [失败重试机制](#失败重试机制)\n- [模块配置选项](#模块配置选项)\n- [Admin API](#admin-api)\n- [前端集成](#前端集成)\n- [四类 SPI](#四类-spi)\n- [自定义适配器开发](#自定义适配器开发)\n- [数据库表](#数据库表)\n- [字典枚举](#字典枚举)\n- [架构概览](#架构概览)\n\n---\n\n## 安装\n\n```bash\npnpm add moyan-mfw-base moyan-mfw-extension-scheduler\n```\n\n> 依赖要求：Node.js >= 20.0.0，moyan-mfw-base >= 1.0.0\n\n---\n\n## 快速开始\n\n### 后端集成\n\n```typescript\n// backend/src/main.ts\nimport { createBaseBackendApp } from 'moyan-mfw-base/backend'\nimport { SCHEDULER_EXTENSION_PERMISSION_VALUES } from 'moyan-mfw-extension-scheduler/backend'\n\nconst app = await createBaseBackendApp({\n  name: '我的应用',\n  modules: [AppModule],\n  permissionValues: [...SCHEDULER_EXTENSION_PERMISSION_VALUES],\n})\nawait app.listen(3000)\n```\n\n```typescript\n// backend/src/app.modules.ts\nimport { SchedulerModule } from 'moyan-mfw-extension-scheduler/backend'\n\n@Module({\n  imports: [\n    SchedulerModule.forRoot({\n      shardCount: 1, // 哈希分片数 = 部署实例数\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### 前端集成\n\n```typescript\n// frontend/src/main.ts\nimport { registerPermissionValues } from 'moyan-mfw-base/frontend'\nimport { SCHEDULER_EXTENSION_PERMISSION_VALUES } from 'moyan-mfw-extension-scheduler/shared'\n\nregisterPermissionValues([...SCHEDULER_EXTENSION_PERMISSION_VALUES])\n```\n\n```typescript\n// frontend/src/menu-trees.ts\nimport { MfwScheduledTaskPage } from 'moyan-mfw-extension-scheduler/frontend'\n\n// 在菜单树中添加：\n{\n  path: 'scheduled-task',\n  name: '定时任务管理',\n  icon: 'Clock',\n  permissions: ['编辑', '执行'],\n  component: MfwScheduledTaskPage,\n}\n```\n\n---\n\n## 任务模式\n\n| 模式 | 字典值 | 说明 | 适用场景 |\n|------|--------|------|---------|\n| Cron 周期任务 | `TaskTypeDict.CRON` (1) | 按 Cron 表达式或固定间隔周期执行 | 数据清理、报表生成、心跳检测 |\n| 延迟任务 | `TaskTypeDict.DELAY` (2) | 指定精确执行时间，每笔一个独立实例 | 订单超时取消、支付回调重试、预约提醒 |\n\n### Cron 表达式格式\n\n使用 6 段秒级 Cron（`cron` npm 包）：\n\n```\n秒 分 时 日 月 周\n0  */1  *  *  *  *    // 每分钟\n0  0   *  *  *  *     // 每小时\n*/30  *  *  *  *  *    // 每30秒\n```\n\n---\n\n## 注册业务任务处理器\n\n业务方实现 `ScheduledTaskHandler` 接口，在构造函数中通过 `TaskRegistry.register(this)` 自注册：\n\n```typescript\nimport { Injectable, Logger } from '@nestjs/common'\nimport {\n  TaskRegistry,\n  type ScheduledTaskHandler,\n  type TaskExecutionContext,\n  type TaskExecutionResult,\n} from 'moyan-mfw-extension-scheduler/backend'\nimport { TaskTypeDict } from 'moyan-mfw-extension-scheduler/shared'\n\n@Injectable()\nexport class OrderTimeoutScanHandler implements ScheduledTaskHandler {\n  private readonly logger = new Logger(OrderTimeoutScanHandler.name)\n\n  readonly taskCode = 'order.timeout.scan'\n  readonly taskName = '订单超时自动取消'\n  readonly taskType = TaskTypeDict.CRON        // Cron 周期任务\n  readonly defaultIntervalSeconds = 60          // 每60秒执行一次\n  readonly defaultTimeoutSeconds = 120          // 超时120秒\n  readonly description = '扫描并取消超时未支付的订单'\n\n  constructor(private readonly registry: TaskRegistry) {\n    this.registry.register(this)\n  }\n\n  async execute(ctx: TaskExecutionContext): Promise<TaskExecutionResult> {\n    this.logger.log(`开始扫描超时订单... triggeredAt=${ctx.triggeredAt.toISOString()}`)\n    // 业务逻辑...\n    const cancelled = 12\n    return { summary: `取消${cancelled}笔超时订单`, data: { cancelled } }\n  }\n}\n```\n\n### ScheduledTaskHandler 接口\n\n```typescript\ninterface ScheduledTaskHandler {\n  /** 任务编码（唯一标识） */\n  readonly taskCode: string\n  /** 任务名称 */\n  readonly taskName: string\n  /** 任务类型：TaskTypeDict.CRON | TaskTypeDict.DELAY */\n  readonly taskType: number\n  /** 默认6段cron表达式，与 defaultIntervalSeconds 二选一 */\n  readonly defaultCron?: string\n  /** 默认固定间隔秒数，与 defaultCron 二选一 */\n  readonly defaultIntervalSeconds?: number\n  /** 默认超时秒数 */\n  readonly defaultTimeoutSeconds?: number\n  /** 重启后是否补偿执行（默认false） */\n  readonly catchUpOnRestart?: boolean\n  /** 任务描述 */\n  readonly description?: string\n\n  // ── 重试配置（handler 级别，覆盖全局默认） ──\n  /** 最大重试次数（0=不重试，默认使用全局配置） */\n  readonly maxRetry?: number\n  /** 退避策略（默认使用全局配置） */\n  readonly backoffStrategy?: BackoffStrategy\n\n  /** 执行任务 */\n  execute(ctx: TaskExecutionContext): Promise<TaskExecutionResult | void>\n}\n```\n\n### TaskExecutionContext 执行上下文\n\n```typescript\ninterface TaskExecutionContext {\n  taskCode: string              // 任务编码\n  logId: string                 // 执行日志ID\n  instanceId?: string           // 延迟实例ID（DELAY类型）\n  entityId?: string             // 业务实体ID（DELAY类型）\n  payload?: Record<string, any> // 延迟实例携带的业务数据\n  triggeredAt: Date             // 触发时间\n  triggerType: number           // 触发方式（TaskTriggerTypeDict.AUTO | MANUAL）\n  logger: Logger                // NestJS 日志记录器\n  signal?: AbortSignal          // 超时取消信号\n  retryCount: number            // 当前重试次数（0=首次执行）\n  maxRetry: number              // 最大重试次数\n}\n```\n\n---\n\n## 创建延迟任务\n\n通过 `ScheduledTaskService` 创建延迟实例，引擎会在指定时间自动加载并执行：\n\n```typescript\nimport { Injectable } from '@nestjs/common'\nimport { ScheduledTaskService } from 'moyan-mfw-extension-scheduler/backend'\n\n@Injectable()\nexport class OrderService {\n  constructor(private readonly schedulerService: ScheduledTaskService) {}\n\n  async createOrder(order: Order) {\n    // 创建订单后，5分钟后触发超时取消\n    const instance = await this.schedulerService.createDelayInstance(\n      'order.auto.cancel',                        // taskCode（需与 handler 的 taskCode 一致）\n      new Date(Date.now() + 5 * 60 * 1000),        // 应执行时间\n      order.id,                                     // entityId（业务实体ID）\n      { orderNo: order.orderNo, amount: order.amount }, // payload（业务数据）\n    )\n    // instance.id 可用于后续取消或查询\n    return instance\n  }\n}\n```\n\n### 手动触发任务\n\n```typescript\nawait this.schedulerService.triggerTask('payment.callback')\n```\n\n> 手动触发仅支持 Cron 类型任务（任务定义页「执行」按钮）。延迟任务通过 `createDelayInstance` 创建实例（delaySeconds=0 为立即执行），由业务方在代码中调用。\n\n### ScheduledTaskService 完整方法\n\n| 方法 | 说明 |\n|------|------|\n| `listTasks()` | 查询所有任务定义 |\n| `getTaskDetail(taskCode)` | 查询单个任务定义 |\n| `updateTask(taskCode, fields)` | 更新任务运行时配置 |\n| `triggerTask(taskCode)` | 手动触发任务（创建立即执行实例，走完整实例管线） |\n| `createDelayInstance(taskCode, executeAt, entityId?, payload?)` | 创建延迟任务实例 |\n| `cancelInstance(id)` | 取消待执行的延迟实例 |\n| `getInstance(id)` | 查询实例详情 |\n| `listInstances(filters)` | 分页查询实例列表 |\n| `listLogs(filters)` | 分页查询执行日志 |\n| `getLogDetail(id)` | 查询日志详情 |\n\n---\n\n## 失败重试机制\n\n任务执行抛出异常时，引擎自动按退避策略创建重试实例。重试配置支持 **handler 级别** 和 **全局默认** 两个层级。\n\n### 退避策略（BackoffStrategy）\n\n```typescript\ntype BackoffStrategy =\n  | { type: 'fixed'; delays: number[] }                              // 固定序列\n  | { type: 'exponential'; base: number; max: number; multiplier?: number } // 指数退避\n  | { type: 'linear'; interval: number; increment: number }         // 线性递增\n  | { type: 'none' }                                                // 不重试\n```\n\n### 示例1：支付回调递增重试（1→5→30→60→120→300 秒）\n\n```typescript\n@Injectable()\nexport class PaymentCallbackHandler implements ScheduledTaskHandler {\n  readonly taskCode = 'payment.callback'\n  readonly taskName = '支付回调通知'\n  readonly taskType = TaskTypeDict.DELAY\n\n  // 重试配置：5次重试，固定序列递增\n  readonly maxRetry = 5\n  readonly backoffStrategy: BackoffStrategy = {\n    type: 'fixed',\n    delays: [1_000, 5_000, 30_000, 60_000, 120_000, 300_000],\n    //         1s    5s    30s    60s    120s    300s\n  }\n\n  async execute(ctx: TaskExecutionContext): Promise<TaskExecutionResult> {\n    // ctx.retryCount 可感知当前是第几次重试\n    const attempt = ctx.retryCount + 1\n    const success = await this.callPaymentGateway(ctx.entityId!)\n    if (!success) {\n      throw new Error(`支付回调失败（第${attempt}次）`) // 抛错 → 触发重试\n    }\n    return { summary: `支付回调成功（第${attempt}次尝试）` }\n  }\n}\n```\n\n### 示例2：指数退避\n\n```typescript\nreadonly backoffStrategy: BackoffStrategy = {\n  type: 'exponential',\n  base: 10_000,       // 首次重试：10秒\n  multiplier: 2,       // 每次翻倍：10s → 20s → 40s → 80s → 160s\n  max: 3_600_000,     // 上限：1小时\n}\n```\n\n### 示例3：线性递增\n\n```typescript\nreadonly backoffStrategy: BackoffStrategy = {\n  type: 'linear',\n  interval: 30_000,    // 首次重试：30秒\n  increment: 30_000,   // 每次加30秒：30s → 60s → 90s → 120s → 150s\n}\n```\n\n### 全局默认重试配置\n\n未在 handler 上声明的，回退到 `forRoot` 全局配置：\n\n```typescript\nSchedulerModule.forRoot({\n  maxRetry: 3,\n  backoffStrategy: {\n    type: 'exponential',\n    base: 60_000,\n    multiplier: 2,\n    max: 3_600_000,\n  },\n})\n```\n\n### 重试流程\n\n```\n任务执行 → 抛出异常 → BatchArchiverService 归档\n  → 检查 retryCount < maxRetry？\n    → 是：按 backoffStrategy 计算延迟时间 → 创建新 PENDING 实例（retryCount+1）→ 引擎到点重新执行\n    → 否：放弃重试，记录最终失败状态\n```\n\n---\n\n## 模块配置选项\n\n```typescript\ninterface SchedulerModuleOptions {\n  /** 哈希分片数，默认1（单实例）。多实例部署时设为实例数 */\n  shardCount?: number\n\n  // ── SPI 实现（默认零依赖，按需替换） ──\n  /** IDistributedLock 实现类，默认 DbLock */\n  lockImpl?: any\n  /** ITaskDispatcher 实现类，默认 EventEmitterDispatcher */\n  dispatcherImpl?: any\n  /** IRuntimeNotify 实现类，默认 PollingNotify */\n  notifyImpl?: any\n  /** ITaskStorage 实现类，默认 TypeOrmStorage */\n  storageImpl?: any\n\n  // ── 并发控制 ──\n  /** 长任务池并发上限，默认10（timeout > 30s 的任务） */\n  longPoolMax?: number\n  /** 短任务池并发上限，默认30（timeout <= 30s 的任务） */\n  shortPoolMax?: number\n\n  // ── 重试配置（全局默认，handler 可覆盖） ──\n  /** 全局默认最大重试次数，默认3 */\n  maxRetry?: number\n  /** 全局默认退避策略，默认指数退避 60s→120s→240s */\n  backoffStrategy?: BackoffStrategy\n\n  // ── 引擎调度参数 ──\n  /** 预加载窗口大小（毫秒），默认60000 */\n  preloadWindowMs?: number\n  /** 预加载重载间隔（毫秒），默认60000 */\n  reloadIntervalMs?: number\n  /** 引擎 tick 精度（毫秒），默认200 */\n  tickIntervalMs?: number\n  /** 归档轮触发间隔（毫秒），默认60000 */\n  archiveIntervalMs?: number\n}\n```\n\n### 完整配置示例\n\n```typescript\nSchedulerModule.forRoot({\n  // 分布式\n  shardCount: 2,\n\n  // 并发\n  longPoolMax: 10,\n  shortPoolMax: 30,\n\n  // 重试\n  maxRetry: 5,\n  backoffStrategy: {\n    type: 'fixed',\n    delays: [1_000, 5_000, 30_000, 60_000, 120_000],\n  },\n\n  // 引擎参数\n  preloadWindowMs: 60_000,\n  reloadIntervalMs: 60_000,\n  tickIntervalMs: 200,\n  archiveIntervalMs: 60_000,\n\n  // 自定义 SPI（可选）\n  // lockImpl: RedisLock,\n  // notifyImpl: RedisPubSubNotify,\n})\n```\n\n---\n\n## Admin API\n\n所有 API 路由前缀：`/api/ext/scheduler`\n\n| 方法 | 路径 | 说明 | 权限 |\n|------|------|------|------|\n| GET | `/tasks` | 查询任务定义列表 | 无（登录即可） |\n| GET | `/tasks/:taskCode` | 查询任务定义详情 | 无 |\n| PUT | `/tasks/:taskCode` | 更新任务配置 | `编辑` |\n| POST | `/tasks/:taskCode/trigger` | 手动触发任务（创建立即执行实例） | `执行` |\n| POST | `/instances` | 创建延迟任务实例（delaySeconds=0 立即执行） | `执行` |\n| GET | `/instances` | 分页查询延迟实例 | 无 |\n| POST | `/instances/:id/cancel` | 取消延迟实例 | `编辑` |\n| GET | `/logs` | 分页查询执行日志（支持 instanceId 筛选） | 无 |\n| GET | `/logs/:id` | 查询日志详情 | 无 |\n\n### API 示例\n\n```bash\n# 查询任务定义\ncurl http://localhost:3000/api/ext/scheduler/tasks \\\n  -H \"Authorization: Bearer <token>\"\n\n# 手动触发任务（创建立即执行实例）\ncurl -X POST http://localhost:3000/api/ext/scheduler/tasks/demo.cron.hello/trigger \\\n  -H \"Authorization: Bearer <token>\"\n\n# 创建延迟任务实例（delaySeconds=0 立即执行，失败走重试）\ncurl -X POST http://localhost:3000/api/ext/scheduler/instances \\\n  -H \"Authorization: Bearer <token>\" -H \"Content-Type: application/json\" \\\n  -d '{\"taskCode\":\"order.auto.cancel\",\"delaySeconds\":300,\"entityId\":\"ORD123\",\"payload\":{\"amount\":99.9}}'\n\n# 查询执行日志（按实例ID筛选）\ncurl \"http://localhost:3000/api/ext/scheduler/logs?taskCode=payment.callback&instanceId=<instanceId>&page=1&pageSize=10\" \\\n  -H \"Authorization: Bearer <token>\"\n\n# 取消延迟实例\ncurl -X POST http://localhost:3000/api/ext/scheduler/instances/<instanceId>/cancel \\\n  -H \"Authorization: Bearer <token>\"\n```\n\n---\n\n## 前端集成\n\n### 三视图管理页面\n\n扩展包导出 `MfwScheduledTaskPage` 组件，提供三个 Tab 视图：\n\n| Tab | 内容 | 操作 |\n|-----|------|------|\n| 任务定义 | 任务定义列表（名称/编码/类型/调度方式/启用/上次/下次/状态） | 配置(编辑)、手动执行 |\n| 延迟实例 | 延迟实例列表（实例ID/任务类型/触发方式/执行方式/实体ID/应执行时间/状态/重试） | 取消、详情 |\n| 执行日志 | 派发日志列表（日志ID/实例ID/触发方式/状态/开始时间/耗时/错误） | 查看详情 |\n\n### 前端 API 调用类\n\n后端运行后可通过 `api.build.cjs` 从 Swagger 自动生成 API SDK。手动使用：\n\n```typescript\nimport {\n  ApiSchedulerListTasks,\n  ApiSchedulerTriggerTask,\n  ApiSchedulerListInstances,\n  ApiSchedulerCancelInstance,\n  ApiSchedulerListLogs,\n  ApiSchedulerGetLog,\n  ApiSchedulerUpdateTask,\n  ApiSchedulerGetTask,\n} from 'moyan-mfw-extension-scheduler/frontend'\n\n// 查询任务定义\nconst result = await new ApiSchedulerListTasks({})\n\n// 手动触发任务（创建立即执行实例）\nawait new ApiSchedulerTriggerTask({ params: { taskCode: 'demo.cron.hello' } })\n\n// 查询日志\nconst logs = await new ApiSchedulerListLogs({ query: { page: 1, pageSize: 10, taskCode: 'payment.callback' } })\n```\n\n---\n\n## 四类 SPI\n\n扩展包通过四类 SPI 实现可插拔架构。默认实现零外部依赖，使用者可按需替换：\n\n| SPI | 默认实现 | 职责 | 替换场景 |\n|-----|---------|------|---------|\n| `ITaskStorage` | TypeOrmStorage | 任务定义/实例/日志持久化 + 查询（含批量认领、批量归档） | 自定义存储 |\n| `IDistributedLock` | DbLock | 多实例执行互斥 | Redis 分布式锁 |\n| `ITaskDispatcher` | EventEmitterDispatcher | 到期任务的派发方式（本地快速路径） | RabbitMQ 远程派发 |\n| `IRuntimeNotify` | PollingNotify | 运行时新增任务的即时通知 | Redis PubSub 即时通知 |\n\n### SPI 接口定义\n\n**IDistributedLock**\n\n```typescript\ninterface IDistributedLock {\n  tryLock(resource: string, ttlSeconds: number): Promise<string | null>\n  unlock(resource: string, token: string): Promise<boolean>\n}\n```\n\n**ITaskDispatcher**\n\n```typescript\ninterface ITaskDispatcher {\n  dispatch(handler: ScheduledTaskHandler, ctx: TaskExecutionContext): Promise<TaskExecutionResult | void>\n  onResult(callback: (instanceId: string, result: TaskExecutionResult | null, error?: Error) => void): void\n}\n```\n\n**IRuntimeNotify**\n\n```typescript\ninterface IRuntimeNotify {\n  notifyTaskScheduled(taskCode: string, executeAt: Date): Promise<void>\n  onScheduled(callback: (taskCode: string, executeAt: Date) => void): void\n}\n```\n\n**ITaskStorage** — 完整接口含任务定义 CRUD、实例批量认领/归档、日志批量创建、孤儿清理、分页查询等，详见 `src/backend/src/spi/interfaces/task-storage.interface.ts`。\n\n---\n\n## 自定义适配器开发\n\n使用者按需实现 SPI 接口，通过 `forRoot` 注入。以下是 Redis 适配器示例：\n\n### Redis 分布式锁\n\n```typescript\nimport { Injectable } from '@nestjs/common'\nimport { createClient, type RedisClientType } from 'redis'\nimport type { IDistributedLock } from 'moyan-mfw-extension-scheduler/backend'\n\n@Injectable()\nexport class RedisLock implements IDistributedLock {\n  private client: RedisClientType\n\n  private readonly UNLOCK_SCRIPT = `\n    if redis.call(\"get\", KEYS[1]) == ARGV[1] then\n      return redis.call(\"del\", KEYS[1])\n    else\n      return 0\n    end\n  `\n\n  async onModuleInit() {\n    this.client = createClient({ url: 'redis://localhost:6379' }) as RedisClientType\n    await this.client.connect()\n  }\n\n  async tryLock(resource: string, ttlSeconds: number): Promise<string | null> {\n    const token = `${Date.now()}-${Math.random().toString(36).slice(2)}`\n    const result = await this.client.set(`scheduler:lock:${resource}`, token, {\n      NX: true,\n      EX: ttlSeconds,\n    })\n    return result === 'OK' ? token : null\n  }\n\n  async unlock(resource: string, token: string): Promise<boolean> {\n    const result = await this.client.eval(this.UNLOCK_SCRIPT, {\n      keys: [`scheduler:lock:${resource}`],\n      arguments: [token],\n    })\n    return result === 1\n  }\n}\n```\n\n### Redis PubSub 即时通知\n\n```typescript\nimport { Injectable } from '@nestjs/common'\nimport { createClient, type RedisClientType } from 'redis'\nimport type { IRuntimeNotify } from 'moyan-mfw-extension-scheduler/backend'\n\nconst CHANNEL = 'scheduler:notify'\n\n@Injectable()\nexport class RedisPubSubNotify implements IRuntimeNotify {\n  private publisher: RedisClientType\n  private subscriber: RedisClientType\n  private callbacks: Array<(taskCode: string, executeAt: Date) => void> = []\n\n  async onModuleInit() {\n    this.publisher = createClient({ url: 'redis://localhost:6379' }) as RedisClientType\n    this.subscriber = createClient({ url: 'redis://localhost:6379' }) as RedisClientType\n    await this.publisher.connect()\n    await this.subscriber.connect()\n\n    // 订阅通知频道（需独立连接）\n    await this.subscriber.subscribe(CHANNEL, (message: string) => {\n      const { taskCode, executeAt } = JSON.parse(message)\n      for (const cb of this.callbacks) {\n        cb(taskCode, new Date(executeAt))\n      }\n    })\n  }\n\n  async notifyTaskScheduled(taskCode: string, executeAt: Date): Promise<void> {\n    await this.publisher.publish(CHANNEL, JSON.stringify({\n      taskCode,\n      executeAt: executeAt.toISOString(),\n    }))\n  }\n\n  onScheduled(callback: (taskCode: string, executeAt: Date) => void): void {\n    this.callbacks.push(callback)\n  }\n}\n```\n\n### 注入自定义适配器\n\n```typescript\nSchedulerModule.forRoot({\n  shardCount: 2,\n  lockImpl: RedisLock,            // 替换默认 DbLock\n  notifyImpl: RedisPubSubNotify,  // 替换默认 PollingNotify\n  // dispatcherImpl: RabbitMqDispatcher,  // 替换默认 EventEmitterDispatcher\n})\n```\n\n> SPI 接口定义详见 `src/backend/src/spi/interfaces/` 目录。\n\n---\n\n## 数据库表\n\n扩展包创建 3 张表（均使用 `ext_scheduler_` 前缀），开发模式下 TypeORM `synchronize` 自动建表，生产环境通过迁移脚本建表。\n\n### ext_scheduler_task（任务定义）\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| id | VARCHAR(36) PK | 主键 |\n| taskCode | VARCHAR(128) UNIQUE | 任务编码 |\n| taskName | VARCHAR(128) | 任务名称 |\n| taskType | TINYINT | 任务类型（1=Cron 2=延迟） |\n| cronExpression | VARCHAR(128) | Cron 表达式 |\n| intervalSeconds | INT | 固定间隔秒数 |\n| enabled | BOOLEAN | 是否启用 |\n| timeoutSeconds | INT | 超时秒数 |\n| description | TEXT | 任务描述 |\n| catchUpOnRestart | BOOLEAN | 重启补偿 |\n| maxRetry | INT | 最大重试次数（延迟任务失败重试用） |\n| backoffStrategy | TEXT | 退避策略 JSON |\n| enableLog | BOOLEAN | 是否记录执行日志（高频任务可关闭） |\n| lastRunAt | DATETIME | 上次执行时间 |\n| nextRunAt | DATETIME | 下次执行时间 |\n| lastRunStatus | TINYINT | 上次执行状态 |\n| lastErrorMessage | TEXT | 上次错误信息 |\n\n### ext_scheduler_task_instance（延迟任务实例）\n\n> 手动触发任务会创建立即执行的实例（executeAt = now，触发方式 = 手动），与延迟任务共用实例管线。\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| id | VARCHAR(36) PK | 主键 |\n| taskCode | VARCHAR(128) | 任务编码 |\n| entityId | VARCHAR(128) | 业务实体ID |\n| payload | JSON | 业务数据 |\n| executeAt | DATETIME | 应执行时间 |\n| status | TINYINT | 实例状态 |\n| triggerType | TINYINT | 触发方式（1=自动 2=手动） |\n| startedAt | DATETIME | 开始执行时间 |\n| finishedAt | DATETIME | 完成时间 |\n| retryCount | INT | 重试次数 |\n| errorMessage | TEXT | 错误信息 |\n| errorStack | TEXT | 错误堆栈 |\n| executor | VARCHAR(64) | 执行实例标识 |\n\n核心索引：\n- `idx_task_instance_scan (status, executeAt)` — 预加载扫描索引\n- `idx_task_instance_archive (executor, status)` — 归档批量更新索引\n\n### ext_scheduler_task_log（执行日志）\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| id | VARCHAR(36) PK | 主键 |\n| taskCode | VARCHAR(128) | 任务编码 |\n| taskName | VARCHAR(128) | 任务名称 |\n| instanceId | VARCHAR(36) | 延迟实例ID |\n| status | TINYINT | 执行状态 |\n| triggerType | TINYINT | 触发方式 |\n| startedAt | DATETIME | 开始时间 |\n| finishedAt | DATETIME | 完成时间 |\n| durationMs | INT | 耗时毫秒 |\n| executor | VARCHAR(64) | 执行实例标识 |\n| errorMessage | TEXT | 错误信息 |\n| errorStack | TEXT | 错误堆栈 |\n| result | JSON | 执行结果摘要 |\n\n---\n\n## 字典枚举\n\n从 `moyan-mfw-extension-scheduler/shared` 导入：\n\n### TaskTypeDict — 任务类型\n\n| 值 | 标签 |\n|----|------|\n| `CRON = 1` | Cron 定时 |\n| `DELAY = 2` | 延迟任务 |\n\n### TaskInstanceStatusDict — 实例状态\n\n| 值 | 标签 |\n|----|------|\n| `PENDING = 1` | 待执行 |\n| `RUNNING = 2` | 执行中 |\n| `SUCCESS = 3` | 已成功 |\n| `FAILED = 4` | 已失败 |\n| `CANCELLED = 5` | 已取消 |\n| `TIMEOUT = 6` | 已超时 |\n| `TIMEOUT_ORPHAN = 7` | 未归档（崩溃残留） |\n\n### TaskRunStatusDict — 执行状态\n\n| 值 | 标签 |\n|----|------|\n| `RUNNING = 1` | 执行中 |\n| `SUCCESS = 2` | 成功 |\n| `FAILED = 3` | 失败 |\n| `TIMEOUT = 4` | 超时 |\n| `SKIPPED = 5` | 跳过 |\n\n### TaskTriggerTypeDict — 触发方式\n\n| 值 | 标签 |\n|----|------|\n| `AUTO = 1` | 自动 |\n| `MANUAL = 2` | 手动 |\n\n---\n\n## 架构概览\n\n### 调度引擎核心链路\n\n```\n正向调度链：\n  DB → 预加载(分片+认领) → 分钟轮 → 秒轮 → 派发 → 执行池 → 结果缓冲\n\n归档落库链：\n  归档轮(60s) → 批量归档(分组UPDATE) → 失败重试 → 批量INSERT日志\n```\n\n### 关键工程决策\n\n| 决策 | 说明 |\n|------|------|\n| 认领前移 | 批量认领在预加载阶段完成（1 UPDATE + 1 SELECT），秒轮路径零 DB |\n| 长短双池 | 长任务(maxConcurrency=10) + 短任务(maxConcurrency=30)，async 信号量控制 |\n| F1 快速路径 | 本地实现下结果直写缓冲池，绕过事件层，零开销 |\n| flush 兜底 | OnModuleDestroy 时强制 flush 缓冲落库；崩溃残留靠启动孤儿清理 |\n\n### 性能预期\n\n| 配置 | 稳态吞吐 | 说明 |\n|------|---------|------|\n| 默认（F1 本地 + InProcess） | ~1000-2000/s | handler 执行占 DB 连接池 |\n| F3 RabbitMQ + N 消费者 | N × 1000/s | 调度器只认领+publish，消费者横向扩展 |\n\n### 状态更新策略\n\n| 操作 | 策略 | 理由 |\n|------|------|------|\n| 认领 (claim) | 批量 (1 UPDATE + 1 SELECT / 周期) | 从 N 次降到 2 次 DB 交互 |\n| 结果归档 | 批量 (分组 UPDATE / 分钟) | 缓冲到分钟级再落库 |\n| 孤儿清理 | 批量 (启动时 1 次) | 一次清理所有 RUNNING 孤儿 |\n\n---\n\n## 权限\n\n| 权限标签 | 说明 |\n|---------|------|\n| `执行` | 手动触发任务 / 创建延迟实例（扩展包自定义） |\n| `查看` | 查看任务/实例/日志（框架内置） |\n| `编辑` | 编辑任务配置/取消实例（框架内置） |\n| `删除` | 删除任务（框架内置） |\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}