@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.
Files changed (91) hide show
  1. package/dist/entities/background-job.entity.d.ts +111 -0
  2. package/dist/entities/background-job.entity.d.ts.map +1 -0
  3. package/dist/entities/background-job.entity.js +41 -0
  4. package/dist/entities/background-job.entity.js.map +1 -0
  5. package/dist/entities/scheduler-job.entity.d.ts +134 -0
  6. package/dist/entities/scheduler-job.entity.d.ts.map +1 -0
  7. package/dist/entities/scheduler-job.entity.js +48 -0
  8. package/dist/entities/scheduler-job.entity.js.map +1 -0
  9. package/dist/entrypoints/app.d.ts +1 -1
  10. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +280 -170
  11. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  12. package/dist/entrypoints/database/postgres/compiled-functions.js +3442 -2124
  13. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  14. package/dist/entrypoints/database/postgres/postgres.d.ts +7 -2
  15. package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -1
  16. package/dist/entrypoints/database/postgres/postgres.js +2 -2
  17. package/dist/entrypoints/database/postgres/postgres.js.map +1 -1
  18. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +280 -170
  19. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  20. package/dist/entrypoints/database/sqlite/compiled-functions.js +3442 -2124
  21. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  22. package/dist/entrypoints/database/sqlite/sqlite.d.ts +6 -2
  23. package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -1
  24. package/dist/entrypoints/database/sqlite/sqlite.js +1 -1
  25. package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -1
  26. package/dist/entrypoints/scheduler/cron.d.ts +3 -0
  27. package/dist/entrypoints/scheduler/cron.d.ts.map +1 -0
  28. package/dist/entrypoints/scheduler/cron.js +34 -0
  29. package/dist/entrypoints/scheduler/cron.js.map +1 -0
  30. package/dist/entrypoints/scheduler/croner.d.ts +1 -1
  31. package/dist/entrypoints/scheduler/croner.d.ts.map +1 -1
  32. package/dist/entrypoints/scheduler/croner.js +27 -7
  33. package/dist/entrypoints/scheduler/croner.js.map +1 -1
  34. package/dist/entrypoints/scheduler/database.d.ts +38 -0
  35. package/dist/entrypoints/scheduler/database.d.ts.map +1 -0
  36. package/dist/entrypoints/scheduler/database.js +444 -0
  37. package/dist/entrypoints/scheduler/database.js.map +1 -0
  38. package/dist/entrypoints/scheduler/distributed-runner.d.ts +134 -0
  39. package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -0
  40. package/dist/entrypoints/scheduler/distributed-runner.js +327 -0
  41. package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -0
  42. package/dist/lib/config/index.d.ts +2 -2
  43. package/dist/lib/config/index.d.ts.map +1 -1
  44. package/dist/lib/config/index.js +1 -1
  45. package/dist/lib/config/index.js.map +1 -1
  46. package/dist/lib/config/resolved.d.ts +1 -1
  47. package/dist/lib/config/resolved.d.ts.map +1 -1
  48. package/dist/lib/config/resolved.js +1 -1
  49. package/dist/lib/config/resolved.js.map +1 -1
  50. package/dist/lib/config/scheduler.d.ts +41 -2
  51. package/dist/lib/config/scheduler.d.ts.map +1 -1
  52. package/dist/lib/config/scheduler.js +9 -3
  53. package/dist/lib/config/scheduler.js.map +1 -1
  54. package/dist/lib/database/entities.d.ts.map +1 -1
  55. package/dist/lib/database/entities.js +4 -0
  56. package/dist/lib/database/entities.js.map +1 -1
  57. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
  58. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
  59. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js +15 -0
  60. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
  61. package/dist/migrations/postgres/index.d.ts.map +1 -1
  62. package/dist/migrations/postgres/index.js +5 -1
  63. package/dist/migrations/postgres/index.js.map +1 -1
  64. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
  65. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
  66. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js +13 -0
  67. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
  68. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  69. package/dist/migrations/sqlite/index.js +5 -1
  70. package/dist/migrations/sqlite/index.js.map +1 -1
  71. package/dist/repositories/background-job.repository.d.ts +5 -0
  72. package/dist/repositories/background-job.repository.d.ts.map +1 -0
  73. package/dist/repositories/background-job.repository.js +4 -0
  74. package/dist/repositories/background-job.repository.js.map +1 -0
  75. package/dist/repositories/scheduler-job.repository.d.ts +5 -0
  76. package/dist/repositories/scheduler-job.repository.d.ts.map +1 -0
  77. package/dist/repositories/scheduler-job.repository.js +4 -0
  78. package/dist/repositories/scheduler-job.repository.js.map +1 -0
  79. package/dist/services/container.d.ts +2 -2
  80. package/dist/services/container.d.ts.map +1 -1
  81. package/dist/services/container.js +7 -1
  82. package/dist/services/container.js.map +1 -1
  83. package/dist/services/mikro.service.d.ts +4 -0
  84. package/dist/services/mikro.service.d.ts.map +1 -1
  85. package/dist/services/mikro.service.js +6 -0
  86. package/dist/services/mikro.service.js.map +1 -1
  87. package/dist/services/scheduler.service.d.ts +6 -1
  88. package/dist/services/scheduler.service.d.ts.map +1 -1
  89. package/dist/services/scheduler.service.js +44 -11
  90. package/dist/services/scheduler.service.js.map +1 -1
  91. 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
