@tinyrack/tinyauth-server 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) 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/oauth-client.entity.d.ts.map +1 -1
  6. package/dist/entities/oauth-client.entity.js +2 -2
  7. package/dist/entities/oauth-client.entity.js.map +1 -1
  8. package/dist/entities/scheduler-job.entity.d.ts +134 -0
  9. package/dist/entities/scheduler-job.entity.d.ts.map +1 -0
  10. package/dist/entities/scheduler-job.entity.js +48 -0
  11. package/dist/entities/scheduler-job.entity.js.map +1 -0
  12. package/dist/entities/user.entity.d.ts.map +1 -1
  13. package/dist/entities/user.entity.js +2 -2
  14. package/dist/entities/user.entity.js.map +1 -1
  15. package/dist/entrypoints/app.d.ts +1 -1
  16. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +280 -170
  17. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  18. package/dist/entrypoints/database/postgres/compiled-functions.js +3435 -2167
  19. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  20. package/dist/entrypoints/database/postgres/postgres.d.ts +7 -2
  21. package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -1
  22. package/dist/entrypoints/database/postgres/postgres.js +4 -5
  23. package/dist/entrypoints/database/postgres/postgres.js.map +1 -1
  24. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +280 -170
  25. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  26. package/dist/entrypoints/database/sqlite/compiled-functions.js +3435 -2167
  27. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  28. package/dist/entrypoints/database/sqlite/sqlite.d.ts +6 -2
  29. package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -1
  30. package/dist/entrypoints/database/sqlite/sqlite.js +3 -4
  31. package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -1
  32. package/dist/entrypoints/frontend/index.d.ts +0 -2
  33. package/dist/entrypoints/frontend/index.d.ts.map +1 -1
  34. package/dist/entrypoints/frontend/index.js +0 -1
  35. package/dist/entrypoints/frontend/index.js.map +1 -1
  36. package/dist/entrypoints/scheduler/cron.d.ts +3 -0
  37. package/dist/entrypoints/scheduler/cron.d.ts.map +1 -0
  38. package/dist/entrypoints/scheduler/cron.js +34 -0
  39. package/dist/entrypoints/scheduler/cron.js.map +1 -0
  40. package/dist/entrypoints/scheduler/croner.d.ts +1 -1
  41. package/dist/entrypoints/scheduler/croner.d.ts.map +1 -1
  42. package/dist/entrypoints/scheduler/croner.js +27 -7
  43. package/dist/entrypoints/scheduler/croner.js.map +1 -1
  44. package/dist/entrypoints/scheduler/database.d.ts +38 -0
  45. package/dist/entrypoints/scheduler/database.d.ts.map +1 -0
  46. package/dist/entrypoints/scheduler/database.js +444 -0
  47. package/dist/entrypoints/scheduler/database.js.map +1 -0
  48. package/dist/entrypoints/scheduler/distributed-runner.d.ts +134 -0
  49. package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -0
  50. package/dist/entrypoints/scheduler/distributed-runner.js +327 -0
  51. package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -0
  52. package/dist/lib/config/client.d.ts.map +1 -1
  53. package/dist/lib/config/client.js +5 -1
  54. package/dist/lib/config/client.js.map +1 -1
  55. package/dist/lib/config/index.d.ts +2 -2
  56. package/dist/lib/config/index.d.ts.map +1 -1
  57. package/dist/lib/config/index.js +1 -1
  58. package/dist/lib/config/index.js.map +1 -1
  59. package/dist/lib/config/resolved.d.ts +1 -1
  60. package/dist/lib/config/resolved.d.ts.map +1 -1
  61. package/dist/lib/config/resolved.js +1 -1
  62. package/dist/lib/config/resolved.js.map +1 -1
  63. package/dist/lib/config/scheduler.d.ts +41 -2
  64. package/dist/lib/config/scheduler.d.ts.map +1 -1
  65. package/dist/lib/config/scheduler.js +9 -3
  66. package/dist/lib/config/scheduler.js.map +1 -1
  67. package/dist/lib/config/user.d.ts.map +1 -1
  68. package/dist/lib/config/user.js +5 -1
  69. package/dist/lib/config/user.js.map +1 -1
  70. package/dist/lib/database/entities.d.ts.map +1 -1
  71. package/dist/lib/database/entities.js +4 -0
  72. package/dist/lib/database/entities.js.map +1 -1
  73. package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -1
  74. package/dist/migrations/postgres/Migration20260509171036_initial.js +14 -14
  75. package/dist/migrations/postgres/Migration20260509171036_initial.js.map +1 -1
  76. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
  77. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
  78. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js +15 -0
  79. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
  80. package/dist/migrations/postgres/index.d.ts.map +1 -1
  81. package/dist/migrations/postgres/index.js +5 -1
  82. package/dist/migrations/postgres/index.js.map +1 -1
  83. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
  84. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
  85. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js +13 -0
  86. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
  87. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  88. package/dist/migrations/sqlite/index.js +5 -1
  89. package/dist/migrations/sqlite/index.js.map +1 -1
  90. package/dist/repositories/background-job.repository.d.ts +5 -0
  91. package/dist/repositories/background-job.repository.d.ts.map +1 -0
  92. package/dist/repositories/background-job.repository.js +4 -0
  93. package/dist/repositories/background-job.repository.js.map +1 -0
  94. package/dist/repositories/scheduler-job.repository.d.ts +5 -0
  95. package/dist/repositories/scheduler-job.repository.d.ts.map +1 -0
  96. package/dist/repositories/scheduler-job.repository.js +4 -0
  97. package/dist/repositories/scheduler-job.repository.js.map +1 -0
  98. package/dist/schemas/field.d.ts +2 -1
  99. package/dist/schemas/field.d.ts.map +1 -1
  100. package/dist/schemas/field.js +6 -1
  101. package/dist/schemas/field.js.map +1 -1
  102. package/dist/schemas/oauth.js +1 -1
  103. package/dist/schemas/oauth.js.map +1 -1
  104. package/dist/schemas/response.d.ts +12 -12
  105. package/dist/schemas/response.js +2 -2
  106. package/dist/schemas/response.js.map +1 -1
  107. package/dist/services/container.d.ts +2 -2
  108. package/dist/services/container.d.ts.map +1 -1
  109. package/dist/services/container.js +7 -1
  110. package/dist/services/container.js.map +1 -1
  111. package/dist/services/mikro.service.d.ts +4 -0
  112. package/dist/services/mikro.service.d.ts.map +1 -1
  113. package/dist/services/mikro.service.js +6 -0
  114. package/dist/services/mikro.service.js.map +1 -1
  115. package/dist/services/scheduler.service.d.ts +6 -1
  116. package/dist/services/scheduler.service.d.ts.map +1 -1
  117. package/dist/services/scheduler.service.js +44 -11
  118. package/dist/services/scheduler.service.js.map +1 -1
  119. package/package.json +8 -18
  120. package/readme.md +0 -1
  121. package/dist/entrypoints/database/d1/cli.d.ts +0 -4
  122. package/dist/entrypoints/database/d1/cli.d.ts.map +0 -1
  123. package/dist/entrypoints/database/d1/cli.js +0 -45
  124. package/dist/entrypoints/database/d1/cli.js.map +0 -1
  125. package/dist/entrypoints/database/d1/compiled-functions.d.ts +0 -691
  126. package/dist/entrypoints/database/d1/compiled-functions.d.ts.map +0 -1
  127. package/dist/entrypoints/database/d1/compiled-functions.js +0 -8616
  128. package/dist/entrypoints/database/d1/compiled-functions.js.map +0 -1
  129. package/dist/entrypoints/database/d1/d1.d.ts +0 -5
  130. package/dist/entrypoints/database/d1/d1.d.ts.map +0 -1
  131. package/dist/entrypoints/database/d1/d1.js +0 -35
  132. package/dist/entrypoints/database/d1/d1.js.map +0 -1
  133. package/dist/entrypoints/frontend/cloudflare.d.ts +0 -2
  134. package/dist/entrypoints/frontend/cloudflare.d.ts.map +0 -1
  135. package/dist/entrypoints/frontend/cloudflare.js +0 -2
  136. package/dist/entrypoints/frontend/cloudflare.js.map +0 -1
  137. package/dist/lib/database/compiled-functions.d.ts +0 -16
  138. package/dist/lib/database/compiled-functions.d.ts.map +0 -1
  139. package/dist/lib/database/compiled-functions.js +0 -66
  140. package/dist/lib/database/compiled-functions.js.map +0 -1
  141. package/dist/lib/frontend/cloudflare.d.ts +0 -12
  142. package/dist/lib/frontend/cloudflare.d.ts.map +0 -1
  143. package/dist/lib/frontend/cloudflare.js +0 -34
  144. package/dist/lib/frontend/cloudflare.js.map +0 -1
  145. package/dist/migrations/d1/Migration20260509172833_initial.d.ts +0 -5
  146. package/dist/migrations/d1/Migration20260509172833_initial.d.ts.map +0 -1
  147. package/dist/migrations/d1/Migration20260509172833_initial.js +0 -62
  148. package/dist/migrations/d1/Migration20260509172833_initial.js.map +0 -1
  149. package/dist/migrations/d1/index.d.ts +0 -3
  150. package/dist/migrations/d1/index.d.ts.map +0 -1
  151. package/dist/migrations/d1/index.js +0 -3
  152. package/dist/migrations/d1/index.js.map +0 -1
