@tinyrack/tinyauth-server 0.0.14 → 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/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/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 +3442 -2124
- 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 +2 -2
- 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 +3442 -2124
- 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 +1 -1
- package/dist/entrypoints/database/sqlite/sqlite.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/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/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/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/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 +5 -1
|
@@ -1,13 +1,52 @@
|
|
|
1
1
|
import z from 'zod';
|
|
2
|
+
import type { MikroService } from '../../services/mikro.service.ts';
|
|
3
|
+
import type { Logger } from '../logger.ts';
|
|
4
|
+
export type JobPayload = null | boolean | number | string | readonly JobPayload[] | {
|
|
5
|
+
readonly [key: string]: JobPayload;
|
|
6
|
+
};
|
|
7
|
+
export interface JobRunContext {
|
|
8
|
+
logger?: Logger | undefined;
|
|
9
|
+
signal?: AbortSignal | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface CronJobSchedule {
|
|
12
|
+
type: 'cron';
|
|
13
|
+
expression: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ScheduledJobConfig {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
schedule: CronJobSchedule;
|
|
19
|
+
handler: (context: JobRunContext) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export interface BackgroundJobConfig<TPayload extends JobPayload = JobPayload> {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
handler: (payload: TPayload, context: JobRunContext) => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export interface EnqueueBackgroundJobOptions<TPayload extends JobPayload = JobPayload> {
|
|
27
|
+
jobId: string;
|
|
28
|
+
payload: TPayload;
|
|
29
|
+
runAt?: Date | undefined;
|
|
30
|
+
}
|
|
2
31
|
export interface SchedulerStartOptions {
|
|
3
|
-
|
|
32
|
+
scheduledJobs: readonly ScheduledJobConfig[];
|
|
33
|
+
backgroundJobs: readonly BackgroundJobConfig[];
|
|
34
|
+
logger?: Logger;
|
|
4
35
|
}
|
|
5
36
|
export interface SchedulerHandle {
|
|
6
37
|
stop: () => void | Promise<void>;
|
|
7
38
|
getNextRunAt?: () => Date | null;
|
|
39
|
+
enqueue?: <TPayload extends JobPayload>(options: EnqueueBackgroundJobOptions<TPayload>) => Promise<string>;
|
|
8
40
|
}
|
|
9
41
|
export interface SchedulerConfig {
|
|
42
|
+
cleanupCron?: string | undefined;
|
|
10
43
|
start: (options: SchedulerStartOptions) => SchedulerHandle | Promise<SchedulerHandle>;
|
|
11
44
|
}
|
|
12
|
-
export
|
|
45
|
+
export interface SchedulerRuntimeContext {
|
|
46
|
+
mikro: MikroService;
|
|
47
|
+
}
|
|
48
|
+
export type SchedulerConfigResolver = (context: SchedulerRuntimeContext) => SchedulerConfig;
|
|
49
|
+
export type SchedulerRuntimeConfig = SchedulerConfig | SchedulerConfigResolver;
|
|
50
|
+
export declare function isSchedulerConfigResolver(value: SchedulerRuntimeConfig): value is SchedulerConfigResolver;
|
|
51
|
+
export declare const SchedulerConfigSchema: z.ZodOptional<z.ZodCustom<SchedulerRuntimeConfig, SchedulerRuntimeConfig>>;
|
|
13
52
|
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/lib/config/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/lib/config/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,UAAU,GAClB,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,UAAU,EAAE,GACrB;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,2BAA2B,CAC1C,QAAQ,SAAS,UAAU,GAAG,UAAU;IAExC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC7C,cAAc,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,QAAQ,SAAS,UAAU,EACpC,OAAO,EAAE,2BAA2B,CAAC,QAAQ,CAAC,KAC3C,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,CACL,OAAO,EAAE,qBAAqB,KAC3B,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACpC,OAAO,EAAE,uBAAuB,KAC7B,eAAe,CAAC;AAErB,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAU/E,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,sBAAsB,GAC5B,KAAK,IAAI,uBAAuB,CAElC;AAQD,eAAO,MAAM,qBAAqB,4EAKD,CAAC"}
|
|
@@ -5,10 +5,16 @@ function isSchedulerConfig(value) {
|
|
|
5
5
|
}
|
|
6
6
|
return 'start' in value && typeof value.start === 'function';
|
|
7
7
|
}
|
|
8
|
+
export function isSchedulerConfigResolver(value) {
|
|
9
|
+
return typeof value === 'function';
|
|
10
|
+
}
|
|
11
|
+
function isSchedulerRuntimeConfig(value) {
|
|
12
|
+
return isSchedulerConfig(value) || typeof value === 'function';
|
|
13
|
+
}
|
|
8
14
|
export const SchedulerConfigSchema = z
|
|
9
|
-
.custom(
|
|
10
|
-
message: 'Invalid SchedulerConfig: must have a start function',
|
|
15
|
+
.custom(isSchedulerRuntimeConfig, {
|
|
16
|
+
message: 'Invalid SchedulerConfig: must have a start function or resolver',
|
|
11
17
|
})
|
|
12
18
|
.optional()
|
|
13
|
-
.describe('
|
|
19
|
+
.describe('Scheduler adapter.');
|
|
14
20
|
//# sourceMappingURL=scheduler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/lib/config/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/lib/config/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AA0EpB,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAA6B;IAE7B,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc;IAEd,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAyB,wBAAwB,EAAE;IACxD,OAAO,EAAE,iEAAiE;CAC3E,CAAC;KACD,QAAQ,EAAE;KACV,QAAQ,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/lib/database/entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/lib/database/entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqBlD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AA0BD,wBAAgB,mBAAmB,IAAI,SAAS,UAAU,EAAE,CAE3D;AAED,wBAAgB,+BAA+B,IAAI,SAAS,qBAAqB,EAAE,CAElF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { BackgroundJobEntitySchema } from "../../entities/background-job.entity.js";
|
|
1
2
|
import { BootstrapStateEntitySchema } from "../../entities/bootstrap-state.entity.js";
|
|
2
3
|
import { EmailVerificationEntitySchema } from "../../entities/email-verification.entity.js";
|
|
3
4
|
import { JwtKeyEntitySchema } from "../../entities/jwt-key.entity.js";
|
|
@@ -6,6 +7,7 @@ import { OAuthCodeEntitySchema } from "../../entities/oauth-code.entity.js";
|
|
|
6
7
|
import { PasswordResetEntitySchema } from "../../entities/password-reset.entity.js";
|
|
7
8
|
import { PendingOAuthRegistrationEntitySchema } from "../../entities/pending-oauth-registration.entity.js";
|
|
8
9
|
import { RevokedTokenEntitySchema } from "../../entities/revoked-token.entity.js";
|
|
10
|
+
import { SchedulerJobEntitySchema } from "../../entities/scheduler-job.entity.js";
|
|
9
11
|
import { TermsEntitySchema } from "../../entities/terms.entity.js";
|
|
10
12
|
import { TermsContentEntitySchema } from "../../entities/terms-content.entity.js";
|
|
11
13
|
import { UserEntitySchema } from "../../entities/user.entity.js";
|
|
@@ -25,6 +27,8 @@ function createDatabaseEntities() {
|
|
|
25
27
|
PasswordResetEntitySchema,
|
|
26
28
|
PendingOAuthRegistrationEntitySchema,
|
|
27
29
|
RevokedTokenEntitySchema,
|
|
30
|
+
BackgroundJobEntitySchema,
|
|
31
|
+
SchedulerJobEntitySchema,
|
|
28
32
|
TermsEntitySchema,
|
|
29
33
|
TermsContentEntitySchema,
|
|
30
34
|
UserConsentEntitySchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/lib/database/entities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AASpG,SAAS,sBAAsB;IAC7B,OAAO;QACL,gBAAgB;QAChB,uBAAuB;QACvB,qBAAqB;QACrB,kBAAkB;QAClB,6BAA6B;QAC7B,yBAAyB;QACzB,oCAAoC;QACpC,wBAAwB;QACxB,iBAAiB;QACjB,wBAAwB;QACxB,uBAAuB;QACvB,qBAAqB;QACrB,uBAAuB;QACvB,4BAA4B;QAC5B,gCAAgC;QAChC,oBAAoB;QACpB,0BAA0B;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/lib/database/entities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,oCAAoC,EAAE,MAAM,qDAAqD,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,kDAAkD,CAAC;AASpG,SAAS,sBAAsB;IAC7B,OAAO;QACL,gBAAgB;QAChB,uBAAuB;QACvB,qBAAqB;QACrB,kBAAkB;QAClB,6BAA6B;QAC7B,yBAAyB;QACzB,oCAAoC;QACpC,wBAAwB;QACxB,yBAAyB;QACzB,wBAAwB;QACxB,iBAAiB;QACjB,wBAAwB;QACxB,uBAAuB;QACvB,qBAAqB;QACrB,uBAAuB;QACvB,4BAA4B;QAC5B,gCAAgC;QAChC,oBAAoB;QACpB,0BAA0B;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20260512120000_add_scheduler_jobs.d.ts","sourceRoot":"","sources":["../../../src/migrations/postgres/Migration20260512120000_add_scheduler_jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,0CAA2C,SAAQ,SAAS;IAC9D,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BpC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
export class Migration20260512120000_add_scheduler_jobs extends Migration {
|
|
3
|
+
up() {
|
|
4
|
+
this.addSql(`create table "scheduled_jobs" ("id" varchar(255) not null, "created_at" timestamptz not null, "updated_at" timestamptz not null, "name" varchar(255) not null, "enabled" boolean not null default true, "cron" varchar(255) not null, "next_run_at" timestamptz null, "last_run_at" timestamptz null, "last_success_at" timestamptz null, "last_error_at" timestamptz null, "last_error" text null, "locked_by" varchar(255) null, "locked_until" timestamptz null, "run_count" int not null default 0 check ("run_count" >= 0), "failure_count" int not null default 0 check ("failure_count" >= 0), primary key ("id"));`);
|
|
5
|
+
this.addSql(`comment on table "scheduled_jobs" is 'Persistent scheduler jobs and leases';`);
|
|
6
|
+
this.addSql(`create index "scheduled_jobs_enabled_next_run_at_idx" on "scheduled_jobs" ("enabled", "next_run_at");`);
|
|
7
|
+
this.addSql(`create index "scheduled_jobs_locked_until_idx" on "scheduled_jobs" ("locked_until");`);
|
|
8
|
+
this.addSql(`create table "background_jobs" ("id" varchar(255) not null, "created_at" timestamptz not null, "updated_at" timestamptz not null, "job_id" varchar(255) not null, "payload" text not null, "status" varchar(255) not null default 'pending' check ("status" in ('pending', 'running', 'succeeded', 'failed')), "available_at" timestamptz not null, "locked_by" varchar(255) null, "locked_until" timestamptz null, "attempt_count" int not null default 0 check ("attempt_count" >= 0), "max_attempts" int not null default 3 check ("max_attempts" > 0), "last_error" text null, "completed_at" timestamptz null, primary key ("id"));`);
|
|
9
|
+
this.addSql(`comment on table "background_jobs" is 'Durable background job queue';`);
|
|
10
|
+
this.addSql(`create index "background_jobs_status_available_at_idx" on "background_jobs" ("status", "available_at");`);
|
|
11
|
+
this.addSql(`create index "background_jobs_locked_until_idx" on "background_jobs" ("locked_until");`);
|
|
12
|
+
this.addSql(`create index "background_jobs_job_id_idx" on "background_jobs" ("job_id");`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=Migration20260512120000_add_scheduler_jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20260512120000_add_scheduler_jobs.js","sourceRoot":"","sources":["../../../src/migrations/postgres/Migration20260512120000_add_scheduler_jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAO,0CAA2C,SAAQ,SAAS;IAC9D,EAAE;QACT,IAAI,CAAC,MAAM,CACT,4lBAA4lB,CAC7lB,CAAC;QACF,IAAI,CAAC,MAAM,CACT,8EAA8E,CAC/E,CAAC;QACF,IAAI,CAAC,MAAM,CACT,uGAAuG,CACxG,CAAC;QACF,IAAI,CAAC,MAAM,CACT,sFAAsF,CACvF,CAAC;QACF,IAAI,CAAC,MAAM,CACT,0mBAA0mB,CAC3mB,CAAC;QACF,IAAI,CAAC,MAAM,CACT,uEAAuE,CACxE,CAAC;QACF,IAAI,CAAC,MAAM,CACT,yGAAyG,CAC1G,CAAC;QACF,IAAI,CAAC,MAAM,CACT,wFAAwF,CACzF,CAAC;QACF,IAAI,CAAC,MAAM,CACT,4EAA4E,CAC7E,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,eAAO,MAAM,mBAAmB,4CAG/B,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { Migration20260509171036_initial } from './Migration20260509171036_initial.js';
|
|
2
|
-
|
|
2
|
+
import { Migration20260512120000_add_scheduler_jobs } from './Migration20260512120000_add_scheduler_jobs.js';
|
|
3
|
+
export const POSTGRES_MIGRATIONS = [
|
|
4
|
+
Migration20260509171036_initial,
|
|
5
|
+
Migration20260512120000_add_scheduler_jobs,
|
|
6
|
+
];
|
|
3
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,0CAA0C,EAAE,MAAM,iDAAiD,CAAC;AAE7G,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,+BAA+B;IAC/B,0CAA0C;CAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20260512120000_add_scheduler_jobs.d.ts","sourceRoot":"","sources":["../../../src/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,0CAA2C,SAAQ,SAAS;IAC9D,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBpC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Migration } from '@mikro-orm/migrations';
|
|
2
|
+
export class Migration20260512120000_add_scheduler_jobs extends Migration {
|
|
3
|
+
up() {
|
|
4
|
+
this.addSql(`create table \`scheduled_jobs\` (\`id\` text not null primary key, \`created_at\` datetime not null, \`updated_at\` datetime not null, \`name\` text not null, \`enabled\` integer not null default true, \`cron\` text not null, \`next_run_at\` datetime null, \`last_run_at\` datetime null, \`last_success_at\` datetime null, \`last_error_at\` datetime null, \`last_error\` text null, \`locked_by\` text null, \`locked_until\` datetime null, \`run_count\` integer not null default 0 check (\`run_count\` >= 0), \`failure_count\` integer not null default 0 check (\`failure_count\` >= 0)) /* Persistent scheduler jobs and leases */;`);
|
|
5
|
+
this.addSql(`create index \`scheduled_jobs_enabled_next_run_at_idx\` on \`scheduled_jobs\` (\`enabled\`, \`next_run_at\`);`);
|
|
6
|
+
this.addSql(`create index \`scheduled_jobs_locked_until_idx\` on \`scheduled_jobs\` (\`locked_until\`);`);
|
|
7
|
+
this.addSql(`create table \`background_jobs\` (\`id\` text not null primary key, \`created_at\` datetime not null, \`updated_at\` datetime not null, \`job_id\` text not null, \`payload\` text not null, \`status\` text not null default 'pending' check (\`status\` in ('pending', 'running', 'succeeded', 'failed')), \`available_at\` datetime not null, \`locked_by\` text null, \`locked_until\` datetime null, \`attempt_count\` integer not null default 0 check (\`attempt_count\` >= 0), \`max_attempts\` integer not null default 3 check (\`max_attempts\` > 0), \`last_error\` text null, \`completed_at\` datetime null) /* Durable background job queue */;`);
|
|
8
|
+
this.addSql(`create index \`background_jobs_status_available_at_idx\` on \`background_jobs\` (\`status\`, \`available_at\`);`);
|
|
9
|
+
this.addSql(`create index \`background_jobs_locked_until_idx\` on \`background_jobs\` (\`locked_until\`);`);
|
|
10
|
+
this.addSql(`create index \`background_jobs_job_id_idx\` on \`background_jobs\` (\`job_id\`);`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Migration20260512120000_add_scheduler_jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Migration20260512120000_add_scheduler_jobs.js","sourceRoot":"","sources":["../../../src/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,OAAO,0CAA2C,SAAQ,SAAS;IAC9D,EAAE;QACT,IAAI,CAAC,MAAM,CACT,snBAAsnB,CACvnB,CAAC;QACF,IAAI,CAAC,MAAM,CACT,+GAA+G,CAChH,CAAC;QACF,IAAI,CAAC,MAAM,CACT,4FAA4F,CAC7F,CAAC;QACF,IAAI,CAAC,MAAM,CACT,goBAAgoB,CACjoB,CAAC;QACF,IAAI,CAAC,MAAM,CACT,iHAAiH,CAClH,CAAC;QACF,IAAI,CAAC,MAAM,CACT,8FAA8F,CAC/F,CAAC;QACF,IAAI,CAAC,MAAM,CACT,kFAAkF,CACnF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAGvF,eAAO,MAAM,iBAAiB,4CAG7B,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { Migration20260509171226_initial } from './Migration20260509171226_initial.js';
|
|
2
|
-
|
|
2
|
+
import { Migration20260512120000_add_scheduler_jobs } from './Migration20260512120000_add_scheduler_jobs.js';
|
|
3
|
+
export const SQLITE_MIGRATIONS = [
|
|
4
|
+
Migration20260509171226_initial,
|
|
5
|
+
Migration20260512120000_add_scheduler_jobs,
|
|
6
|
+
];
|
|
3
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AACvF,OAAO,EAAE,0CAA0C,EAAE,MAAM,iDAAiD,CAAC;AAE7G,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,+BAA+B;IAC/B,0CAA0C;CAC3C,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { EntityRepository } from '@mikro-orm/core';
|
|
2
|
+
import type { IBackgroundJobEntity } from '../entities/background-job.entity.ts';
|
|
3
|
+
export declare class BackgroundJobRepository extends EntityRepository<IBackgroundJobEntity> {
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=background-job.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-job.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/background-job.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,qBAAa,uBAAwB,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-job.repository.js","sourceRoot":"","sources":["../../src/repositories/background-job.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,OAAO,uBAAwB,SAAQ,gBAAsC;CAAG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { EntityRepository } from '@mikro-orm/core';
|
|
2
|
+
import type { ISchedulerJobEntity } from '../entities/scheduler-job.entity.ts';
|
|
3
|
+
export declare class SchedulerJobRepository extends EntityRepository<ISchedulerJobEntity> {
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=scheduler-job.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-job.repository.d.ts","sourceRoot":"","sources":["../../src/repositories/scheduler-job.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,qBAAa,sBAAuB,SAAQ,gBAAgB,CAAC,mBAAmB,CAAC;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler-job.repository.js","sourceRoot":"","sources":["../../src/repositories/scheduler-job.repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,OAAO,sBAAuB,SAAQ,gBAAqC;CAAG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type TinyAuthRuntimeConfig } from '../lib/config/index.ts';
|
|
2
2
|
import type { Logger } from '../lib/logger.ts';
|
|
3
3
|
import { type ConfigSeedMode } from '../seeders/config.seeder.ts';
|
|
4
4
|
import { CleanupService } from './cleanup.service.ts';
|
|
@@ -176,7 +176,7 @@ export declare function initializeServices(config: TinyAuthRuntimeConfig, logger
|
|
|
176
176
|
email_url?: string | undefined;
|
|
177
177
|
response_mode?: string | undefined;
|
|
178
178
|
}[];
|
|
179
|
-
scheduler?: import("../lib/config/scheduler.ts").
|
|
179
|
+
scheduler?: import("../lib/config/scheduler.ts").SchedulerRuntimeConfig | undefined;
|
|
180
180
|
frontend?: import("../lib/config/frontend.ts").FrontendConfig | undefined;
|
|
181
181
|
email?: import("../lib/config/email.ts").EmailConfig | undefined;
|
|
182
182
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,KAAK,cAAc,EAEpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgHxC;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isSchedulerConfigResolver, } from "../lib/config/index.js";
|
|
1
2
|
import { seedConfigIfNeeded, } from "../seeders/config.seeder.js";
|
|
2
3
|
import { CleanupService } from "./cleanup.service.js";
|
|
3
4
|
import { EmailService } from "./email.service.js";
|
|
@@ -46,7 +47,12 @@ export async function initializeServices(config, logger, options = {}) {
|
|
|
46
47
|
const cleanupService = new CleanupService(config, mikro, jwtService);
|
|
47
48
|
// 4. Scheduler
|
|
48
49
|
const schedulerLogger = logger.child({ service: 'scheduler' });
|
|
49
|
-
const
|
|
50
|
+
const schedulerConfig = config.scheduler
|
|
51
|
+
? isSchedulerConfigResolver(config.scheduler)
|
|
52
|
+
? config.scheduler({ mikro })
|
|
53
|
+
: config.scheduler
|
|
54
|
+
: undefined;
|
|
55
|
+
const scheduler = new SchedulerService(schedulerConfig, cleanupService, schedulerLogger);
|
|
50
56
|
const services = {
|
|
51
57
|
config,
|
|
52
58
|
securityService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/services/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MikroORM } from '@mikro-orm/core';
|
|
2
2
|
import type { TinyAuthRuntimeConfig } from '../lib/config/index.ts';
|
|
3
3
|
import type { Logger } from '../lib/logger.ts';
|
|
4
|
+
import type { BackgroundJobRepository } from '../repositories/background-job.repository.ts';
|
|
4
5
|
import type { EmailVerificationRepository } from '../repositories/email-verification.repository.ts';
|
|
5
6
|
import type { JwtKeyRepository } from '../repositories/jwt-key.repository.ts';
|
|
6
7
|
import type { OAuthClientRepository } from '../repositories/oauth-client.repository.ts';
|
|
@@ -8,6 +9,7 @@ import type { OAuthCodeRepository } from '../repositories/oauth-code.repository.
|
|
|
8
9
|
import type { PasswordResetRepository } from '../repositories/password-reset.repository.ts';
|
|
9
10
|
import type { PendingOAuthRegistrationRepository } from '../repositories/pending-oauth-registration.repository.ts';
|
|
10
11
|
import type { RevokedTokenRepository } from '../repositories/revoked-token.repository.ts';
|
|
12
|
+
import type { SchedulerJobRepository } from '../repositories/scheduler-job.repository.ts';
|
|
11
13
|
import type { TermsRepository } from '../repositories/terms.repository.ts';
|
|
12
14
|
import type { TermsContentRepository } from '../repositories/terms-content.repository.ts';
|
|
13
15
|
import type { UserRepository } from '../repositories/user.repository.ts';
|
|
@@ -29,6 +31,8 @@ export declare class MikroService {
|
|
|
29
31
|
readonly pendingOAuthRegistration: PendingOAuthRegistrationRepository;
|
|
30
32
|
readonly jwtKey: JwtKeyRepository;
|
|
31
33
|
readonly revokedToken: RevokedTokenRepository;
|
|
34
|
+
readonly backgroundJob: BackgroundJobRepository;
|
|
35
|
+
readonly schedulerJob: SchedulerJobRepository;
|
|
32
36
|
readonly userConsent: UserConsentRepository;
|
|
33
37
|
readonly userTermsConsent: UserTermsConsentRepository;
|
|
34
38
|
readonly userTotp: UserTotpRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro.service.d.ts","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro.service.d.ts","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAmB3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AACpG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAC5F,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,0DAA0D,CAAC;AACnH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AACnG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AAE5G,qBAAa,YAAY;IACvB,SAAgB,GAAG,EAAE,QAAQ,CAAC;IAC9B,SAAgB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACnC,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAC/C,SAAgB,SAAS,EAAE,mBAAmB,CAAC;IAC/C,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,iBAAiB,EAAE,2BAA2B,CAAC;IAC/D,SAAgB,aAAa,EAAE,uBAAuB,CAAC;IACvD,SAAgB,wBAAwB,EAAE,kCAAkC,CAAC;IAC7E,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,aAAa,EAAE,uBAAuB,CAAC;IACvD,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,gBAAgB,EAAE,0BAA0B,CAAC;IAC7D,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,SAAgB,oBAAoB,EAAE,8BAA8B,CAAC;IACrE,SAAgB,WAAW,EAAE,qBAAqB,CAAC;IACnD,SAAgB,KAAK,EAAE,eAAe,CAAC;IACvC,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IAErD,OAAO;WA6Ba,UAAU,CAC5B,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IAUX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MikroORM } from '@mikro-orm/core';
|
|
2
|
+
import { BackgroundJobEntitySchema } from "../entities/background-job.entity.js";
|
|
2
3
|
import { EmailVerificationEntitySchema } from "../entities/email-verification.entity.js";
|
|
3
4
|
import { JwtKeyEntity } from "../entities/jwt-key.entity.js";
|
|
4
5
|
import { OAuthClientEntitySchema } from "../entities/oauth-client.entity.js";
|
|
@@ -6,6 +7,7 @@ import { OAuthCodeEntitySchema } from "../entities/oauth-code.entity.js";
|
|
|
6
7
|
import { PasswordResetEntitySchema } from "../entities/password-reset.entity.js";
|
|
7
8
|
import { PendingOAuthRegistrationEntitySchema } from "../entities/pending-oauth-registration.entity.js";
|
|
8
9
|
import { RevokedTokenEntitySchema } from "../entities/revoked-token.entity.js";
|
|
10
|
+
import { SchedulerJobEntitySchema } from "../entities/scheduler-job.entity.js";
|
|
9
11
|
import { TermsEntitySchema } from "../entities/terms.entity.js";
|
|
10
12
|
import { TermsContentEntitySchema } from "../entities/terms-content.entity.js";
|
|
11
13
|
import { UserEntity } from "../entities/user.entity.js";
|
|
@@ -27,6 +29,8 @@ export class MikroService {
|
|
|
27
29
|
pendingOAuthRegistration;
|
|
28
30
|
jwtKey;
|
|
29
31
|
revokedToken;
|
|
32
|
+
backgroundJob;
|
|
33
|
+
schedulerJob;
|
|
30
34
|
userConsent;
|
|
31
35
|
userTermsConsent;
|
|
32
36
|
userTotp;
|
|
@@ -46,6 +50,8 @@ export class MikroService {
|
|
|
46
50
|
this.pendingOAuthRegistration = orm.em.getRepository(PendingOAuthRegistrationEntitySchema);
|
|
47
51
|
this.jwtKey = orm.em.getRepository(JwtKeyEntity);
|
|
48
52
|
this.revokedToken = orm.em.getRepository(RevokedTokenEntitySchema);
|
|
53
|
+
this.backgroundJob = orm.em.getRepository(BackgroundJobEntitySchema);
|
|
54
|
+
this.schedulerJob = orm.em.getRepository(SchedulerJobEntitySchema);
|
|
49
55
|
this.userConsent = orm.em.getRepository(UserConsentEntity);
|
|
50
56
|
this.userTermsConsent = orm.em.getRepository(UserTermsConsentEntity);
|
|
51
57
|
this.userTotp = orm.em.getRepository(UserTotpEntitySchema);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro.service.js","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,oCAAoC,EAAE,MAAM,kDAAkD,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro.service.js","sourceRoot":"","sources":["../../src/services/mikro.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SchedulerConfig } from '../lib/config/index.ts';
|
|
1
|
+
import type { JobPayload, SchedulerConfig } from '../lib/config/index.ts';
|
|
2
2
|
import type { Logger } from '../lib/logger.ts';
|
|
3
3
|
import type { CleanupService } from './cleanup.service.ts';
|
|
4
4
|
export declare class SchedulerService {
|
|
@@ -11,5 +11,10 @@ export declare class SchedulerService {
|
|
|
11
11
|
stop(): Promise<void>;
|
|
12
12
|
isRunning(): boolean;
|
|
13
13
|
getNextRunAt(): Date | null;
|
|
14
|
+
enqueue<TPayload extends JobPayload>(jobId: string, payload: TPayload, options?: {
|
|
15
|
+
runAt?: Date | undefined;
|
|
16
|
+
}): Promise<string>;
|
|
17
|
+
private createScheduledJobs;
|
|
18
|
+
private createBackgroundJobs;
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=scheduler.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../src/services/scheduler.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../src/services/scheduler.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EAEV,eAAe,EAEhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAE9D,OAAO,CAAC,MAAM,CAAgC;gBAG5C,eAAe,EAAE,eAAe,GAAG,SAAS,EAC5C,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,MAAM;IAaH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,IAAI,GAAG,IAAI;IAIrB,OAAO,CAAC,QAAQ,SAAS,UAAU,EAC9C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,EACjB,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;KAAO,GACzC,OAAO,CAAC,MAAM,CAAC;IAelB,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,oBAAoB;CAG7B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const DEFAULT_CLEANUP_CRON = '0 2 * * *';
|
|
1
2
|
export class SchedulerService {
|
|
2
3
|
cleanupService;
|
|
3
4
|
logger;
|
|
@@ -16,17 +17,9 @@ export class SchedulerService {
|
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
19
|
const handle = await this.schedulerConfig.start({
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
dryRun: false,
|
|
23
|
-
verbose: false,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
this.logger.error({ err }, 'Scheduled cleanup failed');
|
|
28
|
-
}
|
|
29
|
-
},
|
|
20
|
+
scheduledJobs: this.createScheduledJobs(),
|
|
21
|
+
backgroundJobs: this.createBackgroundJobs(),
|
|
22
|
+
logger: this.logger,
|
|
30
23
|
});
|
|
31
24
|
this.handle = handle;
|
|
32
25
|
this.logger.info({
|
|
@@ -48,5 +41,45 @@ export class SchedulerService {
|
|
|
48
41
|
getNextRunAt() {
|
|
49
42
|
return this.handle?.getNextRunAt?.() ?? null;
|
|
50
43
|
}
|
|
44
|
+
async enqueue(jobId, payload, options = {}) {
|
|
45
|
+
if (!this.handle) {
|
|
46
|
+
throw new Error('Scheduler is not running');
|
|
47
|
+
}
|
|
48
|
+
if (!this.handle.enqueue) {
|
|
49
|
+
throw new Error('Scheduler backend does not support background jobs');
|
|
50
|
+
}
|
|
51
|
+
return this.handle.enqueue({
|
|
52
|
+
jobId,
|
|
53
|
+
payload,
|
|
54
|
+
runAt: options.runAt,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
createScheduledJobs() {
|
|
58
|
+
return [
|
|
59
|
+
{
|
|
60
|
+
id: 'cleanup.run-all',
|
|
61
|
+
name: 'Run cleanup tasks',
|
|
62
|
+
schedule: {
|
|
63
|
+
type: 'cron',
|
|
64
|
+
expression: this.schedulerConfig?.cleanupCron ?? DEFAULT_CLEANUP_CRON,
|
|
65
|
+
},
|
|
66
|
+
handler: async () => {
|
|
67
|
+
try {
|
|
68
|
+
await this.cleanupService.runAll({
|
|
69
|
+
dryRun: false,
|
|
70
|
+
verbose: false,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
this.logger.error({ err }, 'Scheduled cleanup failed');
|
|
75
|
+
throw err;
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
createBackgroundJobs() {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
51
84
|
}
|
|
52
85
|
//# sourceMappingURL=scheduler.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.service.js","sourceRoot":"","sources":["../../src/services/scheduler.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scheduler.service.js","sourceRoot":"","sources":["../../src/services/scheduler.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinyrack/tinyauth-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "OpenID Connect Provider with OAuth2 support",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"types": "./dist/entrypoints/scheduler/croner.d.ts",
|
|
43
43
|
"default": "./dist/entrypoints/scheduler/croner.js"
|
|
44
44
|
},
|
|
45
|
+
"./scheduler/database": {
|
|
46
|
+
"types": "./dist/entrypoints/scheduler/database.d.ts",
|
|
47
|
+
"default": "./dist/entrypoints/scheduler/database.js"
|
|
48
|
+
},
|
|
45
49
|
"./identity-providers/github": {
|
|
46
50
|
"types": "./dist/entrypoints/identity-providers/github.d.ts",
|
|
47
51
|
"default": "./dist/entrypoints/identity-providers/github.js"
|