@smitejs/jobs 2.0.0-SNAPSHOT

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../core/dist/descriptor.d.ts","../../core/dist/app.d.ts","../../core/dist/constants.d.ts","../../core/dist/scope.d.ts","../../core/dist/registry.d.ts","../../core/dist/index.d.ts","../../handlers/dist/index.d.ts","../src/schedule.ts","../src/collector.ts","../src/job.ts","../src/scheduler.ts","../src/index.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/ssh2/index.d.ts","../../../node_modules/@types/docker-modem/index.d.ts","../../../node_modules/@types/dockerode/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/linkify-it/build/index.cjs.d.ts","../../../node_modules/@types/linkify-it/index.d.ts","../../../node_modules/mdurl/lib/index.d.ts","../../../node_modules/@types/markdown-it/dist/index.cjs.d.ts","../../../node_modules/@types/markdown-it/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mdurl/build/index.cjs.d.ts","../../../node_modules/@types/mdurl/index.d.ts","../../../node_modules/@types/ssh2-streams/index.d.ts"],"fileIdsList":[[81,131,145,148,149,151,163,181,182],[81,131,142,148,149,163,181,182,183],[81,131,148,149],[81,131,148,149,186],[81,131,148,149,188],[81,131,148,149,188,190],[81,131,148,149,191],[81,131,148,149,194],[81,128,129,131,148,149],[81,130,131,148,149],[131,148,149],[81,131,136,148,149,166],[81,131,132,137,142,148,149,151,163,174],[81,131,132,133,142,148,149,151],[76,77,78,81,131,148,149],[81,131,134,148,149,175],[81,131,135,136,143,148,149,152],[81,131,136,148,149,163,171],[81,131,137,139,142,148,149,151],[81,130,131,138,148,149],[81,131,139,140,148,149],[81,131,141,142,148,149],[81,130,131,142,148,149],[81,131,142,143,144,148,149,163,174],[81,131,142,143,144,148,149,158,163,166],[81,123,131,139,142,145,148,149,151,163,174],[81,131,142,143,145,146,148,149,151,163,171,174],[81,131,145,147,148,149,163,171,174],[79,80,81,82,83,84,85,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180],[81,131,142,148,149],[81,131,148,149,150,174],[81,131,139,142,148,149,151,163],[81,131,148,149,152],[81,131,148,149,153],[81,130,131,148,149,154],[81,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180],[81,131,148,149,156],[81,131,148,149,157],[81,131,142,148,149,158,159],[81,131,148,149,158,160,175,177],[81,131,143,148,149],[81,131,142,148,149,163,164,166],[81,131,148,149,165,166],[81,131,148,149,163,164],[81,131,148,149,166],[81,131,148,149,167],[81,128,131,148,149,163,168,174],[81,131,142,148,149,169,170],[81,131,148,149,169,170],[81,131,136,148,149,151,163,171],[81,131,148,149,172],[81,131,148,149,151,173],[81,131,145,148,149,157,174],[81,131,136,148,149,175],[81,131,148,149,163,176],[81,131,148,149,150,177],[81,131,148,149,178],[81,123,131,148,149],[81,123,131,142,144,148,149,154,163,166,174,176,177,179],[81,131,148,149,163,180],[81,131,148,149,163,181],[81,131,142,145,147,148,149,151,163,181],[81,95,99,131,148,149,174],[81,95,131,148,149,163,174],[81,90,131,148,149],[81,92,95,131,148,149,171,174],[81,131,148,149,151,171],[81,131,148,149,181],[81,90,131,148,149,181],[81,92,95,131,148,149,151,174],[81,87,88,91,94,131,142,148,149,163,174],[81,95,102,131,148,149],[81,87,93,131,148,149],[81,95,116,117,131,148,149],[81,91,95,131,148,149,166,174,181],[81,116,131,148,149,181],[81,89,90,131,148,149,181],[81,95,131,148,149],[81,89,90,91,92,93,94,95,96,97,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,131,148,149],[81,95,110,131,148,149],[81,95,102,103,131,148,149],[81,93,95,103,104,131,148,149],[81,94,131,148,149],[81,87,90,95,131,148,149],[81,95,99,103,104,131,148,149],[81,99,131,148,149],[81,93,95,98,131,148,149,174],[81,87,92,95,102,131,148,149],[81,131,148,149,163],[81,90,95,116,131,148,149,179,181],[64,81,131,148,149],[64,65,66,67,68,81,131,148,149],[69,70,71,81,131,148,149],[71,72,73,74,81,131,148,149],[69,70,71,72,81,131,148,149]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"ef07fb22b1b3ad89bc5c9ebd252ff68e81bca1507eb2852b396f10c07d43829c","impliedFormat":99},{"version":"05231a76ecb4853c3b515e27d873556403b9b13edbd4a4163762ef9485b3fd86","impliedFormat":99},{"version":"35eb03cfedd8efacead37f1b3d6eee65dd846cda1f3f0eb7890899beead8842c","impliedFormat":99},{"version":"ed90b73c3541b92f452f9b2fadc25f25fbbfdd1b772dc11a4b6cf780cc75975a","impliedFormat":99},{"version":"61f44bd2cf47909041497e551ebd8227b144224a4f0951000f91017ac72f2834","impliedFormat":99},{"version":"c4bc20ce6023d9f6a6532a99bcbd75b32763bc700ce96cc922d456b73dbcacb1","impliedFormat":99},{"version":"73035e5635b83a538e20e2f46d3f2498489d1c8487f2a30ab4b21a5a5ef6fb39","impliedFormat":99},{"version":"73ac1b34db21914c3398b3511d11df5932a5124704d6a7c639bf30b62548bacd","signature":"e8c77e6c6578f39d9cf385071dc738617751c1b673b8367b25a39f0d0c466c25","impliedFormat":99},{"version":"ca15a3efe3bdeb30d2dde2834cacfcc46e66587d2a717e733f103b72facb1f8b","signature":"e047ca64f0076d33699849494771db322836bb3c9334a5008b1e6693a0cd43b0","impliedFormat":99},{"version":"ef57b028c9ed789845e5185678c081b365ec9279976bcb8dbeea69bd0ff292c4","signature":"979aeff1a162a30efbead77a868715c326150c7f8b97545635c9aa16fcc987b1","impliedFormat":99},{"version":"41f4e4ff3c65ebe10bfaf2c1ffda353e33dddcabd40ebd321d8654fb4019c325","signature":"b3dcb5de48f60772fa00f259315c89cb5d1a07fea78f9c71c260d92fb13bbc79","impliedFormat":99},{"version":"7e0a50f2c7ec70da7fbef064fb29e40c34b60094eac47f5583bd54335cb6051e","signature":"d4150a1446540b9743120ec835f35137b976fd249598a852e79a403ef9c8cae6","impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"d61e0a64cd175208ac0b83670151a9a6b5916f0d1ffcdc5c29c90b1cebfc5045","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"4371055bb001f40596e2e236b27583e13bf11e75d937962f8947d56519237fb8","impliedFormat":1},{"version":"89189df027e8910200a4b65af1e29a996225cf25975f5c438fbe9361c008fc6b","impliedFormat":1},{"version":"4555baaea5dfc93e0c0ba3fc326b0ba3ad50bb2ab887fa2dff49c7da7bd3bcaa","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"347a238c5800881e93ca9d17bece9f7eaf61b000dd1575b67264cb4ececc10b6","impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"7cfdf3b9a5ba934a058bfc9390c074104dc7223b7e3c16fd5335206d789bc3d3","impliedFormat":1},{"version":"74b19240ade8cf0b56f8c7c3fe2d1981811156deb4457c1b38737aa9b6bfca1b","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"a109c4289d59d9019cfe1eeab506fe57817ee549499b02a83a7e9d3bdf662d63","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"5d30565583300c9256072a013ac0318cc603ff769b4c5cafc222394ea93963e1","impliedFormat":1},{"version":"2e23be37a190953f60cdc4a62f89e5dfe4d6c64f38c71564bc0fb63c7810c9a1","impliedFormat":1}],"root":[[71,75]],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"module":199,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[183,1],[184,2],[185,3],[187,4],[188,3],[189,5],[191,6],[192,7],[193,4],[194,3],[195,8],[128,9],[129,9],[130,10],[81,11],[131,12],[132,13],[133,14],[76,3],[79,15],[77,3],[78,3],[134,16],[135,17],[136,18],[137,19],[138,20],[139,21],[140,21],[141,22],[142,23],[143,24],[144,25],[82,3],[80,3],[145,26],[146,27],[147,28],[181,29],[148,30],[149,3],[150,31],[151,32],[152,33],[153,34],[154,35],[155,36],[156,37],[157,38],[158,39],[159,39],[160,40],[161,3],[162,41],[163,42],[165,43],[164,44],[166,45],[167,46],[168,47],[169,48],[170,49],[171,50],[172,51],[173,52],[174,53],[175,54],[176,55],[177,56],[178,57],[83,3],[84,3],[85,3],[124,58],[125,3],[126,3],[127,45],[179,59],[180,60],[196,61],[182,62],[186,3],[86,3],[190,3],[61,3],[62,3],[12,3],[10,3],[11,3],[16,3],[15,3],[2,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[24,3],[3,3],[25,3],[26,3],[4,3],[27,3],[31,3],[28,3],[29,3],[30,3],[32,3],[33,3],[34,3],[5,3],[35,3],[36,3],[37,3],[38,3],[6,3],[42,3],[39,3],[40,3],[41,3],[43,3],[7,3],[44,3],[49,3],[50,3],[45,3],[46,3],[47,3],[48,3],[8,3],[54,3],[51,3],[52,3],[53,3],[55,3],[9,3],[56,3],[63,3],[57,3],[58,3],[60,3],[59,3],[1,3],[14,3],[13,3],[102,63],[112,64],[101,63],[122,65],[93,66],[92,67],[121,68],[115,69],[120,70],[95,71],[109,72],[94,73],[118,74],[90,75],[89,68],[119,76],[91,77],[96,78],[97,3],[100,78],[87,3],[123,79],[113,80],[104,81],[105,82],[107,83],[103,84],[106,85],[116,68],[98,86],[99,87],[108,88],[88,89],[111,80],[110,78],[114,3],[117,90],[65,91],[66,3],[64,3],[69,92],[68,91],[67,3],[70,3],[72,93],[75,94],[73,93],[71,3],[74,95]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.3"}
@@ -0,0 +1,33 @@
1
+ import type { AppDescriptor } from "@smitejs/core";
2
+ import type { EmptySignal } from "@smitejs/handlers";
3
+ import type { JobSchedule } from "./schedule.js";
4
+ /**
5
+ * A job as seen by artifact generators: its id, schedule, and the run function
6
+ * the scheduler invokes. `run` takes a zero-input signal.
7
+ *
8
+ * @group Collector
9
+ */
10
+ export interface CollectedJob {
11
+ readonly id: string;
12
+ readonly schedule: JobSchedule;
13
+ readonly run: (signal: EmptySignal) => void | Promise<void>;
14
+ }
15
+ /**
16
+ * Walks an app's `jobs.job` children and returns the collected jobs with their
17
+ * schedules and run functions. Shared by artifact generators and the scheduler
18
+ * executor.
19
+ *
20
+ * @group Collector
21
+ * @example
22
+ * ```ts
23
+ * job(app, "cleanup")
24
+ * .every(60_000)
25
+ * .run(() => undefined);
26
+ * job(app, "report")
27
+ * .cron("0 2 * * 1")
28
+ * .run(() => undefined);
29
+ * const collected = jobsOf(app);
30
+ * ```
31
+ */
32
+ export declare function jobsOf(app: AppDescriptor): readonly CollectedJob[];
33
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAc,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D;AAQD;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,YAAY,EAAE,CAYlE"}
@@ -0,0 +1,29 @@
1
+ import { childrenOf } from "@smitejs/core";
2
+ /**
3
+ * Walks an app's `jobs.job` children and returns the collected jobs with their
4
+ * schedules and run functions. Shared by artifact generators and the scheduler
5
+ * executor.
6
+ *
7
+ * @group Collector
8
+ * @example
9
+ * ```ts
10
+ * job(app, "cleanup")
11
+ * .every(60_000)
12
+ * .run(() => undefined);
13
+ * job(app, "report")
14
+ * .cron("0 2 * * 1")
15
+ * .run(() => undefined);
16
+ * const collected = jobsOf(app);
17
+ * ```
18
+ */
19
+ export function jobsOf(app) {
20
+ return childrenOf(app, "jobs.job").map((node) => {
21
+ const jobNode = node;
22
+ const handler = childrenOf(node, "jobs.handler")[0];
23
+ return {
24
+ id: jobNode.data.id,
25
+ schedule: jobNode.data.schedule,
26
+ run: handler?.data.fn ?? (() => undefined),
27
+ };
28
+ });
29
+ }
@@ -0,0 +1,28 @@
1
+ export { cron, interval, nextFire } from "./schedule.js";
2
+ export type { CompiledCron, FieldMatcher, JobSchedule } from "./schedule.js";
3
+ export { job, runJob } from "./job.js";
4
+ export type { JobBuilder, JobDescriptor, JobHandler, JobHandlerDescriptor, JobRun, } from "./job.js";
5
+ export { scheduler } from "./scheduler.js";
6
+ export type { JobScheduler, SchedulerOptions } from "./scheduler.js";
7
+ export { jobsOf } from "./collector.js";
8
+ export type { CollectedJob } from "./collector.js";
9
+ import { jobsOf } from "./collector.js";
10
+ import { job } from "./job.js";
11
+ import { scheduler } from "./scheduler.js";
12
+ /**
13
+ * The jobs namespace: one import for the whole scheduled-jobs app extensor.
14
+ *
15
+ * @group Surface
16
+ * @example
17
+ * ```ts
18
+ * const jobsBundle = jobs;
19
+ * ```
20
+ */
21
+ export declare const jobs: {
22
+ cron: (expression: string) => import("./schedule.js").JobSchedule;
23
+ interval: (milliseconds: number) => import("./schedule.js").JobSchedule;
24
+ job: typeof job;
25
+ jobsOf: typeof jobsOf;
26
+ scheduler: typeof scheduler;
27
+ };
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,YAAY,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,MAAM,GACP,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;CAMhB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ export { cron, interval, nextFire } from "./schedule.js";
2
+ export { job, runJob } from "./job.js";
3
+ export { scheduler } from "./scheduler.js";
4
+ export { jobsOf } from "./collector.js";
5
+ import { jobsOf } from "./collector.js";
6
+ import { job } from "./job.js";
7
+ import { cron, interval } from "./schedule.js";
8
+ import { scheduler } from "./scheduler.js";
9
+ /**
10
+ * The jobs namespace: one import for the whole scheduled-jobs app extensor.
11
+ *
12
+ * @group Surface
13
+ * @example
14
+ * ```ts
15
+ * const jobsBundle = jobs;
16
+ * ```
17
+ */
18
+ export const jobs = {
19
+ cron,
20
+ interval,
21
+ job,
22
+ jobsOf,
23
+ scheduler,
24
+ };
package/dist/job.d.ts ADDED
@@ -0,0 +1,89 @@
1
+ import type { AppDescriptor, Descriptor } from "@smitejs/core";
2
+ import type { EmptyHandler, EmptySignal } from "@smitejs/handlers";
3
+ import type { JobSchedule } from "./schedule.js";
4
+ /**
5
+ * The zero-input function a job runs each time it fires.
6
+ *
7
+ * @group Types
8
+ */
9
+ export type JobHandler = EmptyHandler;
10
+ /**
11
+ * A `jobs.job` IR node: a named schedule and the handler edge that runs it.
12
+ *
13
+ * @group Internals
14
+ */
15
+ export interface JobDescriptor extends Descriptor<"jobs.job", {
16
+ readonly id: string;
17
+ readonly schedule: JobSchedule;
18
+ }> {
19
+ }
20
+ /**
21
+ * A node wrapping the function a job runs.
22
+ *
23
+ * @group Internals
24
+ */
25
+ export interface JobHandlerDescriptor extends Descriptor<"jobs.handler", {
26
+ readonly fn: JobHandler;
27
+ }> {
28
+ }
29
+ /**
30
+ * The terminal step of a {@link JobBuilder}: binds the run function to the
31
+ * schedule chosen and registers the job node under the app.
32
+ *
33
+ * @group Builders
34
+ */
35
+ export interface JobRun {
36
+ /** Attaches the run function, relates the IR nodes, and returns the job. */
37
+ readonly run: (fn: JobHandler) => JobDescriptor;
38
+ }
39
+ /**
40
+ * A job builder: choose a cron or interval schedule from one shared
41
+ * `job(app, id)` piece, then bind a run function. Always a builder; returns the
42
+ * `jobs.job` descriptor after `run()`.
43
+ *
44
+ * @group Builders
45
+ * @example
46
+ * ```ts
47
+ * const app = createApp();
48
+ * const descriptor = job(app, "nightly")
49
+ * .cron("0 0 * * *")
50
+ * .run(() => undefined);
51
+ * ```
52
+ */
53
+ export interface JobBuilder {
54
+ /** Cron schedule from a 5-field POSIX expression. */
55
+ readonly cron: (expression: string) => JobRun;
56
+ /** Fixed-interval schedule in milliseconds. */
57
+ readonly every: (milliseconds: number) => JobRun;
58
+ }
59
+ /**
60
+ * Creates a job builder for an app. The common piece — `(app, id)` — yields two
61
+ * schedule builders (`cron()` / `every()`); pick one and `.run(fn)` attaches the
62
+ * `jobs.handler` child and relates the `jobs.job` node under the app.
63
+ *
64
+ * @group Builders
65
+ * @example
66
+ * ```ts
67
+ * const everyFive = cron("5 * * * *");
68
+ * ```
69
+ * @example
70
+ * ```ts
71
+ * const app = createApp();
72
+ * const heartbeat = job(app, "heartbeat")
73
+ * .every(5_000)
74
+ * .run(() => undefined);
75
+ * ```
76
+ */
77
+ export declare function job(app: AppDescriptor, id: string): JobBuilder;
78
+ /**
79
+ * Fires a job's run function with a zero-input signal at the given (or
80
+ * current) instant.
81
+ *
82
+ * @group Executor
83
+ */
84
+ export declare const runJob: (descriptor: {
85
+ readonly data: {
86
+ readonly id: string;
87
+ };
88
+ }, fn: (signal: EmptySignal) => void | Promise<void>, at?: number | Date) => Promise<void>;
89
+ //# sourceMappingURL=job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../src/job.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC;AAEtC;;;;GAIG;AACH,MAAM,WAAW,aACf,SAAQ,UAAU,CAChB,UAAU,EACV;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,CACxD;CAAG;AAEN;;;;GAIG;AACH,MAAM,WAAW,oBACf,SAAQ,UAAU,CAAC,cAAc,EAAE;IAAE,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;CAAE,CAAC;CAAG;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,aAAa,CAAC;CACjD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAED;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CA2B9D;AAED;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GACjB,YAAY;IAAE,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACtD,IAAI,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACjD,KAAI,MAAM,GAAG,IAAiB,KAC7B,OAAO,CAAC,IAAI,CAAsD,CAAC"}
package/dist/job.js ADDED
@@ -0,0 +1,47 @@
1
+ import { defineDescriptor, relate } from "@smitejs/core";
2
+ import { emptyHandler, fire } from "@smitejs/handlers";
3
+ import { cron, interval } from "./schedule.js";
4
+ /**
5
+ * Creates a job builder for an app. The common piece — `(app, id)` — yields two
6
+ * schedule builders (`cron()` / `every()`); pick one and `.run(fn)` attaches the
7
+ * `jobs.handler` child and relates the `jobs.job` node under the app.
8
+ *
9
+ * @group Builders
10
+ * @example
11
+ * ```ts
12
+ * const everyFive = cron("5 * * * *");
13
+ * ```
14
+ * @example
15
+ * ```ts
16
+ * const app = createApp();
17
+ * const heartbeat = job(app, "heartbeat")
18
+ * .every(5_000)
19
+ * .run(() => undefined);
20
+ * ```
21
+ */
22
+ export function job(app, id) {
23
+ const declare = (schedule) => ({
24
+ run: (fn) => {
25
+ const descriptor = defineDescriptor("jobs.job", `${app.__key}:job:${id}`, {
26
+ id,
27
+ schedule,
28
+ });
29
+ const handlerDescriptor = defineDescriptor("jobs.handler", `${descriptor.__key}:handler`, { fn: emptyHandler({ name: id }, fn) });
30
+ relate(descriptor, "jobs.handler", handlerDescriptor);
31
+ relate(app, "jobs.job", descriptor);
32
+ return descriptor;
33
+ },
34
+ });
35
+ const builder = {
36
+ cron: (expression) => declare(cron(expression)),
37
+ every: (milliseconds) => declare(interval(milliseconds)),
38
+ };
39
+ return builder;
40
+ }
41
+ /**
42
+ * Fires a job's run function with a zero-input signal at the given (or
43
+ * current) instant.
44
+ *
45
+ * @group Executor
46
+ */
47
+ export const runJob = (descriptor, fn, at = Date.now()) => Promise.resolve(fn(fire(descriptor.data.id, at)));
@@ -0,0 +1,67 @@
1
+ /**
2
+ * A job run schedule: either a POSIX cron expression (minute hour day-of-month
3
+ * month day-of-week; `0` and `7` both mean Sunday) or a fixed interval in
4
+ * milliseconds.
5
+ *
6
+ * @group Types
7
+ */
8
+ export type JobSchedule = {
9
+ readonly kind: "cron";
10
+ readonly expression: string;
11
+ } | {
12
+ readonly kind: "interval";
13
+ readonly milliseconds: number;
14
+ };
15
+ /**
16
+ * Builds a cron schedule from a 5-field POSIX expression. Every field accepts
17
+ * a bare value (`*`, `n`), a range (`a-b`), a range with a step (`a-b/n`), a
18
+ * wildcard with a step (for example `*` followed by `/n`), or a
19
+ * comma-separated list of any of those.
20
+ *
21
+ * @group Builders
22
+ * @example
23
+ * ```ts
24
+ * const everyFive = cron("5 * * * *");
25
+ * ```
26
+ */
27
+ export declare const cron: (expression: string) => JobSchedule;
28
+ /**
29
+ * Builds a fixed-interval schedule from a duration in milliseconds.
30
+ *
31
+ * @group Builders
32
+ */
33
+ export declare const interval: (milliseconds: number) => JobSchedule;
34
+ /** Predicate deciding whether a single field value is allowed. */
35
+ export type FieldMatcher = (value: number) => boolean;
36
+ /** A compiled cron expression: five field matchers plus wildcard flags. */
37
+ export interface CompiledCron {
38
+ readonly minute: FieldMatcher;
39
+ readonly hour: FieldMatcher;
40
+ readonly dayOfMonth: FieldMatcher;
41
+ readonly month: FieldMatcher;
42
+ readonly dayOfWeek: FieldMatcher;
43
+ readonly dayOfMonthIsStar: boolean;
44
+ readonly dayOfWeekIsStar: boolean;
45
+ }
46
+ /**
47
+ * Parses a 5-field POSIX cron expression into {@link CompiledCron}.
48
+ *
49
+ * @group Internals
50
+ */
51
+ export declare function compileCron(expr: string): CompiledCron;
52
+ /**
53
+ * Computes the next moment `schedule` fires at or after `from`. Cron fires on
54
+ * the first matching minute boundary; interval schedules fire `milliseconds`
55
+ * after `from`. Returns `null` when no cron fire is within the look-ahead
56
+ * horizon (one year).
57
+ *
58
+ * @group Executor
59
+ * @example
60
+ * ```ts
61
+ * const workdayNine = cron("0 9-17 * * 1-5");
62
+ * const monday = new Date("2026-01-05T00:00:00Z"); // 2026-01-05 is a Monday
63
+ * const next = nextFire(workdayNine, monday);
64
+ * ```
65
+ */
66
+ export declare function nextFire(schedule: JobSchedule, from: Date): Date | null;
67
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../src/schedule.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,GAAI,YAAY,MAAM,KAAG,WAGzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,cAAc,MAAM,KAAG,WAG9C,CAAC;AAIH,kEAAkE;AAClE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAwCD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAkCtD;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAmCvE"}
@@ -0,0 +1,141 @@
1
+ const MINUTE_MS = 60_000;
2
+ const CRON_FIELDS = 5;
3
+ const LOOK_AHEAD_MS = 366 * 24 * 60 * MINUTE_MS;
4
+ /**
5
+ * Builds a cron schedule from a 5-field POSIX expression. Every field accepts
6
+ * a bare value (`*`, `n`), a range (`a-b`), a range with a step (`a-b/n`), a
7
+ * wildcard with a step (for example `*` followed by `/n`), or a
8
+ * comma-separated list of any of those.
9
+ *
10
+ * @group Builders
11
+ * @example
12
+ * ```ts
13
+ * const everyFive = cron("5 * * * *");
14
+ * ```
15
+ */
16
+ export const cron = (expression) => {
17
+ compileCron(expression);
18
+ return { kind: "cron", expression };
19
+ };
20
+ /**
21
+ * Builds a fixed-interval schedule from a duration in milliseconds.
22
+ *
23
+ * @group Builders
24
+ */
25
+ export const interval = (milliseconds) => ({
26
+ kind: "interval",
27
+ milliseconds,
28
+ });
29
+ const compileToken = (token, { min, max }) => {
30
+ const stepMatch = /^(.+?)\/(\d+)$/u.exec(token);
31
+ const step = stepMatch === null ? 1 : Number(stepMatch[2]);
32
+ const base = stepMatch === null ? token : (stepMatch[1] ?? "*");
33
+ let low;
34
+ let high;
35
+ if (base === "*") {
36
+ low = min;
37
+ high = max;
38
+ }
39
+ else {
40
+ const range = /^(\d+)(?:-(\d+))?$/u.exec(base);
41
+ if (range === null) {
42
+ throw new Error(`Invalid cron token '${token}'.`);
43
+ }
44
+ low = Number(range[1]);
45
+ high = range[2] === undefined ? low : Number(range[2]);
46
+ if (low < min || high > max || low > high) {
47
+ throw new Error(`Cron token '${token}' is out of range [${min}–${max}].`);
48
+ }
49
+ }
50
+ return (value) => value >= low && value <= high && (value - low) % step === 0;
51
+ };
52
+ const compileField = (field, range) => {
53
+ const tokens = field.split(",").map((token) => token.trim());
54
+ if (tokens.length === 0 || tokens.some((token) => token.length === 0)) {
55
+ throw new Error(`Empty cron field '${field}'.`);
56
+ }
57
+ const matchers = tokens.map((token) => compileToken(token, range));
58
+ return [
59
+ (value) => matchers.some((matcher) => matcher(value)),
60
+ tokens.every((token) => token === "*"),
61
+ ];
62
+ };
63
+ /**
64
+ * Parses a 5-field POSIX cron expression into {@link CompiledCron}.
65
+ *
66
+ * @group Internals
67
+ */
68
+ export function compileCron(expr) {
69
+ const fields = expr.trim().split(/\s+/u);
70
+ if (fields.length !== CRON_FIELDS) {
71
+ throw new Error(`Cron expression '${expr}' must have exactly ${CRON_FIELDS} fields.`);
72
+ }
73
+ const [min, hour, dayOfMonth, month, dayOfWeek] = fields;
74
+ if (min === undefined ||
75
+ hour === undefined ||
76
+ dayOfMonth === undefined ||
77
+ month === undefined ||
78
+ dayOfWeek === undefined) {
79
+ throw new Error(`Invalid cron expression '${expr}'.`);
80
+ }
81
+ const [minute] = compileField(min, { min: 0, max: 59 });
82
+ const [hourMatcher] = compileField(hour, { min: 0, max: 23 });
83
+ const [domMatcher, domStar] = compileField(dayOfMonth, { min: 1, max: 31 });
84
+ const [monthMatcher] = compileField(month, { min: 1, max: 12 });
85
+ const [dowMatcher, dowStar] = compileField(dayOfWeek, { min: 0, max: 7 });
86
+ return {
87
+ minute,
88
+ hour: hourMatcher,
89
+ dayOfMonth: domMatcher,
90
+ month: monthMatcher,
91
+ dayOfWeek: (value) => dowMatcher(value) || (value === 0 && dowMatcher(7)),
92
+ dayOfMonthIsStar: domStar,
93
+ dayOfWeekIsStar: dowStar,
94
+ };
95
+ }
96
+ const dayAllows = (dom, dow, domStar, dowStar, date, weekday) => {
97
+ if (!domStar && !dowStar) {
98
+ return dom(date) || dow(weekday);
99
+ }
100
+ if (dowStar) {
101
+ return dom(date);
102
+ }
103
+ return dow(weekday);
104
+ };
105
+ /**
106
+ * Computes the next moment `schedule` fires at or after `from`. Cron fires on
107
+ * the first matching minute boundary; interval schedules fire `milliseconds`
108
+ * after `from`. Returns `null` when no cron fire is within the look-ahead
109
+ * horizon (one year).
110
+ *
111
+ * @group Executor
112
+ * @example
113
+ * ```ts
114
+ * const workdayNine = cron("0 9-17 * * 1-5");
115
+ * const monday = new Date("2026-01-05T00:00:00Z"); // 2026-01-05 is a Monday
116
+ * const next = nextFire(workdayNine, monday);
117
+ * ```
118
+ */
119
+ export function nextFire(schedule, from) {
120
+ if (schedule.kind === "interval") {
121
+ return new Date(from.getTime() + schedule.milliseconds);
122
+ }
123
+ const compiled = compileCron(schedule.expression);
124
+ const start = new Date(from);
125
+ start.setUTCSeconds(0, 0);
126
+ start.setUTCMinutes(start.getUTCMinutes() + 1);
127
+ const deadline = start.getTime() + LOOK_AHEAD_MS;
128
+ for (let cursor = start; cursor.getTime() <= deadline; cursor = new Date(cursor.getTime() + MINUTE_MS)) {
129
+ const minuteMatch = compiled.minute(cursor.getUTCMinutes());
130
+ const hourMatch = compiled.hour(cursor.getUTCHours());
131
+ const monthMatch = compiled.month(cursor.getUTCMonth() + 1);
132
+ if (!minuteMatch || !hourMatch || !monthMatch) {
133
+ continue;
134
+ }
135
+ const dayMatch = dayAllows(compiled.dayOfMonth, compiled.dayOfWeek, compiled.dayOfMonthIsStar, compiled.dayOfWeekIsStar, cursor.getUTCDate(), cursor.getUTCDay());
136
+ if (dayMatch) {
137
+ return cursor;
138
+ }
139
+ }
140
+ return null;
141
+ }
@@ -0,0 +1,53 @@
1
+ import type { AppDescriptor } from "@smitejs/core";
2
+ import type { CollectedJob } from "./collector.js";
3
+ /**
4
+ * Options for {@link scheduler}.
5
+ *
6
+ * @group Executor
7
+ */
8
+ export interface SchedulerOptions {
9
+ /** Invoked before each job runs, with the job id and fire time. */
10
+ readonly onRun?: (entry: {
11
+ readonly id: string;
12
+ readonly at: number;
13
+ }) => void;
14
+ /** Invoked when a job's run function throws or rejects. */
15
+ readonly onError?: (entry: {
16
+ readonly id: string;
17
+ readonly error: unknown;
18
+ }) => void;
19
+ /** Also arms the schedule clock when `start()` runs. */
20
+ readonly start?: boolean;
21
+ }
22
+ /**
23
+ * A runtime handle returned by {@link scheduler}: the collected jobs, plus
24
+ * `start` (fire everything once) and `tick`/`stop` to drive the fire clock.
25
+ *
26
+ * @group Executor
27
+ */
28
+ export interface JobScheduler {
29
+ readonly jobs: readonly CollectedJob[];
30
+ /** Runs every job once immediately; with `{ start: true }` arms the clock. */
31
+ readonly start: () => Promise<void>;
32
+ /** Arms each job's cron/interval timer and returns a one-shot `stop`. */
33
+ readonly tick: () => () => void;
34
+ /** Clears every armed timer. */
35
+ readonly stop: () => void;
36
+ }
37
+ /**
38
+ * Turns an app into a runtime job scheduler. Walks the app's `jobs.job` IR
39
+ * tree via child refs — never the global registry — so it keeps working in
40
+ * production bundles where collect mode is folded out. `start()` fires every
41
+ * job once; `tick()` arms the cron/interval timers and returns a `stop` for
42
+ * shutdown; `{ start: true }` arms automatically. `onRun`/`onError` observe
43
+ * each fire.
44
+ *
45
+ * @group Executor
46
+ * @example
47
+ * ```ts
48
+ * const handle = scheduler(app);
49
+ * const stop = handle.tick();
50
+ * ```
51
+ */
52
+ export declare function scheduler(app: AppDescriptor, options?: SchedulerOptions): JobScheduler;
53
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../src/scheduler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAMnD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;KACrB,KAAK,IAAI,CAAC;IACX,2DAA2D;IAC3D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,KAAK,IAAI,CAAC;IACX,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IACvC,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,IAAI,CAAC;IAChC,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;CAC3B;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,aAAa,EAClB,OAAO,GAAE,gBAAqB,GAC7B,YAAY,CA6Dd"}