@@ -0,0 +1,327 @@
1
+ import { getNextCronRunAt } from "./cron.js";
2
+ const MAX_ERROR_LENGTH = 2000;
3
+ const MAX_CLEANUP_INTERVAL_MS = 24 * 60 * 60 * 1000;
4
+ function errorToMessage(err) {
5
+ const message = err instanceof Error ? err.message : String(err);
6
+ return message.slice(0, MAX_ERROR_LENGTH);
7
+ }
8
+ export class DistributedSchedulerRunner {
9
+ name;
10
+ pollIntervalMs;
11
+ lockTtlMs;
12
+ instanceId;
13
+ jobs;
14
+ logger;
15
+ store;
16
+ interval = null;
17
+ runningTick = null;
18
+ nextRunAt = null;
19
+ stopped = false;
20
+ constructor(options) {
21
+ this.name = options.name;
22
+ this.pollIntervalMs = options.pollIntervalMs;
23
+ this.lockTtlMs = options.lockTtlMs;
24
+ this.instanceId = options.instanceId;
25
+ this.jobs = new Map(options.jobs.map((job) => [job.id, job]));
26
+ this.logger = options.logger;
27
+ this.store = options.store;
28
+ }
29
+ async start() {
30
+ await this.reconcileJobs();
31
+ this.queueTick();
32
+ this.interval = setInterval(() => this.queueTick(), this.pollIntervalMs);
33
+ return {
34
+ stop: async () => {
35
+ this.stopped = true;
36
+ if (this.interval) {
37
+ clearInterval(this.interval);
38
+ this.interval = null;
39
+ }
40
+ if (this.runningTick) {
41
+ await this.runningTick;
42
+ }
43
+ },
44
+ getNextRunAt: () => this.nextRunAt,
45
+ };
46
+ }
47
+ queueTick() {
48
+ if (this.runningTick || this.stopped) {
49
+ return;
50
+ }
51
+ this.runningTick = this.runTick()
52
+ .catch((err) => {
53
+ this.logger?.error({ err }, `${this.name} scheduler tick failed`);
54
+ })
55
+ .finally(() => {
56
+ this.runningTick = null;
57
+ });
58
+ }
59
+ async reconcileJobs() {
60
+ const now = new Date();
61
+ const definitions = [...this.jobs.values()].map((job) => ({
62
+ id: job.id,
63
+ name: job.name,
64
+ cron: job.schedule.expression,
65
+ }));
66
+ await this.store.reconcileJobs(definitions, now);
67
+ this.nextRunAt = await this.store.findNextRunAt();
68
+ }
69
+ async runTick() {
70
+ while (!this.stopped) {
71
+ const now = new Date();
72
+ const lockedUntil = new Date(now.getTime() + this.lockTtlMs);
73
+ const acquired = await this.store.acquireDueJob(now, lockedUntil, this.instanceId);
74
+ if (!acquired) {
75
+ this.nextRunAt = await this.store.findNextRunAt();
76
+ return;
77
+ }
78
+ const job = this.jobs.get(acquired.id);
79
+ if (!job) {
80
+ await this.completeJob(acquired, new Error(`Missing scheduler handler: ${acquired.id}`));
81
+ continue;
82
+ }
83
+ const abortController = new AbortController();
84
+ const stopLeaseRenewal = this.startLeaseRenewal(acquired.id, () => {
85
+ abortController.abort();
86
+ });
87
+ try {
88
+ await job.handler({
89
+ logger: this.logger,
90
+ signal: abortController.signal,
91
+ });
92
+ await this.completeJob(acquired);
93
+ }
94
+ catch (err) {
95
+ await this.completeJob(acquired, err);
96
+ }
97
+ finally {
98
+ stopLeaseRenewal();
99
+ }
100
+ }
101
+ }
102
+ startLeaseRenewal(jobId, onLeaseLost) {
103
+ const renewIntervalMs = Math.max(1, Math.floor(this.lockTtlMs / 2));
104
+ let renewInFlight = false;
105
+ const interval = setInterval(() => {
106
+ if (renewInFlight) {
107
+ return;
108
+ }
109
+ renewInFlight = true;
110
+ const now = new Date();
111
+ const lockedUntil = new Date(now.getTime() + this.lockTtlMs);
112
+ void this.store
113
+ .renewLease(jobId, this.instanceId, lockedUntil, now)
114
+ .then((renewed) => {
115
+ if (!renewed) {
116
+ this.logger?.warn({ jobId, instanceId: this.instanceId }, `${this.name} scheduler lease renewal skipped because lease was lost`);
117
+ onLeaseLost();
118
+ }
119
+ })
120
+ .catch((err) => {
121
+ this.logger?.error({ err, jobId }, `${this.name} scheduler lease renewal failed`);
122
+ })
123
+ .finally(() => {
124
+ renewInFlight = false;
125
+ });
126
+ }, renewIntervalMs);
127
+ return () => clearInterval(interval);
128
+ }
129
+ async completeJob(job, err) {
130
+ const now = new Date();
131
+ const nextRunAt = getNextCronRunAt(job.cron, now);
132
+ const runCount = job.runCount + 1;
133
+ const completed = err === undefined
134
+ ? await this.store.completeJobSuccess({
135
+ jobId: job.id,
136
+ cron: job.cron,
137
+ instanceId: this.instanceId,
138
+ nextRunAt,
139
+ now,
140
+ runCount,
141
+ })
142
+ : await this.store.completeJobFailure({
143
+ jobId: job.id,
144
+ cron: job.cron,
145
+ instanceId: this.instanceId,
146
+ nextRunAt,
147
+ now,
148
+ runCount,
149
+ failureCount: job.failureCount + 1,
150
+ error: errorToMessage(err),
151
+ });
152
+ if (!completed) {
153
+ this.logger?.warn({ jobId: job.id, instanceId: this.instanceId }, `${this.name} scheduler completion skipped because lease was lost`);
154
+ }
155
+ this.nextRunAt = await this.store.findNextRunAt();
156
+ }
157
+ }
158
+ export class DistributedBackgroundJobRunner {
159
+ name;
160
+ pollIntervalMs;
161
+ lockTtlMs;
162
+ retryDelayMs;
163
+ maxAttempts;
164
+ retentionMs;
165
+ cleanupIntervalMs;
166
+ instanceId;
167
+ jobs;
168
+ logger;
169
+ store;
170
+ interval = null;
171
+ runningTick = null;
172
+ nextCleanupAt = 0;
173
+ stopped = false;
174
+ constructor(options) {
175
+ this.name = options.name;
176
+ this.pollIntervalMs = options.pollIntervalMs;
177
+ this.lockTtlMs = options.lockTtlMs;
178
+ this.retryDelayMs = options.retryDelayMs;
179
+ this.maxAttempts = options.maxAttempts;
180
+ this.retentionMs = options.retentionMs;
181
+ this.cleanupIntervalMs = Math.min(this.retentionMs, MAX_CLEANUP_INTERVAL_MS);
182
+ this.instanceId = options.instanceId;
183
+ this.jobs = new Map(options.jobs.map((job) => [job.id, job]));
184
+ this.logger = options.logger;
185
+ this.store = options.store;
186
+ }
187
+ start() {
188
+ this.queueTick();
189
+ this.interval = setInterval(() => this.queueTick(), this.pollIntervalMs);
190
+ return {
191
+ stop: async () => {
192
+ this.stopped = true;
193
+ if (this.interval) {
194
+ clearInterval(this.interval);
195
+ this.interval = null;
196
+ }
197
+ if (this.runningTick) {
198
+ await this.runningTick;
199
+ }
200
+ },
201
+ enqueue: async (options) => this.enqueue(options),
202
+ };
203
+ }
204
+ async enqueue(options) {
205
+ if (!this.jobs.has(options.jobId)) {
206
+ throw new Error(`Unknown background job: ${options.jobId}`);
207
+ }
208
+ const now = new Date();
209
+ return this.store.enqueue({
210
+ jobId: options.jobId,
211
+ payload: options.payload,
212
+ availableAt: options.runAt ?? now,
213
+ maxAttempts: this.maxAttempts,
214
+ now,
215
+ });
216
+ }
217
+ queueTick() {
218
+ if (this.runningTick || this.stopped) {
219
+ return;
220
+ }
221
+ this.runningTick = this.runTick()
222
+ .catch((err) => {
223
+ this.logger?.error({ err }, `${this.name} background job tick failed`);
224
+ })
225
+ .finally(() => {
226
+ this.runningTick = null;
227
+ });
228
+ }
229
+ async runTick() {
230
+ await this.cleanupCompletedJobs();
231
+ while (!this.stopped) {
232
+ const now = new Date();
233
+ const lockedUntil = new Date(now.getTime() + this.lockTtlMs);
234
+ const acquired = await this.store.acquireDueJob(now, lockedUntil, this.instanceId);
235
+ if (!acquired) {
236
+ return;
237
+ }
238
+ const job = this.jobs.get(acquired.jobId);
239
+ if (!job) {
240
+ await this.completeJob(acquired, new Error(`Missing background job handler: ${acquired.jobId}`));
241
+ continue;
242
+ }
243
+ const abortController = new AbortController();
244
+ const stopLeaseRenewal = this.startLeaseRenewal(acquired.id, () => {
245
+ abortController.abort();
246
+ });
247
+ try {
248
+ await job.handler(acquired.payload, {
249
+ logger: this.logger,
250
+ signal: abortController.signal,
251
+ });
252
+ await this.completeJob(acquired);
253
+ }
254
+ catch (err) {
255
+ await this.completeJob(acquired, err);
256
+ }
257
+ finally {
258
+ stopLeaseRenewal();
259
+ }
260
+ }
261
+ }
262
+ async cleanupCompletedJobs() {
263
+ if (!this.store.cleanupCompletedJobs) {
264
+ return;
265
+ }
266
+ const now = new Date();
267
+ if (now.getTime() < this.nextCleanupAt) {
268
+ return;
269
+ }
270
+ const before = new Date(now.getTime() - this.retentionMs);
271
+ await this.store.cleanupCompletedJobs(before);
272
+ this.nextCleanupAt = now.getTime() + this.cleanupIntervalMs;
273
+ }
274
+ startLeaseRenewal(id, onLeaseLost) {
275
+ const renewIntervalMs = Math.max(1, Math.floor(this.lockTtlMs / 2));
276
+ let renewInFlight = false;
277
+ const interval = setInterval(() => {
278
+ if (renewInFlight) {
279
+ return;
280
+ }
281
+ renewInFlight = true;
282
+ const now = new Date();
283
+ const lockedUntil = new Date(now.getTime() + this.lockTtlMs);
284
+ void this.store
285
+ .renewLease(id, this.instanceId, lockedUntil, now)
286
+ .then((renewed) => {
287
+ if (!renewed) {
288
+ this.logger?.warn({ id, instanceId: this.instanceId }, `${this.name} background job lease renewal skipped because lease was lost`);
289
+ onLeaseLost();
290
+ }
291
+ })
292
+ .catch((err) => {
293
+ this.logger?.error({ err, id }, `${this.name} background job lease renewal failed`);
294
+ })
295
+ .finally(() => {
296
+ renewInFlight = false;
297
+ });
298
+ }, renewIntervalMs);
299
+ return () => clearInterval(interval);
300
+ }
301
+ async completeJob(job, err) {
302
+ const now = new Date();
303
+ const completed = err === undefined
304
+ ? await this.store.completeJobSuccess({
305
+ id: job.id,
306
+ instanceId: this.instanceId,
307
+ now,
308
+ })
309
+ : await this.store.completeJobFailure({
310
+ id: job.id,
311
+ instanceId: this.instanceId,
312
+ now,
313
+ attemptCount: job.attemptCount,
314
+ retryAt: job.attemptCount < job.maxAttempts
315
+ ? new Date(now.getTime() + this.retryDelayMs)
316
+ : null,
317
+ error: errorToMessage(err),
318
+ });
319
+ if (!completed) {
320
+ this.logger?.warn({ id: job.id, instanceId: this.instanceId }, `${this.name} background job completion skipped because lease was lost`);
321
+ }
322
+ }
323
+ }
324
+ export function getDistributedSchedulerNextRunAt(cron, from) {
325
+ return getNextCronRunAt(cron, from);
326
+ }
327
+ //# sourceMappingURL=distributed-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distributed-runner.js","sourceRoot":"","sources":["../../../src/entrypoints/scheduler/distributed-runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;oBAmC4B,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB,EAAE,YAAY,EAAO,CAAC;AAEzD,eAAO,MAAM,mBAAmB;;;;;;;;;;sBAGiC,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;oBAuC4B,CAAC;AAE5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB,EAAE,YAAY,EAAO,CAAC;AAEzD,eAAO,MAAM,mBAAmB;;;;;;;;;;sBAGiC,CAAC"}
@@ -5,7 +5,11 @@ import z from 'zod';
5
5
  */
