@tinyrack/tinyauth-server 0.0.13 → 0.0.15
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.
- package/dist/entities/background-job.entity.d.ts +111 -0
- package/dist/entities/background-job.entity.d.ts.map +1 -0
- package/dist/entities/background-job.entity.js +41 -0
- package/dist/entities/background-job.entity.js.map +1 -0
- package/dist/entities/oauth-client.entity.d.ts.map +1 -1
- package/dist/entities/oauth-client.entity.js +2 -2
- package/dist/entities/oauth-client.entity.js.map +1 -1
- package/dist/entities/scheduler-job.entity.d.ts +134 -0
- package/dist/entities/scheduler-job.entity.d.ts.map +1 -0
- package/dist/entities/scheduler-job.entity.js +48 -0
- package/dist/entities/scheduler-job.entity.js.map +1 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +2 -2
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entrypoints/app.d.ts +1 -1
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts +280 -170
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
- package/dist/entrypoints/database/postgres/compiled-functions.js +3435 -2167
- package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
- package/dist/entrypoints/database/postgres/postgres.d.ts +7 -2
- package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -1
- package/dist/entrypoints/database/postgres/postgres.js +4 -5
- package/dist/entrypoints/database/postgres/postgres.js.map +1 -1
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +280 -170
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
- package/dist/entrypoints/database/sqlite/compiled-functions.js +3435 -2167
- package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.d.ts +6 -2
- package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.js +3 -4
- package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -1
- package/dist/entrypoints/frontend/index.d.ts +0 -2
- package/dist/entrypoints/frontend/index.d.ts.map +1 -1
- package/dist/entrypoints/frontend/index.js +0 -1
- package/dist/entrypoints/frontend/index.js.map +1 -1
- package/dist/entrypoints/scheduler/cron.d.ts +3 -0
- package/dist/entrypoints/scheduler/cron.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/cron.js +34 -0
- package/dist/entrypoints/scheduler/cron.js.map +1 -0
- package/dist/entrypoints/scheduler/croner.d.ts +1 -1
- package/dist/entrypoints/scheduler/croner.d.ts.map +1 -1
- package/dist/entrypoints/scheduler/croner.js +27 -7
- package/dist/entrypoints/scheduler/croner.js.map +1 -1
- package/dist/entrypoints/scheduler/database.d.ts +38 -0
- package/dist/entrypoints/scheduler/database.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/database.js +444 -0
- package/dist/entrypoints/scheduler/database.js.map +1 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts +134 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/distributed-runner.js +327 -0
- package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -0
- package/dist/lib/config/client.d.ts.map +1 -1
- package/dist/lib/config/client.js +5 -1
- package/dist/lib/config/client.js.map +1 -1
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.d.ts.map +1 -1
- package/dist/lib/config/index.js +1 -1
- package/dist/lib/config/index.js.map +1 -1
- package/dist/lib/config/resolved.d.ts +1 -1
- package/dist/lib/config/resolved.d.ts.map +1 -1
- package/dist/lib/config/resolved.js +1 -1
- package/dist/lib/config/resolved.js.map +1 -1
- package/dist/lib/config/scheduler.d.ts +41 -2
- package/dist/lib/config/scheduler.d.ts.map +1 -1
- package/dist/lib/config/scheduler.js +9 -3
- package/dist/lib/config/scheduler.js.map +1 -1
- package/dist/lib/config/user.d.ts.map +1 -1
- package/dist/lib/config/user.js +5 -1
- package/dist/lib/config/user.js.map +1 -1
- package/dist/lib/database/entities.d.ts.map +1 -1
- package/dist/lib/database/entities.js +4 -0
- package/dist/lib/database/entities.js.map +1 -1
- package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -1
- package/dist/migrations/postgres/Migration20260509171036_initial.js +14 -14
- package/dist/migrations/postgres/Migration20260509171036_initial.js.map +1 -1
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js +15 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
- package/dist/migrations/postgres/index.d.ts.map +1 -1
- package/dist/migrations/postgres/index.js +5 -1
- package/dist/migrations/postgres/index.js.map +1 -1
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js +13 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
- package/dist/migrations/sqlite/index.d.ts.map +1 -1
- package/dist/migrations/sqlite/index.js +5 -1
- package/dist/migrations/sqlite/index.js.map +1 -1
- package/dist/repositories/background-job.repository.d.ts +5 -0
- package/dist/repositories/background-job.repository.d.ts.map +1 -0
- package/dist/repositories/background-job.repository.js +4 -0
- package/dist/repositories/background-job.repository.js.map +1 -0
- package/dist/repositories/scheduler-job.repository.d.ts +5 -0
- package/dist/repositories/scheduler-job.repository.d.ts.map +1 -0
- package/dist/repositories/scheduler-job.repository.js +4 -0
- package/dist/repositories/scheduler-job.repository.js.map +1 -0
- package/dist/schemas/field.d.ts +2 -1
- package/dist/schemas/field.d.ts.map +1 -1
- package/dist/schemas/field.js +6 -1
- package/dist/schemas/field.js.map +1 -1
- package/dist/schemas/oauth.js +1 -1
- package/dist/schemas/oauth.js.map +1 -1
- package/dist/schemas/response.d.ts +12 -12
- package/dist/schemas/response.js +2 -2
- package/dist/schemas/response.js.map +1 -1
- package/dist/services/container.d.ts +2 -2
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +7 -1
- package/dist/services/container.js.map +1 -1
- package/dist/services/mikro.service.d.ts +4 -0
- package/dist/services/mikro.service.d.ts.map +1 -1
- package/dist/services/mikro.service.js +6 -0
- package/dist/services/mikro.service.js.map +1 -1
- package/dist/services/scheduler.service.d.ts +6 -1
- package/dist/services/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduler.service.js +44 -11
- package/dist/services/scheduler.service.js.map +1 -1
- package/package.json +8 -18
- package/readme.md +0 -1
- package/dist/entrypoints/database/d1/cli.d.ts +0 -4
- package/dist/entrypoints/database/d1/cli.d.ts.map +0 -1
- package/dist/entrypoints/database/d1/cli.js +0 -45
- package/dist/entrypoints/database/d1/cli.js.map +0 -1
- package/dist/entrypoints/database/d1/compiled-functions.d.ts +0 -691
- package/dist/entrypoints/database/d1/compiled-functions.d.ts.map +0 -1
- package/dist/entrypoints/database/d1/compiled-functions.js +0 -8616
- package/dist/entrypoints/database/d1/compiled-functions.js.map +0 -1
- package/dist/entrypoints/database/d1/d1.d.ts +0 -5
- package/dist/entrypoints/database/d1/d1.d.ts.map +0 -1
- package/dist/entrypoints/database/d1/d1.js +0 -35
- package/dist/entrypoints/database/d1/d1.js.map +0 -1
- package/dist/entrypoints/frontend/cloudflare.d.ts +0 -2
- package/dist/entrypoints/frontend/cloudflare.d.ts.map +0 -1
- package/dist/entrypoints/frontend/cloudflare.js +0 -2
- package/dist/entrypoints/frontend/cloudflare.js.map +0 -1
- package/dist/lib/database/compiled-functions.d.ts +0 -16
- package/dist/lib/database/compiled-functions.d.ts.map +0 -1
- package/dist/lib/database/compiled-functions.js +0 -66
- package/dist/lib/database/compiled-functions.js.map +0 -1
- package/dist/lib/frontend/cloudflare.d.ts +0 -12
- package/dist/lib/frontend/cloudflare.d.ts.map +0 -1
- package/dist/lib/frontend/cloudflare.js +0 -34
- package/dist/lib/frontend/cloudflare.js.map +0 -1
- package/dist/migrations/d1/Migration20260509172833_initial.d.ts +0 -5
- package/dist/migrations/d1/Migration20260509172833_initial.d.ts.map +0 -1
- package/dist/migrations/d1/Migration20260509172833_initial.js +0 -62
- package/dist/migrations/d1/Migration20260509172833_initial.js.map +0 -1
- package/dist/migrations/d1/index.d.ts +0 -3
- package/dist/migrations/d1/index.d.ts.map +0 -1
- package/dist/migrations/d1/index.js +0 -3
- package/dist/migrations/d1/index.js.map +0 -1
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { type Options } from '@mikro-orm/core';
|
|
1
2
|
import type { DatabaseConfig } from '../../../lib/config/index.ts';
|
|
2
|
-
|
|
3
|
+
type SqliteDatabaseConfig = {
|
|
3
4
|
path: string;
|
|
4
5
|
test: boolean;
|
|
5
|
-
|
|
6
|
+
debug?: Options['debug'];
|
|
7
|
+
};
|
|
8
|
+
export declare function sqlite(database: SqliteDatabaseConfig): DatabaseConfig;
|
|
9
|
+
export {};
|
|
6
10
|
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAKnE,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,QAAQ,EAAE,oBAAoB,GAAG,cAAc,CA0BrE"}
|
|
@@ -2,8 +2,7 @@ import { defineConfig } from '@mikro-orm/core';
|
|
|
2
2
|
import { Migrator } from '@mikro-orm/migrations';
|
|
3
3
|
import { SeedManager } from '@mikro-orm/seeder';
|
|
4
4
|
import { NodeSqliteDialect, SqliteDriver } from '@mikro-orm/sql';
|
|
5
|
-
import {
|
|
6
|
-
import { getDatabaseEntities, getDatabaseEntitiesWithMetadata, } from "../../../lib/database/entities.js";
|
|
5
|
+
import { getDatabaseEntities } from "../../../lib/database/entities.js";
|
|
7
6
|
import { SQLITE_MIGRATIONS } from "../../../migrations/sqlite/index.js";
|
|
8
7
|
import compiledFunctions from './compiled-functions.js';
|
|
9
8
|
export function sqlite(database) {
|
|
@@ -14,13 +13,13 @@ export function sqlite(database) {
|
|
|
14
13
|
driver: SqliteDriver,
|
|
15
14
|
dbName: dbName,
|
|
16
15
|
driverOptions: new NodeSqliteDialect(dbName),
|
|
17
|
-
compiledFunctions:
|
|
16
|
+
compiledFunctions: compiledFunctions,
|
|
18
17
|
entities: [...getDatabaseEntities()],
|
|
19
18
|
extensions: [SeedManager, Migrator],
|
|
20
19
|
migrations: {
|
|
21
20
|
migrationsList: SQLITE_MIGRATIONS,
|
|
22
21
|
},
|
|
23
|
-
debug: false,
|
|
22
|
+
debug: database.debug ?? false,
|
|
24
23
|
});
|
|
25
24
|
},
|
|
26
25
|
initialize: async (orm) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/entrypoints/database/sqlite/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA+B,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AAQxD,MAAM,UAAU,MAAM,CAAC,QAA8B;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE1D,OAAO;QACL,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAC7B,OAAO,YAAY,CAAC;gBAClB,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,MAAM;gBACd,aAAa,EAAE,IAAI,iBAAiB,CAAC,MAAM,CAAC;gBAC5C,iBAAiB,EAAE,iBAAiB;gBACpC,QAAQ,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC;gBACpC,UAAU,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACnC,UAAU,EAAE;oBACV,cAAc,EAAE,iBAAiB;iBAClC;gBACD,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,UAAU,EAAE,KAAK,EAAE,GAAa,EAAE,EAAE;YAClC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export type { FrontendConfig, FrontendHandler, FrontendRuntimeContext, } from '../../lib/config/frontend.ts';
|
|
2
|
-
export type { CloudflareAssetsBinding, CreateCloudflareAssetsHandlerOptions, } from '../../lib/frontend/cloudflare.ts';
|
|
3
|
-
export { createCloudflareAssetsHandler } from '../../lib/frontend/cloudflare.ts';
|
|
4
2
|
export type { BuiltInHtmlVariableKey, BuiltInHtmlVariables, HtmlVariables, ResolveHtmlVariablesOptions, } from '../../lib/interpolate-html.ts';
|
|
5
3
|
export { DEFAULT_HTML_VARIABLES, interpolateHtml, interpolateHtmlResponse, resolveHtmlVariables, } from '../../lib/interpolate-html.ts';
|
|
6
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/frontend/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/frontend/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,2BAA2B,GAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entrypoints/frontend/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/entrypoints/frontend/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/cron.ts"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAgBjE;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAcrE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Cron } from 'croner';
|
|
2
|
+
export function validateCronExpression(expression) {
|
|
3
|
+
let job;
|
|
4
|
+
try {
|
|
5
|
+
job = new Cron(expression, { paused: true });
|
|
6
|
+
const nextRunAt = job.nextRun(new Date()) ?? null;
|
|
7
|
+
if (!nextRunAt) {
|
|
8
|
+
throw new Error('Cron expression has no future run');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
13
|
+
throw new Error(`Invalid cron expression "${expression}": ${message}`);
|
|
14
|
+
}
|
|
15
|
+
finally {
|
|
16
|
+
job?.stop();
|
|
17
|
+
}
|
|
18
|
+
return expression;
|
|
19
|
+
}
|
|
20
|
+
export function getNextCronRunAt(expression, from) {
|
|
21
|
+
let job;
|
|
22
|
+
try {
|
|
23
|
+
job = new Cron(expression, { paused: true });
|
|
24
|
+
const nextRunAt = job.nextRun(from) ?? null;
|
|
25
|
+
if (!nextRunAt) {
|
|
26
|
+
throw new Error(`Cron expression has no future run: ${expression}`);
|
|
27
|
+
}
|
|
28
|
+
return nextRunAt;
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
job?.stop();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=cron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/cron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,IAAI,GAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,MAAM,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;YAAS,CAAC;QACT,GAAG,EAAE,IAAI,EAAE,CAAC;IACd,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,IAAU;IAC7D,IAAI,GAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,GAAG,EAAE,IAAI,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SchedulerConfig } from '../../lib/config/index.ts';
|
|
2
2
|
export interface CronerSchedulerOptions {
|
|
3
|
-
|
|
3
|
+
cleanupCron?: string | undefined;
|
|
4
4
|
}
|
|
5
5
|
export declare function croner(options?: CronerSchedulerOptions): SchedulerConfig;
|
|
6
6
|
//# sourceMappingURL=croner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"croner.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"croner.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,2BAA2B,CAAC;AAKnC,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CAgD5E"}
|
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import { Cron } from 'croner';
|
|
2
|
+
import { validateCronExpression } from "./cron.js";
|
|
2
3
|
const DEFAULT_CRON = '0 2 * * *';
|
|
3
4
|
export function croner(options = {}) {
|
|
4
|
-
const
|
|
5
|
+
const cleanupCron = validateCronExpression(options.cleanupCron ?? DEFAULT_CRON);
|
|
5
6
|
return {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
cleanupCron,
|
|
8
|
+
start({ scheduledJobs, logger }) {
|
|
9
|
+
const cronJobs = scheduledJobs.map((job) => new Cron(job.schedule.expression, async () => {
|
|
10
|
+
try {
|
|
11
|
+
await job.handler({ logger });
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
logger?.error({ err, jobId: job.id }, 'Scheduled job failed');
|
|
15
|
+
}
|
|
16
|
+
}));
|
|
10
17
|
const handle = {
|
|
11
18
|
stop() {
|
|
12
|
-
|
|
19
|
+
for (const cronJob of cronJobs) {
|
|
20
|
+
cronJob.stop();
|
|
21
|
+
}
|
|
13
22
|
},
|
|
14
23
|
getNextRunAt() {
|
|
15
|
-
|
|
24
|
+
const nextRuns = cronJobs
|
|
25
|
+
.map((cronJob) => cronJob.nextRun() ?? null)
|
|
26
|
+
.filter((nextRun) => nextRun !== null);
|
|
27
|
+
return nextRuns.reduce((earliest, nextRun) => {
|
|
28
|
+
if (!earliest || nextRun.getTime() < earliest.getTime()) {
|
|
29
|
+
return nextRun;
|
|
30
|
+
}
|
|
31
|
+
return earliest;
|
|
32
|
+
}, null);
|
|
33
|
+
},
|
|
34
|
+
async enqueue() {
|
|
35
|
+
throw new Error('Background jobs require a durable scheduler backend');
|
|
16
36
|
},
|
|
17
37
|
};
|
|
18
38
|
return handle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"croner.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"croner.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/croner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,YAAY,GAAG,WAAW,CAAC;AAMjC,MAAM,UAAU,MAAM,CAAC,UAAkC,EAAE;IACzD,MAAM,WAAW,GAAG,sBAAsB,CACxC,OAAO,CAAC,WAAW,IAAI,YAAY,CACpC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,KAAK,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE;YAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAChC,CAAC,GAAG,EAAE,EAAE,CACN,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;gBAC3C,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC,CAAC,CACL,CAAC;YAEF,MAAM,MAAM,GAAoB;gBAC9B,IAAI;oBACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC;gBACD,YAAY;oBACV,MAAM,QAAQ,GAAG,QAAQ;yBACtB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;yBAC3C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;oBAEzC,OAAO,QAAQ,CAAC,MAAM,CAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;wBACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;4BACxD,OAAO,OAAO,CAAC;wBACjB,CAAC;wBAED,OAAO,QAAQ,CAAC;oBAClB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACX,CAAC;gBACD,KAAK,CAAC,OAAO;oBACX,MAAM,IAAI,KAAK,CACb,qDAAqD,CACtD,CAAC;gBACJ,CAAC;aACF,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SchedulerConfig, SchedulerConfigResolver } from '../../lib/config/index.ts';
|
|
2
|
+
import type { MikroService } from '../../services/mikro.service.ts';
|
|
3
|
+
import { type AcquiredBackgroundJob, type AcquiredSchedulerJob, type BackgroundJobCompletionInput, type BackgroundJobEnqueueInput, type BackgroundJobFailureCompletionInput, type DistributedBackgroundJobStore, type DistributedSchedulerStore, type PersistedSchedulerJobDefinition, type SchedulerCompletionInput, type SchedulerFailureCompletionInput } from './distributed-runner.ts';
|
|
4
|
+
export interface DatabaseSchedulerOptions {
|
|
5
|
+
cleanupCron?: string | undefined;
|
|
6
|
+
pollIntervalMs?: number | undefined;
|
|
7
|
+
lockTtlMs?: number | undefined;
|
|
8
|
+
backgroundRetryDelayMs?: number | undefined;
|
|
9
|
+
backgroundMaxAttempts?: number | undefined;
|
|
10
|
+
backgroundRetentionMs?: number | undefined;
|
|
11
|
+
instanceId?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
export interface BoundDatabaseSchedulerOptions extends DatabaseSchedulerOptions {
|
|
14
|
+
mikro: MikroService;
|
|
15
|
+
}
|
|
16
|
+
export declare class DatabaseSchedulerStore implements DistributedSchedulerStore {
|
|
17
|
+
private readonly mikro;
|
|
18
|
+
constructor(mikro: MikroService);
|
|
19
|
+
reconcileJobs(jobs: readonly PersistedSchedulerJobDefinition[], now: Date): Promise<void>;
|
|
20
|
+
acquireDueJob(now: Date, lockedUntil: Date, instanceId: string): Promise<AcquiredSchedulerJob | null>;
|
|
21
|
+
renewLease(jobId: string, instanceId: string, lockedUntil: Date, now: Date): Promise<boolean>;
|
|
22
|
+
completeJobSuccess(input: SchedulerCompletionInput): Promise<boolean>;
|
|
23
|
+
completeJobFailure(input: SchedulerFailureCompletionInput): Promise<boolean>;
|
|
24
|
+
findNextRunAt(): Promise<Date | null>;
|
|
25
|
+
}
|
|
26
|
+
export declare class DatabaseBackgroundJobStore implements DistributedBackgroundJobStore {
|
|
27
|
+
private readonly mikro;
|
|
28
|
+
constructor(mikro: MikroService);
|
|
29
|
+
enqueue(input: BackgroundJobEnqueueInput): Promise<string>;
|
|
30
|
+
acquireDueJob(now: Date, lockedUntil: Date, instanceId: string): Promise<AcquiredBackgroundJob | null>;
|
|
31
|
+
renewLease(id: string, instanceId: string, lockedUntil: Date, now: Date): Promise<boolean>;
|
|
32
|
+
completeJobSuccess(input: BackgroundJobCompletionInput): Promise<boolean>;
|
|
33
|
+
completeJobFailure(input: BackgroundJobFailureCompletionInput): Promise<boolean>;
|
|
34
|
+
cleanupCompletedJobs(before: Date): Promise<number>;
|
|
35
|
+
}
|
|
36
|
+
export declare function database(options: BoundDatabaseSchedulerOptions): SchedulerConfig;
|
|
37
|
+
export declare function database(options?: DatabaseSchedulerOptions): SchedulerConfigResolver;
|
|
38
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/database.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,eAAe,EACf,uBAAuB,EAExB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EAExC,KAAK,6BAA6B,EAElC,KAAK,yBAAyB,EAE9B,KAAK,+BAA+B,EACpC,KAAK,wBAAwB,EAC7B,KAAK,+BAA+B,EACrC,MAAM,yBAAyB,CAAC;AAWjC,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,6BACf,SAAQ,wBAAwB;IAChC,KAAK,EAAE,YAAY,CAAC;CACrB;AAkKD,qBAAa,sBAAuB,YAAW,yBAAyB;IACtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY;IAIzB,aAAa,CACjB,IAAI,EAAE,SAAS,+BAA+B,EAAE,EAChD,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,IAAI,CAAC;IAkCV,aAAa,CACjB,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAmDjC,UAAU,CACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,EACjB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,OAAO,CAAC;IAeb,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBrE,kBAAkB,CACtB,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,OAAO,CAAC;IAwBb,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;CAU5C;AAED,qBAAa,0BACX,YAAW,6BAA6B;IAExC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,KAAK,EAAE,YAAY;IAIzB,OAAO,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB1D,aAAa,CACjB,GAAG,EAAE,IAAI,EACT,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAqGlC,UAAU,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,IAAI,EACjB,GAAG,EAAE,IAAI,GACR,OAAO,CAAC,OAAO,CAAC;IAgBb,kBAAkB,CACtB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,OAAO,CAAC;IAqBb,kBAAkB,CACtB,KAAK,EAAE,mCAAmC,GACzC,OAAO,CAAC,OAAO,CAAC;IAwBb,oBAAoB,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAS1D;AA2DD,wBAAgB,QAAQ,CACtB,OAAO,EAAE,6BAA6B,GACrC,eAAe,CAAC;AACnB,wBAAgB,QAAQ,CACtB,OAAO,CAAC,EAAE,wBAAwB,GACjC,uBAAuB,CAAC"}
|