- runCleanup: () => Promise<void>;
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 declare const SchedulerConfigSchema: z.ZodOptional<z.ZodCustom<SchedulerConfig, SchedulerConfig>>;
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;AAEpB,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CACL,OAAO,EAAE,qBAAqB,KAC3B,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACjD;AAUD,eAAO,MAAM,qBAAqB,8DAKkB,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(isSchedulerConfig, {
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('In-process cleanup scheduler adapter.');
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;AAiBpB,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,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAkB,iBAAiB,EAAE;IAC1C,OAAO,EAAE,qDAAqD;CAC/D,CAAC;KACD,QAAQ,EAAE;KACV,QAAQ,CAAC,uCAAuC,CAAC,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;AAmBlD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAwBD,wBAAgB,mBAAmB,IAAI,SAAS,UAAU,EAAE,CAE3D;AAED,wBAAgB,+BAA+B,IAAI,SAAS,qBAAqB,EAAE,CAElF"}
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,5 @@
1
+ import { Migration } from '@mikro-orm/migrations';
2
+ export declare class Migration20260512120000_add_scheduler_jobs extends Migration {
3
+ up(): void | Promise<void>;
4
+ }
5
+ //# sourceMappingURL=Migration20260512120000_add_scheduler_jobs.d.ts.map
@@ -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;AAEvF,eAAO,MAAM,mBAAmB,4CAAoC,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
- export const POSTGRES_MIGRATIONS = [Migration20260509171036_initial];
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;AAEvF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,+BAA+B,CAAC,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,5 @@
1
+ import { Migration } from '@mikro-orm/migrations';
2
+ export declare class Migration20260512120000_add_scheduler_jobs extends Migration {
3
+ up(): void | Promise<void>;
4
+ }
5
+ //# sourceMappingURL=Migration20260512120000_add_scheduler_jobs.d.ts.map
@@ -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;AAEvF,eAAO,MAAM,iBAAiB,4CAAoC,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
- export const SQLITE_MIGRATIONS = [Migration20260509171226_initial];
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;AAEvF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,+BAA+B,CAAC,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,4 @@
1
+ import { EntityRepository } from '@mikro-orm/core';
2
+ export class BackgroundJobRepository extends EntityRepository {
3
+ }
4
+ //# sourceMappingURL=background-job.repository.js.map
@@ -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,4 @@
1
+ import { EntityRepository } from '@mikro-orm/core';
2
+ export class SchedulerJobRepository extends EntityRepository {
3
+ }
4
+ //# sourceMappingURL=scheduler-job.repository.js.map
@@ -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 { TinyAuthRuntimeConfig } from '../lib/config/index.ts';
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").SchedulerConfig | undefined;
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,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GxC;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
+ {"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 scheduler = new SchedulerService(config.scheduler, cleanupService, schedulerLogger);
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":"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"}
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;AAiB3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,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,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,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;WA2Ba,UAAU,CAC5B,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC;IAUX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGpC"}
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;AAoBjG,MAAM,OAAO,YAAY;IACP,GAAG,CAAW;IACd,EAAE,CAAiB;IACnB,IAAI,CAAiB;IACrB,SAAS,CAAsB;IAC/B,SAAS,CAAsB;IAC/B,WAAW,CAAwB;IACnC,iBAAiB,CAA8B;IAC/C,aAAa,CAA0B;IACvC,wBAAwB,CAAqC;IAC7D,MAAM,CAAmB;IACzB,YAAY,CAAyB;IACrC,WAAW,CAAwB;IACnC,gBAAgB,CAA6B;IAC7C,QAAQ,CAAqB;IAC7B,oBAAoB,CAAiC;IACrD,WAAW,CAAwB;IACnC,KAAK,CAAkB;IACvB,YAAY,CAAyB;IAErD,YAAoB,GAAa;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAC3C,6BAA6B,CAC9B,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAClD,oCAAoC,CACrC,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;QACnE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QACrE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAC9C,gCAAgC,CACjC,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACrE,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,UAAU,CAC5B,MAA6B,EAC7B,MAAc;QAEd,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC5E,MAAM,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAEpC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
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,EAAE,eAAe,EAAmB,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,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;IA2BtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,SAAS,IAAI,OAAO;IAIpB,YAAY,IAAI,IAAI,GAAG,IAAI;CAGnC"}
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
- runCleanup: async () => {
20
- try {
21
- await this.cleanupService.runAll({
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":"AAIA,MAAM,OAAO,gBAAgB;IACV,cAAc,CAAiB;IAC/B,MAAM,CAAS;IACf,eAAe,CAA8B;IAEtD,MAAM,GAA2B,IAAI,CAAC;IAE9C,YACE,eAA4C,EAC5C,cAA8B,EAC9B,MAAc;QAEd,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,OAAO,EAAE,IAAI,CAAC,eAAe,KAAK,SAAS;SAC5C,EACD,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC9C,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;wBAC/B,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,KAAK;qBACf,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd;YACE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;SAC/B,EACD,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,IAAI,CAAC;IAC/C,CAAC;CACF"}
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.14",
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"