6
6
  export const ClientConfigSchema = z
7
7
  .object({
8
- id: z.string().describe('Internal identifier for the client.'),
8
+ id: z
9
+ .string()
10
+ .min(1)
11
+ .max(255)
12
+ .describe('Internal identifier for the client.'),
9
13
  name: z
10
14
  .string()
11
15
  .describe('Human-readable name for the client application.'),
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IAC9D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE,CACzE;IACH,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,4CAA4C,CAAC;IACzD,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,0EAA0E,CAC3E;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,8CAA8C,CAAC,CAAC;AAI5D,MAAM,CAAC,MAAM,sBAAsB,GAAmB,EAAE,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,KAAK,CAAC,kBAAkB,CAAC;KACzB,OAAO,CAAC,sBAAsB,CAAC;KAC/B,QAAQ,CAAC,oDAAoD,CAAC,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,qCAAqC,CAAC;IAClD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wEAAwE,CACzE;IACH,aAAa,EAAE,CAAC;SACb,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,4CAA4C,CAAC;IACzD,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,8CAA8C,CAAC;IAC3D,WAAW,EAAE,CAAC;SACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,0EAA0E,CAC3E;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,8CAA8C,CAAC,CAAC;AAI5D,MAAM,CAAC,MAAM,sBAAsB,GAAmB,EAAE,CAAC;AAEzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,KAAK,CAAC,kBAAkB,CAAC;KACzB,OAAO,CAAC,sBAAsB,CAAC;KAC/B,QAAQ,CAAC,oDAAoD,CAAC,CAAC"}
@@ -26,8 +26,8 @@ export type { RegistrationConfig } from './registration.ts';
26
26
  export { RegistrationConfigSchema } from './registration.ts';
27
27
  export type { TinyAuthRuntimeConfig, TinyAuthRuntimeConfigInput, } from './resolved.ts';
28
28
  export { TinyAuthRuntimeConfigSchema } from './resolved.ts';
29
- export type { SchedulerConfig, SchedulerHandle, SchedulerStartOptions, } from './scheduler.ts';
30
- export { SchedulerConfigSchema } from './scheduler.ts';
29
+ export type { BackgroundJobConfig, EnqueueBackgroundJobOptions, JobPayload, JobRunContext, ScheduledJobConfig, SchedulerConfig, SchedulerConfigResolver, SchedulerHandle, SchedulerRuntimeConfig, SchedulerRuntimeContext, SchedulerStartOptions, } from './scheduler.ts';
30
+ export { isSchedulerConfigResolver, SchedulerConfigSchema, } from './scheduler.ts';
31
31
  export type { SecurityConfig } from './security.ts';
32
32
  export { SecurityConfigSchema } from './security.ts';
33
33
  export type { ServerConfig } from './server.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,YAAY,EACV,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5D,YAAY,EACV,mBAAmB,EACnB,2BAA2B,EAC3B,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC/E,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -12,7 +12,7 @@ export { LoggingConfigSchema } from "./logging.js";
12
12
  export { OPENAPI_CONFIG_DEFAULT, OpenApiConfigSchema } from "./openapi.js";
13
13
  export { RegistrationConfigSchema } from "./registration.js";
14
14
  export { TinyAuthRuntimeConfigSchema } from "./resolved.js";
15
- export { SchedulerConfigSchema } from "./scheduler.js";
15
+ export { isSchedulerConfigResolver, SchedulerConfigSchema, } from "./scheduler.js";
16
16
  export { SecurityConfigSchema } from "./security.js";
17
17
  export { ServerConfigSchema } from "./server.js";
18
18
  export { TermsConfigSchema, TermsItemSchema } from "./terms.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAMrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAK7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAM5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAMrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAM/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAK7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAc5D,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -195,7 +195,7 @@ export declare const TinyAuthRuntimeConfigSchema: z.ZodObject<{
195
195
  retention: z.ZodDefault<z.ZodString>;
196
196
  }, z.z.core.$strip>>;
197
197
  }, z.z.core.$strict>>;
198
- scheduler: z.ZodOptional<z.ZodCustom<import("./scheduler.ts").SchedulerConfig, import("./scheduler.ts").SchedulerConfig>>;
198
+ scheduler: z.ZodOptional<z.ZodCustom<import("./scheduler.ts").SchedulerRuntimeConfig, import("./scheduler.ts").SchedulerRuntimeConfig>>;
199
199
  terms: z.ZodDefault<z.ZodArray<z.ZodObject<{
200
200
  id: z.ZodString;
201
201
  required: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>, z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>, z.ZodTransform<boolean, string | boolean>>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"resolved.d.ts","sourceRoot":"","sources":["../../../src/lib/config/resolved.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAqBpB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA2CM,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,2BAA2B,CACnC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAC1C,OAAO,2BAA2B,CACnC,CAAC"}
1
+ {"version":3,"file":"resolved.d.ts","sourceRoot":"","sources":["../../../src/lib/config/resolved.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAqBpB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAyCM,CAAC;AAE/C,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,2BAA2B,CACnC,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAC1C,OAAO,2BAA2B,CACnC,CAAC"}
@@ -31,7 +31,7 @@ export const TinyAuthRuntimeConfigSchema = z
31
31
  auth: AuthConfigSchema.describe('Authentication methods settings.'),
32
32
  security: SecurityConfigSchema.describe('Security and cryptographic settings.'),
33
33
  cleanup: CleanupConfigSchema.describe('Data cleanup settings.'),
34
- scheduler: SchedulerConfigSchema.describe('In-process cleanup scheduler adapter.'),
34
+ scheduler: SchedulerConfigSchema.describe('Cleanup scheduler adapter.'),
35
35
  terms: TermsConfigSchema.describe('Terms of service settings.'),
36
36
  clients: ClientConfigsSchema.describe('Registered OAuth/OIDC client applications.'),
37
37
  users: UserConfigsSchema.describe('Pre-provisioned user accounts.'),
@@ -1 +1 @@
1
- {"version":3,"file":"resolved.js","sourceRoot":"","sources":["../../../src/lib/config/resolved.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC5D,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CACjC,0CAA0C,CAC3C;IACD,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CACrC,6CAA6C,CAC9C;IACD,YAAY,EAAE,wBAAwB,CAAC,QAAQ,CAC7C,kCAAkC,CACnC;IACD,gBAAgB,EAAE,2BAA2B,CAAC,QAAQ,CACpD,4BAA4B,CAC7B;IACD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CACnC,qCAAqC,CACtC;IACD,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACnE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CACrC,sCAAsC,CACvC;IACD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC/D,SAAS,EAAE,qBAAqB,CAAC,QAAQ,CACvC,uCAAuC,CACxC;IACD,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC/D,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CACnC,4CAA4C,CAC7C;IACD,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACnE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACrE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CACrC,sCAAsC,CACvC;IACD,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACtE,kBAAkB,EAAE,6BAA6B,CAAC,QAAQ,CACxD,sCAAsC,CACvC;CACF,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,iCAAiC,CAAC,CAAC"}
1
+ {"version":3,"file":"resolved.js","sourceRoot":"","sources":["../../../src/lib/config/resolved.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC5D,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CACjC,0CAA0C,CAC3C;IACD,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACjE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CACrC,6CAA6C,CAC9C;IACD,YAAY,EAAE,wBAAwB,CAAC,QAAQ,CAC7C,kCAAkC,CACnC;IACD,gBAAgB,EAAE,2BAA2B,CAAC,QAAQ,CACpD,4BAA4B,CAC7B;IACD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CACnC,qCAAqC,CACtC;IACD,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACnE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CACrC,sCAAsC,CACvC;IACD,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC/D,SAAS,EAAE,qBAAqB,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvE,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC/D,OAAO,EAAE,mBAAmB,CAAC,QAAQ,CACnC,4CAA4C,CAC7C;IACD,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACnE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACrE,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,CACrC,sCAAsC,CACvC;IACD,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACtE,kBAAkB,EAAE,6BAA6B,CAAC,QAAQ,CACxD,sCAAsC,CACvC;CACF,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,iCAAiC,CAAC,CAAC"}
@@ -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":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/config/user.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,gBAAgB;;;;;;;;oBAU6B,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB,EAAE,UAAU,EAAO,CAAC;AAErD,eAAO,MAAM,iBAAiB;;;;;;;;sBAGuB,CAAC"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/config/user.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,gBAAgB;;;;;;;;oBAc6B,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,oBAAoB,EAAE,UAAU,EAAO,CAAC;AAErD,eAAO,MAAM,iBAAiB;;;;;;;;sBAGuB,CAAC"}
@@ -1,7 +1,11 @@
1
1
  import z from 'zod';
2
2
  export const UserConfigSchema = z
3
3
  .object({
4
- sub: z.string().describe('Unique subject identifier for the user.'),
4
+ sub: z
5
+ .string()
6
+ .min(1)
7
+ .max(255)
8
+ .describe('Unique subject identifier for the user.'),
5
9
  email: z.string().describe('Email address for the user account.'),
6
10
  password: z.string().describe('Plain-text password (hashed at startup).'),
7
11
  role: z
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/lib/config/user.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACvB,QAAQ,CAAC,sDAAsD,CAAC;CACpE,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,6CAA6C,CAAC,CAAC;AAI3D,MAAM,CAAC,MAAM,oBAAoB,GAAiB,EAAE,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,KAAK,CAAC,gBAAgB,CAAC;KACvB,OAAO,CAAC,oBAAoB,CAAC;KAC7B,QAAQ,CAAC,wCAAwC,CAAC,CAAC"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../src/lib/config/user.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,yCAAyC,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACvB,QAAQ,CAAC,sDAAsD,CAAC;CACpE,CAAC;KACD,MAAM,EAAE;KACR,QAAQ,CAAC,6CAA6C,CAAC,CAAC;AAI3D,MAAM,CAAC,MAAM,oBAAoB,GAAiB,EAAE,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,KAAK,CAAC,gBAAgB,CAAC;KACvB,OAAO,CAAC,oBAAoB,CAAC;KAC7B,QAAQ,CAAC,wCAAwC,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Migration20260509171036_initial.d.ts","sourceRoot":"","sources":["../../../src/migrations/postgres/Migration20260509171036_initial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,+BAAgC,SAAQ,SAAS;IACnD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CA+tBpC"}
1
+ {"version":3,"file":"Migration20260509171036_initial.d.ts","sourceRoot":"","sources":["../../../src/migrations/postgres/Migration20260509171036_initial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,+BAAgC,SAAQ,SAAS;IACnD,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CA6tBpC"}